From 3bd215963bfaa2528450e20ffc38236d2627bd81 Mon Sep 17 00:00:00 2001 From: g-samroberts Date: Wed, 4 Feb 2026 12:06:27 -0800 Subject: [PATCH 01/14] Changelogs for 0.27.0 and 0.28.0-preview0 --- docs/changelogs/index.md | 16 + docs/changelogs/latest.md | 742 +++++++++++++++++++++---------------- docs/changelogs/preview.md | 708 +++++++++++++++-------------------- 3 files changed, 730 insertions(+), 736 deletions(-) diff --git a/docs/changelogs/index.md b/docs/changelogs/index.md index ce41218bc27..ac3d68786c7 100644 --- a/docs/changelogs/index.md +++ b/docs/changelogs/index.md @@ -18,6 +18,22 @@ on GitHub. | [Preview](preview.md) | Experimental features ready for early feedback. | | [Stable](latest.md) | Stable, recommended for general use. | +## Announcements: v0.27.0 - 2026-02-03 + +- **Event-Driven Architecture:** The CLI now uses a new event-driven scheduler + for tool execution, resulting in a more responsive and performant experience + ([#17078](https://github.com/google-gemini/gemini-cli/pull/17078) by + @abhipatel12). +- **Enhanced User Experience:** This release includes a new `Plan` mode, queued + tool confirmations, and expandable large text pastes for a smoother workflow. +- **New `/rewind` Command:** Easily navigate your session history with the new + `/rewind` command + ([#15720](https://github.com/google-gemini/gemini-cli/pull/15720) by + @Adib234). +- **Linux Clipboard Support:** You can now paste images on Linux with Wayland + and X11 ([#17144](https://github.com/google-gemini/gemini-cli/pull/17144) by + @devr0306). + ## Announcements: v0.26.0 - 2026-01-27 - **Agents and Skills:** We've introduced a new `skill-creator` skill diff --git a/docs/changelogs/latest.md b/docs/changelogs/latest.md index 4fb09c38e17..3e9221b003e 100644 --- a/docs/changelogs/latest.md +++ b/docs/changelogs/latest.md @@ -1,6 +1,6 @@ -# Latest stable release: v0.26.0 +# Latest stable release: v0.27.0 -Released: January 27, 2026 +Released: February 3, 2026 For most users, our latest stable release is the recommended release. Install the latest stable version with: @@ -11,328 +11,436 @@ npm install -g @google/gemini-cli ## Highlights -- **Enhanced Agent and Skill Capabilities:** This release introduces the new - `skill-creator` built-in skill, enables Agent Skills by default, and adds a - generalist agent to improve task routing. Security for skill installation has - also been enhanced with new consent prompts. -- **Improved UI and UX:** A new "Rewind" feature lets you walk back through - conversation history. We've also added an `/introspect` command for debugging - and unified various shell confirmation dialogs for a more consistent user - experience. -- **Core Stability and Performance:** This release includes significant - performance improvements, including a fix for PDF token estimation, - optimizations for large inputs, and prevention of OOM crashes. Key memory - management components like `LRUCache` have also been updated. -- **Scheduler and Policy Refactoring:** The core tool scheduler has been - decoupled into distinct orchestration, policy, and confirmation components, - and we've added an experimental event-driven scheduler to improve performance - and reliability. +- **Event-Driven Architecture:** The CLI now uses an event-driven scheduler for + tool execution, improving performance and responsiveness. This includes + migrating non-interactive flows and sub-agents to the new scheduler. +- **Enhanced User Experience:** This release introduces several UI/UX + improvements, including a new `Plan` mode, queued tool confirmations, and the + ability to expand and collapse large pasted text blocks. The `Settings` dialog + has been improved to reduce jitter and preserve focus. +- **Agent and Skill Improvements:** Agent Skills have been promoted to a stable + feature. Sub-agents now use a JSON schema for input and are tracked by an + `AgentRegistry`. +- **New `/rewind` Command:** A new `/rewind` command has been implemented to + allow users to go back in their session history. +- **Improved Shell and File Handling:** The shell tool's output format has been + optimized, and the CLI now gracefully handles disk-full errors during chat + recording. A bug in detecting already added paths has been fixed. +- **Linux Clipboard Support:** Image pasting capabilities for Wayland and X11 on + Linux have been added. ## What's Changed -- fix: PDF token estimation (#16494) by @korade-krushna in - [#16527](https://github.com/google-gemini/gemini-cli/pull/16527) -- chore(release): bump version to 0.26.0-nightly.20260114.bb6c57414 by +- remove fireAgent and beforeAgent hook by @ishaanxgupta in + [#16919](https://github.com/google-gemini/gemini-cli/pull/16919) +- Remove unused modelHooks and toolHooks by @ved015 in + [#17115](https://github.com/google-gemini/gemini-cli/pull/17115) +- feat(cli): sanitize ANSI escape sequences in non-interactive output by + @sehoon38 in [#17172](https://github.com/google-gemini/gemini-cli/pull/17172) +- Update Attempt text to Retry when showing the retry happening to the … by + @sehoon38 in [#17178](https://github.com/google-gemini/gemini-cli/pull/17178) +- chore(skills): update pr-creator skill workflow by @sehoon38 in + [#17180](https://github.com/google-gemini/gemini-cli/pull/17180) +- feat(cli): implement event-driven tool execution scheduler by @abhipatel12 in + [#17078](https://github.com/google-gemini/gemini-cli/pull/17078) +- chore(release): bump version to 0.27.0-nightly.20260121.97aac696f by @gemini-cli-robot in - [#16604](https://github.com/google-gemini/gemini-cli/pull/16604) -- docs: clarify F12 to open debug console by @jackwotherspoon in - [#16570](https://github.com/google-gemini/gemini-cli/pull/16570) -- docs: Remove .md extension from internal links in architecture.md by - @medic-code in - [#12899](https://github.com/google-gemini/gemini-cli/pull/12899) -- Add an experimental setting for extension config by @chrstnb in - [#16506](https://github.com/google-gemini/gemini-cli/pull/16506) -- feat: add Rewind Confirmation dialog and Rewind Viewer component by @Adib234 - in [#15717](https://github.com/google-gemini/gemini-cli/pull/15717) -- fix(a2a): Don't throw errors for GeminiEventType Retry and InvalidStream. by - @ehedlund in [#16541](https://github.com/google-gemini/gemini-cli/pull/16541) -- prefactor: add rootCommands as array so it can be used for policy parsing by - @abhipatel12 in - [#16640](https://github.com/google-gemini/gemini-cli/pull/16640) -- remove unnecessary \x7f key bindings by @scidomino in - [#16646](https://github.com/google-gemini/gemini-cli/pull/16646) -- docs(skills): use body-file in pr-creator skill for better reliability by - @abhipatel12 in - [#16642](https://github.com/google-gemini/gemini-cli/pull/16642) -- chore(automation): recursive labeling for workstream descendants by @bdmorgan - in [#16609](https://github.com/google-gemini/gemini-cli/pull/16609) -- feat: introduce 'skill-creator' built-in skill and CJS management tools by - @NTaylorMullen in - [#16394](https://github.com/google-gemini/gemini-cli/pull/16394) -- chore(automation): remove automated PR size and complexity labeler by - @bdmorgan in [#16648](https://github.com/google-gemini/gemini-cli/pull/16648) -- refactor(skills): replace 'project' with 'workspace' scope by @NTaylorMullen - in [#16380](https://github.com/google-gemini/gemini-cli/pull/16380) -- Docs: Update release notes for 1/13/2026 by @jkcinouye in - [#16583](https://github.com/google-gemini/gemini-cli/pull/16583) -- Simplify paste handling by @scidomino in - [#16654](https://github.com/google-gemini/gemini-cli/pull/16654) -- chore(automation): improve scheduled issue triage discovery and throughput by - @bdmorgan in [#16652](https://github.com/google-gemini/gemini-cli/pull/16652) -- fix(acp): run exit cleanup when stdin closes by @codefromthecrypt in - [#14953](https://github.com/google-gemini/gemini-cli/pull/14953) -- feat(scheduler): add types needed for event driven scheduler by @abhipatel12 - in [#16641](https://github.com/google-gemini/gemini-cli/pull/16641) -- Remove unused rewind key binding by @scidomino in - [#16659](https://github.com/google-gemini/gemini-cli/pull/16659) -- Remove sequence binding by @scidomino in - [#16664](https://github.com/google-gemini/gemini-cli/pull/16664) -- feat(cli): undeprecate the --prompt flag by @alexaustin007 in - [#13981](https://github.com/google-gemini/gemini-cli/pull/13981) -- chore: update dependabot configuration by @cosmopax in - [#13507](https://github.com/google-gemini/gemini-cli/pull/13507) -- feat(config): add 'auto' alias for default model selection by @sehoon38 in - [#16661](https://github.com/google-gemini/gemini-cli/pull/16661) -- Enable & disable agents by @sehoon38 in - [#16225](https://github.com/google-gemini/gemini-cli/pull/16225) -- cleanup: Improve keybindings by @scidomino in - [#16672](https://github.com/google-gemini/gemini-cli/pull/16672) -- Add timeout for shell-utils to prevent hangs. by @jacob314 in - [#16667](https://github.com/google-gemini/gemini-cli/pull/16667) -- feat(plan): add experimental plan flag by @jerop in - [#16650](https://github.com/google-gemini/gemini-cli/pull/16650) -- feat(cli): add security consent prompts for skill installation by - @NTaylorMullen in - [#16549](https://github.com/google-gemini/gemini-cli/pull/16549) -- fix: replace 3 consecutive periods with ellipsis character by @Vist233 in - [#16587](https://github.com/google-gemini/gemini-cli/pull/16587) -- chore(automation): ensure status/need-triage is applied and never cleared - automatically by @bdmorgan in - [#16657](https://github.com/google-gemini/gemini-cli/pull/16657) -- fix: Handle colons in skill description frontmatter by @maru0804 in - [#16345](https://github.com/google-gemini/gemini-cli/pull/16345) -- refactor(core): harden skill frontmatter parsing by @NTaylorMullen in - [#16705](https://github.com/google-gemini/gemini-cli/pull/16705) -- feat(skills): add conflict detection and warnings for skill overrides by + [#17181](https://github.com/google-gemini/gemini-cli/pull/17181) +- Remove other rewind reference in docs by @chrstnb in + [#17149](https://github.com/google-gemini/gemini-cli/pull/17149) +- feat(skills): add code-reviewer skill by @sehoon38 in + [#17187](https://github.com/google-gemini/gemini-cli/pull/17187) +- feat(plan): Extend Shift+Tab Mode Cycling to include Plan Mode by @Adib234 in + [#17177](https://github.com/google-gemini/gemini-cli/pull/17177) +- feat(plan): refactor TestRig and eval helper to support configurable approval + modes by @jerop in + [#17171](https://github.com/google-gemini/gemini-cli/pull/17171) +- feat(workflows): support recursive workstream labeling and new IDs by + @bdmorgan in [#17207](https://github.com/google-gemini/gemini-cli/pull/17207) +- Run evals for all models. by @gundermanc in + [#17123](https://github.com/google-gemini/gemini-cli/pull/17123) +- fix(github): improve label-workstream-rollup efficiency with GraphQL by + @bdmorgan in [#17217](https://github.com/google-gemini/gemini-cli/pull/17217) +- Docs: Update changelogs for v.0.25.0 and v0.26.0-preview.0 releases. by + @g-samroberts in + [#17215](https://github.com/google-gemini/gemini-cli/pull/17215) +- Migrate beforeTool and afterTool hooks to hookSystem by @ved015 in + [#17204](https://github.com/google-gemini/gemini-cli/pull/17204) +- fix(github): improve label-workstream-rollup efficiency and fix bugs by + @bdmorgan in [#17219](https://github.com/google-gemini/gemini-cli/pull/17219) +- feat(cli): improve skill enablement/disablement verbiage by @NTaylorMullen in + [#17192](https://github.com/google-gemini/gemini-cli/pull/17192) +- fix(admin): Ensure CLI commands run in non-interactive mode by @skeshive in + [#17218](https://github.com/google-gemini/gemini-cli/pull/17218) +- feat(core): support dynamic variable substitution in system prompt override by @NTaylorMullen in - [#16709](https://github.com/google-gemini/gemini-cli/pull/16709) -- feat(scheduler): add SchedulerStateManager for reactive tool state by + [#17042](https://github.com/google-gemini/gemini-cli/pull/17042) +- fix(core,cli): enable recursive directory access for by @galz10 in + [#17094](https://github.com/google-gemini/gemini-cli/pull/17094) +- Docs: Marking for experimental features by @jkcinouye in + [#16760](https://github.com/google-gemini/gemini-cli/pull/16760) +- Support command/ctrl/alt backspace correctly by @scidomino in + [#17175](https://github.com/google-gemini/gemini-cli/pull/17175) +- feat(plan): add approval mode instructions to system prompt by @jerop in + [#17151](https://github.com/google-gemini/gemini-cli/pull/17151) +- feat(core): enable disableLLMCorrection by default by @SandyTao520 in + [#17223](https://github.com/google-gemini/gemini-cli/pull/17223) +- Remove unused slug from sidebar by @chrstnb in + [#17229](https://github.com/google-gemini/gemini-cli/pull/17229) +- drain stdin on exit by @scidomino in + [#17241](https://github.com/google-gemini/gemini-cli/pull/17241) +- refactor(cli): decouple UI from live tool execution via ToolActionsContext by @abhipatel12 in - [#16651](https://github.com/google-gemini/gemini-cli/pull/16651) -- chore(automation): enforce 'help wanted' label permissions and update - guidelines by @bdmorgan in - [#16707](https://github.com/google-gemini/gemini-cli/pull/16707) -- fix(core): resolve circular dependency via tsconfig paths by @sehoon38 in - [#16730](https://github.com/google-gemini/gemini-cli/pull/16730) -- chore/release: bump version to 0.26.0-nightly.20260115.6cb3ae4e0 by - @gemini-cli-robot in - [#16738](https://github.com/google-gemini/gemini-cli/pull/16738) -- fix(automation): correct status/need-issue label matching wildcard by - @bdmorgan in [#16727](https://github.com/google-gemini/gemini-cli/pull/16727) -- fix(automation): prevent label-enforcer loop by ignoring all bots by @bdmorgan - in [#16746](https://github.com/google-gemini/gemini-cli/pull/16746) -- Add links to supported locations and minor fixes by @g-samroberts in - [#16476](https://github.com/google-gemini/gemini-cli/pull/16476) -- feat(policy): add source tracking to policy rules by @allenhutchison in - [#16670](https://github.com/google-gemini/gemini-cli/pull/16670) -- feat(automation): enforce '🔒 maintainer only' and fix bot loop by @bdmorgan - in [#16751](https://github.com/google-gemini/gemini-cli/pull/16751) -- Make merged settings non-nullable and fix all lints related to that. by - @jacob314 in [#16647](https://github.com/google-gemini/gemini-cli/pull/16647) -- fix(core): prevent ModelInfo event emission on aborted signal by @sehoon38 in - [#16752](https://github.com/google-gemini/gemini-cli/pull/16752) -- Replace relative paths to fix website build by @chrstnb in - [#16755](https://github.com/google-gemini/gemini-cli/pull/16755) -- Restricting to localhost by @cocosheng-g in - [#16548](https://github.com/google-gemini/gemini-cli/pull/16548) -- fix(cli): add explicit dependency on color-convert by @sehoon38 in - [#16757](https://github.com/google-gemini/gemini-cli/pull/16757) -- fix(automation): robust label enforcement with permission checks by @bdmorgan - in [#16762](https://github.com/google-gemini/gemini-cli/pull/16762) -- fix(cli): prevent OOM crash by limiting file search traversal and adding - timeout by @galz10 in - [#16696](https://github.com/google-gemini/gemini-cli/pull/16696) -- fix(cli): safely handle /dev/tty access on macOS by @korade-krushna in - [#16531](https://github.com/google-gemini/gemini-cli/pull/16531) -- docs: clarify workspace test execution in GEMINI.md by @mattKorwel in - [#16764](https://github.com/google-gemini/gemini-cli/pull/16764) -- Add support for running available commands prior to MCP servers loading by - @Adib234 in [#15596](https://github.com/google-gemini/gemini-cli/pull/15596) -- feat(plan): add experimental 'plan' approval mode by @jerop in - [#16753](https://github.com/google-gemini/gemini-cli/pull/16753) -- feat(scheduler): add functional awaitConfirmation utility by @abhipatel12 in - [#16721](https://github.com/google-gemini/gemini-cli/pull/16721) -- fix(infra): update maintainer rollup label to 'workstream-rollup' by @bdmorgan - in [#16809](https://github.com/google-gemini/gemini-cli/pull/16809) -- fix(infra): use GraphQL to detect direct parents in rollup workflow by - @bdmorgan in [#16811](https://github.com/google-gemini/gemini-cli/pull/16811) -- chore(workflows): rename label-workstream-rollup workflow by @bdmorgan in - [#16818](https://github.com/google-gemini/gemini-cli/pull/16818) -- skip simple-mcp-server.test.ts by @scidomino in - [#16842](https://github.com/google-gemini/gemini-cli/pull/16842) -- Steer outer agent to use expert subagents when present by @gundermanc in - [#16763](https://github.com/google-gemini/gemini-cli/pull/16763) -- Fix race condition by awaiting scheduleToolCalls by @chrstnb in - [#16759](https://github.com/google-gemini/gemini-cli/pull/16759) -- cleanup: Organize key bindings by @scidomino in - [#16798](https://github.com/google-gemini/gemini-cli/pull/16798) -- feat(core): Add generalist agent. by @joshualitt in - [#16638](https://github.com/google-gemini/gemini-cli/pull/16638) -- perf(ui): optimize text buffer and highlighting for large inputs by - @NTaylorMullen in - [#16782](https://github.com/google-gemini/gemini-cli/pull/16782) -- fix(core): fix PTY descriptor shell leak by @galz10 in - [#16773](https://github.com/google-gemini/gemini-cli/pull/16773) -- feat(plan): enforce strict read-only policy and halt execution on violation by - @jerop in [#16849](https://github.com/google-gemini/gemini-cli/pull/16849) -- remove need-triage label from bug_report template by @sehoon38 in - [#16864](https://github.com/google-gemini/gemini-cli/pull/16864) -- fix(core): truncate large telemetry log entries by @sehoon38 in - [#16769](https://github.com/google-gemini/gemini-cli/pull/16769) -- docs(extensions): add Agent Skills support and mark feature as experimental by + [#17183](https://github.com/google-gemini/gemini-cli/pull/17183) +- fix(core): update token count and telemetry on /chat resume history load by + @psinha40898 in + [#16279](https://github.com/google-gemini/gemini-cli/pull/16279) +- fix: /policy to display policies according to mode by @ishaanxgupta in + [#16772](https://github.com/google-gemini/gemini-cli/pull/16772) +- fix(core): simplify replace tool error message by @SandyTao520 in + [#17246](https://github.com/google-gemini/gemini-cli/pull/17246) +- feat(cli): consolidate shell inactivity and redirection monitoring by @NTaylorMullen in - [#16859](https://github.com/google-gemini/gemini-cli/pull/16859) -- fix(core): surface warnings for invalid hook event names in configuration - (#16788) by @sehoon38 in - [#16873](https://github.com/google-gemini/gemini-cli/pull/16873) -- feat(plan): remove read_many_files from approval mode policies by @jerop in - [#16876](https://github.com/google-gemini/gemini-cli/pull/16876) -- feat(admin): implement admin controls polling and restart prompt by @skeshive - in [#16627](https://github.com/google-gemini/gemini-cli/pull/16627) -- Remove LRUCache class migrating to mnemoist by @jacob314 in - [#16872](https://github.com/google-gemini/gemini-cli/pull/16872) -- feat(settings): rename negative settings to positive naming (disable* -> - enable*) by @afarber in - [#14142](https://github.com/google-gemini/gemini-cli/pull/14142) -- refactor(cli): unify shell confirmation dialogs by @NTaylorMullen in - [#16828](https://github.com/google-gemini/gemini-cli/pull/16828) -- feat(agent): enable agent skills by default by @NTaylorMullen in - [#16736](https://github.com/google-gemini/gemini-cli/pull/16736) -- refactor(core): foundational truncation refactoring and token estimation - optimization by @NTaylorMullen in - [#16824](https://github.com/google-gemini/gemini-cli/pull/16824) -- fix(hooks): enable /hooks disable to reliably stop single hooks by + [#17086](https://github.com/google-gemini/gemini-cli/pull/17086) +- fix(scheduler): prevent stale tool re-publication and fix stuck UI state by @abhipatel12 in - [#16804](https://github.com/google-gemini/gemini-cli/pull/16804) -- Don't commit unless user asks us to. by @gundermanc in - [#16902](https://github.com/google-gemini/gemini-cli/pull/16902) -- chore: remove a2a-adapter and bump @a2a-js/sdk to 0.3.8 by @adamfweidman in - [#16800](https://github.com/google-gemini/gemini-cli/pull/16800) -- fix: Show experiment values in settings UI for compressionThreshold by - @ishaanxgupta in - [#16267](https://github.com/google-gemini/gemini-cli/pull/16267) -- feat(cli): replace relative keyboard shortcuts link with web URL by - @imaliabbas in - [#16479](https://github.com/google-gemini/gemini-cli/pull/16479) -- fix(core): resolve PKCE length issue and stabilize OAuth redirect port by - @sehoon38 in [#16815](https://github.com/google-gemini/gemini-cli/pull/16815) -- Delete rewind documentation for now by @Adib234 in - [#16932](https://github.com/google-gemini/gemini-cli/pull/16932) -- Stabilize skill-creator CI and package format by @NTaylorMullen in - [#17001](https://github.com/google-gemini/gemini-cli/pull/17001) -- Stabilize the git evals by @gundermanc in - [#16989](https://github.com/google-gemini/gemini-cli/pull/16989) -- fix(core): attempt compression before context overflow check by @NTaylorMullen - in [#16914](https://github.com/google-gemini/gemini-cli/pull/16914) -- Fix inverted logic. by @gundermanc in - [#17007](https://github.com/google-gemini/gemini-cli/pull/17007) -- chore(scripts): add duplicate issue closer script and fix lint errors by - @bdmorgan in [#16997](https://github.com/google-gemini/gemini-cli/pull/16997) -- docs: update README and config guide to reference Gemini 3 by @JayadityaGit in - [#15806](https://github.com/google-gemini/gemini-cli/pull/15806) -- fix(cli): correct Homebrew installation detection by @kij in - [#14727](https://github.com/google-gemini/gemini-cli/pull/14727) -- Demote git evals to nightly run. by @gundermanc in - [#17030](https://github.com/google-gemini/gemini-cli/pull/17030) -- fix(cli): use OSC-52 clipboard copy in Windows Terminal by @Thomas-Shephard in - [#16920](https://github.com/google-gemini/gemini-cli/pull/16920) -- Fix: Process all parts in response chunks when thought is first by @pyrytakala - in [#13539](https://github.com/google-gemini/gemini-cli/pull/13539) -- fix(automation): fix jq quoting error in pr-triage.sh by @Kimsoo0119 in - [#16958](https://github.com/google-gemini/gemini-cli/pull/16958) -- refactor(core): decouple scheduler into orchestration, policy, and - confirmation by @abhipatel12 in - [#16895](https://github.com/google-gemini/gemini-cli/pull/16895) -- feat: add /introspect slash command by @NTaylorMullen in - [#17048](https://github.com/google-gemini/gemini-cli/pull/17048) -- refactor(cli): centralize tool mapping and decouple legacy scheduler by + [#17227](https://github.com/google-gemini/gemini-cli/pull/17227) +- feat(config): default enableEventDrivenScheduler to true by @abhipatel12 in + [#17211](https://github.com/google-gemini/gemini-cli/pull/17211) +- feat(hooks): enable hooks system by default by @abhipatel12 in + [#17247](https://github.com/google-gemini/gemini-cli/pull/17247) +- feat(core): Enable AgentRegistry to track all discovered subagents by + @SandyTao520 in + [#17253](https://github.com/google-gemini/gemini-cli/pull/17253) +- feat(core): Have subagents use a JSON schema type for input. by @joshualitt in + [#17152](https://github.com/google-gemini/gemini-cli/pull/17152) +- feat: replace large text pastes with [Pasted Text: X lines] placeholder by + @jackwotherspoon in + [#16422](https://github.com/google-gemini/gemini-cli/pull/16422) +- security(hooks): Wrap hook-injected context in distinct XML tags by @yunaseoul + in [#17237](https://github.com/google-gemini/gemini-cli/pull/17237) +- Enable the ability to queue specific nightly eval tests by @gundermanc in + [#17262](https://github.com/google-gemini/gemini-cli/pull/17262) +- docs(hooks): comprehensive update of hook documentation and specs by @abhipatel12 in - [#17044](https://github.com/google-gemini/gemini-cli/pull/17044) -- fix(ui): ensure rationale renders before tool calls by @NTaylorMullen in - [#17043](https://github.com/google-gemini/gemini-cli/pull/17043) -- fix(workflows): use author_association for maintainer check by @bdmorgan in - [#17060](https://github.com/google-gemini/gemini-cli/pull/17060) -- fix return type of fireSessionStartEvent to defaultHookOutput by @ved015 in - [#16833](https://github.com/google-gemini/gemini-cli/pull/16833) -- feat(cli): add experiment gate for event-driven scheduler by @abhipatel12 in - [#17055](https://github.com/google-gemini/gemini-cli/pull/17055) -- feat(core): improve shell redirection transparency and security by - @NTaylorMullen in - [#16486](https://github.com/google-gemini/gemini-cli/pull/16486) -- fix(core): deduplicate ModelInfo emission in GeminiClient by @NTaylorMullen in - [#17075](https://github.com/google-gemini/gemini-cli/pull/17075) -- docs(themes): remove unsupported DiffModified color key by @jw409 in - [#17073](https://github.com/google-gemini/gemini-cli/pull/17073) -- fix: update currentSequenceModel when modelChanged by @adamfweidman in - [#17051](https://github.com/google-gemini/gemini-cli/pull/17051) -- feat(core): enhanced anchored iterative context compression with - self-verification by @rmedranollamas in - [#15710](https://github.com/google-gemini/gemini-cli/pull/15710) -- Fix mcp instructions by @chrstnb in - [#16439](https://github.com/google-gemini/gemini-cli/pull/16439) -- [A2A] Disable checkpointing if git is not installed by @cocosheng-g in - [#16896](https://github.com/google-gemini/gemini-cli/pull/16896) -- feat(admin): set admin.skills.enabled based on advancedFeaturesEnabled setting - by @skeshive in - [#17095](https://github.com/google-gemini/gemini-cli/pull/17095) -- Test coverage for hook exit code cases by @gundermanc in - [#17041](https://github.com/google-gemini/gemini-cli/pull/17041) -- Revert "Revert "Update extension examples"" by @chrstnb in - [#16445](https://github.com/google-gemini/gemini-cli/pull/16445) -- fix(core): Provide compact, actionable errors for agent delegation failures by + [#16816](https://github.com/google-gemini/gemini-cli/pull/16816) +- refactor: improve large text paste placeholder by @jacob314 in + [#17269](https://github.com/google-gemini/gemini-cli/pull/17269) +- feat: implement /rewind command by @Adib234 in + [#15720](https://github.com/google-gemini/gemini-cli/pull/15720) +- Feature/jetbrains ide detection by @SoLoHiC in + [#16243](https://github.com/google-gemini/gemini-cli/pull/16243) +- docs: update typo in mcp-server.md file by @schifferl in + [#17099](https://github.com/google-gemini/gemini-cli/pull/17099) +- Sanitize command names and descriptions by @ehedlund in + [#17228](https://github.com/google-gemini/gemini-cli/pull/17228) +- fix(auth): don't crash when initial auth fails by @skeshive in + [#17308](https://github.com/google-gemini/gemini-cli/pull/17308) +- Added image pasting capabilities for Wayland and X11 on Linux by @devr0306 in + [#17144](https://github.com/google-gemini/gemini-cli/pull/17144) +- feat: add AskUser tool schema by @jackwotherspoon in + [#16988](https://github.com/google-gemini/gemini-cli/pull/16988) +- fix cli settings: resolve layout jitter in settings bar by @Mag1ck in + [#16256](https://github.com/google-gemini/gemini-cli/pull/16256) +- fix: show whitespace changes in edit tool diffs by @Ujjiyara in + [#17213](https://github.com/google-gemini/gemini-cli/pull/17213) +- Remove redundant calls setting linuxClipboardTool. getUserLinuxClipboardTool() + now handles the caching internally by @jacob314 in + [#17320](https://github.com/google-gemini/gemini-cli/pull/17320) +- ci: allow failure in evals-nightly run step by @gundermanc in + [#17319](https://github.com/google-gemini/gemini-cli/pull/17319) +- feat(cli): Add state management and plumbing for agent configuration dialog by @SandyTao520 in - [#16493](https://github.com/google-gemini/gemini-cli/pull/16493) -- fix: migrate BeforeModel and AfterModel hooks to HookSystem by @ved015 in - [#16599](https://github.com/google-gemini/gemini-cli/pull/16599) -- feat(admin): apply admin settings to gemini skills/mcp/extensions commands by - @skeshive in [#17102](https://github.com/google-gemini/gemini-cli/pull/17102) -- fix(core): update telemetry token count after session resume by @psinha40898 - in [#15491](https://github.com/google-gemini/gemini-cli/pull/15491) -- Demote the subagent test to nightly by @gundermanc in - [#17105](https://github.com/google-gemini/gemini-cli/pull/17105) -- feat(plan): telemetry to track adoption and usage of plan mode by @Adib234 in - [#16863](https://github.com/google-gemini/gemini-cli/pull/16863) -- feat: Add flash lite utility fallback chain by @adamfweidman in - [#17056](https://github.com/google-gemini/gemini-cli/pull/17056) -- Fixes Windows crash: "Cannot resize a pty that has already exited" by @dzammit - in [#15757](https://github.com/google-gemini/gemini-cli/pull/15757) -- feat(core): Add initial eval for generalist agent. by @joshualitt in - [#16856](https://github.com/google-gemini/gemini-cli/pull/16856) -- feat(core): unify agent enabled and disabled flags by @SandyTao520 in - [#17127](https://github.com/google-gemini/gemini-cli/pull/17127) -- fix(core): resolve auto model in default strategy by @sehoon38 in - [#17116](https://github.com/google-gemini/gemini-cli/pull/17116) -- docs: update project context and pr-creator workflow by @NTaylorMullen in - [#17119](https://github.com/google-gemini/gemini-cli/pull/17119) -- fix(cli): send gemini-cli version as mcp client version by @dsp in - [#13407](https://github.com/google-gemini/gemini-cli/pull/13407) -- fix(cli): resolve Ctrl+Enter and Ctrl+J newline issues by @imadraude in - [#17021](https://github.com/google-gemini/gemini-cli/pull/17021) -- Remove missing sidebar item by @chrstnb in - [#17145](https://github.com/google-gemini/gemini-cli/pull/17145) -- feat(core): Ensure all properties in hooks object are event names. by - @joshualitt in - [#16870](https://github.com/google-gemini/gemini-cli/pull/16870) -- fix(cli): fix newline support broken in previous PR by @scidomino in - [#17159](https://github.com/google-gemini/gemini-cli/pull/17159) -- Add interactive ValidationDialog for handling 403 VALIDATION_REQUIRED errors. - by @gsquared94 in - [#16231](https://github.com/google-gemini/gemini-cli/pull/16231) -- Add Esc-Esc to clear prompt when it's not empty by @Adib234 in - [#17131](https://github.com/google-gemini/gemini-cli/pull/17131) -- Avoid spurious warnings about unexpected renders triggered by appEvents and - coreEvents. by @jacob314 in - [#17160](https://github.com/google-gemini/gemini-cli/pull/17160) -- fix(cli): resolve home/end keybinding conflict by @scidomino in - [#17124](https://github.com/google-gemini/gemini-cli/pull/17124) -- fix(cli): display 'http' type on mcp list by @pamanta in - [#16915](https://github.com/google-gemini/gemini-cli/pull/16915) -- fix bad fallback logic external editor logic by @scidomino in - [#17166](https://github.com/google-gemini/gemini-cli/pull/17166) -- Fix bug where System scopes weren't migrated. by @jacob314 in - [#17174](https://github.com/google-gemini/gemini-cli/pull/17174) -- Fix mcp tool lookup in tool registry by @werdnum in - [#17054](https://github.com/google-gemini/gemini-cli/pull/17054) - -**Full changelog**: -https://github.com/google-gemini/gemini-cli/compare/v0.25.2...v0.26.0 + [#17259](https://github.com/google-gemini/gemini-cli/pull/17259) +- bug: fix ide-client connection to ide-companion when inside docker via + ssh/devcontainer by @kapsner in + [#15049](https://github.com/google-gemini/gemini-cli/pull/15049) +- Emit correct newline type return by @scidomino in + [#17331](https://github.com/google-gemini/gemini-cli/pull/17331) +- New skill: docs-writer by @g-samroberts in + [#17268](https://github.com/google-gemini/gemini-cli/pull/17268) +- fix(core): Resolve AbortSignal MaxListenersExceededWarning (#5950) by + @spencer426 in + [#16735](https://github.com/google-gemini/gemini-cli/pull/16735) +- Disable tips after 10 runs by @Adib234 in + [#17101](https://github.com/google-gemini/gemini-cli/pull/17101) +- Fix so rewind starts at the bottom and loadHistory refreshes static content. + by @jacob314 in + [#17335](https://github.com/google-gemini/gemini-cli/pull/17335) +- feat(core): Remove legacy settings. by @joshualitt in + [#17244](https://github.com/google-gemini/gemini-cli/pull/17244) +- feat(plan): add 'communicate' tool kind by @jerop in + [#17341](https://github.com/google-gemini/gemini-cli/pull/17341) +- feat(routing): A/B Test Numerical Complexity Scoring for Gemini 3 by + @mattKorwel in + [#16041](https://github.com/google-gemini/gemini-cli/pull/16041) +- feat(plan): update UI Theme for Plan Mode by @Adib234 in + [#17243](https://github.com/google-gemini/gemini-cli/pull/17243) +- fix(ui): stabilize rendering during terminal resize in alternate buffer by + @lkk214 in [#15783](https://github.com/google-gemini/gemini-cli/pull/15783) +- feat(cli): add /agents config command and improve agent discovery by + @SandyTao520 in + [#17342](https://github.com/google-gemini/gemini-cli/pull/17342) +- feat(mcp): add enable/disable commands for MCP servers (#11057) by @jasmeetsb + in [#16299](https://github.com/google-gemini/gemini-cli/pull/16299) +- fix(cli)!: Default to interactive mode for positional arguments by + @ishaanxgupta in + [#16329](https://github.com/google-gemini/gemini-cli/pull/16329) +- Fix issue #17080 by @jacob314 in + [#17100](https://github.com/google-gemini/gemini-cli/pull/17100) +- feat(core): Refresh agents after loading an extension. by @joshualitt in + [#17355](https://github.com/google-gemini/gemini-cli/pull/17355) +- fix(cli): include source in policy rule display by @allenhutchison in + [#17358](https://github.com/google-gemini/gemini-cli/pull/17358) +- fix: remove obsolete CloudCode PerDay quota and 120s terminal threshold by + @gsquared94 in + [#17236](https://github.com/google-gemini/gemini-cli/pull/17236) +- Refactor subagent delegation to be one tool per agent by @gundermanc in + [#17346](https://github.com/google-gemini/gemini-cli/pull/17346) +- fix(core): Include MCP server name in OAuth message by @jerop in + [#17351](https://github.com/google-gemini/gemini-cli/pull/17351) +- Fix pr-triage.sh script to update pull requests with tags "help wanted" and + "maintainer only" by @jacob314 in + [#17324](https://github.com/google-gemini/gemini-cli/pull/17324) +- feat(plan): implement simple workflow for planning in main agent by @jerop in + [#17326](https://github.com/google-gemini/gemini-cli/pull/17326) +- fix: exit with non-zero code when esbuild is missing by @yuvrajangadsingh in + [#16967](https://github.com/google-gemini/gemini-cli/pull/16967) +- fix: ensure @docs/cli/custom-commands.md UI message ordering and test by + @medic-code in + [#12038](https://github.com/google-gemini/gemini-cli/pull/12038) +- fix(core): add alternative command names for Antigravity editor detec… by + @baeseokjae in + [#16829](https://github.com/google-gemini/gemini-cli/pull/16829) +- Refactor: Migrate CLI appEvents to Core coreEvents by @Adib234 in + [#15737](https://github.com/google-gemini/gemini-cli/pull/15737) +- fix(core): await MCP initialization in non-interactive mode by @Ratish1 in + [#17390](https://github.com/google-gemini/gemini-cli/pull/17390) +- Fix modifyOtherKeys enablement on unsupported terminals by @seekskyworld in + [#16714](https://github.com/google-gemini/gemini-cli/pull/16714) +- fix(core): gracefully handle disk full errors in chat recording by + @godwiniheuwa in + [#17305](https://github.com/google-gemini/gemini-cli/pull/17305) +- fix(oauth): update oauth to use 127.0.0.1 instead of localhost by @skeshive in + [#17388](https://github.com/google-gemini/gemini-cli/pull/17388) +- fix(core): use RFC 9728 compliant path-based OAuth protected resource + discovery by @vrv in + [#15756](https://github.com/google-gemini/gemini-cli/pull/15756) +- Update Code Wiki README badge by @PatoBeltran in + [#15229](https://github.com/google-gemini/gemini-cli/pull/15229) +- Add conda installation instructions for Gemini CLI by @ishaanxgupta in + [#16921](https://github.com/google-gemini/gemini-cli/pull/16921) +- chore(refactor): extract BaseSettingsDialog component by @SandyTao520 in + [#17369](https://github.com/google-gemini/gemini-cli/pull/17369) +- fix(cli): preserve input text when declining tool approval (#15624) by + @ManojINaik in + [#15659](https://github.com/google-gemini/gemini-cli/pull/15659) +- chore: upgrade dep: diff 7.0.0-> 8.0.3 by @scidomino in + [#17403](https://github.com/google-gemini/gemini-cli/pull/17403) +- feat: add AskUserDialog for UI component of AskUser tool by @jackwotherspoon + in [#17344](https://github.com/google-gemini/gemini-cli/pull/17344) +- feat(ui): display user tier in about command by @sehoon38 in + [#17400](https://github.com/google-gemini/gemini-cli/pull/17400) +- feat: add clearContext to AfterAgent hooks by @jackwotherspoon in + [#16574](https://github.com/google-gemini/gemini-cli/pull/16574) +- fix(cli): change image paste location to global temp directory (#17396) by + @devr0306 in [#17396](https://github.com/google-gemini/gemini-cli/pull/17396) +- Fix line endings issue with Notice file by @scidomino in + [#17417](https://github.com/google-gemini/gemini-cli/pull/17417) +- feat(plan): implement persistent approvalMode setting by @Adib234 in + [#17350](https://github.com/google-gemini/gemini-cli/pull/17350) +- feat(ui): Move keyboard handling into BaseSettingsDialog by @SandyTao520 in + [#17404](https://github.com/google-gemini/gemini-cli/pull/17404) +- Allow prompt queueing during MCP initialization by @Adib234 in + [#17395](https://github.com/google-gemini/gemini-cli/pull/17395) +- feat: implement AgentConfigDialog for /agents config command by @SandyTao520 + in [#17370](https://github.com/google-gemini/gemini-cli/pull/17370) +- fix(agents): default to all tools when tool list is omitted in subagents by + @gundermanc in + [#17422](https://github.com/google-gemini/gemini-cli/pull/17422) +- feat(cli): Moves tool confirmations to a queue UX by @abhipatel12 in + [#17276](https://github.com/google-gemini/gemini-cli/pull/17276) +- fix(core): hide user tier name by @sehoon38 in + [#17418](https://github.com/google-gemini/gemini-cli/pull/17418) +- feat: Enforce unified folder trust for /directory add by @galz10 in + [#17359](https://github.com/google-gemini/gemini-cli/pull/17359) +- migrate fireToolNotificationHook to hookSystem by @ved015 in + [#17398](https://github.com/google-gemini/gemini-cli/pull/17398) +- Clean up dead code by @scidomino in + [#17443](https://github.com/google-gemini/gemini-cli/pull/17443) +- feat(workflow): add stale pull request closer with linked-issue enforcement by + @bdmorgan in [#17449](https://github.com/google-gemini/gemini-cli/pull/17449) +- feat(workflow): expand stale-exempt labels to include help wanted and Public + Roadmap by @bdmorgan in + [#17459](https://github.com/google-gemini/gemini-cli/pull/17459) +- chore(workflow): remove redundant label-enforcer workflow by @bdmorgan in + [#17460](https://github.com/google-gemini/gemini-cli/pull/17460) +- Resolves the confusing error message `ripgrep exited with code null that + occurs when a search operation is cancelled or aborted by @maximmasiutin in + [#14267](https://github.com/google-gemini/gemini-cli/pull/14267) +- fix: detect pnpm/pnpx in ~/.local by @rwakulszowa in + [#15254](https://github.com/google-gemini/gemini-cli/pull/15254) +- docs: Add instructions for MacPorts and uninstall instructions for Homebrew by + @breun in [#17412](https://github.com/google-gemini/gemini-cli/pull/17412) +- docs(hooks): clarify mandatory 'type' field and update hook schema + documentation by @abhipatel12 in + [#17499](https://github.com/google-gemini/gemini-cli/pull/17499) +- Improve error messages on failed onboarding by @gsquared94 in + [#17357](https://github.com/google-gemini/gemini-cli/pull/17357) +- Follow up to "enableInteractiveShell for external tooling relying on a2a + server" by @DavidAPierce in + [#17130](https://github.com/google-gemini/gemini-cli/pull/17130) +- Fix/issue 17070 by @alih552 in + [#17242](https://github.com/google-gemini/gemini-cli/pull/17242) +- fix(core): handle URI-encoded workspace paths in IdeClient by @dong-jun-shin + in [#17476](https://github.com/google-gemini/gemini-cli/pull/17476) +- feat(cli): add quick clear input shortcuts in vim mode by @harshanadim in + [#17470](https://github.com/google-gemini/gemini-cli/pull/17470) +- feat(core): optimize shell tool llmContent output format by @SandyTao520 in + [#17538](https://github.com/google-gemini/gemini-cli/pull/17538) +- Fix bug in detecting already added paths. by @jacob314 in + [#17430](https://github.com/google-gemini/gemini-cli/pull/17430) +- feat(scheduler): support multi-scheduler tool aggregation and nested call IDs + by @abhipatel12 in + [#17429](https://github.com/google-gemini/gemini-cli/pull/17429) +- feat(agents): implement first-run experience for project-level sub-agents by + @gundermanc in + [#17266](https://github.com/google-gemini/gemini-cli/pull/17266) +- Update extensions docs by @chrstnb in + [#16093](https://github.com/google-gemini/gemini-cli/pull/16093) +- Docs: Refactor left nav on the website by @jkcinouye in + [#17558](https://github.com/google-gemini/gemini-cli/pull/17558) +- fix(core): stream grep/ripgrep output to prevent OOM by @adamfweidman in + [#17146](https://github.com/google-gemini/gemini-cli/pull/17146) +- feat(plan): add persistent plan file storage by @jerop in + [#17563](https://github.com/google-gemini/gemini-cli/pull/17563) +- feat(agents): migrate subagents to event-driven scheduler by @abhipatel12 in + [#17567](https://github.com/google-gemini/gemini-cli/pull/17567) +- Fix extensions config error by @chrstnb in + [#17580](https://github.com/google-gemini/gemini-cli/pull/17580) +- fix(plan): remove subagent invocation from plan mode by @jerop in + [#17593](https://github.com/google-gemini/gemini-cli/pull/17593) +- feat(ui): add solid background color option for input prompt by @jacob314 in + [#16563](https://github.com/google-gemini/gemini-cli/pull/16563) +- feat(plan): refresh system prompt when approval mode changes (Shift+Tab) by + @jerop in [#17585](https://github.com/google-gemini/gemini-cli/pull/17585) +- feat(cli): add global setting to disable UI spinners by @galz10 in + [#17234](https://github.com/google-gemini/gemini-cli/pull/17234) +- fix(security): enforce strict policy directory permissions by @yunaseoul in + [#17353](https://github.com/google-gemini/gemini-cli/pull/17353) +- test(core): fix tests in windows by @scidomino in + [#17592](https://github.com/google-gemini/gemini-cli/pull/17592) +- feat(mcp/extensions): Allow users to selectively enable/disable MCP servers + included in an extension( Issue #11057 & #17402) by @jasmeetsb in + [#17434](https://github.com/google-gemini/gemini-cli/pull/17434) +- Always map mac keys, even on other platforms by @scidomino in + [#17618](https://github.com/google-gemini/gemini-cli/pull/17618) +- Ctrl-O by @jacob314 in + [#17617](https://github.com/google-gemini/gemini-cli/pull/17617) +- feat(plan): update cycling order of approval modes by @Adib234 in + [#17622](https://github.com/google-gemini/gemini-cli/pull/17622) +- fix(cli): restore 'Modify with editor' option in external terminals by + @abhipatel12 in + [#17621](https://github.com/google-gemini/gemini-cli/pull/17621) +- Slash command for helping in debugging by @gundermanc in + [#17609](https://github.com/google-gemini/gemini-cli/pull/17609) +- feat: add double-click to expand/collapse large paste placeholders by + @jackwotherspoon in + [#17471](https://github.com/google-gemini/gemini-cli/pull/17471) +- refactor(cli): migrate non-interactive flow to event-driven scheduler by + @abhipatel12 in + [#17572](https://github.com/google-gemini/gemini-cli/pull/17572) +- fix: loadcodeassist eligible tiers getting ignored for unlicensed users + (regression) by @gsquared94 in + [#17581](https://github.com/google-gemini/gemini-cli/pull/17581) +- chore(core): delete legacy nonInteractiveToolExecutor by @abhipatel12 in + [#17573](https://github.com/google-gemini/gemini-cli/pull/17573) +- feat(core): enforce server prefixes for MCP tools in agent definitions by + @abhipatel12 in + [#17574](https://github.com/google-gemini/gemini-cli/pull/17574) +- feat (mcp): Refresh MCP prompts on list changed notification by @MrLesk in + [#14863](https://github.com/google-gemini/gemini-cli/pull/14863) +- feat(ui): pretty JSON rendering tool outputs by @medic-code in + [#9767](https://github.com/google-gemini/gemini-cli/pull/9767) +- Fix iterm alternate buffer mode issue rendering backgrounds by @jacob314 in + [#17634](https://github.com/google-gemini/gemini-cli/pull/17634) +- feat(cli): add gemini extensions list --output-format=json by @AkihiroSuda in + [#14479](https://github.com/google-gemini/gemini-cli/pull/14479) +- fix(extensions): add .gitignore to extension templates by @godwiniheuwa in + [#17293](https://github.com/google-gemini/gemini-cli/pull/17293) +- paste transform followup by @jacob314 in + [#17624](https://github.com/google-gemini/gemini-cli/pull/17624) +- refactor: rename formatMemoryUsage to formatBytes by @Nubebuster in + [#14997](https://github.com/google-gemini/gemini-cli/pull/14997) +- chore: remove extra top margin from /hooks and /extensions by @jackwotherspoon + in [#17663](https://github.com/google-gemini/gemini-cli/pull/17663) +- feat(cli): add oncall command for issue triage by @sehoon38 in + [#17661](https://github.com/google-gemini/gemini-cli/pull/17661) +- Fix sidebar issue for extensions link by @chrstnb in + [#17668](https://github.com/google-gemini/gemini-cli/pull/17668) +- Change formatting to prevent UI redressing attacks by @scidomino in + [#17611](https://github.com/google-gemini/gemini-cli/pull/17611) +- Fix cluster of bugs in the settings dialog. by @jacob314 in + [#17628](https://github.com/google-gemini/gemini-cli/pull/17628) +- Update sidebar to resolve site build issues by @chrstnb in + [#17674](https://github.com/google-gemini/gemini-cli/pull/17674) +- fix(admin): fix a few bugs related to admin controls by @skeshive in + [#17590](https://github.com/google-gemini/gemini-cli/pull/17590) +- revert bad changes to tests by @scidomino in + [#17673](https://github.com/google-gemini/gemini-cli/pull/17673) +- feat(cli): show candidate issue state reason and duplicate status in triage by + @sehoon38 in [#17676](https://github.com/google-gemini/gemini-cli/pull/17676) +- Fix missing slash commands when Gemini CLI is in a project with a package.json + that doesn't follow semantic versioning by @Adib234 in + [#17561](https://github.com/google-gemini/gemini-cli/pull/17561) +- feat(core): Model family-specific system prompts by @joshualitt in + [#17614](https://github.com/google-gemini/gemini-cli/pull/17614) +- Sub-agents documentation. by @gundermanc in + [#16639](https://github.com/google-gemini/gemini-cli/pull/16639) +- feat: wire up AskUserTool with dialog by @jackwotherspoon in + [#17411](https://github.com/google-gemini/gemini-cli/pull/17411) +- Load extension settings for hooks, agents, skills by @chrstnb in + [#17245](https://github.com/google-gemini/gemini-cli/pull/17245) +- Fix issue where Gemini CLI can make changes when simply asked a question by + @gundermanc in + [#17608](https://github.com/google-gemini/gemini-cli/pull/17608) +- Update docs-writer skill for editing and add style guide for reference. by + @g-samroberts in + [#17669](https://github.com/google-gemini/gemini-cli/pull/17669) +- fix(ux): have user message display a short path for pasted images by @devr0306 + in [#17613](https://github.com/google-gemini/gemini-cli/pull/17613) +- feat(plan): enable AskUser tool in Plan mode for clarifying questions by + @jerop in [#17694](https://github.com/google-gemini/gemini-cli/pull/17694) +- GEMINI.md polish by @jacob314 in + [#17680](https://github.com/google-gemini/gemini-cli/pull/17680) +- refactor(core): centralize path validation and allow temp dir access for tools + by @NTaylorMullen in + [#17185](https://github.com/google-gemini/gemini-cli/pull/17185) +- feat(skills): promote Agent Skills to stable by @abhipatel12 in + [#17693](https://github.com/google-gemini/gemini-cli/pull/17693) +- refactor(cli): keyboard handling and AskUserDialog by @jacob314 in + [#17414](https://github.com/google-gemini/gemini-cli/pull/17414) +- docs: Add Experimental Remote Agent Docs by @adamfweidman in + [#17697](https://github.com/google-gemini/gemini-cli/pull/17697) +- revert: promote Agent Skills to stable (#17693) by @abhipatel12 in + [#17712](https://github.com/google-gemini/gemini-cli/pull/17712) +- feat(ux) Expandable (ctrl-O) and scrollable approvals in alternate buffer + mode. by @jacob314 in + [#17640](https://github.com/google-gemini/gemini-cli/pull/17640) +- feat(skills): promote skills settings to stable by @abhipatel12 in + [#17713](https://github.com/google-gemini/gemini-cli/pull/17713) +- fix(cli): Preserve settings dialog focus when searching by @SandyTao520 in + [#17701](https://github.com/google-gemini/gemini-cli/pull/17701) +- feat(ui): add terminal cursor support by @jacob314 in + [#17711](https://github.com/google-gemini/gemini-cli/pull/17711) +- docs(skills): remove experimental labels and update tutorials by @abhipatel12 + in [#17714](https://github.com/google-gemini/gemini-cli/pull/17714) +- docs: remove 'experimental' syntax for hooks in docs by @abhipatel12 in + [#17660](https://github.com/google-gemini/gemini-cli/pull/17660) +- Add support for an additional exclusion file besides .gitignore and + .geminiignore by @alisa-alisa in + [#16487](https://github.com/google-gemini/gemini-cli/pull/16487) +- feat: add review-frontend-and-fix command by @galz10 in + [#17707](https://github.com/google-gemini/gemini-cli/pull/17707) Full + Changelog: + https://github.com/google-gemini/gemini-cli/compare/v0.26.0...v0.27.0 diff --git a/docs/changelogs/preview.md b/docs/changelogs/preview.md index f80d8db80e6..93ed5a2a9cb 100644 --- a/docs/changelogs/preview.md +++ b/docs/changelogs/preview.md @@ -1,6 +1,6 @@ -# Preview release: Release v0.27.0-preview.0 +# Preview release: Release v0.28.0-preview.0 -Released: January 27, 2026 +Released: February 3, 2026 Our preview release includes the latest, new, and experimental features. This release may not be as stable as our [latest weekly release](latest.md). @@ -13,425 +13,295 @@ npm install -g @google/gemini-cli@preview ## Highlights -- **Event-Driven Architecture:** The tool execution scheduler is now - event-driven, improving performance and reliability. -- **System Prompt Override:** Now supports dynamic variable substitution. -- **Rewind Command:** The `/rewind` command has been implemented. -- **Linux Clipboard:** Image pasting capabilities for Wayland and X11 on Linux. +- **Improved Hooks Management:** Hooks enable/disable functionality now aligns + with skills and offers improved completion. +- **Custom Themes for Extensions:** Extensions can now support custom themes, + allowing for greater personalization. +- **User Identity Display:** User identity information (auth, email, tier) is + now displayed on startup and in the `stats` command. +- **Plan Mode Enhancements:** Plan mode has been improved with a generic + `Checklist` component and refactored `Todo`. +- **Background Shell Commands:** Implementation of background shell commands. ## What's Changed -- remove fireAgent and beforeAgent hook by @ishaanxgupta in - [#16919](https://github.com/google-gemini/gemini-cli/pull/16919) -- Remove unused modelHooks and toolHooks by @ved015 in - [#17115](https://github.com/google-gemini/gemini-cli/pull/17115) -- feat(cli): sanitize ANSI escape sequences in non-interactive output by - @sehoon38 in [#17172](https://github.com/google-gemini/gemini-cli/pull/17172) -- Update Attempt text to Retry when showing the retry happening to the … by - @sehoon38 in [#17178](https://github.com/google-gemini/gemini-cli/pull/17178) -- chore(skills): update pr-creator skill workflow by @sehoon38 in - [#17180](https://github.com/google-gemini/gemini-cli/pull/17180) -- feat(cli): implement event-driven tool execution scheduler by @abhipatel12 in - [#17078](https://github.com/google-gemini/gemini-cli/pull/17078) -- chore(release): bump version to 0.27.0-nightly.20260121.97aac696f by - @gemini-cli-robot in - [#17181](https://github.com/google-gemini/gemini-cli/pull/17181) -- Remove other rewind reference in docs by @chrstnb in - [#17149](https://github.com/google-gemini/gemini-cli/pull/17149) -- feat(skills): add code-reviewer skill by @sehoon38 in - [#17187](httpshttps://github.com/google-gemini/gemini-cli/pull/17187) -- feat(plan): Extend Shift+Tab Mode Cycling to include Plan Mode by @Adib234 in - [#17177](https://github.com/google-gemini/gemini-cli/pull/17177) -- feat(plan): refactor TestRig and eval helper to support configurable approval - modes by @jerop in - [#17171](https://github.com/google-gemini/gemini-cli/pull/17171) -- feat(workflows): support recursive workstream labeling and new IDs by - @bdmorgan in [#17207](https://github.com/google-gemini/gemini-cli/pull/17207) -- Run evals for all models. by @gundermanc in - [#17123](https://github.com/google-gemini/gemini-cli/pull/17123) -- fix(github): improve label-workstream-rollup efficiency with GraphQL by - @bdmorgan in [#17217](https://github.com/google-gemini/gemini-cli/pull/17217) -- Docs: Update changelogs for v.0.25.0 and v0.26.0-preview.0 releases. by - @g-samroberts in - [#17215](https://github.com/google-gemini/gemini-cli/pull/17215) -- Migrate beforeTool and afterTool hooks to hookSystem by @ved015 in - [#17204](https://github.com/google-gemini/gemini-cli/pull/17204) -- fix(github): improve label-workstream-rollup efficiency and fix bugs by - @bdmorgan in [#17219](https://github.com/google-gemini/gemini-cli/pull/17219) -- feat(cli): improve skill enablement/disablement verbiage by @NTaylorMullen in - [#17192](https://github.com/google-gemini/gemini-cli/pull/17192) -- fix(admin): Ensure CLI commands run in non-interactive mode by @skeshive in - [#17218](https://github.com/google-gemini/gemini-cli/pull/17218) -- feat(core): support dynamic variable substitution in system prompt override by - @NTaylorMullen in - [#17042](https://github.com/google-gemini/gemini-cli/pull/17042) -- fix(core,cli): enable recursive directory access for by @galz10 in - [#17094](https://github.com/google-gemini/gemini-cli/pull/17094) -- Docs: Marking for experimental features by @jkcinouye in - [#16760](https://github.com/google-gemini/gemini-cli/pull/16760) -- Support command/ctrl/alt backspace correctly by @scidomino in - [#17175](https://github.com/google-gemini/gemini-cli/pull/17175) -- feat(plan): add approval mode instructions to system prompt by @jerop in - [#17151](https://github.com/google-gemini/gemini-cli/pull/17151) -- feat(core): enable disableLLMCorrection by default by @SandyTao520 in - [#17223](https://github.com/google-gemini/gemini-cli/pull/17223) -- Remove unused slug from sidebar by @chrstnb in - [#17229](https://github.com/google-gemini/gemini-cli/pull/17229) -- drain stdin on exit by @scidomino in - [#17241](https://github.com/google-gemini/gemini-cli/pull/17241) -- refactor(cli): decouple UI from live tool execution via ToolActionsContext by - @abhipatel12 in - [#17183](https://github.com/google-gemini/gemini-cli/pull/17183) -- fix(core): update token count and telemetry on /chat resume history load by - @psinha40898 in - [#16279](https://github.com/google-gemini/gemini-cli/pull/16279) -- fix: /policy to display policies according to mode by @ishaanxgupta in - [#16772](https://github.com/google-gemini/gemini-cli/pull/16772) -- fix(core): simplify replace tool error message by @SandyTao520 in - [#17246](https://github.com/google-gemini/gemini-cli/pull/17246) -- feat(cli): consolidate shell inactivity and redirection monitoring by - @NTaylorMullen in - [#17086](https://github.com/google-gemini/gemini-cli/pull/17086) -- fix(scheduler): prevent stale tool re-publication and fix stuck UI state by - @abhipatel12 in - [#17227](https://github.com/google-gemini/gemini-cli/pull/17227) -- feat(config): default enableEventDrivenScheduler to true by @abhipatel12 in - [#17211](https://github.com/google-gemini/gemini-cli/pull/17211) -- feat(hooks): enable hooks system by default by @abhipatel12 in - [#17247](https://github.com/google-gemini/gemini-cli/pull/17247) -- feat(core): Enable AgentRegistry to track all discovered subagents by - @SandyTao520 in - [#17253](https://github.com/google-gemini/gemini-cli/pull/17253) -- feat(core): Have subagents use a JSON schema type for input. by @joshualitt in - [#17152](https://github.com/google-gemini/gemini-cli/pull/17152) -- feat: replace large text pastes with [Pasted Text: X lines] placeholder by - @jackwotherspoon in - [#16422](https://github.com/google-gemini/gemini-cli/pull/16422) -- security(hooks): Wrap hook-injected context in distinct XML tags by @yunaseoul - in [#17237](https://github.com/google-gemini/gemini-cli/pull/17237) -- Enable the ability to queue specific nightly eval tests by @gundermanc in - [#17262](https://github.com/google-gemini/gemini-cli/pull/17262) -- docs(hooks): comprehensive update of hook documentation and specs by - @abhipatel12 in - [#16816](https://github.com/google-gemini/gemini-cli/pull/16816) -- refactor: improve large text paste placeholder by @jacob314 in - [#17269](https://github.com/google-gemini/gemini-cli/pull/17269) -- feat: implement /rewind command by @Adib234 in - [#15720](https://github.com/google-gemini/gemini-cli/pull/15720) -- Feature/jetbrains ide detection by @SoLoHiC in - [#16243](https://github.com/google-gemini/gemini-cli/pull/16243) -- docs: update typo in mcp-server.md file by @schifferl in - [#17099](https://github.com/google-gemini/gemini-cli/pull/17099) -- Sanitize command names and descriptions by @ehedlund in - [#17228](https://github.com/google-gemini/gemini-cli/pull/17228) -- fix(auth): don't crash when initial auth fails by @skeshive in - [#17308](https://github.com/google-gemini/gemini-cli/pull/17308) -- Added image pasting capabilities for Wayland and X11 on Linux by @devr0306 in - [#17144](https://github.com/google-gemini/gemini-cli/pull/17144) -- feat: add AskUser tool schema by @jackwotherspoon in - [#16988](https://github.com/google-gemini/gemini-cli/pull/16988) -- fix cli settings: resolve layout jitter in settings bar by @Mag1ck in - [#16256](https://github.com/google-gemini/gemini-cli/pull/16256) -- fix: show whitespace changes in edit tool diffs by @Ujjiyara in - [#17213](https://github.com/google-gemini/gemini-cli/pull/17213) -- Remove redundant calls setting linuxClipboardTool. getUserLinuxClipboardTool() - now handles the caching internally by @jacob314 in - [#17320](https://github.com/google-gemini/gemini-cli/pull/17320) -- ci: allow failure in evals-nightly run step by @gundermanc in - [#17319](https://github.com/google-gemini/gemini-cli/pull/17319) -- feat(cli): Add state management and plumbing for agent configuration dialog by - @SandyTao520 in - [#17259](https://github.com/google-gemini/gemini-cli/pull/17259) -- bug: fix ide-client connection to ide-companion when inside docker via - ssh/devcontainer by @kapsner in - [#15049](https://github.com/google-gemini/gemini-cli/pull/15049) -- Emit correct newline type return by @scidomino in - [#17331](https://github.com/google-gemini/gemini-cli/pull/17331) -- New skill: docs-writer by @g-samroberts in - [#17268](https://github.com/google-gemini/gemini-cli/pull/17268) -- fix(core): Resolve AbortSignal MaxListenersExceededWarning (#5950) by - @spencer426 in - [#16735](https://github.com/google-gemini/gemini-cli/pull/16735) -- Disable tips after 10 runs by @Adib234 in - [#17101](https://github.com/google-gemini/gemini-cli/pull/17101) -- Fix so rewind starts at the bottom and loadHistory refreshes static content. - by @jacob314 in - [#17335](https://github.com/google-gemini/gemini-cli/pull/17335) -- feat(core): Remove legacy settings. by @joshualitt in - [#17244](https://github.com/google-gemini/gemini-cli/pull/17244) -- feat(plan): add 'communicate' tool kind by @jerop in - [#17341](https://github.com/google-gemini/gemini-cli/pull/17341) -- feat(routing): A/B Test Numerical Complexity Scoring for Gemini 3 by - @mattKorwel in - [#16041](https://github.com/google-gemini/gemini-cli/pull/16041) -- feat(plan): update UI Theme for Plan Mode by @Adib234 in - [#17243](https://github.com/google-gemini/gemini-cli/pull/17243) -- fix(ui): stabilize rendering during terminal resize in alternate buffer by - @lkk214 in [#15783](https://github.com/google-gemini/gemini-cli/pull/15783) -- feat(cli): add /agents config command and improve agent discovery by - @SandyTao520 in - [#17342](https://github.com/google-gemini/gemini-cli/pull/17342) -- feat(mcp): add enable/disable commands for MCP servers (#11057) by @jasmeetsb - in [#16299](https://github.com/google-gemini/gemini-cli/pull/16299) -- fix(cli)!: Default to interactive mode for positional arguments by - @ishaanxgupta in - [#16329](https://github.com/google-gemini/gemini-cli/pull/16329) -- Fix issue #17080 by @jacob314 in - [#17100](https://github.com/google-gemini/gemini-cli/pull/17100) -- feat(core): Refresh agents after loading an extension. by @joshualitt in - [#17355](https://github.com/google-gemini/gemini-cli/pull/17355) -- fix(cli): include source in policy rule display by @allenhutchison in - [#17358](https://github.com/google-gemini/gemini-cli/pull/17358) -- fix: remove obsolete CloudCode PerDay quota and 120s terminal threshold by - @gsquared94 in - [#17236](https://github.com/google-gemini/gemini-cli/pull/17236) -- Refactor subagent delegation to be one tool per agent by @gundermanc in - [#17346](https://github.com/google-gemini/gemini-cli/pull/17346) -- fix(core): Include MCP server name in OAuth message by @jerop in - [#17351](https://github.com/google-gemini/gemini-cli/pull/17351) -- Fix pr-triage.sh script to update pull requests with tags "help wanted" and - "maintainer only" by @jacob314 in - [#17324](https://github.com/google-gemini/gemini-cli/pull/17324) -- feat(plan): implement simple workflow for planning in main agent by @jerop in - [#17326](https://github.com/google-gemini/gemini-cli/pull/17326) -- fix: exit with non-zero code when esbuild is missing by @yuvrajangadsingh in - [#16967](https://github.com/google-gemini/gemini-cli/pull/16967) -- fix: ensure @docs/cli/custom-commands.md UI message ordering and test by - @medic-code in - [#12038](https://github.com/google-gemini/gemini-cli/pull/12038) -- fix(core): add alternative command names for Antigravity editor detec… by - @BaeSeokJae in - [#16829](https://github.com/google-gemini/gemini-cli/pull/16829) -- Refactor: Migrate CLI appEvents to Core coreEvents by @Adib234 in - [#15737](https://github.com/google-gemini/gemini-cli/pull/15737) -- fix(core): await MCP initialization in non-interactive mode by @Ratish1 in - [#17390](https://github.com/google-gemini/gemini-cli/pull/17390) -- Fix modifyOtherKeys enablement on unsupported terminals by @seekskyworld in - [#16714](https://github.com/google-gemini/gemini-cli/pull/16714) -- fix(core): gracefully handle disk full errors in chat recording by - @godwiniheuwa in - [#17305](https://github.com/google-gemini/gemini-cli/pull/17305) -- fix(oauth): update oauth to use 127.0.0.1 instead of localhost by @skeshive in - [#17388](https://github.com/google-gemini/gemini-cli/pull/17388) -- fix(core): use RFC 9728 compliant path-based OAuth protected resource - discovery by @vrv in - [#15756](https://github.com/google-gemini/gemini-cli/pull/15756) -- Update Code Wiki README badge by @PatoBeltran in - [#15229](https://github.com/google-gemini/gemini-cli/pull/15229) -- Add conda installation instructions for Gemini CLI by @ishaanxgupta in - [#16921](https://github.com/google-gemini/gemini-cli/pull/16921) -- chore(refactor): extract BaseSettingsDialog component by @SandyTao520 in - [#17369](https://github.com/google-gemini/gemini-cli/pull/17369) -- fix(cli): preserve input text when declining tool approval (#15624) by - @ManojINaik in - [#15659](https://github.com/google-gemini/gemini-cli/pull/15659) -- chore: upgrade dep: diff 7.0.0-> 8.0.3 by @scidomino in - [#17403](https://github.com/google-gemini/gemini-cli/pull/17403) -- feat: add AskUserDialog for UI component of AskUser tool by @jackwotherspoon - in [#17344](https://github.com/google-gemini/gemini-cli/pull/17344) -- feat(ui): display user tier in about command by @sehoon38 in - [#17400](https://github.com/google-gemini/gemini-cli/pull/17400) -- feat: add clearContext to AfterAgent hooks by @jackwotherspoon in - [#16574](https://github.com/google-gemini/gemini-cli/pull/16574) -- fix(cli): change image paste location to global temp directory (#17396) by - @devr0306 in [#17396](https://github.com/google-gemini/gemini-cli/pull/17396) -- Fix line endings issue with Notice file by @scidomino in - [#17417](https://github.com/google-gemini/gemini-cli/pull/17417) -- feat(plan): implement persistent approvalMode setting by @Adib234 in - [#17350](https://github.com/google-gemini/gemini-cli/pull/17350) -- feat(ui): Move keyboard handling into BaseSettingsDialog by @SandyTao520 in - [#17404](https://github.com/google-gemini/gemini-cli/pull/17404) -- Allow prompt queueing during MCP initialization by @Adib234 in - [#17395](https://github.com/google-gemini/gemini-cli/pull/17395) -- feat: implement AgentConfigDialog for /agents config command by @SandyTao520 - in [#17370](https://github.com/google-gemini/gemini-cli/pull/17370) -- fix(agents): default to all tools when tool list is omitted in subagents by - @gundermanc in - [#17422](https://github.com/google-gemini/gemini-cli/pull/17422) -- feat(cli): Moves tool confirmations to a queue UX by @abhipatel12 in - [#17276](https://github.com/google-gemini/gemini-cli/pull/17276) -- fix(core): hide user tier name by @sehoon38 in - [#17418](https://github.com/google-gemini/gemini-cli/pull/17418) -- feat: Enforce unified folder trust for /directory add by @galz10 in - [#17359](https://github.com/google-gemini/gemini-cli/pull/17359) -- migrate fireToolNotificationHook to hookSystem by @ved015 in - [#17398](https://github.com/google-gemini/gemini-cli/pull/17398) -- Clean up dead code by @scidomino in - [#17443](https://github.com/google-gemini/gemini-cli/pull/17443) -- feat(workflow): add stale pull request closer with linked-issue enforcement by - @bdmorgan in [#17449](https://github.com/google-gemini/gemini-cli/pull/17449) -- feat(workflow): expand stale-exempt labels to include help wanted and Public - Roadmap by @bdmorgan in - [#17459](https://github.com/google-gemini/gemini-cli/pull/17459) -- chore(workflow): remove redundant label-enforcer workflow by @bdmorgan in - [#17460](https://github.com/google-gemini/gemini-cli/pull/17460) -- Resolves the confusing error message `ripgrep exited with code null that - occurs when a search operation is cancelled or aborted by @maximmasiutin in - [#14267](https://github.com/google-gemini/gemini-cli/pull/14267) -- fix: detect pnpm/pnpx in ~/.local by @rwakulszowa in - [#15254](https://github.com/google-gemini/gemini-cli/pull/15254) -- docs: Add instructions for MacPorts and uninstall instructions for Homebrew by - @breun in [#17412](https://github.com/google-gemini/gemini-cli/pull/17412) -- docs(hooks): clarify mandatory 'type' field and update hook schema - documentation by @abhipatel12 in - [#17499](https://github.com/google-gemini/gemini-cli/pull/17499) -- Improve error messages on failed onboarding by @gsquared94 in - [#17357](https://github.com/google-gemini/gemini-cli/pull/17357) -- Follow up to "enableInteractiveShell for external tooling relying on a2a - server" by @DavidAPierce in - [#17130](https://github.com/google-gemini/gemini-cli/pull/17130) -- Fix/issue 17070 by @alih552 in - [#17242](https://github.com/google-gemini/gemini-cli/pull/17242) -- fix(core): handle URI-encoded workspace paths in IdeClient by @dong-jun-shin - in [#17476](https://github.com/google-gemini/gemini-cli/pull/17476) -- feat(cli): add quick clear input shortcuts in vim mode by @harshanadim in - [#17470](https://github.com/google-gemini/gemini-cli/pull/17470) -- feat(core): optimize shell tool llmContent output format by @SandyTao520 in - [#17538](https://github.com/google-gemini/gemini-cli/pull/17538) -- Fix bug in detecting already added paths. by @jacob314 in - [#17430](https://github.com/google-gemini/gemini-cli/pull/17430) -- feat(scheduler): support multi-scheduler tool aggregation and nested call IDs - by @abhipatel12 in - [#17429](https://github.com/google-gemini/gemini-cli/pull/17429) -- feat(agents): implement first-run experience for project-level sub-agents by - @gundermanc in - [#17266](https://github.com/google-gemini/gemini-cli/pull/17266) -- Update extensions docs by @chrstnb in - [#16093](https://github.com/google-gemini/gemini-cli/pull/16093) -- Docs: Refactor left nav on the website by @jkcinouye in - [#17558](https://github.com/google-gemini/gemini-cli/pull/17558) -- fix(core): stream grep/ripgrep output to prevent OOM by @adamfweidman in - [#17146](https://github.com/google-gemini/gemini-cli/pull/17146) -- feat(plan): add persistent plan file storage by @jerop in - [#17563](https://github.com/google-gemini/gemini-cli/pull/17563) -- feat(agents): migrate subagents to event-driven scheduler by @abhipatel12 in - [#17567](https://github.com/google-gemini/gemini-cli/pull/17567) -- Fix extensions config error by @chrstnb in - [#17580](https://github.com/google-gemini/gemini-cli/pull/17580) -- fix(plan): remove subagent invocation from plan mode by @jerop in - [#17593](https://github.com/google-gemini/gemini-cli/pull/17593) -- feat(ui): add solid background color option for input prompt by @jacob314 in - [#16563](https://github.com/google-gemini/gemini-cli/pull/16563) -- feat(plan): refresh system prompt when approval mode changes (Shift+Tab) by - @jerop in [#17585](https://github.com/google-gemini/gemini-cli/pull/17585) -- feat(cli): add global setting to disable UI spinners by @galz10 in - [#17234](https://github.com/google-gemini/gemini-cli/pull/17234) -- fix(security): enforce strict policy directory permissions by @yunaseoul in - [#17353](https://github.com/google-gemini/gemini-cli/pull/17353) -- test(core): fix tests in windows by @scidomino in - [#17592](https://github.com/google-gemini/gemini-cli/pull/17592) -- feat(mcp/extensions): Allow users to selectively enable/disable MCP servers - included in an extension( Issue #11057 & #17402) by @jasmeetsb in - [#17434](https://github.com/google-gemini/gemini-cli/pull/17434) -- Always map mac keys, even on other platforms by @scidomino in - [#17618](https://github.com/google-gemini/gemini-cli/pull/17618) -- Ctrl-O by @jacob314 in - [#17617](https://github.com/google-gemini/gemini-cli/pull/17617) -- feat(plan): update cycling order of approval modes by @Adib234 in - [#17622](https://github.com/google-gemini/gemini-cli/pull/17622) -- fix(cli): restore 'Modify with editor' option in external terminals by - @abhipatel12 in - [#17621](https://github.com/google-gemini/gemini-cli/pull/17621) -- Slash command for helping in debugging by @gundermanc in - [#17609](https://github.com/google-gemini/gemini-cli/pull/17609) -- feat: add double-click to expand/collapse large paste placeholders by - @jackwotherspoon in - [#17471](https://github.com/google-gemini/gemini-cli/pull/17471) -- refactor(cli): migrate non-interactive flow to event-driven scheduler by - @abhipatel12 in - [#17572](https://github.com/google-gemini/gemini-cli/pull/17572) -- fix: loadcodeassist eligible tiers getting ignored for unlicensed users - (regression) by @gsquared94 in - [#17581](https://github.com/google-gemini/gemini-cli/pull/17581) -- chore(core): delete legacy nonInteractiveToolExecutor by @abhipatel12 in - [#17573](https://github.com/google-gemini/gemini-cli/pull/17573) -- feat(core): enforce server prefixes for MCP tools in agent definitions by - @abhipatel12 in - [#17574](https://github.com/google-gemini/gemini-cli/pull/17574) -- feat (mcp): Refresh MCP prompts on list changed notification by @MrLesk in - [#14863](https://github.com/google-gemini/gemini-cli/pull/14863) -- feat(ui): pretty JSON rendering tool outputs by @medic-code in - [#9767](https://github.com/google-gemini/gemini-cli/pull/9767) -- Fix iterm alternate buffer mode issue rendering backgrounds by @jacob314 in - [#17634](https://github.com/google-gemini/gemini-cli/pull/17634) -- feat(cli): add gemini extensions list --output-format=json by @AkihiroSuda in - [#14479](https://github.com/google-gemini/gemini-cli/pull/14479) -- fix(extensions): add .gitignore to extension templates by @godwiniheuwa in - [#17293](https://github.com/google-gemini/gemini-cli/pull/17293) -- paste transform followup by @jacob314 in - [#17624](https://github.com/google-gemini/gemini-cli/pull/17624) -- refactor: rename formatMemoryUsage to formatBytes by @Nubebuster in - [#14997](https://github.com/google-gemini/gemini-cli/pull/14997) -- chore: remove extra top margin from /hooks and /extensions by @jackwotherspoon - in [#17663](https://github.com/google-gemini/gemini-cli/pull/17663) -- feat(cli): add oncall command for issue triage by @sehoon38 in - [#17661](https://github.com/google-gemini/gemini-cli/pull/17661) -- Fix sidebar issue for extensions link by @chrstnb in - [#17668](https://github.com/google-gemini/gemini-cli/pull/17668) -- Change formatting to prevent UI redressing attacks by @scidomino in - [#17611](https://github.com/google-gemini/gemini-cli/pull/17611) -- Fix cluster of bugs in the settings dialog. by @jacob314 in - [#17628](https://github.com/google-gemini/gemini-cli/pull/17628) -- Update sidebar to resolve site build issues by @chrstnb in - [#17674](https://github.com/google-gemini/gemini-cli/pull/17674) -- fix(admin): fix a few bugs related to admin controls by @skeshive in - [#17590](https://github.com/google-gemini/gemini-cli/pull/17590) -- revert bad changes to tests by @scidomino in - [#17673](https://github.com/google-gemini/gemini-cli/pull/17673) -- feat(cli): show candidate issue state reason and duplicate status in triage by - @sehoon38 in [#17676](https://github.com/google-gemini/gemini-cli/pull/17676) -- Fix missing slash commands when Gemini CLI is in a project with a package.json - that doesn't follow semantic versioning by @Adib234 in - [#17561](https://github.com/google-gemini/gemini-cli/pull/17561) -- feat(core): Model family-specific system prompts by @joshualitt in - [#17614](https://github.com/google-gemini/gemini-cli/pull/17614) -- Sub-agents documentation. by @gundermanc in - [#16639](https://github.com/google-gemini/gemini-cli/pull/16639) -- feat: wire up AskUserTool with dialog by @jackwotherspoon in - [#17411](https://github.com/google-gemini/gemini-cli/pull/17411) -- Load extension settings for hooks, agents, skills by @chrstnb in - [#17245](https://github.com/google-gemini/gemini-cli/pull/17245) -- Fix issue where Gemini CLI can make changes when simply asked a question by - @gundermanc in - [#17608](https://github.com/google-gemini/gemini-cli/pull/17608) -- Update docs-writer skill for editing and add style guide for reference. by - @g-samroberts in - [#17669](https://github.com/google-gemini/gemini-cli/pull/17669) -- fix(ux): have user message display a short path for pasted images by @devr0306 - in [#17613](https://github.com/google-gemini/gemini-cli/pull/17613) -- feat(plan): enable AskUser tool in Plan mode for clarifying questions by - @jerop in [#17694](https://github.com/google-gemini/gemini-cli/pull/17694) -- GEMINI.md polish by @jacob314 in - [#17680](https://github.com/google-gemini/gemini-cli/pull/17680) -- refactor(core): centralize path validation and allow temp dir access for tools - by @NTaylorMullen in - [#17185](https://github.com/google-gemini/gemini-cli/pull/17185) -- feat(skills): promote Agent Skills to stable by @abhipatel12 in - [#17693](https://github.com/google-gemini/gemini-cli/pull/17693) -- refactor(cli): keyboard handling and AskUserDialog by @jacob314 in - [#17414](https://github.com/google-gemini/gemini-cli/pull/17414) -- docs: Add Experimental Remote Agent Docs by @adamfweidman in - [#17697](https://github.com/google-gemini/gemini-cli/pull/17697) -- revert: promote Agent Skills to stable (#17693) by @abhipatel12 in - [#17712](https://github.com/google-gemini/gemini-cli/pull/17712) -- feat(ux) Expandable (ctrl-O) and scrollable approvals in alternate buffer - mode. by @jacob314 in - [#17640](https://github.com/google-gemini/gemini-cli/pull/17640) -- feat(skills): promote skills settings to stable by @abhipatel12 in - [#17713](https://github.com/google-gemini/gemini-cli/pull/17713) -- fix(cli): Preserve settings dialog focus when searching by @SandyTao520 in - [#17701](https://github.com/google-gemini/gemini-cli/pull/17701) -- feat(ui): add terminal cursor support by @jacob314 in - [#17711](https://github.com/google-gemini/gemini-cli/pull/17711) -- docs(skills): remove experimental labels and update tutorials by @abhipatel12 - in [#17714](https://github.com/google-gemini/gemini-cli/pull/17714) -- docs: remove 'experimental' syntax for hooks in docs by @abhipatel12 in - [#17660](https://github.com/google-gemini/gemini-cli/pull/17660) -- Add support for an additional exclusion file besides .gitignore and - .geminiignore by @alisa-alisa in - [#16487](https://github.com/google-gemini/gemini-cli/pull/16487) -- feat: add review-frontend-and-fix command by @galz10 in - [#17707](https://github.com/google-gemini/gemini-cli/pull/17707) +- feat(commands): add /prompt-suggest slash command by NTaylorMullen in + [#17264](https://github.com/google-gemini/gemini-cli/pull/17264) +- feat(cli): align hooks enable/disable with skills and improve completion by + sehoon38 in [#16822](https://github.com/google-gemini/gemini-cli/pull/16822) +- docs: add CLI reference documentation by leochiu-a in + [#17504](https://github.com/google-gemini/gemini-cli/pull/17504) +- chore(release): bump version to 0.28.0-nightly.20260128.adc8e11bb by + gemini-cli-robot in + [#17725](https://github.com/google-gemini/gemini-cli/pull/17725) +- feat(skills): final stable promotion cleanup by abhipatel12 in + [#17726](https://github.com/google-gemini/gemini-cli/pull/17726) +- test(core): mock fetch in OAuth transport fallback tests by jw409 in + [#17059](https://github.com/google-gemini/gemini-cli/pull/17059) +- feat(cli): include auth method in /bug by erikus in + [#17569](https://github.com/google-gemini/gemini-cli/pull/17569) +- Add a email privacy note to bug_report template by nemyung in + [#17474](https://github.com/google-gemini/gemini-cli/pull/17474) +- Rewind documentation by Adib234 in + [#17446](https://github.com/google-gemini/gemini-cli/pull/17446) +- fix: verify audio/video MIME types with content check by maru0804 in + [#16907](https://github.com/google-gemini/gemini-cli/pull/16907) +- feat(core): add support for positron ide (#15045) by kapsner in + [#15047](https://github.com/google-gemini/gemini-cli/pull/15047) +- /oncall dedup - wrap texts to nextlines by sehoon38 in + [#17782](https://github.com/google-gemini/gemini-cli/pull/17782) +- fix(admin): rename advanced features admin setting by skeshive in + [#17786](https://github.com/google-gemini/gemini-cli/pull/17786) +- [extension config] Make breaking optional value non-optional by chrstnb in + [#17785](https://github.com/google-gemini/gemini-cli/pull/17785) +- Fix docs-writer skill issues by g-samroberts in + [#17734](https://github.com/google-gemini/gemini-cli/pull/17734) +- fix(core): suppress duplicate hook failure warnings during streaming by + abhipatel12 in + [#17727](https://github.com/google-gemini/gemini-cli/pull/17727) +- test: add more tests for AskUser by jackwotherspoon in + [#17720](https://github.com/google-gemini/gemini-cli/pull/17720) +- feat(cli): enable activity logging for non-interactive mode and evals by + SandyTao520 in + [#17703](https://github.com/google-gemini/gemini-cli/pull/17703) +- feat(core): add support for custom deny messages in policy rules by + allenhutchison in + [#17427](https://github.com/google-gemini/gemini-cli/pull/17427) +- Fix unintended credential exposure to MCP Servers by Adib234 in + [#17311](https://github.com/google-gemini/gemini-cli/pull/17311) +- feat(extensions): add support for custom themes in extensions by spencer426 in + [#17327](https://github.com/google-gemini/gemini-cli/pull/17327) +- fix: persist and restore workspace directories on session resume by + korade-krushna in + [#17454](https://github.com/google-gemini/gemini-cli/pull/17454) +- Update release notes pages for 0.26.0 and 0.27.0-preview. by g-samroberts in + [#17744](https://github.com/google-gemini/gemini-cli/pull/17744) +- feat(ux): update cell border color and created test file for table rendering + by devr0306 in + [#17798](https://github.com/google-gemini/gemini-cli/pull/17798) +- Change height for the ToolConfirmationQueue. by jacob314 in + [#17799](https://github.com/google-gemini/gemini-cli/pull/17799) +- feat(cli): add user identity info to stats command by sehoon38 in + [#17612](https://github.com/google-gemini/gemini-cli/pull/17612) +- fix(ux): fixed off-by-some wrapping caused by fixed-width characters by + devr0306 in [#17816](https://github.com/google-gemini/gemini-cli/pull/17816) +- feat(cli): update undo/redo keybindings to Cmd+Z/Alt+Z and + Shift+Cmd+Z/Shift+Alt+Z by scidomino in + [#17800](https://github.com/google-gemini/gemini-cli/pull/17800) +- fix(evals): use absolute path for activity log directory by SandyTao520 in + [#17830](https://github.com/google-gemini/gemini-cli/pull/17830) +- test: add integration test to verify stdout/stderr routing by ved015 in + [#17280](https://github.com/google-gemini/gemini-cli/pull/17280) +- fix(cli): list installed extensions when update target missing by tt-a1i in + [#17082](https://github.com/google-gemini/gemini-cli/pull/17082) +- fix(cli): handle PAT tokens and credentials in git remote URL parsing by + afarber in [#14650](https://github.com/google-gemini/gemini-cli/pull/14650) +- fix(core): use returnDisplay for error result display by Nubebuster in + [#14994](https://github.com/google-gemini/gemini-cli/pull/14994) +- Fix detection of bun as package manager by Randomblock1 in + [#17462](https://github.com/google-gemini/gemini-cli/pull/17462) +- feat(cli): show hooksConfig.enabled in settings dialog by abhipatel12 in + [#17810](https://github.com/google-gemini/gemini-cli/pull/17810) +- feat(cli): Display user identity (auth, email, tier) on startup by yunaseoul + in [#17591](https://github.com/google-gemini/gemini-cli/pull/17591) +- fix: prevent ghost border for AskUserDialog by jackwotherspoon in + [#17788](https://github.com/google-gemini/gemini-cli/pull/17788) +- docs: mark A2A subagents as experimental in subagents.md by adamfweidman in + [#17863](https://github.com/google-gemini/gemini-cli/pull/17863) +- Resolve error thrown for sensitive values by chrstnb in + [#17826](https://github.com/google-gemini/gemini-cli/pull/17826) +- fix(admin): Rename secureModeEnabled to strictModeDisabled by skeshive in + [#17789](https://github.com/google-gemini/gemini-cli/pull/17789) +- feat(ux): update truncate dots to be shorter in tables by devr0306 in + [#17825](https://github.com/google-gemini/gemini-cli/pull/17825) +- fix(core): resolve DEP0040 punycode deprecation via patch-package by + ATHARVA262005 in + [#17692](https://github.com/google-gemini/gemini-cli/pull/17692) +- feat(plan): create generic Checklist component and refactor Todo by Adib234 in + [#17741](https://github.com/google-gemini/gemini-cli/pull/17741) +- Cleanup post delegate_to_agent removal by gundermanc in + [#17875](https://github.com/google-gemini/gemini-cli/pull/17875) +- fix(core): use GIT_CONFIG_GLOBAL to isolate shadow git repo configuration - + Fixes #17877 by cocosheng-g in + [#17803](https://github.com/google-gemini/gemini-cli/pull/17803) +- Disable mouse tracking e2e by alisa-alisa in + [#17880](https://github.com/google-gemini/gemini-cli/pull/17880) +- fix(cli): use correct setting key for Cloud Shell auth by sehoon38 in + [#17884](https://github.com/google-gemini/gemini-cli/pull/17884) +- chore: revert IDE specific ASCII logo by jackwotherspoon in + [#17887](https://github.com/google-gemini/gemini-cli/pull/17887) +- Revert "fix(core): resolve DEP0040 punycode deprecation via patch-package" by + sehoon38 in [#17898](https://github.com/google-gemini/gemini-cli/pull/17898) +- Refactoring of disabling of mouse tracking in e2e tests by alisa-alisa in + [#17902](https://github.com/google-gemini/gemini-cli/pull/17902) +- feat(core): Add GOOGLE_GENAI_API_VERSION environment variable support by deyim + in [#16177](https://github.com/google-gemini/gemini-cli/pull/16177) +- feat(core): Isolate and cleanup truncated tool outputs by SandyTao520 in + [#17594](https://github.com/google-gemini/gemini-cli/pull/17594) +- Create skills page, update commands, refine docs by g-samroberts in + [#17842](https://github.com/google-gemini/gemini-cli/pull/17842) +- feat: preserve EOL in files by Thomas-Shephard in + [#16087](https://github.com/google-gemini/gemini-cli/pull/16087) +- Fix HalfLinePaddedBox in screenreader mode. by jacob314 in + [#17914](https://github.com/google-gemini/gemini-cli/pull/17914) +- bug(ux) vim mode fixes. Start in insert mode. Fix bug blocking F12 and ctrl-X + in vim mode. by jacob314 in + [#17938](https://github.com/google-gemini/gemini-cli/pull/17938) +- feat(core): implement interactive and non-interactive consent for OAuth by + ehedlund in [#17699](https://github.com/google-gemini/gemini-cli/pull/17699) +- perf(core): optimize token calculation and add support for multimodal tool + responses by abhipatel12 in + [#17835](https://github.com/google-gemini/gemini-cli/pull/17835) +- refactor(hooks): remove legacy tools.enableHooks setting by abhipatel12 in + [#17867](https://github.com/google-gemini/gemini-cli/pull/17867) +- feat(ci): add npx smoke test to verify installability by bdmorgan in + [#17927](https://github.com/google-gemini/gemini-cli/pull/17927) +- feat(core): implement dynamic policy registration for subagents by abhipatel12 + in [#17838](https://github.com/google-gemini/gemini-cli/pull/17838) +- feat: Implement background shell commands by galz10 in + [#14849](https://github.com/google-gemini/gemini-cli/pull/14849) +- feat(admin): provide actionable error messages for disabled features by + skeshive in [#17815](https://github.com/google-gemini/gemini-cli/pull/17815) +- Fix bugs where Rewind and Resume showed Ugly and 100X too verbose content. by + jacob314 in [#17940](https://github.com/google-gemini/gemini-cli/pull/17940) +- Fix broken link in docs by chrstnb in + [#17959](https://github.com/google-gemini/gemini-cli/pull/17959) +- feat(plan): reuse standard tool confirmation for AskUser tool by jerop in + [#17864](https://github.com/google-gemini/gemini-cli/pull/17864) +- feat(core): enable overriding CODE_ASSIST_API_VERSION with env var by + lottielin in [#17942](https://github.com/google-gemini/gemini-cli/pull/17942) +- run npx pointing to the specific commit SHA by sehoon38 in + [#17970](https://github.com/google-gemini/gemini-cli/pull/17970) +- Add allowedExtensions setting by kevinjwang1 in + [#17695](https://github.com/google-gemini/gemini-cli/pull/17695) +- feat(plan): refactor ToolConfirmationPayload to union type by jerop in + [#17980](https://github.com/google-gemini/gemini-cli/pull/17980) +- lower the default max retries to reduce contention by sehoon38 in + [#17975](https://github.com/google-gemini/gemini-cli/pull/17975) +- fix(core): ensure YOLO mode auto-approves complex shell commands when parsing + fails by abhipatel12 in + [#17920](https://github.com/google-gemini/gemini-cli/pull/17920) +- Fix broken link. by g-samroberts in + [#17972](https://github.com/google-gemini/gemini-cli/pull/17972) +- Support ctrl-C and Ctrl-D correctly Refactor so InputPrompt has priority over + AppContainer for input handling. by jacob314 in + [#17993](https://github.com/google-gemini/gemini-cli/pull/17993) +- Fix truncation for AskQuestion by jacob314 in + [#18001](https://github.com/google-gemini/gemini-cli/pull/18001) +- fix(workflow): update maintainer check logic to be inclusive and + case-insensitive by bdmorgan in + [#18009](https://github.com/google-gemini/gemini-cli/pull/18009) +- Fix Esc cancel during streaming by LyalinDotCom in + [#18039](https://github.com/google-gemini/gemini-cli/pull/18039) +- feat(acp): add session resume support by bdmorgan in + [#18043](https://github.com/google-gemini/gemini-cli/pull/18043) +- fix(ci): prevent stale PR closer from incorrectly closing new PRs by bdmorgan + in [#18069](https://github.com/google-gemini/gemini-cli/pull/18069) +- chore: delete autoAccept setting unused in production by victorvianna in + [#17862](https://github.com/google-gemini/gemini-cli/pull/17862) +- feat(plan): use placeholder for choice question "Other" option by jerop in + [#18101](https://github.com/google-gemini/gemini-cli/pull/18101) +- docs: update clearContext to hookSpecificOutput by jackwotherspoon in + [#18024](https://github.com/google-gemini/gemini-cli/pull/18024) +- docs-writer skill: Update docs writer skill by jkcinouye in + [#17928](https://github.com/google-gemini/gemini-cli/pull/17928) +- Sehoon/oncall filter by sehoon38 in + [#18105](https://github.com/google-gemini/gemini-cli/pull/18105) +- feat(core): add setting to disable loop detection by SandyTao520 in + [#18008](https://github.com/google-gemini/gemini-cli/pull/18008) +- Docs: Revise docs/index.md by jkcinouye in + [#17879](https://github.com/google-gemini/gemini-cli/pull/17879) +- Fix up/down arrow regression and add test. by jacob314 in + [#18108](https://github.com/google-gemini/gemini-cli/pull/18108) +- fix(ui): prevent content leak in MaxSizedBox bottom overflow by jerop in + [#17991](https://github.com/google-gemini/gemini-cli/pull/17991) +- refactor: migrate checks.ts utility to core and deduplicate by jerop in + [#18139](https://github.com/google-gemini/gemini-cli/pull/18139) +- feat(core): implement tool name aliasing for backward compatibility by + SandyTao520 in + [#17974](https://github.com/google-gemini/gemini-cli/pull/17974) +- docs: fix help-wanted label spelling by pavan-sh in + [#18114](https://github.com/google-gemini/gemini-cli/pull/18114) +- feat(cli): implement automatic theme switching based on terminal background by + Abhijit-2592 in + [#17976](https://github.com/google-gemini/gemini-cli/pull/17976) +- fix(ide): no-op refactoring that moves the connection logic to helper + functions by skeshive in + [#18118](https://github.com/google-gemini/gemini-cli/pull/18118) +- feat: update review-frontend-and-fix slash command to review-and-fix by galz10 + in [#18146](https://github.com/google-gemini/gemini-cli/pull/18146) +- fix: improve Ctrl+R reverse search by jackwotherspoon in + [#18075](https://github.com/google-gemini/gemini-cli/pull/18075) +- feat(plan): handle inconsistency in schedulers by Adib234 in + [#17813](https://github.com/google-gemini/gemini-cli/pull/17813) +- feat(plan): add core logic and exit_plan_mode tool definition by jerop in + [#18110](https://github.com/google-gemini/gemini-cli/pull/18110) +- feat(core): rename search_file_content tool to grep_search and add legacy + alias by SandyTao520 in + [#18003](https://github.com/google-gemini/gemini-cli/pull/18003) +- fix(core): prioritize detailed error messages for code assist setup by + gsquared94 in [#17852](https://github.com/google-gemini/gemini-cli/pull/17852) +- fix(cli): resolve environment loading and auth validation issues in ACP mode + by bdmorgan in + [#18025](https://github.com/google-gemini/gemini-cli/pull/18025) +- feat(core): add .agents/skills directory alias for skill discovery by + NTaylorMullen in + [#18151](https://github.com/google-gemini/gemini-cli/pull/18151) +- chore(core): reassign telemetry keys to avoid server conflict by mattKorwel in + [#18161](https://github.com/google-gemini/gemini-cli/pull/18161) +- Add link to rewind doc in commands.md by Adib234 in + [#17961](https://github.com/google-gemini/gemini-cli/pull/17961) +- feat(core): add draft-2020-12 JSON Schema support with lenient fallback by + afarber in [#15060](https://github.com/google-gemini/gemini-cli/pull/15060) +- refactor(core): robust trimPreservingTrailingNewline and regression test by + adamfweidman in + [#18196](https://github.com/google-gemini/gemini-cli/pull/18196) +- Remove MCP servers on extension uninstall by chrstnb in + [#18121](https://github.com/google-gemini/gemini-cli/pull/18121) +- refactor: localize ACP error parsing logic to cli package by bdmorgan in + [#18193](https://github.com/google-gemini/gemini-cli/pull/18193) +- feat(core): Add A2A auth config types by adamfweidman in + [#18205](https://github.com/google-gemini/gemini-cli/pull/18205) +- Set default max attempts to 3 and use the common variable by sehoon38 in + [#18209](https://github.com/google-gemini/gemini-cli/pull/18209) +- feat(plan): add exit_plan_mode ui and prompt by jerop in + [#18162](https://github.com/google-gemini/gemini-cli/pull/18162) +- fix(test): improve test isolation and enable subagent evaluations by + cocosheng-g in + [#18138](https://github.com/google-gemini/gemini-cli/pull/18138) +- feat(plan): use custom deny messages in plan mode policies by Adib234 in + [#18195](https://github.com/google-gemini/gemini-cli/pull/18195) +- Match on extension ID when stopping extensions by chrstnb in + [#18218](https://github.com/google-gemini/gemini-cli/pull/18218) +- fix(core): Respect user's .gitignore preference by xyrolle in + [#15482](https://github.com/google-gemini/gemini-cli/pull/15482) +- docs: document GEMINI_CLI_HOME environment variable by adamfweidman in + [#18219](https://github.com/google-gemini/gemini-cli/pull/18219) +- chore(core): explicitly state plan storage path in prompt by jerop in + [#18222](https://github.com/google-gemini/gemini-cli/pull/18222) +- A2a admin setting by DavidAPierce in + [#17868](https://github.com/google-gemini/gemini-cli/pull/17868) +- feat(a2a): Add pluggable auth provider infrastructure by adamfweidman in + [#17934](https://github.com/google-gemini/gemini-cli/pull/17934) +- Fix handling of empty settings by chrstnb in + [#18131](https://github.com/google-gemini/gemini-cli/pull/18131) +- Reload skills when extensions change by chrstnb in + [#18225](https://github.com/google-gemini/gemini-cli/pull/18225) +- feat: Add markdown rendering to ask_user tool by jackwotherspoon in + [#18211](https://github.com/google-gemini/gemini-cli/pull/18211) +- Add telemetry to rewind by Adib234 in + [#18122](https://github.com/google-gemini/gemini-cli/pull/18122) +- feat(admin): add support for MCP configuration via admin controls (pt1) by + skeshive in [#18223](https://github.com/google-gemini/gemini-cli/pull/18223) +- feat(core): require user consent before MCP server OAuth by ehedlund in + [#18132](https://github.com/google-gemini/gemini-cli/pull/18132) +- fix(sandbox): propagate GOOGLE_GEMINI_BASE_URL&GOOGLE_VERTEX_BASE_URL env vars + by skeshive in + [#18231](https://github.com/google-gemini/gemini-cli/pull/18231) +- feat(ui): move user identity display to header by sehoon38 in + [#18216](https://github.com/google-gemini/gemini-cli/pull/18216) +- fix: enforce folder trust for workspace settings, skills, and context by + galz10 in [#17596](https://github.com/google-gemini/gemini-cli/pull/17596) **Full changelog**: -https://github.com/google-gemini/gemini-cli/compare/v0.26.0-preview.5...v0.27.0-preview.0 +https://github.com/google-gemini/gemini-cli/compare/v0.27.0-preview.8...v0.28.0-preview.0 From d52547de2ddd9c8c324b3253aea45049015806c2 Mon Sep 17 00:00:00 2001 From: g-samroberts Date: Wed, 4 Feb 2026 12:11:43 -0800 Subject: [PATCH 02/14] Moves releases to top level sidebar for now. --- docs/sidebar.json | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/sidebar.json b/docs/sidebar.json index dfbfba80e70..ea11e3d8bdf 100644 --- a/docs/sidebar.json +++ b/docs/sidebar.json @@ -123,14 +123,6 @@ "items": [ { "label": "FAQ", "slug": "docs/faq" }, { "label": "Quota and pricing", "slug": "docs/quota-and-pricing" }, - { - "label": "Releases", - "items": [ - { "label": "Release notes", "slug": "docs/changelogs/" }, - { "label": "Stable release", "slug": "docs/changelogs/latest" }, - { "label": "Preview release", "slug": "docs/changelogs/preview" } - ] - }, { "label": "Terms and privacy", "slug": "docs/tos-privacy" }, { "label": "Troubleshooting", "slug": "docs/troubleshooting" }, { "label": "Uninstall", "slug": "docs/cli/uninstall" } @@ -148,5 +140,13 @@ { "label": "Local development", "slug": "docs/local-development" }, { "label": "NPM package structure", "slug": "docs/npm" } ] + }, + { + "label": "Releases", + "items": [ + { "label": "Release notes", "slug": "docs/changelogs/" }, + { "label": "Stable release", "slug": "docs/changelogs/latest" }, + { "label": "Preview release", "slug": "docs/changelogs/preview" } + ] } ] From 31573f36c68a7aac944392bd7dec806aada1597a Mon Sep 17 00:00:00 2001 From: g-samroberts <158088236+g-samroberts@users.noreply.github.com> Date: Wed, 4 Feb 2026 13:01:35 -0800 Subject: [PATCH 03/14] Update docs/changelogs/latest.md Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- docs/changelogs/latest.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/docs/changelogs/latest.md b/docs/changelogs/latest.md index 3e9221b003e..ff6bb043e3f 100644 --- a/docs/changelogs/latest.md +++ b/docs/changelogs/latest.md @@ -441,6 +441,7 @@ npm install -g @google/gemini-cli .geminiignore by @alisa-alisa in [#16487](https://github.com/google-gemini/gemini-cli/pull/16487) - feat: add review-frontend-and-fix command by @galz10 in - [#17707](https://github.com/google-gemini/gemini-cli/pull/17707) Full - Changelog: - https://github.com/google-gemini/gemini-cli/compare/v0.26.0...v0.27.0 + [#17707](https://github.com/google-gemini/gemini-cli/pull/17707) + +**Full changelog**: +https://github.com/google-gemini/gemini-cli/compare/v0.26.0...v0.27.0 From 62b04b968dce7e39f6b3c1bdbe56aa680b7a9535 Mon Sep 17 00:00:00 2001 From: g-samroberts <158088236+g-samroberts@users.noreply.github.com> Date: Wed, 4 Feb 2026 15:27:27 -0800 Subject: [PATCH 04/14] Update index.md Mark `plan` as experimental --- docs/changelogs/index.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/changelogs/index.md b/docs/changelogs/index.md index ac3d68786c7..176e5e98163 100644 --- a/docs/changelogs/index.md +++ b/docs/changelogs/index.md @@ -24,8 +24,9 @@ on GitHub. for tool execution, resulting in a more responsive and performant experience ([#17078](https://github.com/google-gemini/gemini-cli/pull/17078) by @abhipatel12). -- **Enhanced User Experience:** This release includes a new `Plan` mode, queued - tool confirmations, and expandable large text pastes for a smoother workflow. +- **Enhanced User Experience:** This release includes an experimental `Plan` + mode, queued tool confirmations, and expandable large text pastes for a + smoother workflow. - **New `/rewind` Command:** Easily navigate your session history with the new `/rewind` command ([#15720](https://github.com/google-gemini/gemini-cli/pull/15720) by From 1c226dbe62d694d99466afe83ec747610dd39255 Mon Sep 17 00:00:00 2001 From: g-samroberts <158088236+g-samroberts@users.noreply.github.com> Date: Wed, 4 Feb 2026 17:52:04 -0800 Subject: [PATCH 05/14] Update index.md --- docs/changelogs/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/changelogs/index.md b/docs/changelogs/index.md index 176e5e98163..f45c5abec25 100644 --- a/docs/changelogs/index.md +++ b/docs/changelogs/index.md @@ -24,8 +24,8 @@ on GitHub. for tool execution, resulting in a more responsive and performant experience ([#17078](https://github.com/google-gemini/gemini-cli/pull/17078) by @abhipatel12). -- **Enhanced User Experience:** This release includes an experimental `Plan` - mode, queued tool confirmations, and expandable large text pastes for a +- **Enhanced User Experience:** This release includes queued tool + confirmations, and expandable large text pastes for a smoother workflow. - **New `/rewind` Command:** Easily navigate your session history with the new `/rewind` command From f5496dbb32864bcfe624d98e8aefdc728a16204d Mon Sep 17 00:00:00 2001 From: g-samroberts <158088236+g-samroberts@users.noreply.github.com> Date: Wed, 4 Feb 2026 17:53:28 -0800 Subject: [PATCH 06/14] Update latest.md --- docs/changelogs/latest.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/changelogs/latest.md b/docs/changelogs/latest.md index ff6bb043e3f..44c81670f17 100644 --- a/docs/changelogs/latest.md +++ b/docs/changelogs/latest.md @@ -15,7 +15,7 @@ npm install -g @google/gemini-cli tool execution, improving performance and responsiveness. This includes migrating non-interactive flows and sub-agents to the new scheduler. - **Enhanced User Experience:** This release introduces several UI/UX - improvements, including a new `Plan` mode, queued tool confirmations, and the + improvements, including queued tool confirmations and the ability to expand and collapse large pasted text blocks. The `Settings` dialog has been improved to reduce jitter and preserve focus. - **Agent and Skill Improvements:** Agent Skills have been promoted to a stable From 28e403ab1a5439bee0016e1bc046f2e9c8202388 Mon Sep 17 00:00:00 2001 From: g-samroberts Date: Wed, 4 Feb 2026 18:00:29 -0800 Subject: [PATCH 07/14] Fix formatting. --- docs/changelogs/index.md | 5 ++--- docs/changelogs/latest.md | 6 +++--- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/docs/changelogs/index.md b/docs/changelogs/index.md index f45c5abec25..98e290c30d3 100644 --- a/docs/changelogs/index.md +++ b/docs/changelogs/index.md @@ -24,9 +24,8 @@ on GitHub. for tool execution, resulting in a more responsive and performant experience ([#17078](https://github.com/google-gemini/gemini-cli/pull/17078) by @abhipatel12). -- **Enhanced User Experience:** This release includes queued tool - confirmations, and expandable large text pastes for a - smoother workflow. +- **Enhanced User Experience:** This release includes queued tool confirmations, + and expandable large text pastes for a smoother workflow. - **New `/rewind` Command:** Easily navigate your session history with the new `/rewind` command ([#15720](https://github.com/google-gemini/gemini-cli/pull/15720) by diff --git a/docs/changelogs/latest.md b/docs/changelogs/latest.md index 44c81670f17..ce0a0fdfff2 100644 --- a/docs/changelogs/latest.md +++ b/docs/changelogs/latest.md @@ -15,9 +15,9 @@ npm install -g @google/gemini-cli tool execution, improving performance and responsiveness. This includes migrating non-interactive flows and sub-agents to the new scheduler. - **Enhanced User Experience:** This release introduces several UI/UX - improvements, including queued tool confirmations and the - ability to expand and collapse large pasted text blocks. The `Settings` dialog - has been improved to reduce jitter and preserve focus. + improvements, including queued tool confirmations and the ability to expand + and collapse large pasted text blocks. The `Settings` dialog has been improved + to reduce jitter and preserve focus. - **Agent and Skill Improvements:** Agent Skills have been promoted to a stable feature. Sub-agents now use a JSON schema for input and are tracked by an `AgentRegistry`. From 12501c3e20700204b86ae14fc50746e3c6d15303 Mon Sep 17 00:00:00 2001 From: g-samroberts Date: Wed, 4 Feb 2026 18:51:58 -0800 Subject: [PATCH 08/14] Initial workflow and skill for changelog generation. --- .gemini/skills/docs-changelog/SKILL.md | 105 +++++++++++++++++++++++++ .github/workflows/release-notes.yml | 74 +++++++++++++++++ 2 files changed, 179 insertions(+) create mode 100644 .gemini/skills/docs-changelog/SKILL.md create mode 100644 .github/workflows/release-notes.yml diff --git a/.gemini/skills/docs-changelog/SKILL.md b/.gemini/skills/docs-changelog/SKILL.md new file mode 100644 index 00000000000..60f24155241 --- /dev/null +++ b/.gemini/skills/docs-changelog/SKILL.md @@ -0,0 +1,105 @@ +--- +name: docs-changelog +description: Provides a step-by-step procedure for generating Gemini CLI changelog files based on github release information. +--- + +# Procedure: Updating Changelog for New Releases + +The following instructions are run by Gemini CLI when processing new releases. + +## Objective + +To standardize the process of updating the Gemini CLI changelog files for a new +release, ensuring accuracy, consistency, and adherence to project style +guidelines. + +## Release Types + +This skill covers two types of releases: + +* **Standard Releases:** Regular, versioned releases that are announced to all + users. These updates modify `docs/changelogs/latest.md` and + `docs/changelogs/index.md`. +* **Preview Releases:** Pre-release versions for testing and feedback. These + updates only modify `docs/changelogs/preview.md`. + +### Expected Inputs + +Regardless of the type of release, the following information is expected: + +* **New version number:** The version number for the new release + (e.g., `v0.27.0`). +* **Release date:** The date of the new release (e.g., `2026-02-03`). +* **Raw changelog data:** A list of all pull requests and changes + included in the release, in the format `description by @author in + #pr_number`. +* **Previous version number:** The version number of the last release + (e.g., `v0.26.0`). + +## Procedure + +### Initial Setup + +1. Identify the files to be modified: + + For standard releases, update `docs/changelogs/latest.md` and + `docs/changelogs/index.md`. For preview releases, update + `docs/changelogs/preview.md`. + +2. Activate the `docs-writer` skill. + +### Analyze Raw Changelog Data + +1. Review the complete list of changes. +2. Group related changes into high-level categories such as + important features, "UI/UX Improvements", and "Bug Fixes". Use the existing + announcements in `docs/changelogs/index.md` as an example. + +### Create Highlight Summaries + +Create two distinct versions of the release highlights. + +**Important:** Carefully inspect highlights for "experimental" or +"preview" features before public announcement, and do not include them. + +#### Version 1: Comprehensive Highlights (for `latest.md` or `preview.md`) + +Write a detailed summary for each category focusing on user-facing +impact. + +#### Version 2: Concise Highlights (for `index.md`) + +Skip this step for preview releases. + +Write concise summaries including the primary PR and author +(e.g., `([#12345](link) by @author)`). + +### Update `docs/changelogs/latest.md` or `docs/changelogs/preview.md` + +1. Read current content and use `write_file` to replace it with the new + version number, date, comprehensive highlights, and the full + "What's Changed" list. + +2. For each item in the "What's Changed" list, keep usernames in plaintext, and + add github links for each issue number. Example: + + "- feat: implement /rewind command by @username in + [#12345](https://github.com/google-gemini/gemini-cli/pull/12345)" + +3. Skip entries by @gemini-cli-robot. + +4. Do not add the "New Contributors" section. + +5. Ensure lines are wrapped to 80 characters. + +### Update `docs/changelogs/index.md` + +Skip this step for preview releases. + +Insert a new "Announcements" section for the new version directly +above the previous version's section. Ensure lines are wrapped to +80 characters. + +### Finalize + +Run `npm run format` to ensure consistency. diff --git a/.github/workflows/release-notes.yml b/.github/workflows/release-notes.yml new file mode 100644 index 00000000000..13efa00b417 --- /dev/null +++ b/.github/workflows/release-notes.yml @@ -0,0 +1,74 @@ +# This workflow is triggered on every new release. +# It uses Gemini to generate release notes and creates a PR with the changes. +name: Generate Release Notes + +on: + release: + types: [created] + +jobs: + generate-release-notes: + runs-on: ubuntu-latest + permissions: + contents: write + pull-requests: write + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + # The user-level skills need to be available to the workflow + fetch-depth: 0 + + - name: Set up Node.js + uses: actions/setup-node@v4 + with: + node-version: '20' + + - name: Get release information + id: release_info + run: | + VERSION="${{ github.event.release.tag_name }}" + # Get the previous release tag + PREVIOUS_VERSION=$(gh release list --limit 1 --exclude-drafts --exclude-prereleases --json tagName -q '.[0].tagName' | sed 's/^v//') + + # Sanitize the release body to be passed as a command-line argument + # This replaces newlines with a special marker to be undone in the prompt + RAW_CHANGELOG=$(echo "${{ github.event.release.body }}" | tr '\n' '%%NEWLINE%%') + + echo "VERSION=$VERSION" >> $GITHUB_OUTPUT + echo "PREVIOUS_VERSION=$PREVIOUS_VERSION" >> $GITHUB_OUTPUT + echo "RAW_CHANGELOG=$RAW_CHANGELOG" >> $GITHUB_OUTPUT + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Generate Changelog with Gemini + uses: 'google-github-actions/run-gemini-cli@a3bf79042542528e91937b3a3a6fbc4967ee3c31' # ratchet:google-github-actions/run-gemini-cli@v0 + env: + VERSION: ${{ steps.release_info.outputs.VERSION }} + PREVIOUS_VERSION: ${{ steps.release_info.outputs.PREVIOUS_VERSION }} + RAW_CHANGELOG: ${{ steps.release_info.outputs.RAW_CHANGELOG }} + with: + gemini_api_key: ${{ secrets.GEMINI_API_KEY }} + prompt: | + Activate the 'docs-changelog' skill. + + **Release Information:** + - New Version: $VERSION + - Previous Version: $PREVIOUS_VERSION + - Release Date: $(date +%Y-%m-%d) + - Raw Changelog Data (newlines replaced with '%%NEWLINE%%'): $RAW_CHANGELOG + + Execute the release notes generation process using the information provided. + + - name: Create Pull Request + uses: peter-evans/create-pull-request@v6 + with: + token: ${{ secrets.GITHUB_TOKEN }} + commit-message: "docs(changelog): update for ${{ steps.release_info.outputs.VERSION }}" + title: "Changelog for ${{ steps.release_info.outputs.VERSION }}" + body: | + This PR contains the auto-generated changelog for the ${{ steps.release_info.outputs.VERSION }} release. + + Please review and merge. + branch: "changelog-${{ steps.release_info.outputs.VERSION }}" + delete-branch: true \ No newline at end of file From b8281867797ac610c758058e31101734cc9d56e4 Mon Sep 17 00:00:00 2001 From: g-samroberts Date: Thu, 5 Feb 2026 12:32:07 -0800 Subject: [PATCH 09/14] Update SKILL.md --- .gemini/skills/docs-changelog/SKILL.md | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/.gemini/skills/docs-changelog/SKILL.md b/.gemini/skills/docs-changelog/SKILL.md index 60f24155241..bd10714d3de 100644 --- a/.gemini/skills/docs-changelog/SKILL.md +++ b/.gemini/skills/docs-changelog/SKILL.md @@ -23,6 +23,8 @@ This skill covers two types of releases: * **Preview Releases:** Pre-release versions for testing and feedback. These updates only modify `docs/changelogs/preview.md`. +Ignore all other releases, such as nightly releases. + ### Expected Inputs Regardless of the type of release, the following information is expected: @@ -50,7 +52,10 @@ Regardless of the type of release, the following information is expected: ### Analyze Raw Changelog Data -1. Review the complete list of changes. +1. Review the complete list of changes. If it is a patch or a bug fix with few + changes, skip to the "Update `docs/changelogs/latest.md` or + `docs/changelogs/preview.md`" section. + 2. Group related changes into high-level categories such as important features, "UI/UX Improvements", and "Bug Fixes". Use the existing announcements in `docs/changelogs/index.md` as an example. @@ -77,8 +82,11 @@ Write concise summaries including the primary PR and author ### Update `docs/changelogs/latest.md` or `docs/changelogs/preview.md` 1. Read current content and use `write_file` to replace it with the new - version number, date, comprehensive highlights, and the full - "What's Changed" list. + version number, and date. + + If it is a patch or bug fix with few changes, simply add these + changes to the "What's Changed" list. Otherwise, replace comprehensive + highlights, and the full "What's Changed" list. 2. For each item in the "What's Changed" list, keep usernames in plaintext, and add github links for each issue number. Example: @@ -90,11 +98,15 @@ Write concise summaries including the primary PR and author 4. Do not add the "New Contributors" section. -5. Ensure lines are wrapped to 80 characters. +5. Update the "Full changelog:" link with the previous version and the new +vesion, unless it is a patch or a bug fix, in which case simply update the +link's new version and keep the previous version the same. + +6. Ensure lines are wrapped to 80 characters. ### Update `docs/changelogs/index.md` -Skip this step for preview releases. +Skip this step for patches, bug fixes, or preview releases. Insert a new "Announcements" section for the new version directly above the previous version's section. Ensure lines are wrapped to From af47b3207a378aa57084f75bf92137fe634705f1 Mon Sep 17 00:00:00 2001 From: g-samroberts <158088236+g-samroberts@users.noreply.github.com> Date: Thu, 5 Feb 2026 12:55:31 -0800 Subject: [PATCH 10/14] Add blank line at end of release-notes.yml --- .github/workflows/release-notes.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/release-notes.yml b/.github/workflows/release-notes.yml index 13efa00b417..bfc2f7be9fc 100644 --- a/.github/workflows/release-notes.yml +++ b/.github/workflows/release-notes.yml @@ -71,4 +71,4 @@ jobs: Please review and merge. branch: "changelog-${{ steps.release_info.outputs.VERSION }}" - delete-branch: true \ No newline at end of file + delete-branch: true From b4d43a78ca079a72d975b9a26341f5dc655641b9 Mon Sep 17 00:00:00 2001 From: g-samroberts Date: Thu, 5 Feb 2026 15:20:57 -0800 Subject: [PATCH 11/14] Slight modifications based on linter results. --- .gemini/skills/docs-changelog/SKILL.md | 5 +++-- .github/workflows/release-notes.yml | 19 ++++++------------- 2 files changed, 9 insertions(+), 15 deletions(-) diff --git a/.gemini/skills/docs-changelog/SKILL.md b/.gemini/skills/docs-changelog/SKILL.md index bd10714d3de..aa4e24dc641 100644 --- a/.gemini/skills/docs-changelog/SKILL.md +++ b/.gemini/skills/docs-changelog/SKILL.md @@ -35,8 +35,9 @@ Regardless of the type of release, the following information is expected: * **Raw changelog data:** A list of all pull requests and changes included in the release, in the format `description by @author in #pr_number`. -* **Previous version number:** The version number of the last release - (e.g., `v0.26.0`). +* **Previous version number:** The version number of the last release can be + calculated by decreasing the minor version number by one and setting the + patch or bug fix version number. ## Procedure diff --git a/.github/workflows/release-notes.yml b/.github/workflows/release-notes.yml index 13efa00b417..d95e4aa9b0e 100644 --- a/.github/workflows/release-notes.yml +++ b/.github/workflows/release-notes.yml @@ -27,17 +27,12 @@ jobs: - name: Get release information id: release_info run: | - VERSION="${{ github.event.release.tag_name }}" - # Get the previous release tag - PREVIOUS_VERSION=$(gh release list --limit 1 --exclude-drafts --exclude-prereleases --json tagName -q '.[0].tagName' | sed 's/^v//') + echo "VERSION=${{ github.event.release.tag_name }}" >> "$GITHUB_OUTPUT" - # Sanitize the release body to be passed as a command-line argument - # This replaces newlines with a special marker to be undone in the prompt - RAW_CHANGELOG=$(echo "${{ github.event.release.body }}" | tr '\n' '%%NEWLINE%%') - - echo "VERSION=$VERSION" >> $GITHUB_OUTPUT - echo "PREVIOUS_VERSION=$PREVIOUS_VERSION" >> $GITHUB_OUTPUT - echo "RAW_CHANGELOG=$RAW_CHANGELOG" >> $GITHUB_OUTPUT + # Use a heredoc to preserve multiline release body + echo 'RAW_CHANGELOG<> "$GITHUB_OUTPUT" + echo "${{ github.event.release.body }}" >> "$GITHUB_OUTPUT" + echo 'EOF' >> "$GITHUB_OUTPUT" env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -45,7 +40,6 @@ jobs: uses: 'google-github-actions/run-gemini-cli@a3bf79042542528e91937b3a3a6fbc4967ee3c31' # ratchet:google-github-actions/run-gemini-cli@v0 env: VERSION: ${{ steps.release_info.outputs.VERSION }} - PREVIOUS_VERSION: ${{ steps.release_info.outputs.PREVIOUS_VERSION }} RAW_CHANGELOG: ${{ steps.release_info.outputs.RAW_CHANGELOG }} with: gemini_api_key: ${{ secrets.GEMINI_API_KEY }} @@ -54,9 +48,8 @@ jobs: **Release Information:** - New Version: $VERSION - - Previous Version: $PREVIOUS_VERSION - Release Date: $(date +%Y-%m-%d) - - Raw Changelog Data (newlines replaced with '%%NEWLINE%%'): $RAW_CHANGELOG + - Raw Changelog Data: $RAW_CHANGELOG Execute the release notes generation process using the information provided. From 8fa118ffd35b048e3bed087eb722054dc494e4c7 Mon Sep 17 00:00:00 2001 From: g-samroberts Date: Thu, 5 Feb 2026 16:04:07 -0800 Subject: [PATCH 12/14] Fix additional linter errors. --- .github/workflows/release-notes.yml | 48 ++++++++++++++--------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/.github/workflows/release-notes.yml b/.github/workflows/release-notes.yml index dba635860ea..33a5af968a5 100644 --- a/.github/workflows/release-notes.yml +++ b/.github/workflows/release-notes.yml @@ -1,48 +1,48 @@ # This workflow is triggered on every new release. # It uses Gemini to generate release notes and creates a PR with the changes. -name: Generate Release Notes +name: 'Generate Release Notes' on: release: - types: [created] + types: ['created'] jobs: generate-release-notes: - runs-on: ubuntu-latest + runs-on: 'ubuntu-latest' permissions: - contents: write - pull-requests: write + contents: 'write' + pull-requests: 'write' steps: - - name: Checkout repository - uses: actions/checkout@v4 + - name: 'Checkout repository' + uses: 'actions/checkout@v4' with: # The user-level skills need to be available to the workflow fetch-depth: 0 - - name: Set up Node.js - uses: actions/setup-node@v4 + - name: 'Set up Node.js' + uses: 'actions/setup-node@v4' with: node-version: '20' - - name: Get release information - id: release_info + - name: 'Get release information' + id: 'release_info' run: | echo "VERSION=${{ github.event.release.tag_name }}" >> "$GITHUB_OUTPUT" - + # Use a heredoc to preserve multiline release body echo 'RAW_CHANGELOG<> "$GITHUB_OUTPUT" echo "${{ github.event.release.body }}" >> "$GITHUB_OUTPUT" echo 'EOF' >> "$GITHUB_OUTPUT" env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Generate Changelog with Gemini + GH_TOKEN: '${{ secrets.GITHUB_TOKEN }}' + + - name: 'Generate Changelog with Gemini' uses: 'google-github-actions/run-gemini-cli@a3bf79042542528e91937b3a3a6fbc4967ee3c31' # ratchet:google-github-actions/run-gemini-cli@v0 env: - VERSION: ${{ steps.release_info.outputs.VERSION }} - RAW_CHANGELOG: ${{ steps.release_info.outputs.RAW_CHANGELOG }} + VERSION: '${{ steps.release_info.outputs.VERSION }}' + RAW_CHANGELOG: '${{ steps.release_info.outputs.RAW_CHANGELOG }}' with: - gemini_api_key: ${{ secrets.GEMINI_API_KEY }} + gemini_api_key: '${{ secrets.GEMINI_API_KEY }}' prompt: | Activate the 'docs-changelog' skill. @@ -53,15 +53,15 @@ jobs: Execute the release notes generation process using the information provided. - - name: Create Pull Request - uses: peter-evans/create-pull-request@v6 + - name: 'Create Pull Request' + uses: 'peter-evans/create-pull-request@v6' with: - token: ${{ secrets.GITHUB_TOKEN }} - commit-message: "docs(changelog): update for ${{ steps.release_info.outputs.VERSION }}" - title: "Changelog for ${{ steps.release_info.outputs.VERSION }}" + token: '${{ secrets.GITHUB_TOKEN }}' + commit-message: 'docs(changelog): update for ${{ steps.release_info.outputs.VERSION }}' + title: 'Changelog for ${{ steps.release_info.outputs.VERSION }}' body: | This PR contains the auto-generated changelog for the ${{ steps.release_info.outputs.VERSION }} release. Please review and merge. - branch: "changelog-${{ steps.release_info.outputs.VERSION }}" + branch: 'changelog-${{ steps.release_info.outputs.VERSION }}' delete-branch: true From 3e69be20e539a040f4c0791046f4ab0e6f60e9ee Mon Sep 17 00:00:00 2001 From: g-samroberts Date: Thu, 5 Feb 2026 17:42:00 -0800 Subject: [PATCH 13/14] Add wofklow_dispatch for manual runs. --- .github/workflows/release-notes.yml | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/.github/workflows/release-notes.yml b/.github/workflows/release-notes.yml index 33a5af968a5..044c37b9a23 100644 --- a/.github/workflows/release-notes.yml +++ b/.github/workflows/release-notes.yml @@ -5,6 +5,16 @@ name: 'Generate Release Notes' on: release: types: ['created'] + workflow_dispatch: + inputs: + version: + description: 'New version (e.g., v1.2.3)' + required: true + type: 'string' + body: + description: 'Release notes body' + required: true + type: 'string' jobs: generate-release-notes: @@ -27,11 +37,14 @@ jobs: - name: 'Get release information' id: 'release_info' run: | - echo "VERSION=${{ github.event.release.tag_name }}" >> "$GITHUB_OUTPUT" + VERSION="${{ github.event.inputs.version || github.event.release.tag_name }}" + BODY="${{ github.event.inputs.body || github.event.release.body }}" + + echo "VERSION=${VERSION}" >> "$GITHUB_OUTPUT" # Use a heredoc to preserve multiline release body echo 'RAW_CHANGELOG<> "$GITHUB_OUTPUT" - echo "${{ github.event.release.body }}" >> "$GITHUB_OUTPUT" + echo "${BODY}" >> "$GITHUB_OUTPUT" echo 'EOF' >> "$GITHUB_OUTPUT" env: GH_TOKEN: '${{ secrets.GITHUB_TOKEN }}' From 9f0a29c64823bb242ade7c41d1d1e0cd36d3023a Mon Sep 17 00:00:00 2001 From: g-samroberts Date: Thu, 5 Feb 2026 20:26:40 -0800 Subject: [PATCH 14/14] Fixes based on comments. --- .gemini/skills/docs-changelog/SKILL.md | 2 +- .github/workflows/release-notes.yml | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.gemini/skills/docs-changelog/SKILL.md b/.gemini/skills/docs-changelog/SKILL.md index aa4e24dc641..2145ae2123e 100644 --- a/.gemini/skills/docs-changelog/SKILL.md +++ b/.gemini/skills/docs-changelog/SKILL.md @@ -100,7 +100,7 @@ Write concise summaries including the primary PR and author 4. Do not add the "New Contributors" section. 5. Update the "Full changelog:" link with the previous version and the new -vesion, unless it is a patch or a bug fix, in which case simply update the +version, unless it is a patch or a bug fix, in which case simply update the link's new version and keep the previous version the same. 6. Ensure lines are wrapped to 80 characters. diff --git a/.github/workflows/release-notes.yml b/.github/workflows/release-notes.yml index 044c37b9a23..f1ba083ba65 100644 --- a/.github/workflows/release-notes.yml +++ b/.github/workflows/release-notes.yml @@ -15,6 +15,10 @@ on: description: 'Release notes body' required: true type: 'string' + time: + description: 'Release time' + required: true + type: 'string' jobs: generate-release-notes: @@ -39,8 +43,10 @@ jobs: run: | VERSION="${{ github.event.inputs.version || github.event.release.tag_name }}" BODY="${{ github.event.inputs.body || github.event.release.body }}" + TIME="${{ github.event.inputs.time || github.event.release.created_at }}" echo "VERSION=${VERSION}" >> "$GITHUB_OUTPUT" + echo "TIME=${TIME}" >> "$GITHUB_OUTPUT" # Use a heredoc to preserve multiline release body echo 'RAW_CHANGELOG<> "$GITHUB_OUTPUT" @@ -61,7 +67,7 @@ jobs: **Release Information:** - New Version: $VERSION - - Release Date: $(date +%Y-%m-%d) + - Release Date: $TIME - Raw Changelog Data: $RAW_CHANGELOG Execute the release notes generation process using the information provided.