Commit Graph

829 Commits

Author SHA1 Message Date
Bryan Morgan
e423d20a8d
Updated docs and /stats command to support lack of token caching support for OAuth users (b/426943001) (#1307) 2025-06-23 21:55:24 +00:00
Sandy Tao
fcb8be2fb9
Refine refresh static logic (#1349) 2025-06-23 21:45:15 +00:00
Jacob Richman
1faf53a3af
Remove fallback to render normall rather than using custom MaxSizedBox layout logic (#1340) 2025-06-23 21:41:45 +00:00
N. Taylor Mullen
fd58d3267e
feat: Open MCP docs if no MCPs are configured (#1325) 2025-06-23 21:35:23 +00:00
Abhi
dc76bcc433
Add error messaging for 429 errors (#1316) 2025-06-23 21:30:13 +00:00
Jerop Kipruto
98f3a7066e
refactor: rename disableDataCollection to dataCollectionEnabled (#1319)
Renames the `disableDataCollection` flag to the more intuitive and positive `dataCollectionEnabled`.

This change improves code clarity by avoiding double negatives and making the purpose of the flag more direct. The logic has been inverted wherever the flag is used to accommodate the new naming convention.

Using a suffix like `"Enabled"` follows a common convention that improves readability. 
- A condition like `if (dataCollectionEnabled)` reads like a natural language sentence ("if data collection is enabled"), which reduces cognitive load.
- Distinguishes the boolean flag (representing a state) from potential functions that would perform an action (e.g., `enableDataCollection()` or `disableDataCollection()`), avoiding ambiguity between checking a value and calling a function.

#750
2025-06-23 21:19:40 +00:00
owenofbrien
631591ce79
Enable clearcut logging by default (#1309)
Clearcut logging can now be disabled via disableDataCollection in user settings
2025-06-23 10:18:58 -07:00
Scott Densmore
99d521569d
Scotdensmore/first run auth fix (#1322) 2025-06-22 22:52:25 -07:00
Jacob Richman
156feff5b1
Fix so that pressing ctrl-s a second time toggles off constrain height mode (#1306) 2025-06-23 05:42:20 +00:00
Mark McDonald
523aeec544
Use shorter URL for docs link (#1324) 2025-06-23 05:37:41 +00:00
matt korwel
da128e725d
{bug} Vertex Auth Support (#1302)
Co-authored-by: Tommaso Sciortino <sciortino@gmail.com>
2025-06-23 00:30:58 +00:00
Billy Biggs
c9bea8e646
Plumb extension context filenames through for /memory refresh (#1312) 2025-06-22 16:17:05 -07:00
cperry-goog
b05b8673cd
update tips (#1315) 2025-06-22 16:02:48 -07:00
Jacob Richman
b831ffc1b3
Jacob314/auto exit unconstrained height mode (#1293)
Co-authored-by: Scott Densmore <scottdensmore@mac.com>
2025-06-22 13:43:36 -07:00
N. Taylor Mullen
6a1c62731b
Fix seatbelt sandboxing when GEMINI_SANDBOX="" and starting with -s (#1298) 2025-06-22 18:33:29 +00:00
N. Taylor Mullen
3c656cfbc6
feat: Only show ctrl-s when idle (#1299) 2025-06-22 15:57:53 +00:00
N. Taylor Mullen
cb76b08e31
feat: Add /docs command and update UI (#1297) 2025-06-22 15:54:10 +00:00
owenofbrien
4cfab0a893
Clearcut logging - initial implementation (#1274)
Flag-guarded initial implementation of a clearcut logger to collect telemetry data and send it to Concord for dashboards, etc.
2025-06-22 14:26:48 +00:00
Abhi
c9950b3cb2
feat: Add client-initiated tool call handling (#1292) 2025-06-22 01:35:36 -04:00
Billy Biggs
0779697da6
Add setting enableRecursiveFileSearch to control @-file completion (#1290) 2025-06-22 01:23:35 +00:00
Jacob Richman
63f6a497cb
Jacob314/overflow notification and one MaxSizedBox bug fix (#1288) 2025-06-22 00:54:10 +00:00
cperry-goog
e255eb6124
feat(cli): update Tips.tsx component (#1284) 2025-06-21 12:58:00 -07:00
Billy Biggs
99a6dc0267
Update memory and context summary UI for multiple context filenames (#1282) 2025-06-21 19:15:43 +00:00
Sandy Tao
03af6235a9
Fix Static duplication and input prompt tearing (#1279) 2025-06-21 11:11:42 -07:00
Tommaso Sciortino
f9b2a33732
Remove packages/cli/README.md (#1278) 2025-06-21 16:43:01 +01:00
Abhi
52afcb3a12
bug: fix cancel after a tool has been used (#1270) 2025-06-20 20:01:44 -07:00
matt korwel
3283f55e7e
Auth timeout (#1263) 2025-06-20 18:33:31 +00:00
matt korwel
7c8a1da8fe
Auth blocking (#1261) 2025-06-20 10:46:41 -07:00
matt korwel
ef54e4ffbc
fallback to gemini_api_key (#1255) 2025-06-20 01:36:33 -07:00
N. Taylor Mullen
4e69ba3bbe
feat(auth): handle auth flow errors gracefully (#1256) 2025-06-20 01:30:06 -07:00
N. Taylor Mullen
4d9e258a1e
Prevent hard crashing on update notifier fail. (#1254) 2025-06-20 07:30:30 +00:00
Jacob Richman
05b1c8101f
Turn off debug logging of MaxSizedBox errors by default. (#1228) 2025-06-20 05:27:03 +00:00
Louis Jimenez
b179424161
Support autocompletion for checkpoints (#1253) 2025-06-20 01:18:11 -04:00
Louis Jimenez
6c67618624
Make checkpoints configurable in settings.json (#1251) 2025-06-20 00:39:15 -04:00
Louis Jimenez
ea63a8401e
Move the shell history our of the project .gemini to the home dir (#1195) 2025-06-19 23:53:24 -04:00
Tommaso Sciortino
0c9b138f5e
Reword auth dialog options (#1246) 2025-06-20 02:41:19 +00:00
Tommaso Sciortino
2f1fc3f359
Initially hide some Auth options behind "More..." (#1245) 2025-06-19 19:28:56 -07:00
N. Taylor Mullen
4059a3e8ee
fix: flicker of StreamingState to Idle when tool finishes (#1190) (#1216)
Co-authored-by: Asad Memon <asad.lionpk@gmail.com>
2025-06-20 01:25:23 +00:00
matt korwel
04518b52c0
Auth First Run (#1207)
Co-authored-by: Tommaso Sciortino <sciortino@gmail.com>
Co-authored-by: N. Taylor Mullen <ntaylormullen@google.com>
2025-06-19 16:52:22 -07:00
Tommaso Sciortino
1e5689e054
Set slice=true on tests to supress output. (#1168) 2025-06-19 15:27:00 -07:00
Eddie Santos
c1486c47ee
fix: auto-update sandbox regression (#1221) 2025-06-19 21:40:10 +00:00
Jacob Richman
b0bc7c3d99
Fix flicker issues by ensuring all actively changing content fits in the viewport (#1217) 2025-06-19 13:17:23 -07:00
Brandon Keiji
10a83a6395
refactor: remove docker tagging step from sandbox publishing (#1223) 2025-06-19 12:19:39 -07:00
Leo
0ebac0b896
add sandboxImageName in package.json (#1219) 2025-06-19 11:50:34 -07:00
Tommaso Sciortino
43203926b8
Initialize geminiClient in noninteractive mode (#1222) 2025-06-19 17:21:39 +00:00
N. Taylor Mullen
3621ea0cb6
Change sandbox default (#1214) 2025-06-19 02:15:02 -07:00
Tommaso Sciortino
8bc3b415c9
Refactor in preparation for Reauth (#1196) 2025-06-18 16:34:00 -07:00
Brandon Keiji
cc89830b2a
refactor: consolidate container image tag source of truth to cli package.json (#1156) 2025-06-18 19:43:12 +00:00
Allen Hutchison
fbc79c34c9
Fix noise in headless mode on STDOUT (#1184) 2025-06-18 11:40:15 -07:00
Brandon Keiji
332512853e
feat: consolidate sandbox configurations into a single object (#1154) 2025-06-18 17:01:00 +00:00
Brandon Keiji
30d1662128
fix: check package.json for app version (#1160) (#1182) 2025-06-18 16:57:17 +00:00
Anas H. Sulaiman
63fbc8ce18
fix: regression in completion filtering (#1135) 2025-06-18 05:05:47 +00:00
Abhi
f3c1cbbabf
feat: shell history (#1169) 2025-06-17 22:17:16 -04:00
Billy Biggs
708ba8902a
Support escaping carriage returns with \ (#1127) 2025-06-17 10:03:05 -07:00
Jacob MacDonald
e59c872b3d
code review followup for compress command (#1097)
Followup to https://github.com/google-gemini/gemini-cli/pull/986
2025-06-17 15:44:54 +00:00
Eddie Santos
c3971754bf
Auto-update notifications (#1110) 2025-06-17 15:24:07 +00:00
Miguel Solorio
137baa0a07
Update /help page (#1119) 2025-06-16 20:13:33 -07:00
Jacob Richman
a7e45d47cd
Fix bug where single line inserts were deleting all text after the in… (#1114) 2025-06-16 15:21:22 -07:00
Tommaso Sciortino
bf62c3b21a
Mock out 'open' in tests. Fix test issues. (#1100) 2025-06-16 11:12:42 -07:00
matt korwel
df938d6ee8
Preflight and integration npx (#1096) 2025-06-16 15:27:29 +00:00
Abhi
6af7a5c589
feat: clear should also clear chat history (#1008) 2025-06-16 06:33:59 +00:00
Jacob Richman
5d4f4f421c
feat: text-buffer: input sanitization and delete character handling. (#1031) 2025-06-16 06:25:11 +00:00
N. Taylor Mullen
742caa5dd8
feat(cli): Standardize keyboard shortcut hints (#1092) 2025-06-16 06:21:58 +00:00
Zach Sais
cc7459e403
fix version release for Dockerfile build (#1080) 2025-06-16 06:13:39 +00:00
Billy Biggs
40fbb61a1b
Update /tools desc to show the name of each tool as known to the model (#1091) 2025-06-15 23:09:53 -07:00
N. Taylor Mullen
197704c630
feat(test): Increase test coverage across CLI and Core packages (#1089) 2025-06-15 22:41:32 -07:00
Mark McDonald
ffc48b16d4
Add Vertex env vars to sandbox (#1005)
Co-authored-by: Scott Densmore <scottdensmore@github.com>
2025-06-16 02:55:13 +00:00
Abhi
bedff2ca79
feat: Adds shell command context to gemini history (#1076) 2025-06-15 22:09:30 -04:00
N. Taylor Mullen
4463671284
refactor(cli): Use excludeTools for non-interactive mode (#1072) 2025-06-15 16:05:40 -07:00
Jerop Kipruto
101b6fe767
Stabilize /bug command tests with consistent version mocking (#1070)
The `/bug` command tests in `slashCommandProcessor.test.ts` were flaky due to inconsistent CLI versioning.

This commit:
- Implements a flexible, top-level mock for `getCliVersion` that can be overridden per test.
- Sets a default mock value for `/bug` command tests via `beforeEach`.
- Overrides the mock in one test case requiring a specific version ('test-version').
- Ensures the test's helper `getExpectedUrl` receives the correct explicit version.
- Aligns the expected CLI version in the custom bug URL test with the default mock.

These changes ensure consistent CLI versioning in tests, resolving flakiness.

#1071
2025-06-15 16:35:15 -04:00
Billy Biggs
b67806ae9a
Support completion of checkpoint names in /resume (#1063) 2025-06-15 11:40:39 -07:00
Billy Biggs
6959663646
Add support for /mcp schema to show full parameter schema as JSON (#1050)
Outputs a raw JSON version of the parameter names and descriptions as provided to the model, plus minor formatting adjustments to /mcp desc.
2025-06-15 11:25:40 -07:00
Asad Memon
123ad20e9b
feat: Show model thoughts while loading (#992) 2025-06-15 18:19:05 +00:00
Asad Memon
b3d89a1075
feat: Add token stats in footer (#909) 2025-06-15 11:15:53 -07:00
Billy Biggs
da09431be9
Add support for showing descriptions of CLI tools (#1052)
Adds support for /tools desc to show the full description of tools as provided to the model.
2025-06-15 07:56:07 -07:00
N. Taylor Mullen
12c33c1fe6
feat(cli): add glob as a direct dependency (#1065) 2025-06-15 00:50:26 -07:00
Jerop Kipruto
53753f0455
Add telemetry command and refactor telemetry settings (#1060)
#750 

### Telemetry Settings
Refactors telemetry configuration to use a nested `telemetry` object in `settings.json`, for example:

```json
{
  "telemetry": {
    "enabled": true,
    "target": "gcp"
    "log-prompts": "true"
  },
  "sandbox": false
}
```

The above includes
- Centralized telemetry settings under a `telemetry` object in `settings.json`.
- CLI flags for the `gemini` command to override all telemetry sub-settings:
    - `--telemetry` / `--no-telemetry`
    - `--telemetry-target <local|gcp>`
    - `--telemetry-otlp-endpoint <URL>`
    - `--telemetry-log-prompts` / `--no-telemetry-log-prompts`
- Updates `packages/cli/src/config/config.ts` and `packages/core/src/config/config.ts` to read from the new settings structure and respect the new CLI flags.
- Modifies `scripts/handle-telemetry.js`, `scripts/local_telemetry.js`, and `scripts/telemetry_utils.js` to align with the new settings structure.
- Updates `docs/core/telemetry.md` to reflect the new settings structure, CLI flags, and order of precedence.
- Renames `logUserPromptsEnabled` to `logPrompts` for brevity.

### `npm run telemetry`

Add a new `npm run telemetry` command that uses `scripts/telemetry.js`, automates the entire process of setting up a local and GCP telemetry pipelines, including configuring the necessary settings in the `.gemini/settings.json` workspace file and installing required binaries (e.g. `otelcol-contrib`).

---
```shell
$ npm run telemetry -- --target=gcp

> gemini-cli@0.1.0 telemetry
> node scripts/telemetry.js --target=gcp

⚙️  Using command-line target: gcp
🚀 Running telemetry script for target: gcp.
 Starting Local Telemetry Exporter for Google Cloud 
⚙️  Enabled telemetry in workspace settings.
🔧 Set telemetry OTLP endpoint to http://localhost:4317.
🎯 Set telemetry target to gcp.
 Workspace settings updated.
 Using Google Cloud Project ID: foo-bar

🔑 Please ensure you are authenticated with Google Cloud:
  - Run `gcloud auth application-default login` OR ensure `GOOGLE_APPLICATION_CREDENTIALS` environment variable points to a valid service account key.
  - The account needs "Cloud Trace Agent", "Monitoring Metric Writer", and "Logs Writer" roles.
 otelcol-contrib already exists at /Users/jerop/github/gemini-cli/.gemini/otel/bin/otelcol-contrib
🧹 Cleaning up old processes and logs...
 Deleted old GCP collector log.
📄 Wrote OTEL collector config to /Users/jerop/github/gemini-cli/.gemini/otel/collector-gcp.yaml
🚀 Starting OTEL collector for GCP... Logs: /Users/jerop/github/gemini-cli/.gemini/otel/collector-gcp.log
 Waiting for OTEL collector to start (PID: 17013)...
 OTEL collector started successfully on port 4317.

 Local OTEL collector for GCP is running.

🚀 To send telemetry, run the Gemini CLI in a separate terminal window.

📄 Collector logs are being written to: /Users/jerop/github/gemini-cli/.gemini/otel/collector-gcp.log

📊 View your telemetry data in Google Cloud Console:
   - Logs: https://console.cloud.google.com/logs/query;query=logName%3D%22projects%2Ffoo-bar%2Flogs%2Fgemini_cli%22?project=foo-bar
   - Metrics: https://console.cloud.google.com/monitoring/metrics-explorer?project=foo-bar
   - Traces: https://console.cloud.google.com/traces/list?project=foo-bar

Press Ctrl+C to exit.
^C
👋 Shutting down...
⚙️  Disabled telemetry in workspace settings.
🔧 Cleared telemetry OTLP endpoint.
🎯 Cleared telemetry target.
 Workspace settings updated.
🛑 Stopping otelcol-contrib (PID: 17013)...
 otelcol-contrib stopped.
```
2025-06-15 00:47:32 -04:00
Leo
e544b940f1
bug: Fix code colorizer (#1046) 2025-06-14 21:27:53 +01:00
Anas H. Sulaiman
4873fce791
centralize file filtering in FileDiscoveryService (#1039) 2025-06-14 14:25:34 +00:00
Steren
e6d5477168
Fix 404 URL for Vertex Auth (#1040) 2025-06-14 08:25:08 +00:00
Allen Hutchison
643bdf31d5
feat: Add custom URL support for the /bug command (#1017) 2025-06-14 07:00:24 +00:00
Jacob MacDonald
d5c6bb9740
Add /compress command to force a compression of the context (#986)
Related to https://b.corp.google.com/issues/423605555 - I figured this might be a simpler solution to start with, while still also being useful on its own even if we do implement that.
2025-06-14 04:21:40 +00:00
Keir Mierle
9954779739
Add a local telemetry launcher (#1015) 2025-06-13 18:08:03 -07:00
Allen Hutchison
31b28ade01
Improvements to web-fetch tool (#1030) 2025-06-13 17:44:14 -07:00
Anas H. Sulaiman
8eb505fbba
initialize FileDiscoveryService once (#1029) 2025-06-13 17:25:59 -07:00
Brandon Keiji
209381f06f
fix: add micromatch to package deps (#1020) 2025-06-13 22:18:05 +00:00
Tommaso Sciortino
a2fe3d2ad0
Stop extension MCPs from hopping into settings. (#1026) 2025-06-13 14:51:29 -07:00
Anas H. Sulaiman
bb67d31739
reuse GitIgnoreParser for loading .geminiignore (#1025) 2025-06-13 17:17:08 -04:00
Tommaso Sciortino
54f0d9d0e5
Fix default extension context filename and update docs (#1024) 2025-06-13 13:57:00 -07:00
Tommaso Sciortino
491e367f7c
Don't exclude config.test.ts. (#1021) 2025-06-13 20:07:46 +00:00
Daniel Lee
daceb9963f
feat(cli): support ctrl+d to exit (#878)
Similar to ctrl+c, ctrl+d can now be used to exit the program. To avoid accidental exit, ctrl+d must be pressed twice in relatively quick succession (same as ctrl+c).

Following common UX pattern, ctrl+d will be ignored when the input prompt is non-empty. This behavior is similar to how most shell (bash/zsh) behaves. To support this, I had to refactor so that text buffer is initialized outside of the InputPrompt component and instead do it on the main App component to allow input controller to have access to check the content of the text buffer.
2025-06-13 16:59:09 +00:00
Billy Biggs
2a1ad1f5d9
Update contextFileName to support an optional list of strings (#1001) 2025-06-13 09:19:08 -07:00
Anas H. Sulaiman
34e0d9c0b6
cleanup unused allowBuildArtifacts (#1010) 2025-06-13 12:00:38 -04:00
Anas H. Sulaiman
c886f08525
cleanup unused customIgnorePatterns (#1009) 2025-06-13 11:49:48 -04:00
Leo
d25459d815
Edit wording in /edit description (#1006) 2025-06-13 15:36:51 +00:00
Mark McDonald
ff478781ad
Support GOOGLE_API_KEY hoisting in sandbox too (#998) 2025-06-13 08:32:15 +00:00
N. Taylor Mullen
7bcc60e996
refactor: Use default centralized Flash & Pro models everywhere (#994) 2025-06-13 08:25:42 +00:00
Miguel Solorio
f8a31f29aa
Replace logo with custom ASCII (#958) 2025-06-13 07:59:45 +00:00
Jerop Kipruto
b20c8389f3
Handle telemetry in non-interactive mode (#1002)
Changes:
- Ensure proper shutdown in non-interactive mode
- Ensures the initial user prompt is logged in non-interactive mode
- Improve telemetry for streaming - handle chunks and input token count is now alongside other token counts in response

To test:
- Follow instructions in https://github.com/google-gemini/gemini-cli/blob/main/docs/core/telemetry.md#google-cloud
- Run CLI in non-interactive mode and observe logs/metrics in GCP Logs Explorer and Metrics Explorer

#750
2025-06-13 03:44:17 -04:00
Tommaso Sciortino
431ee839a0
Code Assist cleanup and docs (#993) 2025-06-12 18:00:17 -07:00
Marat Boshernitsan
181abde2ff
Reduce coupling between core and cli packages (#961)
Co-authored-by: Marat Boshernitsan <maratb@google.com>
2025-06-12 17:17:29 -07:00
Seth Troisi
dc378e8d60
Have @ pass through images and other Part objects (#990) 2025-06-12 16:17:44 -07:00
Seth Troisi
b7daa7c702
Fixed @ file content not being added or sent to server (#962) 2025-06-12 23:08:27 +00:00
Jerop Kipruto
6723c72fa5
telemetry: include user decisions in tool call logs (#966)
Add the user's decision (accept, reject, modify) to tool call telemetry to better understand user intent. The decision provides crucial context to the `success` metric, as a user can reject a call that would have succeeded or accept one that fails. 

Also prettify the arguments json.

Example: 
![image](https://github.com/user-attachments/assets/251cb9fc-ceaa-4cdd-929c-8de47031aca8)

#750
2025-06-12 20:48:10 +00:00
Abhi
32da693b91
bug: only show tool tokens if > 0 (#985) 2025-06-12 19:31:17 +00:00
Jordan Demeulenaere
e1d8a356b0
Fix build_sandbox command (#974) 2025-06-12 17:38:10 +00:00
Leo
ad2e47dc20
remove enable editor flag (#984) 2025-06-12 17:28:20 +00:00
DeWitt Clinton
a9e56ee460
Ignore dot files on @-completion. (#978) 2025-06-12 17:04:15 +00:00
DeWitt Clinton
f2ab6d08c4
Improve the performance of filename completion over large repositories. (#938) 2025-06-12 07:09:38 -07:00
anj-s
6fc7028031
Revert "Add support for local logging per session (#936)" (#970) 2025-06-11 21:59:46 -07:00
Jerop Kipruto
89f682f081
Telemetry: Improve clarity of user prompt event (#967) 2025-06-11 21:43:00 -04:00
Leo
1ef68e0612
feat: External editor settings (#882) 2025-06-11 18:21:54 -07:00
Abhi
dd53e5c96a
Show session summary on exit for ctrl+c x 2. Fix exit UI (#963) 2025-06-11 20:08:32 -04:00
Eddie Santos
e02a035ab4
Adding silly phrases (#922) 2025-06-11 23:40:13 +00:00
anj-s
2dc79b3bd0
Add support for local logging per session (#936) 2025-06-11 15:05:41 -07:00
JingboWang1997-1
6ecdecbdcc
add excludeTools flag to settings.json config (#957) 2025-06-11 14:32:23 -07:00
Seth Troisi
122678cc09
clean chat history before /resume (#949) 2025-06-11 13:40:44 -07:00
Abhi
7a72d255d8
feat: Add exit UI w/ stats (#924) 2025-06-11 16:40:31 -04:00
matt korwel
4160d904da
Extensibility: Gemini.md files (#944) 2025-06-11 20:34:35 +00:00
Tommaso Sciortino
24c61147b8
Cache oauth credentials (#927) 2025-06-11 13:26:41 -07:00
Seth Troisi
5586ad5f8a
Fix noisy tests (#950) 2025-06-11 13:01:04 -07:00
Louis Jimenez
e0f4f428fc
Restore Checkpoint Feature (#934) 2025-06-11 15:33:09 -04:00
Olcan
f75c48323c
fixes to proxy on macos: prevent curl from hanging during wait-for-proxy by adding ipv6 support and timeout (#947) 2025-06-11 11:31:38 -07:00
Olcan
9237e95f11
fix proxy on cloudtops/linux and for older versions of docker, more robust start/stop and error reporting (#945) 2025-06-11 10:50:31 -07:00
jerop
d96af8bacd refactor(telemetry): pass config object to telemetry functions
This commit refactors the telemetry system to pass a  object to various logging and metrics functions. This change centralizes configuration management within the telemetry system, making it more modular and easier to maintain.

The  constructor and various tool execution functions have been updated to accept the  object, which is then passed down to the telemetry functions. This eliminates the need to pass individual configuration values, such as , through multiple layers of the application.
2025-06-11 13:24:41 -04:00
Miguel Solorio
9c5b5ff823
Allow themes to update gradient colors (#914) 2025-06-11 17:14:18 +00:00
Olcan
e2d689ff2f
do not auto-enable container sandboxing (fixing recently introduced bug) (#939) 2025-06-11 08:25:33 -07:00
Anas Sulaiman
9d992b32e4 add a unit test with multiple hunks for diff renderer 2025-06-11 09:47:11 -04:00
Zach Sais
5bab5a7378
fix version set for cli and slash commands (#892) 2025-06-11 08:25:26 -05:00
jerop
d1e23b7c71 refactor: Centralize session ID generation and propagation 2025-06-11 01:18:40 -04:00
Seth Troisi
fb6e2927f7
Remove unneeded mockRestore()s from tests (#919) 2025-06-10 20:32:00 -07:00
Olcan
3372fd8df8
rename sandbox-exec as MacOS Seatbelt in footer (#921) 2025-06-10 18:35:00 -07:00
Tommaso Sciortino
97e08fc804
Remove warnings for old env var names. (#920) 2025-06-10 18:34:36 -07:00
Tommaso Sciortino
e92b7dfd74
Change yolo mode so it doesn't disable sandboxing. (#918) 2025-06-10 17:41:59 -07:00
Seth Troisi
8e0d5076d6
Add [tag] to /save and /resume (#916) 2025-06-10 16:58:39 -07:00
Seth Troisi
36f58a34b4 logConversation
loadConversation

/resume

clean up for review
2025-06-10 16:14:42 -07:00
Tommaso Sciortino
d79dafc577
Basic code assist support (#910) 2025-06-10 16:00:13 -07:00
Tommaso Sciortino
4e84431df3
Allow simple extensions for registering MCPservers (#890) 2025-06-10 15:48:39 -07:00
Tolik Malibroda
e73d4752df
fix: Change sandbox network check command for docker (#907) 2025-06-11 00:13:36 +02:00
Abhi
9c3f34890f
feat: Add UI for /stats slash command (#883) 2025-06-10 15:59:52 -04:00
Olcan
e38d2078cc
restricted networking for all sandboxing methods, new seatbelt profiles, updated docs, fixes to sandbox build, debugging through sandbox (#891) 2025-06-10 08:58:37 -07:00
Tommaso Sciortino
895c1f132f
GEMINI_SANDBOX=false should disable seatbelt (#888) 2025-06-10 06:22:02 -07:00
Bryan Morgan
1e3abf96b5
addressed b/423798481 (#887) 2025-06-10 08:47:46 -04:00
Olcan
c7e82965b1
fix user settings in sandbox broken in recent change (#885) 2025-06-10 00:27:40 -07:00
Mark McDonald
5673c5f267
Add a window title when CLI is launched (#787) 2025-06-10 11:54:51 +08:00
Abhi
7f1252d364
feat: Display initial token usage metrics in /stats (#879) 2025-06-09 20:25:37 -04:00
Eddie Santos
6484dc9008
Add Windsurf in edit tool to modify changes, if installed (#853) 2025-06-09 16:01:06 -07:00
Seth Troisi
f11414a424
Use GOOGLE_API_KEY as default if both GEMINI and GOOGLE set (#777) 2025-06-09 13:54:11 -07:00
matt korwel
3b943c1582
Windows: Refactor Shell Scripts to Node.js for Cross-Platform Compatibility (#784) 2025-06-09 12:19:42 -07:00
Tommaso Sciortino
0613062fc8
Simplify user agent handling. (#828) 2025-06-09 09:31:27 -07:00
Olcan
a2fee6bdd3
fix mcp timeouts and missing description on mcp errors (#868) 2025-06-08 21:52:11 -07:00
Olcan
a3d11e8fef
replace reference to "README" with "docs" to avoid confusion for folks who do not have access to README (#866) 2025-06-08 19:19:33 -07:00
Olcan
d061419452
enforce minimum lines shown/hidden (#860) 2025-06-08 17:11:16 -07:00
Olcan
8f993a6200
drop redundant -s flag for custom sandbox build (#859) 2025-06-08 16:43:04 -07:00
N. Taylor Mullen
d62dad5575
Revert "Add batch editing capabilities to Edit Tool (#648)" (#857) 2025-06-08 23:20:43 +00:00
Bryan Morgan
152af28a34
Bryanmorgan/add tool source description (#856) 2025-06-08 19:07:05 -04:00
Bryan Morgan
31c14ea78f
Bryanmorgan/add mcp description support (#855) 2025-06-08 18:45:36 -04:00
N. Taylor Mullen
f2ea78d0e4
fix(tool-scheduler): Correctly pipe cancellation signal to tool calls (#852) 2025-06-08 22:42:49 +00:00
Abhi
7868ef8229
feat: Introduce session context and add session duration stat for /stats command (#854) 2025-06-08 18:01:02 -04:00
Scott Densmore
9104ac02f7
feat: display commit hash in detached HEAD state (#832) 2025-06-08 14:59:18 -07:00
N. Taylor Mullen
241c404573
fix(cli): correctly handle tool invocation cancellation (#844) 2025-06-08 11:14:45 -07:00
Leo
9efca40dae
feat: Add flow to allow modifying edits during edit tool call (#808) 2025-06-08 10:56:58 -07:00
N. Taylor Mullen
d0b78225a1
feat: update ctrl+t text (#845) 2025-06-08 07:16:08 +00:00
Scott Densmore
b46f220931
feat(cli): improve API error parsing and display (#829) 2025-06-07 22:04:57 -07:00
Abhi
6e4b84a60d
Fix Build Failure - Build fails in sandbox due to missing build toolchain (#831) 2025-06-08 01:04:20 -04:00
Tommaso Sciortino
389907ce65
Introduce ContentGeneratorConfig (#826) 2025-06-07 16:17:27 -07:00
Bryan Morgan
e95a6086fc
Bryanmorgan/add mcp description support (#825) 2025-06-07 18:30:56 -04:00
Tolik Malibroda
dd08582f81
fix: Rename missing occurence of gemini-code (#824) 2025-06-08 00:12:53 +02:00
Jacob Richman
ab44824e07
Auto insert @ when dragging and dropping files. (#812) 2025-06-07 14:48:56 -07:00
cperry-goog
18d6a11c04
refactor: rename gemini-code to gemini-cli (#822) 2025-06-07 14:27:22 -07:00
Tommaso Sciortino
d6cf4d5b0b
Eliminate createServerConfig() (#821) 2025-06-07 13:49:00 -07:00
Tommaso Sciortino
10b52ac4e8
Fix missing arg warning in tests (#820) 2025-06-07 13:39:53 -07:00
Eddie Santos
27fdd1b6e6
Add embedder (#818) 2025-06-07 13:38:05 -07:00
Bryan Morgan
28ff62e7b1
Added /mcp command support and cleaned up broken tests (#817) 2025-06-07 15:06:18 -04:00
Tommaso Sciortino
6ea4479064
Push model-switching logging into loadCliConfig (#815) 2025-06-07 11:12:30 -07:00
Tommaso Sciortino
680f4cdd61
More version simplifiction. (#810) 2025-06-07 10:54:23 -07:00
Keith Ballinger
0c86874677
Add batch editing capabilities to Edit Tool (#648)
Co-authored-by: N. Taylor Mullen <ntaylormullen@google.com>
2025-06-06 22:54:37 -07:00
Tommaso Sciortino
76ec9122c0
clean up version lookup code (#804) 2025-06-06 16:21:20 -07:00
cperry-goog
e94a10023d
adding very important phrases (#802) 2025-06-06 14:49:40 -07:00
Jacob Richman
2f54aa888a
feat(ui): add cursor to empty input prompt (#800) 2025-06-06 13:44:11 -07:00
Jacob Richman
89aca349cf
Exit with an error message if parsing settings.json fails. (#747) 2025-06-06 09:56:45 -07:00
jerop
b4a6b16227 Test: Verify concatenated env var resolution in settings
Adds a test case to `settings.test.ts` to specifically verify
the correct resolution of multiple environment variables concatenated
within a single string value (e.g., ${HOST}:${PORT} ).
2025-06-06 11:47:37 -04:00
jerop
8c28250bb3 Refactor: Improve env var resolution in settings
Refactors the `resolveEnvVarsInObject` function in settings to
explicitly handle primitive types (null, undefined, boolean, number)
at the beginning of the function. This clarifies the logic for
subsequent string, array, and object processing.
2025-06-06 11:47:37 -04:00
jerop
4e9d365407 feat: Enable environment variable substitution in settings
This commit introduces the ability to use system environment variables
within the settings files (e.g., `settings.json`). Users can now
reference environment variables using the `${VAR_NAME}` syntax.

This enhancement improves security and flexibility, particularly
for configurations like MCP server settings, which often require
sensitive tokens.

Previously, to configure an MCP server, a token might be directly
embedded:
```json
"mcpServers": {
  "github": {
    "env": {
      "GITHUB_PERSONAL_ACCESS_TOKEN": "pat_abc123"
    }
    // ...
  }
}
```

With this change, the same configuration can securely reference an
environment variable:
```json
"mcpServers": {
  "github": {
    "env": {
      "GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_PERSONAL_ACCESS_TOKEN}"
    }
    // ...
  }
}
```

This allows users to avoid storing secrets directly in configuration files.
2025-06-06 11:47:37 -04:00
Jacob Richman
9ad615c2a4
Fix build break due to changes to theme. (#796) 2025-06-06 08:05:00 -07:00
Jacob Richman
4262f5b0de
feat(cli): respect the NO_COLOR env variable (#772) 2025-06-06 07:55:28 -07:00
DeWitt Clinton
c80ff146d2
Reduce noisy logging for missing .geminiignore file. (#793) 2025-06-06 07:47:43 -07:00
matt korwel
2f51c22141
Title & Big text Updates (#781) 2025-06-05 18:14:02 -07:00
Miguel Solorio
8a0a2523ca
Allow themes to theme the UI (#769) 2025-06-05 14:35:47 -07:00
Brandon Keiji
2285bba66e
refactor: remove unnecessary useRefs (#780) 2025-06-05 21:33:24 +00:00
Olcan
d3a1026ae3
skip npm build for custom sandbox (#779) 2025-06-05 14:15:43 -07:00
Jerop Kipruto
2ebf2fbc82
OpenTelemetry Integration & Telemetry Control Flag (#762) 2025-06-05 13:04:25 -07:00
Olcan
d3e43437a0
use execSync (vs spawnSync) so launch fails if build_sandbox fails; tweaks in build_sandbox to fix some shellcheck warnings, and to simplify the logic slightly (#767) 2025-06-05 13:02:56 -07:00
Eddie Santos
e02868bb1a
Bump default model to gemini-2.5-pro-preview-06-05 (#765) 2025-06-05 11:52:36 -07:00
Eddie Santos
422c763a55
Add support for .geminiignore file (#757) 2025-06-05 10:15:27 -07:00
Tolik Malibroda
1d20cedf03
fix: Disable automatic image building if BUILD_SANDBOX is not provided (#764) 2025-06-05 18:47:39 +02:00
Tolik Malibroda
4d4cf0f2f9
feat: Add multi-stage docker build support for custom sandbox.Dockerfile (#746) 2025-06-05 17:46:54 +02:00
Jacob Richman
aa386d135b
Jacob314/memory fixes (#754)
Address multiple possible memory leaks found bystatic analysis of the codebase. The primary source of the leaks was event listeners on child processes and global objects that were not being properly removed, potentially causing their closures to be retained in memory indefinitely particularly for processes that did not exit.

There are two commits. A larger one made by gemini CLI and a smaller one by me to make sure we always disconnect child processes as part of the cleanup methods. These changes may not actually fix any leaks but do look like reasonable defensive coding to avoid leaking event listeners or child processes.

The following files were fixed:
This is Gemini's somewhat overconfident description of what it did.

packages/core/src/tools/shell.ts: Fixed a leak where an abortSignal listener was not being reliably removed.
packages/cli/src/utils/readStdin.ts: Fixed a significant leak where listeners on process.stdin were never removed.
packages/cli/src/utils/sandbox.ts: Fixed leaks in the imageExists and pullImage helper functions where listeners on spawned child processes were not being removed.
packages/core/src/tools/grep.ts: Fixed three separate leaks in the isCommandAvailable check and the git grep and system grep strategies due to un-removed listeners on child processes.
packages/core/src/tools/tool-registry.ts: Corrected a leak in the execute method of the DiscoveredTool class where listeners on the spawned tool process were not being removed.
2025-06-05 06:40:33 -07:00
N. Taylor Mullen
822803d9d6
Fix "npx https:...." header issue (#759) 2025-06-05 07:00:34 +00:00
N. Taylor Mullen
77afd37c2e
fix(cli): Handle non-array tool response parts (#758) 2025-06-05 06:25:57 +00:00
Eddie Santos
d99d132cdf
Add /tools slash command to view available tools (#752) 2025-06-04 14:01:38 -07:00
Tommaso Sciortino
4192cfb092
CLI_TITLE env var for setting the CLI title (#748) 2025-06-04 10:44:50 -07:00
Miguel Solorio
a2f03636a5
Update light themes (#726) 2025-06-04 10:41:03 -07:00
N. Taylor Mullen
44aff769a3
Bring back 2.5-pro usage (#744)
https://chat.google.com/room/AAQApBm33UQ/8DQw4Ykp8f0/8DQw4Ykp8f0?cls=10
2025-06-04 09:29:14 -07:00
N. Taylor Mullen
afc30e314f
feat(accessibility): Add option to disable loading phrases (#745) 2025-06-04 07:46:57 +00:00
N. Taylor Mullen
d179b3aae4
refactor(core): Centralize tool response formatting (#743) 2025-06-04 07:24:25 +00:00
Tolik Malibroda
4b2af10b04
fix: Fix piped input mode in sandbox (#739) 2025-06-04 08:24:33 +02:00
Marat Boshernitsan
7de790fbf2
Fix several bugs in prompt history (#734)
Co-authored-by: Marat Boshernitsan <maratb@google.com>
2025-06-03 23:01:26 -07:00
Keith Ballinger
c313762ba0
Ignore folders files (#651)
# Add .gitignore-Aware File Filtering to gemini-cli

This pull request introduces .gitignore-based file filtering to the gemini-cli, ensuring that git-ignored files are automatically excluded from file-related operations and suggestions throughout the CLI. The update enhances usability, reduces noise from build artifacts and dependencies, and provides new configuration options for fine-tuning file discovery.

Key Improvements
.gitignore File Filtering

All @ (at) commands, file completions, and core discovery tools now honor .gitignore patterns by default.
Git-ignored files (such as node_modules/, dist/, .env, and .git) are excluded from results unless explicitly overridden.
The behavior can be customized via a new fileFiltering section in settings.json, including options for:
Turning .gitignore respect on/off.
Adding custom ignore patterns.
Allowing or excluding build artifacts.
Configuration & Documentation Updates

settings.json schema extended with fileFiltering options.
Documentation updated to explain new filtering controls and usage patterns.
Testing

New and updated integration/unit tests for file filtering logic, configuration merging, and edge cases.
Test coverage ensures .gitignore filtering works as intended across different workflows.
Internal Refactoring

Core file discovery logic refactored for maintainability and extensibility.
Underlying tools (ls, glob, read-many-files) now support git-aware filtering out of the box.


Co-authored-by: N. Taylor Mullen <ntaylormullen@google.com>
2025-06-04 04:40:46 +00:00
Olcan
12059eb4ca
fix BUILD_SANDBOX env var for updating sandbox while running linked binary (#729) 2025-06-03 14:02:00 -07:00
Olcan
9df94103ac
remove noop code (#728) 2025-06-03 13:47:53 -07:00
Olcan
00a9f654a3
fixed strip-ansi dep by installing it in core package (also ran npm install in cli package that resulted in the minor changes here) (#727) 2025-06-03 13:37:59 -07:00
Brandon Keiji
e96fd677ee
fix: do not try to pull development sandbox image from the internet (#725) 2025-06-03 19:32:17 +00:00
Brandon Keiji
546e033081
feat: notify user when chat context is compressed (#724) 2025-06-03 19:19:49 +00:00
N. Taylor Mullen
080af01715
Fix flash preview (#723) 2025-06-03 18:01:59 +00:00
N. Taylor Mullen
c5099e9025
Workaround Gemini API break - Use flash 04-17 (#721) 2025-06-03 17:47:20 +00:00
Allen Hutchison
72f5ec3725
feat(cli): randomize and expand witty loading phrases (#704) 2025-06-03 10:12:47 -07:00
N. Taylor Mullen
8ab74ef1bb
Refactor: Use config.getGeminiClient() for GeminiClient instantiation (#715) 2025-06-03 05:30:52 +00:00
N. Taylor Mullen
cf3e1a07c1
Remove redundant variable. (#713) 2025-06-02 21:18:01 -07:00
Brandon Keiji
74801e9004
refactor: maintain 1 GeminiChat per GeminiClient (#710) 2025-06-02 19:10:54 -07:00
Jacob Richman
447826ab40
fix(cli): restore first-launch theme prompt (#703) 2025-06-02 19:09:11 -07:00
Scott Densmore
2ab7e3da71
feat(cli): Allow custom title in CLI header (#706) 2025-06-02 17:09:55 -07:00
N. Taylor Mullen
6020c760b5
Feat: Enable YOLO mode for non-interactive execution (#702) 2025-06-02 22:35:03 +00:00
Olcan
1dcf0a4cbd
strip ansi from shell output (#699) 2025-06-02 14:50:12 -07:00
Jacob Richman
51949f3121
Fix bug pasting multiline strings (#632) 2025-06-02 14:31:35 -07:00
Allen Hutchison
7f20425c98
feat(cli): add pro model availability check and fallback to flash (#608) 2025-06-02 13:55:54 -07:00
N. Taylor Mullen
58597c29d3
refactor: Update MCP tool discovery to use @google/genai - Also fixes JSON schema issues. (#682) 2025-06-02 20:39:25 +00:00
Tolik Malibroda
0795e55f0e
feat: Add --yolo mode that automatically accepts all tools executions (#695)
Co-authored-by: N. Taylor Mullen <ntaylormullen@google.com>
2025-06-02 22:05:45 +02:00
N. Taylor Mullen
42bedbc3d3
feat: Refactor CLI header for customizable logo text (#658) 2025-06-02 11:45:09 -07:00
Miguel Solorio
33052018a2
Color enhancements (#680) 2025-06-02 11:20:58 -07:00
Olcan
c5869db080
enable async tool discovery by making the registry accessor async; remove call to discoverTools that caused duplicate discovery (#691) 2025-06-02 09:56:32 -07:00
N. Taylor Mullen
34b81abd9c
fix: Ensure all tool calls are complete before submitting responses (#689) 2025-06-02 08:50:28 +00:00
Olcan
d009267801
more strict italics: delimiters cannot be preceded/followed by \w or [./\\]\S (#677) 2025-06-01 16:52:31 -07:00
N. Taylor Mullen
2828fc6d66
feat: Implement non-interactive mode for CLI (#675) 2025-06-01 23:11:37 +00:00
N. Taylor Mullen
c51d6cc9d3
fix: Display MCP server count in context summary (#674) 2025-06-01 22:48:48 +00:00
N. Taylor Mullen
f2a8d39f42
refactor: Centralize tool scheduling logic and simplify React hook (#670) 2025-06-01 14:16:24 -07:00
Scott Densmore
c414512f19
Fix: Make file path case-insensitive in @-command (#659) 2025-05-31 16:19:14 -07:00
Allen Hutchison
53bf778497
feat: allow custom filename for context files (#654)
Co-authored-by: N. Taylor Mullen <ntaylormullen@google.com>
2025-05-31 12:49:28 -07:00
Miguel Solorio
cbc1614b84
Update default & ANSI theme names (#637) 2025-05-31 11:10:52 -07:00
Taylor Mullen
1a84d8f674 Test: Add comprehensive tests for useToolScheduler hook
- Introduces a suite of tests for the  hook, covering various scenarios including:
  - Successful tool execution
  - Tool not found errors
  - Errors during
  - Errors during tool execution
  - Tool confirmation (approved and cancelled) - (currently skipped)
  - Live output updates - (currently skipped)
  - Cancellation of tool calls (before execution and during approval) - (currently skipped)
  - Execution of multiple tool calls
  - Preventing scheduling while other calls are running - (currently skipped)
- Includes tests for the  utility function to ensure correct mapping of tool call states to display objects.
- Mocks dependencies like , , and individual  instances.
- Uses fake timers to control asynchronous operations.

Note: Some tests involving complex asynchronous interactions (confirmations, live output, cancellations) are currently skipped due to challenges in reliably testing these scenarios with the current setup. These will be addressed in future work.
2025-05-31 02:55:36 -07:00
Scott Densmore
bda7ec94df
Fix: Update git branch watcher to use .git/logs/HEAD (#643) 2025-05-30 21:08:56 -07:00
Daniel Young Lee
1468047081 feat: Implement delayed Ctrl+C exit prompt
This change introduces a small delay after the first Ctrl+C press, prompting the user to press Ctrl+C again to exit. This helps prevent accidental termination of the application.

- Added `exitOnCtrlC={false}` to the Ink render options in `gemini.tsx` to enable custom Ctrl+C handling.
- Implemented logic in `App.tsx` to:
    - Display "Press Ctrl+C again to exit." for 2 seconds after the first Ctrl+C.
    - Exit the application if Ctrl+C is pressed again during this period.
    - Revert to normal operation if the second Ctrl+C is not pressed within the timeout.
- Defined a constant `CTRL_C_PROMPT_DURATION_MS` for the timeout duration.
2025-05-30 20:51:07 -07:00
Scott Densmore
7012c86336
Fix/cli version unknown (#642) 2025-05-30 20:45:15 -07:00
Tommaso Sciortino
21fba832d1
Rename server->core (#638) 2025-05-30 18:25:47 -07:00
Olcan
2e57989aec
confirm mcp tool executions from untrusted servers (per "trust" setting) (#631) 2025-05-30 15:32:21 -07:00
Jacob Richman
01768d7759
feat: add --show_memory_usage flag to display memory usage in status bar (#606) 2025-05-30 15:18:01 -07:00
Allen Hutchison
3291ffbe09
fix(cli): Clear input buffer before onSubmit in InputPrompt (#633) 2025-05-30 15:16:06 -07:00
Olcan
1a5fd2ccb2
add flags for markdown rendering and live updating to Tool to avoid special-casing shell tool by name, and open door for other tools to specify their rendering/updating (#629) 2025-05-30 13:59:05 -07:00
Brandon Keiji
0869fd168f
fix(sandbox): pull sandbox image if it doesnt exist locally (#628) 2025-05-30 20:49:47 +00:00
Brandon Keiji
cf82b6e127
fix(sandbox): prepare package.json before building sandbox image (#626) 2025-05-30 19:57:46 +00:00
Olcan
a0ba65944f
disable markdown rendering of shell tool output (#625) 2025-05-30 12:43:59 -07:00
Brandon Keiji
31a7affb74
feat(sandbox): use package config to dictate sandbox image name (#624) 2025-05-30 19:28:46 +00:00
Brandon Keiji
816cc08a8f
fix(sandbox): set default env var to 'gemini-cli-sandbox' (#620) 2025-05-30 18:02:27 +00:00
Olcan
7c4a5464f6
truncate (hide) tool output at the top, add some spacing, also fix shell output interval change accidentally undone in a previous commit (#619) 2025-05-30 01:58:09 -07:00
Olcan
a3b557222a
tweaks to shell abort logic based on feedback (#618) 2025-05-30 01:35:03 -07:00
Olcan
8935a248f6
allow aborting of shell mode (!) commands, similar to shell tool commands. fix bug that prevented aborts after first abort. more robust killing logic (#616) 2025-05-30 00:46:43 -07:00
Olcan
b0aeeb53b1
update shell output at an interval to reduce flicker (#614) 2025-05-30 00:02:30 -07:00
Jacob Richman
dab7517622
Refactor read-file and support images. (#480) 2025-05-29 15:30:18 -07:00
Olcan
4b7248fc46
allow writing to user cache directory on macos (fixes use of lyria mcp server [to generate songs] under seatbelt) (#600) 2025-05-29 15:06:09 -07:00
Brandon Keiji
dc94a03f39
feat: publish root Dockerfile to our image registry (#599) 2025-05-29 14:01:44 -07:00
Jacob Richman
6a1b94529b
Change Config to use named parameters. (#593) 2025-05-29 13:51:17 -07:00
Allen Hutchison
9ee5eadac0
fix(cli): Support multiple @file references in atCommandProcessor (#590) 2025-05-28 17:08:05 -07:00
Brandon Keiji
fd6f6b02ea
feat: add git branch name to footer (#589) 2025-05-28 16:30:05 -07:00
Olcan
0d99398689
much improved support for background processes, avoiding termination (via SIGPIPE) or eventual blocking (e.g. due to filled OS buffers) (#586) 2025-05-28 14:45:46 -07:00
Jacob Richman
00805cb2cd
Cleanup: Remove low value StreamingContextType interface. (#585) 2025-05-28 12:46:08 -07:00
Jacob Richman
05a49702d8
Refactor: Add GeminiRespondingSpinner to make use of streamingState idiomatic (#583) 2025-05-28 11:17:19 -07:00
DeWitt Clinton
98dcf43214
Add a keybinding for ctrl+w to delete the previous word. (#582)
Adds the following new keybindings to the cli text input buffer:

- `Ctrl+W` : Delete previous word
2025-05-28 09:59:25 -07:00
DeWitt Clinton
27a773d5b2
Display git commit info in the /about section. (#567)
This change detects the most recent git commit short hash and writes it to the `GIT_COMMIT_INFO` constant in `packages/cli/src/generated/git-commit.sh`, optionally appending the string "(local modifications)" if additional local changes after that commit are detected.

If set, this string is displayed in the `/about` dialog as well as passed into the `/bug` template.

Example:

```
> /about

╭───────────────────────────────────────────────────────────────────────────╮
│                                                                           │
│ About Gemini CLI                                                          │
│                                                                           │
│ CLI Version               development                                     │
│ Git Commit                43370ab (local modifications)                   │
│ Model                     gemini-2.5-pro-preview-05-06                    │
│ Sandbox                   sandbox-exec (minimal)                          │
│ OS                        darwin v23.11.0                                 │
│                                                                           │
╰───────────────────────────────────────────────────────────────────────────╯
```

Additionally, this change updates `.gitignore` to ignore the generated files, `scripts/clean.sh` to remove them, and adds a `npm run generate` stage for this and any other generators we need to write.
2025-05-28 00:04:26 -07:00
Taylor Mullen
f2f2ecf9d8 feat: Allow cancellation of in-progress Gemini requests and pre-execution checks
- Implements cancellation for Gemini requests while they are actively being processed by the model.
- Extends cancellation support to the  logic within tools. This allows users to cancel operations during the phase where the system is determining if a tool execution requires user confirmation, which can include potentially long-running pre-flight checks or LLM-based corrections.
- Underlying LLM calls for edit corrections (within  and ) and next speaker checks can now also be cancelled.
- Previously, cancellation of the main request was not possible until text started streaming, and pre-execution checks were not cancellable.
- This change leverages the updated SDK's ability to accept an abort token and threads s throughout the request, tool execution, and pre-execution check lifecycle.

Fixes https://github.com/google-gemini/gemini-cli/issues/531
2025-05-27 23:46:37 -07:00
Olcan
bfeaac8441
live output from shell tool (#573) 2025-05-27 15:40:18 -07:00
Olcan
0d5f7686d7
fix tool cancellation while executing (#575) 2025-05-27 15:22:30 -07:00
Brandon Keiji
c1395a8808
fix: change entrypoint from 'gemini-code' to 'gemini' in published sandbox (#574) 2025-05-27 22:19:43 +00:00
Brandon Keiji
d4ae1ede39
refactor: use React strict mode (#569) 2025-05-27 14:40:46 -07:00
Allen Hutchison
4e3c539f5e
feat: Publish test coverage summaries to PRs (#513) 2025-05-27 12:45:28 -07:00
sasha-gitg
3511e84dc3
fix: default to Gemini API if GEMINI_API_KEY is set and when GOOGLE_GENAI_USE_VERTEXAI is set to True (#566) 2025-05-27 10:00:07 -07:00
Taylor Mullen
480549e02e Refactor(chat): Introduce custom Chat class for future modifications
- Copied the `Chat` class from `@google/genai` into `packages/server/src/core/geminiChat.ts`.
- This change is in preparation for future modifications to the chat handling logic.
- Updated relevant files to use the new `GeminiChat` class.

Part of https://github.com/google-gemini/gemini-cli/issues/551
2025-05-26 14:20:28 -07:00
Taylor Mullen
8440b971f5 Fix(cli): Prevent premature input box reactivation during tool confirmation
- Introduced a 'validating' state for tool calls to prevent the input box from reappearing while waiting for a tool's `shouldConfirmExecute` method to complete.
- When a tool call is initiated, it's now immediately set to a 'validating' status. This ensures the UI remains in a busy/responding state.
- `useGeminiStream` now considers the 'validating' state as part of `StreamingState.Responding`.
- `useToolScheduler` has been updated to:
    - Set the initial status of new tool calls to 'validating'.
    - Asynchronously perform the `shouldConfirmExecute` check.
    - Transition to 'awaiting_approval' or 'scheduled' based on the check's outcome.
- This resolves an issue where a slow `shouldConfirmExecute` could lead to the input prompt becoming active again before the tool call lifecycle was fully determined. While 'validating' is currently treated similarly to 'executing' in the UI, this new state provides a foundation for more customized user experiences during this phase in the future.

Fixes https://github.com/google-gemini/gemini-cli/issues/527
2025-05-25 16:06:33 -07:00
Taylor Mullen
7408c78dbb Change tool call spinner to be different.
- This differentiates the tool calling spinner from one that matches the normal loading indiator to somethign a little more seamless.
2025-05-25 16:05:22 -07:00
DeWitt Clinton
068b505d5e
Reduce excessive diff separators in CLI. (#535)
Increases the threshold for rendering diff separators in the CLI's diff display. Previously, a separator was shown for gaps of more than one context line, leading to excessive separators in diffs with many small changes close together (Issue #534).

By increasing `MAX_CONTEXT_LINES_WITHOUT_GAP` to 5, we allow for more context lines before a separator is added, significantly reducing visual clutter in such diffs.

Added a test case to `DiffRenderer.test.tsx` to verify that separators are not rendered for small gaps within the new threshold.
2025-05-25 10:26:51 -07:00
Taylor Mullen
e297b56390 feat: Add GEMINI.md tip to UI
- Display a tip to create a GEMINI.md file if one doesn't exist.
- Pass config to Tips component so it can inspect the initial GEMINI.md
count.
2025-05-24 12:40:06 -07:00
Jacob Richman
b4c16d1f56
Code review comment fixes and some refactors. (#525)
No intentional different behavior aside for tweaks suggested from the code review of #506 Refactor: Extract console message logic to custom hook

This commit refactors the console message handling from App.tsx into a new custom hook useConsoleMessages.

This change improves the testability of the console message logic and declutters the main App component.

Created useConsoleMessages.ts to encapsulate console message state and update logic.
Updated App.tsx to utilize the new useConsoleMessages hook.
Added unit tests for useConsoleMessages.ts to ensure its functionality.
I deleted and started over on LoadingIndicator.test.tsx as I spent way too much time trying to fix it before just regenerating the tests as the code was easier to write tests for from scratch and the existing tests were not that good (I added them in the previous pull request).
2025-05-24 00:44:17 -07:00
Jacob Richman
1c3d9d7623
Make console message support more robust to logging in the middle of rendering. (#521) 2025-05-23 22:51:47 -07:00
DeWitt Clinton
7a3a9066f9
Add additional readline-like keybindings. (#524)
Adds the following conventional readline-like keybindings:

  - `Ctrl+H`: Delete the previous character.
  - `Ctrl+D`: Delete the next character.

Additionally, remaps the Debug Console command from Ctrl+D to Ctrl+O, which had been first introduced in PR #486.
2025-05-23 22:13:57 -07:00
Miguel Solorio
30080b9f4e 🧹 Format 2025-05-23 16:14:37 -07:00
Miguel Solorio
2a2d041dcd Update packages/cli/src/ui/types.ts
Co-authored-by: N. Taylor Mullen <ntaylormullen@google.com>
2025-05-23 16:14:37 -07:00
Miguel Solorio
6247cb8ddd Update packages/cli/src/ui/hooks/slashCommandProcessor.ts
Co-authored-by: N. Taylor Mullen <ntaylormullen@google.com>
2025-05-23 16:14:37 -07:00
Miguel Solorio
1af19c57de Remove CLI info from footer 2025-05-23 16:14:37 -07:00
Miguel Solorio
221370acc5 Add /about command 2025-05-23 16:14:37 -07:00
Jacob Richman
91ee02898a
feat: Modify loading indicator to support a paused state (#506) 2025-05-23 10:25:17 -07:00
Jacob Richman
a96ff934ea
Fix bug updating the cursor after navigating history. (#507) 2025-05-23 09:40:01 -07:00
Allen Hutchison
a008d81780
Refactor(server): Centralize GEMINI.md discovery logic in server (#498) 2025-05-23 08:53:22 -07:00
Allen Hutchison
f8c4276e69
Refactor(cli): Move memory add logic to server tool call (#493) 2025-05-23 08:47:19 -07:00
Olcan
70277591c4
update email to gemini-cli-dev (#510) 2025-05-23 08:35:16 -07:00
Olcan
564a213ebe
allow write to ~/.gitconfig in seatbelt profiles (#509) 2025-05-23 07:56:43 -07:00
Taylor Mullen
7c3591f641 Refactor: Update streaming state logic to hide loader during confirmation
- The streaming state logic in `useGeminiStream.ts` has been updated.
- Previously, the loading indicator was displayed even when the system was
waiting for user confirmation on a tool call.
- This change introduces a `WaitingForConfirmation` state to ensure the
loading indicator is hidden during these confirmation prompts, improving
the user experience.
2025-05-23 00:39:05 -07:00
Brandon Keiji
01971741e0
feat: add emphasis to tool confirmations (#502) 2025-05-23 05:28:31 +00:00
Allen Hutchison
581709df80
Refactor: Streamline memoryUtils and update slash commands (#478) 2025-05-22 10:57:06 -07:00
Allen Hutchison
0c192555bb
Fix: Prevent hang in large directories by using BFS for getFolderStru… (#470)
Co-authored-by: N. Taylor Mullen <ntaylormullen@google.com>
2025-05-22 10:47:21 -07:00
Jacob Richman
7eaf850489
Refactor: Improve console error/log display in CLI (#486) 2025-05-22 10:36:44 -07:00
Brandon Keiji
fb1d13d600
fix: cancel parallel tool calls mid-execution (#489) 2025-05-22 03:02:45 -07:00