Commit Graph

60 Commits

Author SHA1 Message Date
Jacob Richman f351b3ed82 Fix issue #17080 (#17100)
Co-authored-by: Gal Zahavi <38544478+galz10@users.noreply.github.com>
2026-01-23 00:02:14 +00:00
Jacob Richman fed4043c84 fix(ui): resolve sticky header regression in tool messages (#16514) 2026-01-13 22:17:05 +00:00
Jacob Richman 57d4cd6357 feat(ui): use Tab to switch focus between shell and input (#14332) 2026-01-12 23:30:12 +00:00
Jack Wotherspoon e498b124bb feat: custom loading phrase when interactive shell requires input (#12535) 2025-11-21 17:19:34 +00:00
Gal Zahavi 8e5fcbfc2d feat: add click-to-focus support for interactive shell (#13341) 2025-11-19 23:49:39 +00:00
Jacob Richman 068cd95328 Switch back to truncating headers. Unfortunately we have too many headers that are 10+ lines for no good reason so we need to add back this truncation until we fix them. (#13018) 2025-11-13 19:38:19 +00:00
Jacob Richman 1f2ee9095e Sticky headers where the top rounded border is sticky. (#12971) 2025-11-13 01:01:16 +00:00
Jacob Richman ca478d47ce Support ink scrolling final pr (#12567) 2025-11-11 15:50:11 +00:00
Tommaso Sciortino fee47772d9 Don't display todo in history (#11516) 2025-10-20 17:36:55 +00:00
Tommaso Sciortino 2b089566f8 Create Todo List Tab (#11430) 2025-10-18 04:10:57 +00:00
Tommaso Sciortino 7f75e614b1 Improve rendering of ToDo lists. (#11315) 2025-10-16 23:06:43 +00:00
Srivats Jayaram 1a6777a53a feat: Add markdown toggle (alt+m) to switch between rendered and raw… (#10383)
Co-authored-by: Jacob Richman <jacob314@gmail.com>
2025-10-16 18:23:36 +00:00
Jacob Richman 72cbe15471 Re-land bbiggs changes to reduce margin on narrow screens with fixes + full width setting (#10522) 2025-10-10 02:27:20 +00:00
Gal Zahavi c517a3c302 chore(shell): Enable interactive shell by default (#10661) 2025-10-08 20:28:19 +00:00
Gal Zahavi 68a6294198 fix(shell): improve shell output presentation and usability (#8837) 2025-09-30 20:44:58 +00:00
Jacob Richman 29c4b49875 Fix bug where users are unable to re-enter disconnected terminals. (#8765) 2025-09-20 17:59:37 +00:00
Gal Zahavi dee3170c99 fix(cli) : fix shell colors to match new coloring (#8747)
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
2025-09-18 20:35:55 +00:00
Gal Zahavi 1b243dc43f refactor(shell): Send AnsiOutput when ShowColor is false (#8647) 2025-09-18 20:04:46 +00:00
Miguel Solorio ffda95b41d Update default text styles (#8291) 2025-09-11 21:22:16 +00:00
Gal Zahavi dc7656af8c feat(shell): enable interactive commands with virtual terminal (#6694) 2025-09-11 20:27:27 +00:00
Miguel Solorio f2247a6393 feat(ui): Semantic tokens refactor (#8087) 2025-09-10 17:57:07 +00:00
christine betts cc79c18333 Screen reader updates (#7307) 2025-08-28 20:52:14 +00:00
Arya Gummadi c1c66f7ce1 refactor: centralize tool status symbols in constants (#7054) 2025-08-27 14:54:32 +00:00
Pascal Birchler a97a6cc71b Explict imports & exports with type modifier (#3774) 2025-08-25 22:04:53 +00:00
Arya Gummadi c0bfc7b12c feat: add golden snapshot test for ToolGroupMessage and improve success symbol (#7037) 2025-08-25 21:42:18 +00:00
Arya Gummadi f620edeb37 fix: misaligned right border on tool calls ui and spacing in multiple tool calls ui (#6941) 2025-08-25 18:26:06 +00:00
Jacob Richman afd7752b0f Revert "Update semantic color tokens" (#6365) 2025-08-16 03:18:31 +00:00
Miguel Solorio d0d478b997 Update semantic color tokens (#6253)
Co-authored-by: jacob314 <jacob314@gmail.com>
2025-08-15 22:39:54 +00:00
Noritaka Kobayashi 8bd166f74b chore: fix typos in comment-out (#1540)
Co-authored-by: Scott Densmore <scottdensmore@mac.com>
2025-06-26 04:34:53 +00:00
Jacob Richman 802ffee703 Truncate all strings before displaying in a tool messages to avoid stack overflows (#1395) 2025-06-24 22:31:55 +00:00
Sandy Tao 24114f0e71 Do not render mcp responses as markdown (#1388) 2025-06-24 14:10:41 -07:00
Jacob Richman c4e7c9f675 Fix flicker issues by ensuring all actively changing content fits in the viewport (#1217) 2025-06-19 13:17:23 -07:00
Olcan 1a88273ae6 enforce minimum lines shown/hidden (#860) 2025-06-08 17:11:16 -07:00
Miguel Solorio 3cdbeb879b Allow themes to theme the UI (#769) 2025-06-05 14:35:47 -07:00
Olcan 168cfe8aae disable markdown rendering of shell tool output (#625) 2025-05-30 12:43:59 -07:00
Olcan 1eafa34029 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
Jacob Richman 14712f2311 Refactor: Add GeminiRespondingSpinner to make use of streamingState idiomatic (#583) 2025-05-28 11:17:19 -07:00
Taylor Mullen 0defbe27f4 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
Jacob Richman e7c7ab908e 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 94af6cdd67 feat: Modify loading indicator to support a paused state (#506) 2025-05-23 10:25:17 -07:00
Brandon Keiji 2b61d08dff feat: add emphasis to tool confirmations (#502) 2025-05-23 05:28:31 +00:00
Taylor Mullen 7012c97710 fix: Ensure filename is available for diff rendering in write-file
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-16 10:13:13 -07:00
Taylor Mullen bc6ded6e06 Refactor: Improve UI rendering and address code review comments
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-15 22:57:28 -07:00
Taylor Mullen 4b37d2870e Fix: Prevent UI tearing and improve display of long content
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-15 22:57:28 -07:00
Taylor Mullen f76aff895a Refactor: Replace MarkdownRenderer with MarkdownDisplay component
- 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-15 21:57:10 -07:00
Miguel Solorio 84ae325086 Update color styles for yes/no questions (#369) 2025-05-15 14:36:34 -07:00
Taylor Mullen f55e825746 Prevent UI hang on long tool confirmations.
Problem:
When a tool confirmation dialog appeared for a potentially long-running
operation (e.g., `npm install`), accepting the confirmation would cause
the UI to appear to hang. The confirmation dialog would remain visible,
and no further UI updates would occur until the long-running task
completed. This provided a poor user experience as the application
seemed unresponsive.

Fix:
This change addresses the issue by ensuring the UI is updated to remove
the confirmation dialog *before* the long-running operation begins.
It also marks the tool as executing so a spinner can be shown.

Fixes https://b.corp.google.com/issues/415844994

Signed, sealed, delivered, it's yours!
   - Gemini, your friendly neighborhood code-slinger
2025-05-06 22:38:30 -07:00
Taylor Mullen 9ad530c18b feat: Fix flickering in iTerm + scrolling + performance issues.
- Refactors history display using Ink's <Static> component to prevent flickering and improve performance by rendering completed items statically.
- Introduces ConsolePatcher component to capture and display console.log, console.warn, and console.error output within the Ink UI, addressing native handling issues.
- Introduce a new content splitting mechanism to work better for static items. Basically when content gets too long we will now split content into multiple blocks for Gemini messages to ensure that we can statically cache larger pieces of history.

Fixes:
- https://b.corp.google.com/issues/411450097
- https://b.corp.google.com/issues/412716309
2025-04-26 16:08:05 -07:00
Taylor Mullen ddd6447bad Update UI of tool messages
- Bring tool messages in line with original envisioned UI of: https://screenshot.googleplex.com/9yZCX636LzpMrgc
  - In particular this represents more descriptive names. FWIW we already had this tech we just weren't passing around information correctly (`displayName` vs. `name`)
 - Add gray to our list of color pallete's and removed Background (unused)
 - Re-enabled representing canceled messages
 - Migrated back towards a cleaner tool message design of status symbols & border colors vs. overly verbose text.
 - Removed border from confirmation diffs.
Fixes https://b.corp.google.com/issues/412598909
2025-04-22 08:05:30 -04:00
Jaana Dogan 51ff4ba14f Remove duplicate CLI tools module, remove the global tool registry (#89) 2025-04-21 12:59:31 -07:00