## What's Changed
* fix(ide): polyfill import.meta.url for cjs build by @skeshive in https://github.com/google-gemini/gemini-cli/pull/7279
* feat(cli) - Create base class for handling tokens stored in files by @shishu314 in https://github.com/google-gemini/gemini-cli/pull/7240
* fix(process-utils): replace wmic with powershell for windows process by @dracic in https://github.com/google-gemini/gemini-cli/pull/7087
* chore(release): v0.2.2 by @NTaylorMullen in https://github.com/google-gemini/gemini-cli/pull/7319
* fix(cli): remove settings migration console logs by @galz10 in https://github.com/google-gemini/gemini-cli/pull/7325
* Refine stream validation to prevent unnecessary retries by @mrcabbage972 in https://github.com/google-gemini/gemini-cli/pull/7278
* bug(core): Strip thoughts when loading history. by @joshualitt in https://github.com/google-gemini/gemini-cli/pull/7167
* fix(settings/env): Ensure that `loadEnvironment` is always called with settings. by @richieforeman in https://github.com/google-gemini/gemini-cli/pull/7313
* fix(logging): Log NodeJS Version && Make Config.SessionID readonly by @richieforeman in https://github.com/google-gemini/gemini-cli/pull/7219
* docs(contributing): add section on self-assigning issues by @davideast in https://github.com/google-gemini/gemini-cli/pull/7243
* fix(trust): Refuse to load from untrusted process.cwd() sources; Add tests by @richieforeman in https://github.com/google-gemini/gemini-cli/pull/7323
* Add MCP loading indicator when initializing Gemini CLI by @swissspidy in https://github.com/google-gemini/gemini-cli/pull/6923
* fix: Settings in Folder trust hook by @shrutip90 in https://github.com/google-gemini/gemini-cli/pull/7343
* fix(trust): Refuse to load extensions from untrusted workspaces by @richieforeman in https://github.com/google-gemini/gemini-cli/pull/7342
* Screen reader updates by @chrstnb in https://github.com/google-gemini/gemini-cli/pull/7307
* Fix(trust) - Disable commands from untrusted directories when useFolderTrust is enabled by @shishu314 in https://github.com/google-gemini/gemini-cli/pull/7341
* docs(config): update documentation for settings structure by @galz10 in https://github.com/google-gemini/gemini-cli/pull/7352
* Skip MCP server connections in untrusted folders by @shrutip90 in https://github.com/google-gemini/gemini-cli/pull/7358
* feat: add Pro Quota Dialog by @JayadityaGit in https://github.com/google-gemini/gemini-cli/pull/7094
* feat(cli): deprecate redundant CLI flags by @allenhutchison in https://github.com/google-gemini/gemini-cli/pull/7360
* Show citations at the end of each turn by @scidomino in https://github.com/google-gemini/gemini-cli/pull/7350
* fix(core): treat UTF16/32 BOM files as text and decode correctly by @tayyab3245 in https://github.com/google-gemini/gemini-cli/pull/6081
* fix(trust): Update config.isTrustedFolder by @shrutip90 in https://github.com/google-gemini/gemini-cli/pull/7373
* Fix backwards-compatibility for allowedTools -> tools.allowed by @werdnum in https://github.com/google-gemini/gemini-cli/pull/7384
* fix: add flash lite with respect to api defaults by @psinha40898 in https://github.com/google-gemini/gemini-cli/pull/4652
* fix(a2a): Don't mutate 'replace' tool args in scheduleToolCalls by @vmiura in https://github.com/google-gemini/gemini-cli/pull/7369
* Restore missing `resolved` and `integrity` of some dependencies and add check of lockfile integrity by @ljxfstorm in https://github.com/google-gemini/gemini-cli/pull/5336
* Fix enable command typo by @chrstnb in https://github.com/google-gemini/gemini-cli/pull/7382
* feat: Add a `--session-summary` flag by @leehagoodjames in https://github.com/google-gemini/gemini-cli/pull/7347
* Add flag to update all extensions by @chrstnb in https://github.com/google-gemini/gemini-cli/pull/7321
* fix(core): Fix permissions for oauth_creds.json by @xplo1t-sec in https://github.com/google-gemini/gemini-cli/pull/6662
* refactor(core): reuse computeNewContent in performAddMemoryEntry by @chen893 in https://github.com/google-gemini/gemini-cli/pull/6689
* feat(extension): resolve environment variables in extension configuration by @skal88 in https://github.com/google-gemini/gemini-cli/pull/7213
* fix(trust): Respect folder trust setting when reading GEMINI.md by @richieforeman in https://github.com/google-gemini/gemini-cli/pull/7409
* fix(cli): preserve input history after /clear command by @flowernotfound in https://github.com/google-gemini/gemini-cli/pull/5890
* feat(cli): add fuzzy matching for command suggestions by @dracic in https://github.com/google-gemini/gemini-cli/pull/6633
* fix: show parent name in trust folder confirmation by @hritan in https://github.com/google-gemini/gemini-cli/pull/7331
* refactor: remove redundant 'undefined' type or '?' by @noritaka1166 in https://github.com/google-gemini/gemini-cli/pull/2691
* Smart Edit Tool by @silviojr in https://github.com/google-gemini/gemini-cli/pull/6823
* chore(dedup): Mock tools refix by @adamfweidman in https://github.com/google-gemini/gemini-cli/pull/7418
* Fix(Cli) - Restart gemini cli on folder trust settings changes by @shishu314 in https://github.com/google-gemini/gemini-cli/pull/7413
* fix(workflows): improve issue triage by @srithreepo in https://github.com/google-gemini/gemini-cli/pull/7449
* Update Issue Triage by @srithreepo in https://github.com/google-gemini/gemini-cli/pull/7469
* fix(diffstats): Fix diff stats to correctly capture the edits by @kiranani in https://github.com/google-gemini/gemini-cli/pull/7446
* Update gemini-automated-issue-triage.yml by @srithreepo in https://github.com/google-gemini/gemini-cli/pull/7486
* Fix duplicate LOC counting due to diff_stat being passed in multiple places by @bdmorgan in https://github.com/google-gemini/gemini-cli/pull/7483
* fix(auth): Fix failing auth test by @galz10 in https://github.com/google-gemini/gemini-cli/pull/7502
* fix(release) - make release failures p0 by @abhipatel12 in https://github.com/google-gemini/gemini-cli/pull/7514
* Merge general settings from different configuration sources by @bbiggs in https://github.com/google-gemini/gemini-cli/pull/7528
* fix(int-tests): fix failing integration tests by @galz10 in https://github.com/google-gemini/gemini-cli/pull/7516
* update(deps): genai sdk now handles empty GEMINI_API_KEY correctly by @gsquared94 in https://github.com/google-gemini/gemini-cli/pull/7377
* fix(ide): use port number for server port file instead of vscode pid by @skeshive in https://github.com/google-gemini/gemini-cli/pull/7368
* fix(build): allow builds to continue when sandbox detection fails by @bulkypanda in https://github.com/google-gemini/gemini-cli/pull/7538
* refactor(core): Require model for utility calls by @abhipatel12 in https://github.com/google-gemini/gemini-cli/pull/7566
* Support installing extensions with org/repo by @chrstnb in https://github.com/google-gemini/gemini-cli/pull/7364
* Fix(cli) - Remove Foldertrust Feature Flag by @shishu314 in https://github.com/google-gemini/gemini-cli/pull/7420
* Add highlights for input /commands and @file/paths by @miguelsolorio in https://github.com/google-gemini/gemini-cli/pull/7165
* Enable citations by default for certain users. by @scidomino in https://github.com/google-gemini/gemini-cli/pull/7438
* Add `gemini extensions link` command by @chrstnb in https://github.com/google-gemini/gemini-cli/pull/7241
* Add footer configuration settings by @miguelsolorio in https://github.com/google-gemini/gemini-cli/pull/7419
* feat(quality): Skip the next speaker check by default by @SandyTao520 in https://github.com/google-gemini/gemini-cli/pull/7614
* Fix screen reader config bug by @chrstnb in https://github.com/google-gemini/gemini-cli/pull/7615
* chore(ci): Update GitHub /assign workflow to use advanced search API by @davideast in https://github.com/google-gemini/gemini-cli/pull/7601
* feat(oauth) - Create hybrid storage class by @shishu314 in https://github.com/google-gemini/gemini-cli/pull/7610
* Fix Arrow Keys and make Kitty Protocol more robust by @deepankarsharma in https://github.com/google-gemini/gemini-cli/pull/7118
* chore: improve inclusive-language by @jackwotherspoon in https://github.com/google-gemini/gemini-cli/pull/7558
* fix(a2a-server): Fix flaky test on Windows by awaiting server close by @davideast in https://github.com/google-gemini/gemini-cli/pull/7616
* test(auth): improve test environment variable cleanup by @bulkypanda in https://github.com/google-gemini/gemini-cli/pull/7451
* Rename smart_edit to replace to align with the EditTool by @silviojr in https://github.com/google-gemini/gemini-cli/pull/7621
* feat(cli): Add support for Ctrl+Backspace to delete a word backward by @davideast in https://github.com/google-gemini/gemini-cli/pull/7162
* chore(e2e): Stabilize e2e test by adding a more descriptive prompt by @adamfweidman in https://github.com/google-gemini/gemini-cli/pull/7599
* fix(ide): prevent race condition when diff accepted through CLI by @skeshive in https://github.com/google-gemini/gemini-cli/pull/7633
* feat(sessions): Integrate chat recording into GeminiChat by @bl-ue in https://github.com/google-gemini/gemini-cli/pull/6721
* fix(gitIgnore): prevent crash/error when processing malformed file paths in GitIgnoreParser by @lifefloating in https://github.com/google-gemini/gemini-cli/pull/7553
* Log config.useSmartEdit to Clearcut by @owenofbrien in https://github.com/google-gemini/gemini-cli/pull/7617
* fix: gemini-cli-vscode-ide-companion's package script by @xiaoxiangmoe in https://github.com/google-gemini/gemini-cli/pull/7555
* feat: handle nested gitignore files by @gsquared94 in https://github.com/google-gemini/gemini-cli/pull/7645
* chore(a2a-server): refactor a2a-server src directory by @sammccauley117 in https://github.com/google-gemini/gemini-cli/pull/7593
* chore(a2a-server): Merge A2A types by @adamfweidman in https://github.com/google-gemini/gemini-cli/pull/7650
* feat(cli): custom witty message by @JayadityaGit in https://github.com/google-gemini/gemini-cli/pull/7641
* fix(deps): Add fzf as a direct dependency to CLI by @mattKorwel in https://github.com/google-gemini/gemini-cli/pull/7658
* fix(cli): Correctly pass file filtering settings and add tests by @brychanrobot in https://github.com/google-gemini/gemini-cli/pull/7239
* Simplify MCP server timeout configuration by @jakemac53 in https://github.com/google-gemini/gemini-cli/pull/7661
* Move settings error throwing to loadSettings by @scidomino in https://github.com/google-gemini/gemini-cli/pull/7605
* Fix(core): Log exact model version from API response by @SandyTao520 in https://github.com/google-gemini/gemini-cli/pull/7666
* Override Gemini CLI trust with VScode workspace trust when in IDE by @shrutip90 in https://github.com/google-gemini/gemini-cli/pull/7433
* chore(e2e): Stabilize PNG integration test part2 by @adamfweidman in https://github.com/google-gemini/gemini-cli/pull/7670
* fix(core): Fix more logging issues by @SandyTao520 in https://github.com/google-gemini/gemini-cli/pull/7674
* feat: run e2e tests on pull requests by @mattKorwel in https://github.com/google-gemini/gemini-cli/pull/7659
* fix(tests): make read_many_files test more reliable by @allenhutchison in https://github.com/google-gemini/gemini-cli/pull/7676
* fix(auth): improve Google OAuth error handling and prevent empty error messages by @bulkypanda in https://github.com/google-gemini/gemini-cli/pull/7539
* Fix diff approval race between CLI and IDE by @rahatarmanahmed in https://github.com/google-gemini/gemini-cli/pull/7609
* fix(settings): Add missing v1 settings to migration map by @galz10 in https://github.com/google-gemini/gemini-cli/pull/7678
* feat/e2e workflow improvements by @mattKorwel in https://github.com/google-gemini/gemini-cli/pull/7684
* Add enforcedAuthType setting by @chrstnb in https://github.com/google-gemini/gemini-cli/pull/6564
* feat: Add positional argument for prompt by @allenhutchison in https://github.com/google-gemini/gemini-cli/pull/7668
* feat(telemetry): Add character counts to diff stats by @kiranani in https://github.com/google-gemini/gemini-cli/pull/7619
* Enable smart edit by default on main by @silviojr in https://github.com/google-gemini/gemini-cli/pull/7679
* fix: Update permissions for trustedFolders.json file to make it more … by @shrutip90 in https://github.com/google-gemini/gemini-cli/pull/7685
* Remove command from extension docs by @chrstnb in https://github.com/google-gemini/gemini-cli/pull/7675
* Enhance json configuration docs by @paulirish in https://github.com/google-gemini/gemini-cli/pull/7628
* feat(extension) - Notify users when there is a new version and update it by @shishu314 in https://github.com/google-gemini/gemini-cli/pull/7408
* Handle cleaning up the response text in the UI when a response stream retry occurs by @mrcabbage972 in https://github.com/google-gemini/gemini-cli/pull/7416
* refactor(setting): Improve settings migration and tool loading by @galz10 in https://github.com/google-gemini/gemini-cli/pull/7445
* rename(telemetry): Update ai_(added|removed)_lines to model_(added|removed)_lines by @kiranani in https://github.com/google-gemini/gemini-cli/pull/7577
* fix(core): tend to history with dangling function calls/responses by @agmsb in https://github.com/google-gemini/gemini-cli/pull/7692
* improve performance of shell commands with lots of output by @jakemac53 in https://github.com/google-gemini/gemini-cli/pull/7680
* Use IdeClient directly instead of config.ideClient by @scidomino in https://github.com/google-gemini/gemini-cli/pull/7627
* add(telemetry): Add OTel logging for `FileOperationEvent` by @kiranani in https://github.com/google-gemini/gemini-cli/pull/7082
* fix(diffstats): Always return diff stats from EditTool by @kiranani in https://github.com/google-gemini/gemini-cli/pull/7489
* Takethree by @mattKorwel in https://github.com/google-gemini/gemini-cli/pull/7740
* chore(release): v0.3.1 by @mattKorwel in https://github.com/google-gemini/gemini-cli/pull/7742
* Feat(security) - Make the OAuthTokenStorage non static by @shishu314 in https://github.com/google-gemini/gemini-cli/pull/7716
* Reduce bundle size & check it in CI by @swissspidy in https://github.com/google-gemini/gemini-cli/pull/7395
* temp disable windows e2e tests by @mattKorwel in https://github.com/google-gemini/gemini-cli/pull/7746
* Final Changes for stable release by @mattKorwel in https://github.com/google-gemini/gemini-cli/pull/8105
## New Contributors
* @dracic made their first contribution in https://github.com/google-gemini/gemini-cli/pull/7087
* @tayyab3245 made their first contribution in https://github.com/google-gemini/gemini-cli/pull/6081
* @xplo1t-sec made their first contribution in https://github.com/google-gemini/gemini-cli/pull/6662
* @chen893 made their first contribution in https://github.com/google-gemini/gemini-cli/pull/6689
* @skal88 made their first contribution in https://github.com/google-gemini/gemini-cli/pull/7213
* @xiaoxiangmoe made their first contribution in https://github.com/google-gemini/gemini-cli/pull/7555
* @sammccauley117 made their first contribution in https://github.com/google-gemini/gemini-cli/pull/7593
* @rahatarmanahmed made their first contribution in https://github.com/google-gemini/gemini-cli/pull/7609
* @paulirish made their first contribution in https://github.com/google-gemini/gemini-cli/pull/7628
**Full Changelog**: https://github.com/google-gemini/gemini-cli/compare/v0.3.4...v0.4.0-preview.4