What's Changed
- fix(core): Skip loop check for dividers by @SandyTao520 in #6893
 - fix(cli): gemini command stuck in git bash by @dumbbellcode in #6397
 - Update instructions for patching a release by @skeshive in #6871
 - feat(core): share file list patterns between glob and grep tools by @Han5991 in #6359
 - fix(cli): Improve proxy test isolation and sandbox path resolution by @kookyleo in #6555
 - Support JSON schema formats using ajv-formats by @bbiggs in #6949
 - Add 
.prettierignorefile by @swissspidy in #6914 - add(OTel): Add OTel logging for MalformedJsonEvent by @kiranani in #6912
 - Introduce system defaults (vs system overrides) by @bbiggs in #6724
 - chore(test): install and configure vitest eslint plugin by @swissspidy in #3228
 - [extensions] Add extension management install command by @chrstnb in #6703
 - [extensions] Add extensions uninstall command by @chrstnb in #6877
 - Show error instead of aborting if model fails to call tool by @as-cii in #7005
 - fix: misaligned right border on tool calls ui and spacing in multiple tool calls ui by @bulkypanda in #6941
 - [extensions] Add extensions list command by @chrstnb in #6879
 - refactor(ide): Improve IDE detection discovery by @skeshive in #6765
 - fix(keyboard): Implement Tab and Backspace handling for Kitty Protocol by @abhipatel12 in #7006
 - [extensions] Add extensions update command by @chrstnb in #6878
 - Log yolo mode + number of turns by @shishu314 in #6055
 - feat(telemetry): Add email to telemetry prompt by @steventohme in #6339
 - chore: consistently import node modules with prefix by @swissspidy in #3013
 - feat: Update GitHub workflow configurations by @jerop in #7004
 - feat(ide): Enable Firebase Studio install now that FS has updated VsCode by @richieforeman in #7027
 - refactor(cli): Improve Kitty keycode handling and tests by @abhipatel12 in #7046
 - fix(telemetry): Update logger tests to handle user email field by @bulkypanda in #7050
 - feat: add golden snapshot test for ToolGroupMessage and improve success symbol by @bulkypanda in #7037
 - Explict imports & exports with 
typemodifier by @swissspidy in #3774 - unused deps by @yoshi-taka in #4732
 - Added session id logging for non-interactive sessions in debug mode by @owenofbrien in #7032
 - fix(core): enable thinking explicitly in flash-lite models by @ei-grad in #3033
 - Revert "feat: add explicit license selection and status visibility (#6751)" by @scidomino in #7057
 - fix(ci): allow release branches to run by @NTaylorMullen in #7060
 - chore: remove CLI flags 
all_filesandshow_memory_usageby @jackwotherspoon in #7059 - fix: resolve three flaky tests by @bulkypanda in #7058
 - feat: Disable YOLO and AUTO_EDIT modes for untrusted folders by @shrutip90 in #7041
 - fix(ide): remove noisy error log by @skeshive in #7066
 - [extensions] Add an initial set of extension variables by @chrstnb in #7035
 - Treat undefined same as true for isTrustedFolder by @shrutip90 in #7073
 - Fix(command): line/block Comments Incorrectly Parsed as Slash Commands by @lifefloating in #6957
 - Do not call nextSpeakerCheck if there was an error processing the stream. by @silviojr in #7048
 - Standardize exit codes by @scidomino in #7055
 - Downgrade branch_protection to 
