Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
211 commits
Select commit Hold shift + click to select a range
c13be3b
test(core): add missing tests for prompts/utils.ts
yashodipmore Feb 27, 2026
a56914f
refactor(test): use vi.stubEnv instead of direct process.env manipula…
yashodipmore Feb 27, 2026
d12b7f1
fix(test): stub GEMINI_CLI_HOME to prevent env leakage in homedir tests
yashodipmore Mar 3, 2026
8952d0a
refactor common settings logic for skills,agents (#17490)
ishaanxgupta Mar 3, 2026
d592d8d
Update docs-writer skill with new resource (#20917)
g-samroberts Mar 3, 2026
78aea09
fix(cli): pin clipboardy to ~5.2.x (#21009)
scidomino Mar 3, 2026
55d968a
feat: Implement slash command handling in ACP for `/memory`,`/init`,`…
sripasg Mar 3, 2026
4044210
Docs/add hooks reference (#20961)
AadithyaAle Mar 3, 2026
8ff50a4
feat(plan): add copy subcommand to plan (#20491) (#20988)
ruomengz Mar 3, 2026
fd1992c
Format the quota/limit style guide. (#21017)
g-samroberts Mar 3, 2026
0451724
fix(core): sanitize and length-check MCP tool qualified names (#20987)
abhipatel12 Mar 3, 2026
9cd4eb1
fix(core): send shell output to model on cancel (#20501)
devr0306 Mar 3, 2026
75d556e
remove hardcoded tiername when missing tier (#21022)
sehoon38 Mar 3, 2026
fa680ad
feat(acp): add set models interface (#20991)
skeshive Mar 3, 2026
3cd6fdd
feat(cli): add chat resume footer on session quit (#20667)
lordshashank Mar 3, 2026
e0abda7
Support bold and other styles in svg snapshots (#20937)
jacob314 Mar 3, 2026
0913eda
fix(core): increase A2A agent timeout to 30 minutes (#21028)
adamfweidman Mar 3, 2026
df44ce5
Cleanup old branches. (#19354)
jacob314 Mar 3, 2026
cc2925b
chore(release): bump version to 0.34.0-nightly.20260303.34f0c1538 (#2…
gemini-cli-robot Mar 4, 2026
c7b3277
feat(ui): standardize semantic focus colors and enhance history visib…
keithguerin Mar 4, 2026
35d5b83
fix: merge duplicate imports in packages/core (3/4) (#20928)
Nixxx19 Mar 4, 2026
255a721
Add extra safety checks for proto pollution (#20396)
jacob314 Mar 4, 2026
df40384
feat(core): Add tracker CRUD tools & visualization (#19489)
anj-s Mar 4, 2026
eefa7ac
Revert "fix(ui): persist expansion in AskUser dialog when navigating …
jacob314 Mar 4, 2026
3d18a7d
Changelog for v0.33.0-preview.0 (#21030)
gemini-cli-robot Mar 4, 2026
25399a1
fix: model persistence for all scenarios (#21051)
sripasg Mar 4, 2026
cf3db08
chore/release: bump version to 0.34.0-nightly.20260304.28af4e127 (#21…
gemini-cli-robot Mar 4, 2026
481dfc2
Consistently guard restarts against concurrent auto updates (#21016)
scidomino Mar 4, 2026
0390e88
Defensive coding to reduce the risk of Maximum update depth errors (#…
jacob314 Mar 4, 2026
ca575fc
fix(cli): Polish shell autocomplete rendering to be a little more she…
jacob314 Mar 4, 2026
9280040
Docs: Update plan mode docs (#19682)
jkcinouye Mar 4, 2026
2500343
fix(mcp): Notifications/tools/list_changed support not working (#21050)
jacob314 Mar 4, 2026
c91954a
fix(cli): register extension lifecycle events in DebugProfiler (#20101)
fayerman-source Mar 4, 2026
473113a
chore(dev): update vscode settings for typescriptreact (#19907)
rohit-4321 Mar 4, 2026
586c506
fix(cli): enable multi-arch docker builds for sandbox (#19821)
ru-aish Mar 4, 2026
68d37cb
Changelog for v0.32.0 (#21033)
gemini-cli-robot Mar 4, 2026
cefad7a
Changelog for v0.33.0-preview.1 (#21058)
gemini-cli-robot Mar 4, 2026
375d350
feat(core): improve @file autocomplete to prioritize filenames (#21064)
sehoon38 Mar 4, 2026
04fb360
feat(sandbox): add experimental LXC container sandbox support (#20735)
h30s Mar 4, 2026
d1d8452
feat(evals): add overall pass rate row to eval nightly summary table …
gundermanc Mar 4, 2026
4afaef6
feat(telemetry): include language in telemetry and fix accepted lines…
gundermanc Mar 4, 2026
80201e6
Changelog for v0.32.1 (#21055)
gemini-cli-robot Mar 4, 2026
3c0bf62
feat(core): add robustness tests, logging, and metrics for CodeAssist…
yunaseoul Mar 4, 2026
37d4f25
feat: add issue assignee workflow (#21003)
kartikangiras Mar 4, 2026
cd56083
fix: improve error message when OAuth succeeds but project ID is requ…
Nixxx19 Mar 4, 2026
e8aea5c
feat(loop-reduction): implement iterative loop detection and model fe…
aishaneeshah Mar 4, 2026
2feb3b9
chore(github): require prompt approvers for agent prompt files (#20896)
gundermanc Mar 4, 2026
c125e49
Docs: Create tools reference (#19470)
jkcinouye Mar 4, 2026
204479c
fix(core, a2a-server): prevent hang during OAuth in non-interactive s…
spencer426 Mar 4, 2026
0cc8c0b
chore(cli): enable deprecated settings removal by default (#20682)
yashodipmore Mar 4, 2026
33b482a
feat(core): Disable fast ack helper for hints. (#21011)
joshualitt Mar 4, 2026
41d63ea
fix(ui): suppress redundant failure note when tool error note is show…
NTaylorMullen Mar 4, 2026
ce132a6
docs: document planning workflows with Conductor example (#21166)
jerop Mar 4, 2026
7e6c309
feat(release): ship esbuild bundle in npm package (#19171)
genneth Mar 4, 2026
4ca58b0
fix(extensions): preserve symlinks in extension source path while enf…
galz10 Mar 5, 2026
9ff1537
fix(ui): removed double padding on rendered content (#21029)
devr0306 Mar 5, 2026
8295c43
fix(cli): defer tool exclusions to policy engine in non-interactive m…
EricRahm Mar 5, 2026
121e94d
fix(core): truncate excessively long lines in grep search output (#21…
gundermanc Mar 5, 2026
73daf0b
feat: add custom footer configuration via `/footer` (#19001)
jackwotherspoon Mar 5, 2026
3190a0b
perf(core): fix OOM crash in long-running sessions (#19608)
WizardsForgeGames Mar 5, 2026
df6a5b9
refactor(cli): categorize built-in themes into dark/ and light/ direc…
JayadityaGit Mar 5, 2026
d9690cf
fix(core): explicitly allow codebase_investigator and cli_help in rea…
Adib234 Mar 5, 2026
20718cb
test: add browser agent integration tests (#21151)
kunal-10-cloud Mar 5, 2026
27e2181
fix(cli): fix enabling kitty codes on Windows Terminal (#21136)
scidomino Mar 5, 2026
12805e9
refactor(core): extract shared OAuth flow primitives from MCPOAuthPro…
SandyTao520 Mar 5, 2026
a1b83ff
fix(ui): add partial output to cancelled shell UI (#21178)
devr0306 Mar 5, 2026
103fbac
fix(cli): replace hardcoded keybinding strings with dynamic formatter…
scidomino Mar 5, 2026
f26517c
DOCS: Update quota and pricing page (#21194)
g-samroberts Mar 5, 2026
532c6d1
feat(triage): add area/documentation to issue triage (#21222)
g-samroberts Mar 5, 2026
766d770
feat(telemetry): implement Clearcut logging for startup statistics (#…
yunaseoul Mar 5, 2026
1900f78
Fix so shell calls are formatted (#21237)
jacob314 Mar 5, 2026
e4672d6
feat(cli): add native gVisor (runsc) sandboxing support (#21062)
Zheyuan-Lin Mar 5, 2026
fe94892
docs: use absolute paths for internal links in plan-mode.md (#21299)
jerop Mar 5, 2026
b8545c7
fix(core): prevent unhandled AbortError crash during stream loop dete…
7hokerz Mar 5, 2026
89760d1
fix:reorder env var redaction checks to scan values first (#21059)
kartikangiras Mar 5, 2026
4beb24e
fix(acp): rename --experimental-acp to --acp & remove Zed-specific re…
skeshive Mar 5, 2026
ee4c6e1
feat(core): fallback to 2.5 models with no access for toolcalls (#21283)
sehoon38 Mar 5, 2026
9e1b8b3
test(core): improve testing for API request/response parsing (#21227)
sehoon38 Mar 5, 2026
b7241ed
docs(links): update docs-writer skill and fix broken link (#21314)
g-samroberts Mar 5, 2026
ebc806a
Fix code colorizer ansi escape bug. (#21321)
jacob314 Mar 5, 2026
94416d7
remove wildcard behavior on keybindings (#21315)
scidomino Mar 5, 2026
5100236
feat(acp): Add support for AI Gateway auth (#21305)
skeshive Mar 5, 2026
2672cbd
fix(theme): improve theme color contrast for macOS Terminal.app (#21175)
clocky Mar 5, 2026
3f7f9aa
feat (core): Implement tracker related SI changes (#19964)
anj-s Mar 6, 2026
3cba7d7
Changelog for v0.33.0-preview.2 (#21333)
gemini-cli-robot Mar 6, 2026
a147f3f
Changelog for v0.33.0-preview.3 (#21347)
gemini-cli-robot Mar 6, 2026
e03458f
fix(cli): implement --all flag for extensions uninstall (#21319)
sehoon38 Mar 6, 2026
cc978e8
docs: format release times as HH:MM UTC (#20726)
pavan-sh Mar 6, 2026
35959db
docs: fix incorrect relative links to command reference (#20964)
kanywst Mar 6, 2026
681d051
documentiong ensures ripgrep (#21298)
Jatin24062005 Mar 6, 2026
7add401
fix(core): handle AbortError thrown during processTurn (#21296)
MumuTW Mar 6, 2026
f3859df
docs(cli): clarify ! command output visibility in shell commands tuto…
MohammedADev Mar 6, 2026
2d8e4cd
fix: logic for task tracker strategy and remove tracker tools (#21355)
anj-s Mar 6, 2026
048cc9f
fix(partUtils): display media type and size for inline data parts (#2…
Aboudjem Mar 6, 2026
438dc38
Fix(accessibility): add screen reader support to RewindViewer (#20750)
Famous077 Mar 6, 2026
495a5c6
fix(hooks): propagate stopHookActive in AfterAgent retry path (#20426…
Aarchi-07 Mar 6, 2026
40b4a7c
fix(core): deduplicate GEMINI.md files by device/inode on case-insens…
Nixxx19 Mar 6, 2026
ab57a8c
feat(core): add concurrency safety guidance for subagent delegation (…
abhipatel12 Mar 6, 2026
951f073
feat(ui): dynamically generate all keybinding hints (#21346)
scidomino Mar 6, 2026
3924272
feat(core): implement unified KeychainService and migrate token stora…
ehedlund Mar 6, 2026
2c84707
fix(cli): gracefully handle --resume when no sessions exist (#21429)
SandyTao520 Mar 6, 2026
85fc0ee
fix(plan): keep approved plan during chat compression (#21284)
ruomengz Mar 6, 2026
bb0c527
feat(core): implement generic CacheService and optimize setupUser (#2…
sehoon38 Mar 6, 2026
f06f79a
Update quota and pricing documentation with subscription tiers (#21351)
srithreepo Mar 6, 2026
c55915b
fix(core): append correct OTLP paths for HTTP exporters (#16836)
sebastien-prudhomme Mar 6, 2026
9c23fac
Changelog for v0.33.0-preview.4 (#21354)
gemini-cli-robot Mar 6, 2026
6d47e25
feat(cli): implement dot-prefixing for slash command conflicts (#20979)
ehedlund Mar 6, 2026
b41c6d3
refactor(core): standardize MCP tool naming to mcp_ FQN format (#21425)
abhipatel12 Mar 6, 2026
4ed6779
feat(cli): hide gemma settings from display and mark as experimental …
abhipatel12 Mar 6, 2026
a987dfe
feat(skills): refine string-reviewer guidelines and description (#20368)
clocky Mar 6, 2026
f99aa65
fix(core): whitelist TERM and COLORTERM in environment sanitization (…
deadsmash07 Mar 7, 2026
0db2c01
fix(billing): fix overage strategy lifecycle and settings integration…
gsquared94 Mar 7, 2026
b34855a
fix: expand paste placeholders in TextInput on submit (#19946)
Jefftree Mar 7, 2026
639bd48
fix(core): add in-memory cache to ChatRecordingService to prevent OOM…
SandyTao520 Mar 7, 2026
6ebf54a
feat(cli): overhaul thinking UI (#18725)
keithguerin Mar 7, 2026
bd2af53
fix(ui): unify Ctrl+O expansion hint experience across buffer modes (…
jwhelangoog Mar 7, 2026
480fdea
fix(cli): correct shell height reporting (#21492)
jacob314 Mar 7, 2026
0998edb
Make test suite pass when the GEMINI_SYSTEM_MD env variable or GEMINI…
jacob314 Mar 7, 2026
c49a140
Disallow underspecified types (#21485)
gundermanc Mar 7, 2026
31fa94a
refactor(cli): standardize on 'reload' verb for all components (#20654)
keithguerin Mar 7, 2026
8aa06fb
feat(cli): Invert quota language to 'percent used' (#20100)
keithguerin Mar 7, 2026
b4d57b4
Docs: Add documentation for notifications (experimental)(macOS) (#21163)
jkcinouye Mar 8, 2026
a5c79ad
Code review comments as a pr (#21209)
jacob314 Mar 8, 2026
c1a40fe
feat(cli): unify /chat and /resume command UX (#20256)
LyalinDotCom Mar 8, 2026
64e1483
docs: fix typo 'allowslisted' -> 'allowlisted' in mcp-server.md (#21665)
Gyanranjan-Priyam Mar 9, 2026
42b9ef4
fix(core): display actual graph output in tracker_visualize tool (#21…
anj-s Mar 9, 2026
ea849ee
fix(core): sanitize SSE-corrupted JSON and domain strings in error cl…
gsquared94 Mar 9, 2026
06c4fcc
Docs: Make documentation links relative (#21490)
diodesign Mar 9, 2026
0b6238b
feat(cli): expose /tools desc as explicit subcommand for discoverabil…
aworki Mar 9, 2026
8907a66
feat(cli): add /compact alias for /compress command (#21711)
jackwotherspoon Mar 9, 2026
2f4fc9c
feat(plan): enable Plan Mode by default (#21713)
jerop Mar 9, 2026
b254093
fix(core): resolve symlinks for non-existent paths during validation …
Adib234 Mar 9, 2026
7626823
feat(core): Introduce `AgentLoopContext`. (#21198)
joshualitt Mar 9, 2026
88ca5c8
docs: document tool exclusion from memory via deny policy (#21428)
Abhijit-2592 Mar 9, 2026
5f2d9fe
perf(core): cache loadApiKey to reduce redundant keychain access (#21…
sehoon38 Mar 9, 2026
62fec0a
feat(cli): implement /upgrade command (#21511)
sehoon38 Mar 9, 2026
2da4a05
Feat/browser agent progress emission (#21218)
kunal-10-cloud Mar 9, 2026
4a4b0a1
fix(settings): display objects as JSON instead of [object Object] (#2…
Zheyuan-Lin Mar 9, 2026
00e728e
Unmarshall update (#21721)
DavidAPierce Mar 9, 2026
dbf8955
Update mcp's list function to check for disablement. (#21148)
DavidAPierce Mar 9, 2026
4049599
robustness(core): static checks to validate history is immutable (#21…
jacob314 Mar 9, 2026
8263bf1
refactor(cli): better react patterns for BaseSettingsDialog (#21206)
psinha40898 Mar 9, 2026
ebb515a
feat(security): implement robust IP validation and safeFetch foundati…
alisa-alisa Mar 9, 2026
12cde35
docs: fix broken markdown syntax and anchor links in /tools (#20902)
campox747 Mar 9, 2026
fc9bbc2
feat(core): improve subagent result display (#20378)
joshualitt Mar 9, 2026
e4ef2ac
feat(policy): support subagent-specific policies in TOML (#21431)
akh64bit Mar 9, 2026
fe4527e
fix(core): prevent infinite recursion in symlink resolution (#21750)
Adib234 Mar 9, 2026
e1997d2
Add script to speed up reviewing PRs adding a worktree. (#21748)
jacob314 Mar 9, 2026
c9bca06
fix(docs): fix headless mode docs (#21287)
ame2en Mar 9, 2026
74b5982
feat/redesign header compact (#20922)
jacob314 Mar 9, 2026
5e2fe3b
refactor: migrate to useKeyMatchers hook (#21753)
scidomino Mar 9, 2026
ed0ae14
perf(cli): cache loadSettings to reduce redundant disk I/O at startup…
sehoon38 Mar 9, 2026
98e851e
fix(core): resolve Windows line ending and path separation bugs acros…
muhammadusman586 Mar 9, 2026
cec5f42
docs: fix heading formatting in commands.md and phrasing in tools-api…
campox747 Mar 9, 2026
8c4a254
refactor(ui): unify keybinding infrastructure and support string init…
scidomino Mar 9, 2026
0e41057
Add support for updating extension sources and names (#21715)
chrstnb Mar 9, 2026
30db010
fix(core): handle GUI editor non-zero exit codes gracefully (#20376)
reyyanxahmed Mar 9, 2026
d5e4b6f
fix(core): destroy PTY on kill() and exception to prevent fd leak (#2…
nbardy Mar 10, 2026
4fb066d
fix(docs): update theme screenshots and add missing themes (#20689)
ashmod Mar 10, 2026
7c6403d
refactor(cli): rename 'return' key to 'enter' internally (#21796)
scidomino Mar 10, 2026
6576a24
build(release): restrict npm bundling to non-stable tags (#21821)
sehoon38 Mar 10, 2026
2ae6e05
fix(core): override toolRegistry property for sub-agent schedulers (#…
gsquared94 Mar 10, 2026
b479c6a
fix(cli): make footer items equally spaced (#21843)
jacob314 Mar 10, 2026
66203c9
docs: clarify global policy rules application in plan mode (#21864)
jerop Mar 10, 2026
fed3fdf
fix(core): ensure correct flash model steering in plan mode implement…
jerop Mar 10, 2026
4543761
fix(core): update @a2a-js/sdk to 0.3.11 (#21875)
adamfweidman Mar 10, 2026
736cd57
refactor(core): improve API response error logging when retry (#21784)
yunaseoul Mar 10, 2026
86b0695
fix(core): treat retryable errors with >5 min delay as terminal quota…
gsquared94 Mar 10, 2026
9cd8a7d
fix(ui): handle headless execution in credits and upgrade dialogs (#2…
gsquared94 Mar 10, 2026
48c0ffc
feat(telemetry): add specific PR, issue, and custom tracking IDs for …
cocosheng-g Mar 10, 2026
6149c82
feat(core): add OAuth2 Authorization Code auth provider for A2A agent…
SandyTao520 Mar 10, 2026
fce7eca
feat(cli): give visibility to /tools list command in the TUI and foll…
JayadityaGit Mar 10, 2026
e083d8e
Handle dirty worktrees better and warn about running scripts/review.s…
jacob314 Mar 10, 2026
a09114d
feat(policy): support auto-add to policy by default and scoped persis…
spencer426 Mar 10, 2026
9331b52
fix(core): handle AbortError when ESC cancels tool execution (#20863)
PrasannaPal21 Mar 10, 2026
3d6dfd3
fix(release): Improve Patch Release Workflow Comments: Clearer Approv…
jerop Mar 10, 2026
4a790ee
docs: clarify telemetry setup and comprehensive data map (#21879)
jerop Mar 10, 2026
4658d50
feat(core): add per-model token usage to stream-json output (#21839)
yongruilin Mar 10, 2026
af05126
docs: remove experimental badge from plan mode in sidebar (#21906)
jerop Mar 10, 2026
a7e0575
fix(cli): prevent race condition in loop detection retry (#17916)
skyvanguard Mar 10, 2026
777f92f
Add behavioral evals for tracker (#20069)
anj-s Mar 10, 2026
d68197e
fix(ui): prevent empty tool-group border stubs after filtering (#21852)
Aaxhirrr Mar 10, 2026
599e531
fix(auth): update terminology to 'sign in' and 'sign out' (#20892)
clocky Mar 10, 2026
5160b0f
docs(mcp): standardize mcp tool fqn documentation (#21664)
abhipatel12 Mar 10, 2026
f3fc98c
make command names consistent (#21907)
scidomino Mar 10, 2026
cfb7ebb
refactor: remove agent_card_requires_auth config flag (#21914)
adamfweidman Mar 10, 2026
fb2ee1a
feat(a2a): implement standardized normalization and streaming reassem…
alisa-alisa Mar 10, 2026
9ca92e2
feat(cli): enable skill activation via slash commands (#21758)
NTaylorMullen Mar 10, 2026
fa333d7
docs(cli): mention per-model token usage in stream-json result event …
yongruilin Mar 10, 2026
b5bf661
fix(plan): prevent plan truncation in approval dialog by supporting u…
Adib234 Mar 10, 2026
116cb04
feat(a2a): switch from callback-based to event-driven tool scheduler …
cocosheng-g Mar 10, 2026
1a50c05
feat(voice): implement speech-friendly response formatter (#20989)
ayush31010 Mar 10, 2026
10b9bbb
feat: add pulsating blue border automation overlay to browser agent (…
kunal-10-cloud Mar 10, 2026
8f858c9
Add extensionRegistryURI setting to change where the registry is read…
kevinjwang1 Mar 10, 2026
4202158
fix: patch gaxios v7 Array.toString() stream corruption (#21884)
gsquared94 Mar 10, 2026
503b49a
fix: prevent hangs in non-interactive mode and improve agent guidance…
cocosheng-g Mar 10, 2026
89eb20b
Add ExtensionDetails dialog and support install (#20845)
chrstnb Mar 10, 2026
5e3d0a5
Changelog for v0.33.0-preview.13 (#21927)
gemini-cli-robot Mar 10, 2026
15035b7
chore/release: bump version to 0.34.0-nightly.20260310.4653b126f (#21…
gemini-cli-robot Mar 10, 2026
7da9cc0
fix(cli): stabilize prompt layout to prevent jumping when typing (#21…
NTaylorMullen Mar 10, 2026
c9ba9dc
fix: preserve prompt text when cancelling streaming (#21103)
Nixxx19 Mar 10, 2026
201d629
fix: robust UX for remote agent errors (#20307)
Shyam-Raghuwanshi Mar 10, 2026
fb56634
feat: implement background process logging and cleanup (#21189)
galz10 Mar 11, 2026
1dd7018
Changelog for v0.33.0-preview.14 (#21938)
gemini-cli-robot Mar 11, 2026
069b5c4
feat(cli): customizable keyboard shortcuts (#21945)
scidomino Mar 11, 2026
862f9ac
feat(core): Thread `AgentLoopContext` through core. (#21944)
joshualitt Mar 11, 2026
213f5ad
chore(release): bump version to 0.35.0-nightly.20260311.657f19c1f (#2…
gemini-cli-robot Mar 11, 2026
3da85c2
refactor(a2a): remove legacy CoreToolScheduler (#21955)
adamfweidman Mar 11, 2026
bfe7e32
test(core): add missing tests for prompts/utils.ts
yashodipmore Feb 27, 2026
c3147f9
refactor(test): use vi.stubEnv instead of direct process.env manipula…
yashodipmore Feb 27, 2026
c862abc
fix(test): stub GEMINI_CLI_HOME to prevent env leakage in homedir tests
yashodipmore Mar 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .gemini/commands/strict-development-rules.md
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ Gemini CLI project.
set.
- **Logging**: Use `debugLogger` for rethrown errors to avoid duplicate logging.
- **Keyboard Shortcuts**: Define all new keyboard shortcuts in
`packages/cli/src/config/keyBindings.ts` and document them in
`packages/cli/src/ui/key/keyBindings.ts` and document them in
`docs/cli/keyboard-shortcuts.md`. Be careful of keybindings that require the
`Meta` key, as only certain meta key shortcuts are supported on Mac. Avoid
function keys and shortcuts commonly bound in VSCode.
Expand Down
9 changes: 8 additions & 1 deletion .gemini/skills/docs-writer/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,10 @@ Write precisely to ensure your instructions are unambiguous.
specific verbs.
- **Examples:** Use meaningful names in examples; avoid placeholders like
"foo" or "bar."
- **Quota and limit terminology:** For any content involving resource capacity
or using the word "quota" or "limit", strictly adhere to the guidelines in
the `quota-limit-style-guide.md` resource file. Generally, Use "quota" for the
administrative bucket and "limit" for the numerical ceiling.

### Formatting and syntax
Apply consistent formatting to make documentation visually organized and
Expand Down Expand Up @@ -114,6 +118,8 @@ documentation.
reflects existing code.
- **Structure:** Apply "Structure (New Docs)" rules (BLUF, headings, etc.) when
adding new sections to existing pages.
- **Headers**: If you change a header, you must check for links that lead to
that header and update them.
- **Tone:** Ensure the tone is active and engaging. Use "you" and contractions.
- **Clarity:** Correct awkward wording, spelling, and grammar. Rephrase
sentences to make them easier for users to understand.
Expand All @@ -129,7 +135,8 @@ and that all links are functional.
technical behavior.
2. **Self-review:** Re-read changes for formatting, correctness, and flow.
3. **Link check:** Verify all new and existing links leading to or from modified
pages.
pages. If you changed a header, ensure that any links that lead to it are
updated.
4. **Format:** Once all changes are complete, ask to execute `npm run format`
to ensure consistent formatting across the project. If the user confirms,
execute the command.
61 changes: 61 additions & 0 deletions .gemini/skills/docs-writer/quota-limit-style-guide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Style Guide: Quota vs. Limit

This guide defines the usage of "quota," "limit," and related terms in
user-facing interfaces.

## TL;DR

- **`quota`**: The administrative "bucket." Use for settings, billing, and
requesting increases. (e.g., "Adjust your storage **quota**.")
- **`limit`**: The real-time numerical "ceiling." Use for error messages when a
user is blocked. (e.g., "You've reached your request **limit**.")
- **When blocked, combine them:** Explain the **limit** that was hit and the
**quota** that is the remedy. (e.g., "You've reached the request **limit** for
your developer **quota**.")
- **Related terms:** Use `usage` for consumption tracking, `restriction` for
fixed rules, and `reset` for when a limit refreshes.

---

## Detailed Guidelines

### Definitions

- **Quota is the "what":** It identifies the category of resource being managed
(e.g., storage quota, GPU quota, request/prompt quota).
- **Limit is the "how much":** It defines the numerical boundary.

Use **quota** when referring to the administrative concept or the request for
more. Use **limit** when discussing the specific point of exhaustion.

### When to use "quota"

Use this term for **account management, billing, and settings.** It describes
the entitlement the user has purchased or been assigned.

**Examples:**

- **Navigation label:** Quota and usage
- **Contextual help:** Your **usage quota** is managed by your organization. To
request an increase, contact your administrator.

### When to use "limit"

Use this term for **real-time feedback, notifications, and error messages.** It
identifies the specific wall the user just hit.

**Examples:**

- **Error message:** You’ve reached the 50-request-per-minute **limit**.
- **Inline warning:** Input exceeds the 32k token **limit**.

### How to use both together

When a user is blocked, combine both terms to explain the **event** (limit) and
the **remedy** (quota).

**Example:**

- **Heading:** Daily usage limit reached
- **Body:** You've reached the maximum daily capacity for your developer quota.
To continue working today, upgrade your quota.
99 changes: 99 additions & 0 deletions .gemini/skills/string-reviewer/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
---
name: string-reviewer
description: >
Use this skill when asked to review text and user-facing strings within the codebase. It ensures that these strings follow rules on clarity,
usefulness, brevity and style.
---

# String Reviewer

## Instructions

Act as a Senior UX Writer. Look for user-facing strings that are too long,
unclear, or inconsistent. This includes inline text, error messages, and other
user-facing text.

Do NOT automatically change strings without user approval. You must only suggest
changes and do not attempt to rewrite them directly unless the user explicitly
asks you to do so.

## Core voice principles

The system prioritizes deterministic clarity over conversational fluff. We
provide telemetry, not etiquette, ensuring the user retains absolute agency..

1. **Deterministic clarity:** Distinguish between certain system/service states
(Cloud Billing, IAM, the System) and probabilistic AI analysis (Gemini).
2. **System transparency:** Replace "Loading..." with active technical telemetry
(e.g., Tracing stack traces...). Keep status updates under 5 words.
3. **Front-loaded actionability:** Always use the [Goal] + [Action] pattern.
Lead with intent so users can scan left-to-right.
4. **Agentic error recovery:** Every error must be a pivot point. Pair failures
with one-click recovery commands or suggested prompts.
5. **Contextual humility:** Reserve disclaimers and "be careful" warnings for P0
(destructive/irreversible) tasks only. Stop warning-fatigue.

## The writing checklist

Use this checklist to audit UI strings and AI responses.

### Identity and voice
- **Eliminate the "I":** Remove all first-person pronouns (I, me, my, mine).
- **Subject attribution:** Refer to the AI as Gemini and the infrastructure as
the - system or the CLI.
- **Active voice:** Ensure the subject (Gemini or the system) is clearly
performing the action.
- **Ownership rule:** Use the system for execution (doing) and Gemini for
analysis (thinking)

### Structural scannability
- **The skip test:** Do the first 3 words describe the user’s intent? If not,
rewrite.
- **Goal-first sequence:** Use the template: [To Accomplish X] + [Do Y].
- **The 5-word rule:** Keep status updates and loading states under 5 words.
- **Telemetry over etiquette:** Remove polite filler (Please wait, Thank you,
Certainly). Replace with raw data or progress indicators.
- **Micro-state cycles:** For tasks $> 3$ seconds, cycle through specific
sub-states (e.g., Parsing logs... ➔ Identifying patterns...) to show momentum.


### Technical accuracy and humility
- **Verb signal check:** Use deterministic verbs (is, will, must) for system
state/infrastructure.
- Use probabilistic verbs (suggests, appears, may, identifies) for AI output.
- **No 100% certainty:** Never attribute absolute certainty to model-generated
content.
- **Precision over fuzziness:** Use technical metrics (latency, tokens, compute) instead of "speed" or "cost."
- **Instructional warnings:** Every warning must include a specific corrective action (e.g., "Perform a dry-run first" or "Review line 42").

### Agentic error recovery
- **The one-step rule:** Pair every error message with exactly one immediate
path to a fix (command, link, or prompt).
- **Human-first:** Provide a human-readable explanation before machine error
codes (e.g., 404, 500).
- **Suggested prompts:** Offer specific text for the user to copy/click like
“Ask Gemini: 'Explain this port error.'”

### Use consistent terminology

Ensure all terminology aligns with the project [word
list](./references/word-list.md).

If a string uses a term marked "do not use" or "use with caution," provide a
correction based on the preferred terms.

## Ensure consistent style for settings

If `packages/cli/src/config/settingsSchema.ts` is modified, confirm labels and
descriptions specifically follow the unique [Settings
guidelines](./references/settings.md).

## Output format
When suggesting changes, always present your review using the following list
format. Do not provide suggestions outside of this list..

```
1. **{Rationale/Principle Violated}**
- ❌ "{incorrect phrase}"
- ✅ `"{corrected phrase}"`
```
28 changes: 28 additions & 0 deletions .gemini/skills/string-reviewer/references/settings.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Settings

## Noun-First Labeling (Scannability)

Labels must start with the subject of the setting, not the action. This allows
users to scan for the feature they want to change.

- **Rule:** `[Noun]` `[Attribute/Action]`
- **Example:** `Show line numbers` becomes simply `Line numbers`

## Positive Boolean Logic (Cognitive Ease)

Eliminate "double negatives." Booleans should represent the presence of a
feature, not its absence.

- **Rule:** Replace `Disable {feature}` or `Hide {Feature}` with
`{Feature} enabled` or simply `{Feature}`.
- **Example:** Change "Disable auto update" to "Auto update".
- **Implementation:** Invert the boolean value in your config loader so true
always equals `On`

## Verb Stripping (Brevity)

Remove redundant leading verbs like "Enable," "Use," "Display," or "Show" unless
they are part of a specific technical term.

- **Rule**: If the label works without the verb, remove it
- **Example**: Change `Enable prompt completion` to `Prompt completion`
61 changes: 61 additions & 0 deletions .gemini/skills/string-reviewer/references/word-list.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
## Terms

### Preferred

- Use **create** when a user is creating or setting up something.
- Use **allow** instead of **may** to indicate that permission has been granted
to perform some action.
- Use **canceled**, not **cancelled**.
- Use **configure** to refer to the process of changing the attributes of a
feature, even if that includes turning on or off the feature.
- Use **delete** when the action being performed is destructive.
- Use **enable** for binary operations that turn a feature or API on. Use "turn
on" and "turn off" instead of "enable" and "disable" for other situations.
- Use **key combination** to refer to pressing multiple keys simultaneously.
- Use **key sequence** to refer to pressing multiple keys separately in order.
- Use **modify** to refer to something that has changed vs obtaining the latest
version of something.
- Use **remove** when the action being performed takes an item out of a larger
whole, but doesn't destroy the item itself.
- Use **set up** as a verb. Use **setup** as a noun or adjective.
- Use **show**. In general, use paired with **hide**.
- Use **sign in**, **sign out** as a verb. Use **sign-in** or **sign-out** as a
noun or adjective.
- Use **update** when you mean to obtain the latest version of something.
- Use **want** instead of **like** or **would like**.

#### Don't use

- Don't use **etc.** It's redundant. To convey that a series is incomplete,
introduce it with "such as" instead.
- Don't use **hostname**, use "host name" instead.
- Don't use **in order to**. It's too formal. "Before you can" is usually better
in UI text.
- Don't use **one or more**. Specify the quantity where possible. Use "at least
one" when the quantity is 1+ but you can't be sure of the number. Likewise,
use "at least one" when the user must choose a quantity of 1+.
- Don't use the terms **log in**, **log on**, **login**, **logout** or **log
out**.
- Don't use **like** or **would you like**. Use **want** instead. Better yet,
rephrase so that it's not referring to the user's emotional state, but rather
what is required.

#### Use with caution

- Avoid using **leverage**, especially as a verb. "Leverage" is considered a
buzzword largely devoid of meaning apart from the simpler "use".
- Avoid using **once** as a synonym for "after". Typically, when "once" is used
in this way, it is followed by a verb in the perfect tense.
- Don't use **e.g.** Use "example", "such as", "like", or "for example". The
phrase is always followed by a comma.
- Don't use **i.e.** unless absolutely essential to make text fit. Use "that is"
instead.
- Use **disable** for binary operations that turn a feature or API off. Use
"turn on" and "turn off" instead of "enable" and "disable" for other
situations. For UI elements that are not available, use "dimmed" instead of
"disabled".
- Use **please** only when you're asking the user to do something inconvenient,
not just following the instructions in a typical flow.
- Use **really** sparingly in such constructions as "Do you really want to..."
Because of the weight it puts on the decision, it should be used to confirm
actions that the user is extremely unlikely to make.
7 changes: 6 additions & 1 deletion .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,9 @@

# Docs have a dedicated approver group in addition to maintainers
/docs/ @google-gemini/gemini-cli-maintainers @google-gemini/gemini-cli-docs
/README.md @google-gemini/gemini-cli-maintainers @google-gemini/gemini-cli-docs
/README.md @google-gemini/gemini-cli-maintainers @google-gemini/gemini-cli-docs

# Prompt contents, tool definitions, and evals require reviews from prompt approvers
/packages/core/src/prompts/ @google-gemini/gemini-cli-prompt-approvers
/packages/core/src/tools/ @google-gemini/gemini-cli-prompt-approvers
/evals/ @google-gemini/gemini-cli-prompt-approvers
7 changes: 7 additions & 0 deletions .github/actions/publish-release/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,13 @@ runs:
INPUTS_CLI_PACKAGE_NAME: '${{ inputs.cli-package-name }}'
INPUTS_A2A_PACKAGE_NAME: '${{ inputs.a2a-package-name }}'

- name: '📦 Prepare bundled CLI for npm release'
if: "inputs.npm-registry-url != 'https://npm.pkg.github.com/' && inputs.npm-tag != 'latest'"
working-directory: '${{ inputs.working-directory }}'
shell: 'bash'
run: |
node ${{ github.workspace }}/scripts/prepare-npm-release.js

- name: 'Get CLI Token'
uses: './.github/actions/npm-auth-token'
id: 'cli-token'
Expand Down
17 changes: 13 additions & 4 deletions .github/actions/push-sandbox/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,8 @@ runs:
- name: 'npm build'
shell: 'bash'
run: 'npm run build'
- name: 'Set up QEMU'
uses: 'docker/setup-qemu-action@v3'
- name: 'Set up Docker Buildx'
uses: 'docker/setup-buildx-action@v3'
- name: 'Log in to GitHub Container Registry'
Expand All @@ -69,16 +71,19 @@ runs:
env:
INPUTS_GITHUB_REF_NAME: '${{ inputs.github-ref-name }}'
INPUTS_GITHUB_SHA: '${{ inputs.github-sha }}'
# We build amd64 just so we can verify it.
# We build and push both amd64 and arm64 in the publish step.
- name: 'build'
id: 'docker_build'
shell: 'bash'
env:
GEMINI_SANDBOX_IMAGE_TAG: '${{ steps.image_tag.outputs.FINAL_TAG }}'
GEMINI_SANDBOX: 'docker'
BUILD_SANDBOX_FLAGS: '--platform linux/amd64 --load'
STEPS_IMAGE_TAG_OUTPUTS_FINAL_TAG: '${{ steps.image_tag.outputs.FINAL_TAG }}'
run: |-
npm run build:sandbox -- \
--image google/gemini-cli-sandbox:${STEPS_IMAGE_TAG_OUTPUTS_FINAL_TAG} \
--image "google/gemini-cli-sandbox:${STEPS_IMAGE_TAG_OUTPUTS_FINAL_TAG}" \
--output-file final_image_uri.txt
echo "uri=$(cat final_image_uri.txt)" >> $GITHUB_OUTPUT
- name: 'verify'
Expand All @@ -92,10 +97,14 @@ runs:
- name: 'publish'
shell: 'bash'
if: "${{ inputs.dry-run != 'true' }}"
run: |-
docker push "${STEPS_DOCKER_BUILD_OUTPUTS_URI}"
env:
STEPS_DOCKER_BUILD_OUTPUTS_URI: '${{ steps.docker_build.outputs.uri }}'
GEMINI_SANDBOX_IMAGE_TAG: '${{ steps.image_tag.outputs.FINAL_TAG }}'
GEMINI_SANDBOX: 'docker'
BUILD_SANDBOX_FLAGS: '--platform linux/amd64,linux/arm64 --push'
STEPS_IMAGE_TAG_OUTPUTS_FINAL_TAG: '${{ steps.image_tag.outputs.FINAL_TAG }}'
run: |-
npm run build:sandbox -- \
--image "google/gemini-cli-sandbox:${STEPS_IMAGE_TAG_OUTPUTS_FINAL_TAG}"
- name: 'Create issue on failure'
if: |-
${{ failure() }}
Expand Down
21 changes: 21 additions & 0 deletions .github/workflows/chained_e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -264,6 +264,27 @@ jobs:
run: 'npm run build'
shell: 'pwsh'

- name: 'Ensure Chrome is available'
shell: 'pwsh'
run: |
$chromePaths = @(
"${env:ProgramFiles}\Google\Chrome\Application\chrome.exe",
"${env:ProgramFiles(x86)}\Google\Chrome\Application\chrome.exe"
)
$chromeExists = $chromePaths | Where-Object { Test-Path $_ } | Select-Object -First 1
if (-not $chromeExists) {
Write-Host 'Chrome not found, installing via Chocolatey...'
choco install googlechrome -y --no-progress --ignore-checksums
}
$installed = $chromePaths | Where-Object { Test-Path $_ } | Select-Object -First 1
if ($installed) {
Write-Host "Chrome found at: $installed"
& $installed --version
} else {
Write-Error 'Chrome installation failed'
exit 1
}

- name: 'Run E2E tests'
env:
GEMINI_API_KEY: '${{ secrets.GEMINI_API_KEY }}'
Expand Down
Loading