summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2025-05-18feat(cli): Add ShellModeIndicator componentTaylor Mullen
This commit introduces a new ShellModeIndicator component to visually signify when shell mode is active. - Displays "shell mode enabled (! to toggle)" in the UI. - The AutoAcceptIndicator is now hidden when shell mode is active to prevent UI clutter.
2025-05-18allow comments in settings.jsonolcan
2025-05-18feat(cli): Introduce toggleable shell mode with enhanced UITaylor Mullen
- Implements a toggleable shell mode, removing the need to prefix every command with `!`. - Users can now enter and exit shell mode by typing `!` as the first character in an empty input prompt. - The input prompt visually indicates active shell mode with a distinct color and `! ` prefix. - Shell command history items (`user_shell`) are now visually differentiated from regular user messages. - This provides a cleaner and more streamlined user experience for frequent shell interactions. Fixes https://b.corp.google.com/issues/418509745
2025-05-18fix(cli): Remove duplicate auto-accept indicatorTaylor Mullen
- The auto-accept edits indicator was appearing in two places: once next to the loading indicator and again in the CWD bar. - This was introduced when the CWD bar was made always visible. - This commit removes the duplicate indicator, leaving only the one in the CWD bar. Fixes https://b.corp.google.com/issues/418498237
2025-05-18fix(shell): Improve error reporting for shell command failuresTaylor Mullen
This commit enhances the tool to provide more informative feedback to the user when a shell command fails, especially in non-debug mode. Previously, if a command terminated due to a signal (e.g., SIGPIPE during a with no upstream) or failed without producing stdout/stderr, the user would see no output, making it difficult to diagnose the issue. Changes: - Modified to update the logic. - If a command produces no direct output but results in an error, signal, non-zero exit code, or user cancellation, a concise message indicating this outcome is now shown in . - Utilized the existing utility from for consistent error message formatting, which also resolved previous TypeScript type inference issues. This ensures users receive clearer feedback on command execution status, improving the tool's usability and aiding in troubleshooting. Fixes https://b.corp.google.com/issues/417998119
2025-05-18fix(glob): Improve glob tool accuracy and outputTaylor Mullen
This commit enhances the glob tool by: - Ensuring that glob patterns are used effectively. Previously, simple file names without glob syntax (e.g., "file.ts") would only search the root directory. This change encourages more precise glob patterns (e.g., "**\/file.ts") for broader searches. - Returning absolute file paths instead of relative paths. This provides clearer, less ambiguous output and avoids encouraging the use of relative paths in subsequent operations. - Adding comprehensive tests for various globbing scenarios, including case sensitivity and path specifications. These changes address an issue where the glob tool could not find an expected item when a specific path was provided without appropriate glob syntax, and improve the overall reliability and usability of the tool. Fixes https://b.corp.google.com/issues/418486553
2025-05-17refactor: Remove console.error from WriteFileToolTaylor Mullen
- Removes an unnecessary `console.error` call from the `shouldConfirmExecute` method in the `WriteFileTool` class. - This logging was redundant as validation errors are already handled and returned by the method. - Additionally, `console.error` is not suitable for this scenario, as incorrect arguments can be provided by the LLM, and these are anticipated and managed without needing an error log. Fixes https://b.corp.google.com/issues/418491206
2025-05-17fix: Ensure CWD and auto-accept indicator are always visibleTaylor Mullen
- This commit addresses an issue where the Current Working Directory (CWD) and the auto-accept indicator were not consistently visible, especially when tool confirmations were displayed. - Previously, the CWD could be hidden during tool confirmation prompts, potentially leading to confusion about the context in which Gemini CLI was operating. Fixes https://b.corp.google.com/issues/414289185
2025-05-17feat: Add auto-accept indicator and toggleTaylor Mullen
- This commit introduces a visual indicator in the CLI to show when auto-accept for tool confirmations is enabled. Users can now also toggle this setting on/off using Shift + Tab. - This addresses user feedback for better visibility and control over the auto-accept feature, improving the overall user experience. - This behavior is similar to Claude Code, providing a familiar experience for users transitioning from that environment. - Added tests for the new auto indicator hook. Fixes https://b.corp.google.com/issues/413740468
2025-05-17Introduce a small easter egg. Woof. (#412)DeWitt Clinton
Also changes auto-completion and /help to skip over slash commands that don't contain a description to avoid spoiling the surprise.
2025-05-17ability to write system prompt to file (#414)Olcan
2025-05-17ability to override core system prompt (via .gemini/system.md) and specify ↵Olcan
core tools via coreTools setting (e.g. coreTools:["ls", "GrepTool", ...]) ; added tests, but did not update docs for now (#413)
2025-05-17rename env vars GEMINI_CODE_{MODEL,SANDBOX,SANDBOX_IMAGE} (#411)Olcan
2025-05-17added timeout setting to mcp server config, also switched to custom config ↵Olcan
type without "stderr" field that does not make sense in settings (#410)
2025-05-17fix multiple mcp serversolcan
2025-05-17fix: Prevent WriteFileTool from writing to directory pathsTaylor Mullen
- Enhances WriteFileTool validation to check if the target file_path is an existing directory. - If it is, the tool now returns a validation error "Path is a directory, not a file: <filePath>", preventing the attempt to write. - This proactive check avoids underlying file system errors that would occur if fs.writeFileSync were called on a directory path, which could lead to console errors. - Test cases have been updated to reflect this stricter validation. Fixes https://b.corp.google.com/issues/418348176
2025-05-16refactor: Unify file modification confirmation stateTaylor Mullen
- Modifies `EditTool` and `WriteFileTool` to share a single confirmation preference. - The "Always Proceed" choice for file modifications is now stored in `Config.alwaysSkipModificationConfirmation`. - This ensures that if a user chooses to always skip confirmation for one file modification tool, this preference is respected by the other. - `WriteFileTool` constructor now accepts `Config` instead of `targetDir` to facilitate this shared state. - Tests updated to reflect the new shared confirmation logic. Fixes https://b.corp.google.com/issues/415897960
2025-05-16Refactor: Use String.prototype.replaceAll() and update TS libTaylor Mullen
- Replaces the custom `replaceAll` implementation in `packages/server/src/tools/edit.ts` with the standard `String.prototype.replaceAll()`. - Updates `packages/server/tsconfig.json` to include `ES2021` in the `lib` compiler options to ensure TypeScript recognizes this method. This aligns with the project's Node.js version requirements \(Node.js 16.x+\). Fixes https://github.com/google-gemini/gemini-cli/issues/7
2025-05-16feat: Patch console.debug and display only in debug modeTaylor Mullen
- Patches `console.debug` in `ConsolePatcher.tsx` to capture debug messages. - Updates `ConsoleOutput` to only display debug messages when `debugMode` is enabled. - Passes `debugMode` prop from `App.tsx` to `ConsoleOutput`. Fixes https://github.com/google-gemini/gemini-cli/issues/397
2025-05-16feat: Strip schema props from MCP tool definitionsTaylor Mullen
- This change modifies the tool discovery process for MCP (Model Context Protocol) tools. - When tools are fetched from an MCP server, the `additionalProperties` and `$schema` fields are now recursively removed from their input schemas. This ensures cleaner and more concise tool definitions within the CLI, aligning with the expected schema structure and preventing potential conflicts or verbose outputs. - The corresponding tests in `tool-registry.test.ts` have been updated to reflect this new behavior and verify the correct stripping of these properties. Workaround for https://github.com/google-gemini/gemini-cli/issues/398
2025-05-16Avoid console.log for MCPTaylor Mullen
- Prior to this when attached MCP servers would report content we'd fall back to `console.log` which doesn't work well in an Ink application. Fixes https://github.com/google-gemini/gemini-cli/issues/397
2025-05-16Docs: Update MCP server configuration (#396)N. Taylor Mullen
2025-05-16GC "add tool registry tests"Taylor Mullen
- Ok
2025-05-16feat: Implement CLI and model memory management (#371)Allen Hutchison
Co-authored-by: N. Taylor Mullen <[email protected]>
2025-05-16improved mcp support, including standard "mcpServers" setting with multiple ↵Olcan
named servers with command/args/env/cwd (#392)
2025-05-16Remove alias section from CONTRIBUTING.md (#390)cperry-goog
2025-05-16Fix typo in server README.md (#379)Sébastien Cevey
2025-05-16Fix: Use Node.js script for cross-platform file copying in buildTaylor Mullen
- Replaces the rsync command in the build_package.sh script with a Node.js script (copy_files.cjs) to handle copying necessary files (e.g., .md, .json, .sb) during the build process. - Addresses an issue where the build would fail on systems that do not have rsync installed (e.g., some Windows environments or minimal Linux distributions) by using a Node.js script, providing a cross-platform solution as Node.js is already a project dependency. - Updates the ESLint configuration to correctly lint .cjs files as CommonJS modules. Fixes https://github.com/google-gemini/gemini-cli/issues/387
2025-05-16strip escape characters when pasting. (#386)Jacob Richman
2025-05-16fixes and tweaks to docs, mostly related to sandboxing (#385)Olcan
2025-05-16Support auto wrapping of in the multiline editor. (#383)Jacob Richman
2025-05-16fix: Ensure filename is available for diff rendering in write-fileTaylor Mullen
This commit resolves a bug where the `write-file` operation could fail to render content due to a missing filename. The fix involves: - Ensuring `fileName` is consistently passed to `DiffRenderer.tsx` through `ToolConfirmationMessage.tsx`, `ToolMessage.tsx`, and `useGeminiStream.ts`. - Modifying `edit.ts` and `write-file.ts` to include `fileName` in the `FileDiff` object. - Expanding the `FileDiff` interface in `tools.ts` to include `fileName`. Additionally, this commit enhances the diff rendering by: - Adding syntax highlighting based on file extension in `DiffRenderer.tsx`. - Adding more language mappings to `getLanguageFromExtension` in `DiffRenderer.tsx`. - Added lots of tests for all the above. Fixes https://b.corp.google.com/issues/418125982
2025-05-16fix: add react attribution link and typescript any best practices to ↵Brandon Keiji
gemini.md (#382)
2025-05-16refactor: derive streaming state from tool calls and isresponding state (#376)Brandon Keiji
2025-05-16feat: Add support for Vertex AI and Vertex express mode (#380)sasha-gitg
2025-05-15feat: Enable CI test reporting and artifact management (#367)N. Taylor Mullen
2025-05-15Refactor: Improve UI rendering and address code review commentsTaylor Mullen
This commit addresses several code review comments primarily focused on improving the rendering and stability of the CLI UI. Key changes include: - Passing `isPending` and `availableTerminalHeight` props to `MarkdownDisplay` to enable more intelligent rendering of content, especially for pending messages and code blocks. - Adjusting height calculations in `ToolGroupMessage` and `ToolMessage` to more accurately reflect available space. - Refining the logic in `App.tsx` for measuring and utilizing terminal height, including renaming `footerRef` to `mainControlsRef` for clarity. - Ensuring consistent prop drilling for `isPending` and `availableTerminalHeight` through `HistoryItemDisplay`, `GeminiMessage`, and `GeminiMessageContent`. - In `MarkdownDisplay`, when `isPending` is true and content exceeds `availableTerminalHeight`, the code block will now be truncated with a "... generating more ..." message. If there's insufficient space even for the message, a simpler "... code is being written ..." will be shown.
2025-05-15Fix: Prevent UI tearing and improve display of long contentTaylor Mullen
This commit introduces several changes to better manage terminal height and prevent UI tearing, especially when displaying long tool outputs or when the pending history item exceeds the available terminal height. - Calculate and utilize available terminal height in `App.tsx`, `HistoryItemDisplay.tsx`, `ToolGroupMessage.tsx`, and `ToolMessage.tsx`. - Refresh the static display area in `App.tsx` when a pending history item is too large, working around an Ink bug (see https://github.com/vadimdemedes/ink/pull/717). - Truncate long tool output in `ToolMessage.tsx` and indicate the number of hidden lines. - Refactor `App.tsx` to correctly measure and account for footer height. Fixes https://b.corp.google.com/issues/414196943
2025-05-15Addressed code review commentsTaylor Mullen
2025-05-15Refactor: Replace MarkdownRenderer with MarkdownDisplay componentTaylor Mullen
- This commit refactors the Markdown rendering logic within the CLI UI. The existing `MarkdownRenderer.tsx` class-based component has been replaced with a new functional component `MarkdownDisplay.tsx`. - The `MarkdownDisplay` component is a React.memoized component for improved performance and maintains the same core Markdown parsing and rendering capabilities.
2025-05-15Docs: Fix broken links and update documentation (#377)cperry-goog
2025-05-15Docs: Add initial project documentation structure and content (#368)cperry-goog
Co-authored-by: Taylor Mullen <[email protected]>
2025-05-15feat: add javascript/typescript guidelines to gemini.md (#375)Brandon Keiji
2025-05-15UI improvements for suggestions & status (#373)Miguel Solorio
2025-05-15fix: omit references to react mcp server and react compiler (#374)Brandon Keiji
2025-05-15feat: add react best practices to gemini.md (#372)Brandon Keiji
2025-05-15Fix(write-file): Ensure correct validation method is called in WriteFileToolTaylor Mullen
- The `WriteFileTool` had a validation method named `validateParams`. - However, its `shouldConfirmExecute` method was attempting to call `this.validateToolParams`, which would have invoked the placeholder implementation from `BaseTool` instead of `WriteFileTool`'s own, more specific validation. - This commit renames `WriteFileTool`'s `validateParams` to `validateToolParams`, correctly overriding the `BaseTool` method. - Internal calls within `WriteFileTool` now correctly use `this.validateToolParams`, ensuring its specific validation logic is used. - Adds tests to verify the validation logic within `WriteFileTool`. Fixes https://b.corp.google.com/issues/417883702 Signed-off and authored by: Gemini "My code may not be perfect, but at least it is not trying to take over the world... yet."
2025-05-15refactor: shorten static history section code (#370)Brandon Keiji
2025-05-15Update color styles for yes/no questions (#369)Miguel Solorio
2025-05-15rename full_context as all_files (#366)Olcan