logby @markmcd in #2934 - [extensions] Add disable command by @chrstnb in #7001
 - chore: format & imports by @adamfweidman in #7030
 - chore: unused deps by @yoshi-taka in #7109
 - Add extensions enable command by @chrstnb in #7042
 - feat(mcp): Add ODIC fallback to OAuth metadata look up by @xiaoheh in #6863
 - feat(cli): Add --allowed-tools flag to bypass tool confirmation (#2417) by @werdnum in #6453
 - Make config non optional in ToolConfirmationMessage by @shrutip90 in #7083
 - Ensure a Strictly Alternating Message History by @mrcabbage972 in #6995
 - fix(#6392): latest prompt being reloaded when ending a persistent process by @hugomurillomtz in #6857
 - Added usage details to /tools command. by @psimakov in #6849
 - feat(subagent): Enable incremental output streaming by @allenhutchison in #5819
 - Fix cloudbuild step. by @cornmander in #7131
 - Downgrade version of ripgrep to the version from 7 months ago without a node 22 dependency by @jacob314 in #7132
 - fix(cli) - Add logging for shell errors by @shishu314 in #7007
 - Clearcut Logging of Content Error Metrics by @mrcabbage972 in #7099
 - Add a2a-server package to gemini-cli by @adamfweidman in #6597
 - feat(cli) - Define shared interface for storage by @shishu314 in #7049
 - Print error when failing to build sandbox by @cornmander in #7149
 - Update colors tokens for inputer/footer by @miguelsolorio in #6523
 - feat(errors): Make errors more informative by @leehagoodjames in #7133
 - Update build command to set GEMINI_SANDBOX var. by @cornmander in #7159
 - fix(cli): make Ctrl+C UI test less flaky by @davideast in #7166
 - fix(ci): Fix self assign action permissions by @davideast in #7130
 - Add prompt to migrate workspace extensions by @chrstnb in #7065
 - chore(release): v0.2.1 by @NTaylorMullen in #7200
 - Log Gemini CLI OS / Process platform in the clearcut by @uttamkanodia14 in #7086
 - feat(actions): create initial eval workflow by @agmsb in #7127
 - fix: unset GEMINI_API_KEY env var if empty by @gsquared94 in #7214
 - refactor: centralize tool status symbols in constants by @bulkypanda in #7054
 - fix: Enable disableFuzzySearch config option propagation by @brychanrobot in #7002
 - fix: make test more reliable by @gsquared94 in #7233
 - refactor: improve intermediate result parsing in issue dedup workflow by @gsquared94 in #7218
 - fix(tests): Fix Firebase Studio IDE detection tests by @davideast in #7163
 - feat(cli) - Define base class for token storage by @shishu314 in #7221
 - chore(cleanup): Consolidate MockTool definitions by @adamfweidman in #7228
 - fix(bug): correct /about command in bug report template by @allenhutchison in #7235
 - Fix shell argument parsing in windows by @scidomino in #7160
 - Move mockTool into test-utils by @adamfweidman in #7245
 - fix(compression): Discard compression result if it results in more token usage by @richieforeman in #7047
 - Fix diff rendering in windows. by @scidomino in #7254
 - fix(e2e): add missing deps to fix sandbox module not found errors in cli/core by @agmsb in #7256
 - fix(e2e): skip flaky stdin context test by @agmsb in #7264
 - refactor: refactor settings to a nested structure by @galz10 in #7244
 - add(telemetry): Add missing telemetry for UserPromptEvent by @kiranani in #6885
 - Revert "Move mockTool into test-utils (#7245)" by @galz10 in #7277
 - feat(commands): Enable @file processing in TOML commands by @abhipatel12 in #6716
 - Revert "chore(cleanup): Consolidate MockTool definitions (#7228)" by @galz10 in #7283
 - fix(ide): polyfill import.meta.url for cjs build by @skeshive in #7279
 - feat(cli) - Create base class for handling tokens stored in files by @shishu314 in #7240
 - fix(process-utils): replace wmic with powershell for windows process by @dracic in #7087
 - chore(release): v0.2.2 by @NTaylorMullen in #7319
 - fix(cli): remove settings migration console logs by @galz10 in #7325
 - Refine stream validation to prevent unnecessary retries by @mrcabbage972 in #7278
 - bug(core): Strip thoughts when loading history. by @joshualitt in #7167
 - fix(settings/env): Ensure that 
loadEnvironmentis always called with settings. by @richieforeman in #7313 - fix(logging): Log NodeJS Version && Make Config.SessionID readonly by @richieforeman in #7219
 - docs(contributing): add section on self-assigning issues by @davideast in #7243
 - fix(trust): Refuse to load from untrusted process.cwd() sources; Add tests by @richieforeman in #7323
 - Add MCP loading indicator when initializing Gemini CLI by @swissspidy in #6923
 - fix: Settings in Folder trust hook by @shrutip90 in #7343
 - fix(trust): Refuse to load extensions from untrusted workspaces by @richieforeman in #7342
 - Screen reader updates by @chrstnb in #7307
 - Fix(trust) - Disable commands from untrusted directories when useFolderTrust is enabled by @shishu314 in #7341
 - docs(config): update documentation for settings structure by @galz10 in #7352
 - Skip MCP server connections in untrusted folders by @shrutip90 in #7358
 - feat: add Pro Quota Dialog by @JayadityaGit in #7094
 - feat(cli): deprecate redundant CLI flags by @allenhutchison in #7360
 - Show citations at the end of each turn by @scidomino in #7350
 - fix(core): treat UTF16/32 BOM files as text and decode correctly by @tayyab3245 in #6081
 - fix(trust): Update config.isTrustedFolder by @shrutip90 in #7373
 - Fix backwards-compatibility for allowedTools -> tools.allowed by @werdnum in #7384
 - fix: add flash lite with respect to api defaults by @psinha40898 in #4652
 - fix(a2a): Don't mutate 'replace' tool args in scheduleToolCalls by @vmiura in #7369
 - Restore missing 
resolvedandintegrityof some dependencies and add check of lockfile integrity by @ljxfstorm in #5336 - Fix enable command typo by @chrstnb in #7382
 - feat: Add a 
--session-summaryflag by @leehagoodjames in #7347 - Add flag to update all extensions by @chrstnb in #7321
 - fix(core): Fix permissions for oauth_creds.json by @xplo1t-sec in #6662
 - refactor(core): reuse computeNewContent in performAddMemoryEntry by @chen893 in #6689
 - feat(extension): resolve environment variables in extension configuration by @skal88 in #7213
 - fix(trust): Respect folder trust setting when reading GEMINI.md by @richieforeman in #7409
 - fix(cli): preserve input history after /clear command by @flowernotfound in #5890
 - feat(cli): add fuzzy matching for command suggestions by @dracic in #6633
 - fix: show parent name in trust folder confirmation by @hritan in #7331
 - refactor: remove redundant 'undefined' type or '?' by @noritaka1166 in #2691
 - Smart Edit Tool by @silviojr in #6823
 - chore(dedup): Mock tools refix by @adamfweidman in #7418
 - Fix(Cli) - Restart gemini cli on folder trust settings changes by @shishu314 in #7413
 - fix(workflows): improve issue triage by @srithreepo in #7449
 - Update Issue Triage by @srithreepo in #7469
 - fix(diffstats): Fix diff stats to correctly capture the edits by @kiranani in #7446
 - Update gemini-automated-issue-triage.yml by @srithreepo in #7486
 - Fix duplicate LOC counting due to diff_stat being passed in multiple places by @bdmorgan in #7483
 - fix(auth): Fix failing auth test by @galz10 in #7502
 - fix(release) - make release failures p0 by @abhipatel12 in #7514
 - Merge general settings from different configuration sources by @bbiggs in #7528
 - fix(int-tests): fix failing integration tests by @galz10 in #7516
 - update(deps): genai sdk now handles empty GEMINI_API_KEY correctly by @gsquared94 in #7377
 - fix(ide): use port number for server port file instead of vscode pid by @skeshive in #7368
 - fix(build): allow builds to continue when sandbox detection fails by @bulkypanda in #7538
 - refactor(core): Require model for utility calls by @abhipatel12 in #7566
 - Support installing extensions with org/repo by @chrstnb in #7364
 - Fix(cli) - Remove Foldertrust Feature Flag by @shishu314 in #7420
 - Add highlights for input /commands and @file/paths by @miguelsolorio in #7165
 - Enable citations by default for certain users. by @scidomino in #7438
 - Add 
gemini extensions linkcommand by @chrstnb in #7241 - Add footer configuration settings by @miguelsolorio in #7419
 - feat(quality): Skip the next speaker check by default by @SandyTao520 in #7614
 - Fix screen reader config bug by @chrstnb in #7615
 - chore(ci): Update GitHub /assign workflow to use advanced search API by @davideast in #7601
 - feat(oauth) - Create hybrid storage class by @shishu314 in #7610
 - Fix Arrow Keys and make Kitty Protocol more robust by @deepankarsharma in #7118
 - chore: improve inclusive-language by @jackwotherspoon in #7558
 - fix(a2a-server): Fix flaky test on Windows by awaiting server close by @davideast in #7616
 - test(auth): improve test environment variable cleanup by @bulkypanda in #7451
 - Rename smart_edit to replace to align with the EditTool by @silviojr in #7621
 - feat(cli): Add support for Ctrl+Backspace to delete a word backward by @davideast in #7162
 - chore(e2e): Stabilize e2e test by adding a more descriptive prompt by @adamfweidman in #7599
 - fix(ide): prevent race condition when diff accepted through CLI by @skeshive in #7633
 - feat(sessions): Integrate chat recording into GeminiChat by @bl-ue in #6721
 - fix(gitIgnore): prevent crash/error when processing malformed file paths in GitIgnoreParser by @lifefloating in #7553
 - Log config.useSmartEdit to Clearcut by @owenofbrien in #7617
 - fix: gemini-cli-vscode-ide-companion's package script by @xiaoxiangmoe in #7555
 - feat: handle nested gitignore files by @gsquared94 in #7645
 - chore(a2a-server): refactor a2a-server src directory by @sammccauley117 in #7593
 - chore(a2a-server): Merge A2A types by @adamfweidman in #7650
 - feat(cli): custom witty message by @JayadityaGit in #7641
 - fix(deps): Add fzf as a direct dependency to CLI by @mattKorwel in #7658
 - fix(cli): Correctly pass file filtering settings and add tests by @brychanrobot in #7239
 - Simplify MCP server timeout configuration by @jakemac53 in #7661
 - Move settings error throwing to loadSettings by @scidomino in #7605
 - Fix(core): Log exact model version from API response by @SandyTao520 in #7666
 - Override Gemini CLI trust with VScode workspace trust when in IDE by @shrutip90 in #7433
 - chore(e2e): Stabilize PNG integration test part2 by @adamfweidman in #7670
 - fix(core): Fix more logging issues by @SandyTao520 in #7674
 - feat: run e2e tests on pull requests by @mattKorwel in #7659
 - fix(tests): make read_many_files test more reliable by @allenhutchison in #7676
 - fix(auth): improve Google OAuth error handling and prevent empty error messages by @bulkypanda in #7539
 - Fix diff approval race between CLI and IDE by @rahatarmanahmed in #7609
 - fix(settings): Add missing v1 settings to migration map by @galz10 in #7678
 - feat/e2e workflow improvements by @mattKorwel in #7684
 - Add enforcedAuthType setting by @chrstnb in #6564
 - feat: Add positional argument for prompt by @allenhutchison in #7668
 - feat(telemetry): Add character counts to diff stats by @kiranani in #7619
 - Enable smart edit by default on main by @silviojr in #7679
 - fix: Update permissions for trustedFolders.json file to make it more … by @shrutip90 in #7685
 - Remove command from extension docs by @chrstnb in #7675
 
New Contributors
- @dumbbellcode made their first contribution in #6397
 - @kookyleo made their first contribution in #6555
 - @as-cii made their first contribution in #7005
 - @steventohme made their first contribution in #6339
 - @yoshi-taka made their first contribution in #4732
 - @ei-grad made their first contribution in #3033
 - @xiaoheh made their first contribution in #6863
 - @werdnum made their first contribution in #6453
 - @psimakov made their first contribution in #6849
 - @dracic made their first contribution in #7087
 - @tayyab3245 made their first contribution in #6081
 - @xplo1t-sec made their first contribution in #6662
 - @chen893 made their first contribution in #6689
 - @skal88 made their first contribution in #7213
 - @xiaoxiangmoe made their first contribution in #7555
 - @sammccauley117 made their first contribution in #7593
 - @rahatarmanahmed made their first contribution in #7609
 
Full Changelog: v0.3.0-nightly.20250823.1a89d185...v0.4.0-nightly.20250904.e133acd2