What's Changed
- refactor(plan): simplify policy priorities and consolidate read-only rules by @ruomengz in #24849
- feat(test-utils): add memory usage integration test harness by @sripasg in #24876
- feat(memory): add /memory inbox command for reviewing extracted skills by @SandyTao520 in #24544
- chore(release): bump version to 0.39.0-nightly.20260408.e77b22e63 by @gemini-cli-robot in #24939
- fix(core): ensure robust sandbox cleanup in all process execution paths by @ehedlund in #24763
- chore: update ink version to 6.6.8 by @jacob314 in #24934
- Changelog for v0.38.0-preview.0 by @gemini-cli-robot in #24938
- chore: ignore conductor directory by @JayadityaGit in #22128
- Changelog for v0.37.0 by @gemini-cli-robot in #24940
- feat(plan): require user confirmation for activate_skill in Plan Mode by @ruomengz in #24946
- feat(test-utils): add CPU performance integration test harness by @sripasg in #24951
- fix(cli-ui): enable Ctrl+Backspace for word deletion in Windows Terminal by @dogukanozen in #21447
- test(sdk): add unit tests for GeminiCliSession by @AdamyaSingh7 in #21897
- fix(core): resolve windows symlink bypass and stabilize sandbox integration tests by @ehedlund in #24834
- fix(cli): restore file path display in edit and write tool confirmations by @jwhelangoog in #24974
- feat(core): refine shell tool description display logic by @jwhelangoog in #24903
- fix(core): dynamic session ID injection to resolve resume bugs by @scidomino in #24972
- Update ink version to 6.6.9 by @jacob314 in #24980
- Generalize evals infra to support more types of evals, organization and queuing of named suites by @gundermanc in #24941
- fix(cli): optimize startup with lightweight parent process by @sehoon38 in #24667
- refactor(sandbox): use centralized sandbox paths in macOS Seatbelt implementation by @ehedlund in #24984
- feat(cli): refine tool output formatting for compact mode by @jwhelangoog in #24677
- fix(sdk): skip broken sendStream tests to unblock nightly by @SandyTao520 in #25000
- refactor(core): use centralized path resolution for Linux sandbox by @ehedlund in #24985
- Support ctrl+shift+g by @jacob314 in #25035
- feat(core): refactor subagent tool to unified invoke_subagent tool by @abhipatel12 in #24489
- fix(core): add explicit git identity env vars to prevent sandbox checkpointing error by @mrpmohiburrahman in #19775
- fix: respect hideContextPercentage when FooterConfigDialog is closed without changes by @chernistry in #24773
- fix(cli): suppress unhandled AbortError logs during request cancellation by @euxaristia in #22621
- Automated documentation audit by @g-samroberts in #24567
- feat(cli): implement useAgentStream hook by @mbleigh in #24292
- refactor(plan) Clean default plan toml by @ruomengz in #25037
- refactor(core): remove legacy subagent wrapping tools by @abhipatel12 in #25053
- fix(core): honor retryDelay in RetryInfo for 503 errors by @yunaseoul in #25057
- fix(core): remediate subagent memory leaks using AbortSignal in MessageBus by @abhipatel12 in #25048
- feat(cli): wire up useAgentStream in AppContainer by @mbleigh in #24297
- feat(core): migrate chat recording to JSONL streaming by @spencer426 in #23749
- fix(core): clear 5-minute timeouts in oauth flow to prevent memory leaks by @spencer426 in #24968
- fix(sandbox): centralize async git worktree resolution and enforce read-only security by @ehedlund in #25040
- feat(test): add high-volume shell test and refine perf harness by @sripasg in #24983
- fix(core): silently handle EPERM when listing dir structure by @scidomino in #25066
- Changelog for v0.37.1 by @gemini-cli-robot in #25055
- fix: decode Uint8Array and multi-byte UTF-8 in API error messages by @kimjune01 in #23341
- Automated documentation audit results by @g-samroberts in #22755
- debugging(ui): add optional debugRainbow setting by @jacob314 in #25088
- fix: resolve lifecycle memory leaks by cleaning up listeners and root closures by @spencer426 in #25049
- docs(cli): updates f12 description to be more precise by @JayadityaGit in #15816
- fix(cli): mark /settings as unsafe to run concurrently by @jacob314 in #25061
- fix(core): remove buffer slice to prevent OOM on large output streams by @spencer426 in #25094
- feat(core): persist subagent agentId in tool call records by @abhipatel12 in #25092
- chore(core): increase codebase investigator turn limits to 50 by @abhipatel12 in #25125
- refactor(core): consolidate execute() arguments into ExecuteOptions by @mbleigh in #25101
- feat(core): add Strategic Re-evaluation guidance to system prompt by @aishaneeshah in #25062
- fix(core): preserve shell execution config fields on update by @jasonmatthewsuhari in #25113
- docs: add vi shortcuts and clarify MCP sandbox setup by @chrisjcthomas in #21679
- fix(cli): pass session id to interactive shell executions by @jasonmatthewsuhari in #25114
- fix(cli): resolve text sanitization data loss due to C1 control characters by @euxaristia in #22624
- feat(core): add large memory regression test by @cynthialong0-0 in #25059
- fix(core): resolve PTY exhaustion and orphan MCP subprocess leaks by @spencer426 in #25079
- chore(deps): update vulnerable dependencies via npm audit fix by @scidomino in #25140
- perf(sandbox): optimize Windows sandbox initialization via native ACL application by @ehedlund in #25077
- chore: switch from keytar to @github/keytar by @cocosheng-g in #25143
- fix: improve audio MIME normalization and validation in file reads by @junaiddshaukat in #21636
- docs: Update docs-audit to include changes in PR body by @g-samroberts in #25153
- docs: correct documentation for enforced authentication type by @cocosheng-g in #25142
- fix(cli): exclude update_topic from confirmation queue count by @Abhijit-2592 in #24945
- Memory fix for trace's streamWrapper. by @anthraxmilkshake in #25089
- fix(core): fix quota footer for non-auto models and improve display by @jackwotherspoon in #25121
- docs(contributing): clarify self-assignment policy for issues by @jmr in #23087
- feat(core): add skill patching support with /memory inbox integration by @SandyTao520 in #25148
- Stop suppressing thoughts and text in model response by @gundermanc in #25073
- fix(release): prefix git hash in nightly versions to prevent semver normalization by @SandyTao520 in #25304
- feat(cli): extract QuotaContext and resolve infinite render loop by @Adib234 in #24959
- refactor(core): extract and centralize sandbox path utilities by @ehedlund in #25305
- feat(ui): added enhancements to scroll momentum by @devr0306 in #24447
- fix(core): replace custom binary detection with isbinaryfile to correctly handle UTF-8 (U+FFFD) by @Anjaligarhwal in #25297
- feat(agent): implement tool-controlled display protocol (Steps 2-3) by @mbleigh in #25134
- Stop showing scrollbar unless we are in terminalBuffer mode by @jacob314 in #25320
- feat: support auth block in MCP servers config in agents by @TanmayVartak in #24770
- fix(core): expose GEMINI_PLANS_DIR to hook environment by @Adib234 in #25296
- feat(core): implement silent fallback for Plan Mode model routing by @jerop in #25317
- fix: correct redirect count increment in fetchJson by @KevinZhao in #24896
- fix(core): prevent secondary crash in ModelRouterService finally block by @gundermanc in #25333
- feat(core): introduce decoupled ContextManager and Sidecar architecture by @joshualitt in #24752
- docs(core): update generalist agent documentation by @abhipatel12 in #25325
- chore(mcp): check MCP error code over brittle string match by @jackwotherspoon in #25381
- feat(plan): update plan mode prompt to allow showing plan content by @ruomengz in #25058
- test(core): improve sandbox integration test coverage and fix OS-specific failures by @ehedlund in #25307
- fix(core): use debug level for keychain fallback logging by @ehedlund in #25398
- feat(test): add a performance test in asian language by @cynthialong0-0 in #25392
- feat(cli): enable mouse clicking for cursor positioning in AskUser multi-line answers by @Adib234 in #24630
- fix(core): detect kmscon terminal as supporting true color by @claygeo in #25282
- ci: add agent session drift check workflow by @adamfweidman in #25389
- use macos-latest-large runner where applicable. by @scidomino in #25413
- Changelog for v0.37.2 by @gemini-cli-robot in #25336
New Contributors
- @dogukanozen made their first contribution in #21447
- @AdamyaSingh7 made their first contribution in #21897
- @chernistry made their first contribution in #24773
- @euxaristia made their first contribution in #22621
- @kimjune01 made their first contribution in #23341
- @chrisjcthomas made their first contribution in #21679
- @anthraxmilkshake made their first contribution in #25089
- @jmr made their first contribution in #23087
- @TanmayVartak made their first contribution in #24770
- @KevinZhao made their first contribution in #24896
- @claygeo made their first contribution in #25282
Full Changelog: v0.38.0-preview.0...v0.39.0-preview.0