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
.prettierignore
file 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
type
modifier 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_files
andshow_memory_usage
by @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
log
by @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
loadEnvironment
is 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
resolved
andintegrity
of some dependencies and add check of lockfile integrity by @ljxfstorm in #5336 - Fix enable command typo by @chrstnb in #7382
- feat: Add a
--session-summary
flag 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 link
command 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