Skip to content

feat(ui): standardize semantic focus colors and enhance history visibility#20745

Merged
jacob314 merged 2 commits intomainfrom
feat/colors-command
Mar 4, 2026
Merged

feat(ui): standardize semantic focus colors and enhance history visibility#20745
jacob314 merged 2 commits intomainfrom
feat/colors-command

Conversation

@keithguerin
Copy link
Contributor

@keithguerin keithguerin commented Mar 1, 2026

Summary

This PR represents a comprehensive refinement of the Gemini CLI's semantic color system and history UI. It standardizes how focus and activity are represented across all components, improves the readability of user interactions, and introduces new developer tools for theme validation.

Details

🎨 Color Standardization & Focus Definition

  • Unified Focus State: Defined theme.ui.focus (typically Green) as the single source of truth for interactive focus. Removed the divergent theme.border.focused to ensure a consistent "keyboard focus" signal across all inputs, dialogs, and selection lists.
  • New "Active" State: Introduced theme.ui.active (typically Blue) to represent structural activity or background tasks (e.g., running shell commands) that are not currently capturing keyboard input.
  • Dynamic Shell UI: Updated shell tool borders and status icons to intelligently switch between Blue (Running) and Green (Focused).

📖 History & UX Enhancements

  • User Message Visibility: Switched user messages in history to use primary text color and increased background opacity to match the input prompt. This makes user contributions feel "first-class" and significantly easier to read.
  • Themed Focus Hints: Refined the "(Tab to focus)" and "(Shift+Tab to unfocus)" hints to use the new semantic Blue/Green colors, removing hardcoded pink and improving theme compatibility.
  • Animated Shell Icon: Replaced the rainbow "AI moment" animation for shell tools with a themed spinner that respects the current theme's active/focus colors.

🛠 Developer Tools & Robustness

  • Theme Visualizer Integration: Added a /colors slash command and integrated the ColorsDisplay visualizer directly into the /theme dialog (visible in dev mode).
  • Recursive Flattening: Refactored theme color processing to be recursive, ensuring complex theme definitions are correctly visualized.
  • Contrast Awareness: Added a luminance-based helper to ensure text in color samples remains readable against any background.

Related Issues

Standardizes UX and addresses consistency concerns related to #18719 and #18640.

Pre-Merge Checklist

  • Standardized focus variables across 15+ UI files.
  • Fixed circular dependencies between theme.ts and color-utils.ts.
  • Resolved environment-specific test failures in textUtils.
  • Updated 5,600+ tests and all visual snapshots.

@keithguerin keithguerin requested a review from a team as a code owner March 1, 2026 10:08
@gemini-cli
Copy link
Contributor

gemini-cli bot commented Mar 1, 2026

Hi @keithguerin, thank you so much for your contribution to Gemini CLI! We really appreciate the time and effort you've put into this.

We're making some updates to our contribution process to improve how we track and review changes. Please take a moment to review our recent discussion post: Improving Our Contribution Process & Introducing New Guidelines.

Key Update: Starting January 26, 2026, the Gemini CLI project will require all pull requests to be associated with an existing issue. Any pull requests not linked to an issue by that date will be automatically closed.

Thank you for your understanding and for being a part of our community!

@gemini-cli
Copy link
Contributor

gemini-cli bot commented Mar 1, 2026

Hi there! Thank you for your contribution to Gemini CLI.

To improve our contribution process and better track changes, we now require all pull requests to be associated with an existing issue, as announced in our recent discussion and as detailed in our CONTRIBUTING.md.

This pull request is being closed because it is not currently linked to an issue. Once you have updated the description of this PR to link an issue (e.g., by adding Fixes #123 or Related to #123), it will be automatically reopened.

How to link an issue:
Add a keyword followed by the issue number (e.g., Fixes #123) in the description of your pull request. For more details on supported keywords and how linking works, please refer to the GitHub Documentation on linking pull requests to issues.

Thank you for your understanding and for being a part of our community!

@gemini-cli gemini-cli bot closed this Mar 1, 2026
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request significantly enhances the CLI's theming system by introducing a new command for visualizing theme colors and standardizing how focus and active states are represented visually. These changes improve user experience through better readability and consistent visual cues, while also addressing underlying architectural issues for a more robust color management system.

Highlights

  • New /colors Command: Introduced a new slash command, /colors, which provides a visual representation of all semantic theme colors, aiding in theme development and debugging.
  • UI Color Standardization: Standardized focus indicators across the CLI to consistently use theme.ui.focus (Green) and introduced theme.ui.active (Blue) for active or running background tasks.
  • Improved User Message Visibility: User messages in the history now use theme.text.primary for better contrast and readability, with their background opacity matching the input prompt for visual consistency.
  • Theme-Aware Focus Hints: Updated focus hints like '(Tab to focus)' and '(Shift+Tab to unfocus)' to dynamically use themed Blue/Green colors instead of hardcoded pink, enhancing visual coherence.
  • Refactored Color Utilities: The color flattening logic was refactored to be recursive, and luminance-based contrast helpers were added for background color samples in the new visualizer.
  • Circular Dependency Resolution: Resolved circular dependencies between theme.ts and color-utils.ts by consolidating color utility functions into theme.ts.
Changelog
  • packages/cli/src/ui/auth/ApiAuthDialog.tsx
    • Updated the border color to use theme.ui.focus for consistency.
  • packages/cli/src/ui/auth/AuthDialog.tsx
    • Updated border colors to use theme.ui.focus for consistency.
  • packages/cli/src/ui/components/BackgroundShellDisplay.tsx
    • Modified the border color logic to use theme.ui.focus when focused.
  • packages/cli/src/ui/components/ColorsDisplay.test.tsx
    • Added a new test file for the ColorsDisplay component.
  • packages/cli/src/ui/components/ColorsDisplay.tsx
    • Added a new component to display all semantic theme colors.
  • packages/cli/src/ui/components/Header.test.tsx
    • Updated the mock theme structure to include new ui.active and ui.focus properties.
  • packages/cli/src/ui/components/InputPrompt.tsx
    • Changed the border color logic to use theme.ui.focus when focused.
  • packages/cli/src/ui/components/LoadingIndicator.tsx
    • Added a dynamic focus hint to the loading indicator, using theme.ui.active.
  • packages/cli/src/ui/components/LogoutConfirmationDialog.tsx
    • Updated the border color to use theme.ui.focus for consistency.
  • packages/cli/src/ui/components/MainContent.test.tsx
    • Updated test descriptions and assertions to reflect the new theme.ui.active and theme.ui.focus border colors for shell commands.
  • packages/cli/src/ui/components/SessionBrowser.tsx
    • Imported theme, changed active session text color to theme.ui.focus, and added theme.background.focus for active session background.
  • packages/cli/src/ui/components/SuggestionsDisplay.tsx
    • Changed active suggestion text color to theme.ui.focus and added theme.background.focus for active suggestion background.
  • packages/cli/src/ui/components/ThemeDialog.tsx
    • Imported ColorsDisplay and isDevelopment, and conditionally rendered ColorsDisplay in the theme preview for development environments.
  • packages/cli/src/ui/components/snapshots/AskUserDialog.test.tsx.snap
    • Updated snapshots to reflect minor layout adjustments.
  • packages/cli/src/ui/components/snapshots/ExitPlanModeDialog.test.tsx.snap
    • Updated snapshots to reflect minor layout adjustments.
  • packages/cli/src/ui/components/snapshots/InputPrompt.test.tsx.snap
    • Updated snapshots to reflect minor layout adjustments.
  • packages/cli/src/ui/components/snapshots/LoadingIndicator.test.tsx.snap
    • Updated snapshot for the loading indicator phrase.
  • packages/cli/src/ui/components/snapshots/SessionBrowser.test.tsx.snap
    • Updated snapshots to reflect minor layout adjustments.
  • packages/cli/src/ui/components/snapshots/SettingsDialog-SettingsDialog-Initial-Rendering-should-render-settings-list-with-visual-indicators.snap.svg
    • Updated SVG snapshot for settings dialog rendering.
  • packages/cli/src/ui/components/snapshots/SettingsDialog-SettingsDialog-Snapshot-Tests-should-render-accessibility-settings-enabled-correctly.snap.svg
    • Updated SVG snapshot for accessibility settings rendering.
  • packages/cli/src/ui/components/snapshots/SettingsDialog-SettingsDialog-Snapshot-Tests-should-render-all-boolean-settings-disabled-correctly.snap.svg
    • Updated SVG snapshot for boolean settings rendering.
  • packages/cli/src/ui/components/snapshots/SettingsDialog-SettingsDialog-Snapshot-Tests-should-render-default-state-correctly.snap.svg
    • Updated SVG snapshot for default settings state rendering.
  • packages/cli/src/ui/components/snapshots/SettingsDialog-SettingsDialog-Snapshot-Tests-should-render-file-filtering-settings-configured-correctly.snap.svg
    • Updated SVG snapshot for file filtering settings rendering.
  • packages/cli/src/ui/components/snapshots/SettingsDialog-SettingsDialog-Snapshot-Tests-should-render-focused-on-scope-selector-correctly.snap.svg
    • Updated SVG snapshot for focused scope selector rendering.
  • packages/cli/src/ui/components/snapshots/SettingsDialog-SettingsDialog-Snapshot-Tests-should-render-mixed-boolean-and-number-settings-correctly.snap.svg
    • Updated SVG snapshot for mixed settings rendering.
  • packages/cli/src/ui/components/snapshots/SettingsDialog-SettingsDialog-Snapshot-Tests-should-render-tools-and-security-settings-correctly.snap.svg
    • Updated SVG snapshot for tools and security settings rendering.
  • packages/cli/src/ui/components/snapshots/SettingsDialog-SettingsDialog-Snapshot-Tests-should-render-various-boolean-settings-enabled-correctly.snap.svg
    • Updated SVG snapshot for various boolean settings rendering.
  • packages/cli/src/ui/components/snapshots/SuggestionsDisplay.test.tsx.snap
    • Updated snapshots to reflect minor layout adjustments.
  • packages/cli/src/ui/components/snapshots/ThemeDialog.test.tsx.snap
    • Updated snapshots to include the new ColorsDisplay component in the theme dialog.
  • packages/cli/src/ui/components/messages/ToolShared.tsx
    • Adjusted the focus hint color logic to use theme.ui.focus or theme.ui.active.
  • packages/cli/src/ui/components/messages/UserMessage.tsx
    • Changed the default text color for user messages to theme.text.primary.
  • packages/cli/src/ui/components/messages/snapshots/RedirectionConfirmation.test.tsx.snap
    • Updated snapshot to reflect minor layout adjustments.
  • packages/cli/src/ui/components/messages/snapshots/ToolConfirmationMessage.test.tsx.snap
    • Updated snapshots to reflect minor layout adjustments.
  • packages/cli/src/ui/components/shared/BaseSelectionList.test.tsx
    • Updated mock theme properties and test assertions to use theme.ui.focus for selected items.
  • packages/cli/src/ui/components/shared/BaseSelectionList.tsx
    • Modified selection list item styling to use theme.ui.focus for text color and theme.background.focus for background color when selected.
  • packages/cli/src/ui/components/shared/BaseSettingsDialog.tsx
    • Updated border color logic for focused sections to use theme.ui.focus and adjusted selection list item colors.
  • packages/cli/src/ui/components/shared/snapshots/DescriptiveRadioButtonSelect.test.tsx.snap
    • Updated snapshots due to theme property changes.
  • packages/cli/src/ui/constants.ts
    • Added DEFAULT_SELECTION_OPACITY constant.
  • packages/cli/src/ui/hooks/snapshots/usePhraseCycler.test.tsx.snap
    • Updated snapshot for the interactive shell waiting phrase.
  • packages/cli/src/ui/hooks/usePhraseCycler.ts
    • Removed the explicit 'press tab to focus shell' text from the interactive shell waiting phrase.
  • packages/cli/src/ui/themes/ansi.ts
    • Added FocusBackground to the ansiColors theme.
  • packages/cli/src/ui/themes/color-utils.ts
    • Removed color utility functions, which were moved to theme.ts to resolve circular dependencies.
  • packages/cli/src/ui/themes/github-light.ts
    • Added FocusColor to the githubLightColors theme.
  • packages/cli/src/ui/themes/holiday.ts
    • Added FocusColor to the holidayColors theme.
  • packages/cli/src/ui/themes/no-color.ts
    • Added FocusBackground, ui.active, and ui.focus to the noColorColorsTheme and noColorSemanticColors, and removed border.focused.
  • packages/cli/src/ui/themes/semantic-tokens.ts
    • Updated the SemanticColors interface to remove border.focused and add background.focus, ui.active, and ui.focus. Mapped these new semantic tokens in lightSemanticColors and darkSemanticColors.
  • packages/cli/src/ui/themes/solarized-dark.ts
    • Imported DEFAULT_SELECTION_OPACITY, added background.focus, ui.active, and ui.focus to semantic colors, updated gradient, and removed border.focused.
  • packages/cli/src/ui/themes/solarized-light.ts
    • Imported DEFAULT_SELECTION_OPACITY, added background.focus, ui.active, and ui.focus to semantic colors, updated gradient, and removed border.focused.
  • packages/cli/src/ui/themes/theme-manager.ts
    • Imported DEFAULT_SELECTION_OPACITY, updated cachedColors to include FocusBackground calculation, and updated semantic color mapping for background.focus and ui.focus.
  • packages/cli/src/ui/themes/theme.ts
    • Moved color utility functions (e.g., resolveColor, interpolateColor, getLuminance) from color-utils.ts to theme.ts to resolve circular dependencies. Added FocusBackground and FocusColor to the ColorsTheme interface. Updated lightTheme and darkTheme to include FocusBackground calculations. Modified the Theme class to use new focus properties and updated createCustomTheme to handle these new properties.
  • packages/cli/src/ui/themes/xcode.ts
    • Added FocusColor to the xcodeColors theme.
  • packages/cli/src/ui/utils/snapshots/borderStyles-MainContent-tool-group-border-SVG-snapshots-should-render-SVG-snapshot-for-a-shell-tool.snap.svg
    • Updated SVG snapshot for shell tool border styles.
  • packages/cli/src/ui/utils/borderStyles.test.tsx
    • Updated test descriptions and assertions to use theme.ui.active and theme.ui.focus for shell tool border colors.
  • packages/cli/src/ui/utils/borderStyles.ts
    • Refactored borderColor logic to prioritize theme.ui.focus for focused elements and theme.ui.active for active shell tools.
  • packages/cli/src/ui/utils/textUtils.test.ts
    • Updated assertions for getCachedStringWidth to correctly handle unicode characters.
  • packages/core/src/config/config.ts
    • Updated the CustomTheme interface to remove border.focused and add ui.active and ui.focus properties.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@github-actions
Copy link

github-actions bot commented Mar 1, 2026

You already have 7 pull requests open. Please work on getting existing PRs merged before opening more.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a new /colors command and standardizes focus/selection colors throughout the UI, which is a great improvement for theme consistency and developer experience. The refactoring to resolve circular dependencies is also a welcome change. However, I've found a critical issue where snapshot tests are failing due to an incomplete mock theme in the test environment for DescriptiveRadioButtonSelect. This needs to be addressed to ensure the tests pass.

Comment on lines 1 to 83
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html

exports[`DescriptiveRadioButtonSelect > should render correctly with custom props 1`] = `
" 1. Foo Title
This is Foo.
● 2. Bar Title
This is Bar.
3. Baz Title
This is Baz.
"
ERROR Cannot read properties of undefined (reading 'focus')

src/ui/components/shared/BaseSelectionList.tsx:120:33

117: let numberColor = theme.text.primary;
118:
119: if (isSelected) {
120: titleColor = theme.ui.focus;
121: numberColor = theme.ui.focus;
122: } else if (item.disabled) {
123: titleColor = theme.text.secondary;

- (src/ui/components/shared/BaseSelectionList.tsx:120:33)
- at Array.map (<anonymous>)\\t
- BaseSelectionList (src/ui/components/shared/BaseSelectionList.tsx:111:21)
-Object.react-stack-bott
m-frame (/Users/keithguerin/Documents/gemini-cli_colors/node_modules/react-reconci
ler/cjs/react-reconciler.development.js:15859:20)
-renderWithHoo
s (/Users/keithguerin/Documents/gemini-cli_colors/node_modules/react-reconciler/cjs/re
act-reconciler.development.js:3221:22)
-updateFunctionComp
nent (/Users/keithguerin/Documents/gemini-cli_colors/node_modules/react-reconciler/c
js/react-reconciler.development.js:6475:19)
-beginWor
(/Users/keithguerin/Documents/gemini-cli_colors/node_modules/react-reconciler/cjs/react-r
econciler.development.js:8009:18)
-runWithFiberIn
EV (/Users/keithguerin/Documents/gemini-cli_colors/node_modules/react-reconciler/cjs/r
eact-reconciler.development.js:1738:13)
-performUnitOfW
rk (/Users/keithguerin/Documents/gemini-cli_colors/node_modules/react-reconciler/cjs/r
eact-reconciler.development.js:12834:22)
-workLoopSyn
(/Users/keithguerin/Documents/gemini-cli_colors/node_modules/react-reconciler/cjs/reac
t-reconciler.development.js:12644:41)
"
`;

exports[`DescriptiveRadioButtonSelect > should render correctly with default props 1`] = `
"● Foo Title
This is Foo.
Bar Title
This is Bar.
Baz Title
This is Baz.
"
ERROR Cannot read properties of undefined (reading 'focus')

src/ui/components/shared/BaseSelectionList.tsx:120:33

117: let numberColor = theme.text.primary;
118:
119: if (isSelected) {
120: titleColor = theme.ui.focus;
121: numberColor = theme.ui.focus;
122: } else if (item.disabled) {
123: titleColor = theme.text.secondary;

- (src/ui/components/shared/BaseSelectionList.tsx:120:33)
- at Array.map (<anonymous>)\\t
- BaseSelectionList (src/ui/components/shared/BaseSelectionList.tsx:111:21)
-Object.react-stack-bott
m-frame (/Users/keithguerin/Documents/gemini-cli_colors/node_modules/react-reconci
ler/cjs/react-reconciler.development.js:15859:20)
-renderWithHoo
s (/Users/keithguerin/Documents/gemini-cli_colors/node_modules/react-reconciler/cjs/re
act-reconciler.development.js:3221:22)
-updateFunctionComp
nent (/Users/keithguerin/Documents/gemini-cli_colors/node_modules/react-reconciler/c
js/react-reconciler.development.js:6475:19)
-beginWor
(/Users/keithguerin/Documents/gemini-cli_colors/node_modules/react-reconciler/cjs/react-r
econciler.development.js:8009:18)
-runWithFiberIn
EV (/Users/keithguerin/Documents/gemini-cli_colors/node_modules/react-reconciler/cjs/r
eact-reconciler.development.js:1738:13)
-performUnitOfW
rk (/Users/keithguerin/Documents/gemini-cli_colors/node_modules/react-reconciler/cjs/r
eact-reconciler.development.js:12834:22)
-workLoopSyn
(/Users/keithguerin/Documents/gemini-cli_colors/node_modules/react-reconciler/cjs/reac
t-reconciler.development.js:12644:41)
"
`;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

critical

This snapshot shows that the test for DescriptiveRadioButtonSelect is failing with a TypeError: Cannot read properties of undefined (reading 'focus'). This is a critical issue that breaks the build.

The error originates in BaseSelectionList.tsx at the line titleColor = theme.ui.focus;, which indicates that theme.ui is undefined in the test environment for DescriptiveRadioButtonSelect.

To fix this, the mock for semantic-colors.js in DescriptiveRadioButtonSelect.test.tsx needs to be updated to provide a complete theme object, including the ui and background properties with their respective focus keys. A similar update was made in BaseSelectionList.test.tsx which can be used as a reference.

@keithguerin keithguerin reopened this Mar 1, 2026
@github-actions
Copy link

github-actions bot commented Mar 1, 2026

You already have 7 pull requests open. Please work on getting existing PRs merged before opening more.

@github-actions github-actions bot closed this Mar 1, 2026
@gemini-cli gemini-cli bot reopened this Mar 1, 2026
@gemini-cli
Copy link
Contributor

gemini-cli bot commented Mar 1, 2026

Thank you for linking an issue! This pull request has been automatically reopened.

@github-actions
Copy link

github-actions bot commented Mar 1, 2026

Size Change: +13.7 kB (+0.05%)

Total Size: 25.9 MB

Filename Size Change
./bundle/gemini.js 25.4 MB +13.7 kB (+0.05%)
ℹ️ View Unchanged
Filename Size
./bundle/node_modules/@google/gemini-cli-devtools/dist/client/main.js 221 kB
./bundle/node_modules/@google/gemini-cli-devtools/dist/src/_client-assets.js 227 kB
./bundle/node_modules/@google/gemini-cli-devtools/dist/src/index.js 11.5 kB
./bundle/node_modules/@google/gemini-cli-devtools/dist/src/types.js 132 B
./bundle/sandbox-macos-permissive-open.sb 890 B
./bundle/sandbox-macos-permissive-proxied.sb 1.31 kB
./bundle/sandbox-macos-restrictive-open.sb 3.36 kB
./bundle/sandbox-macos-restrictive-proxied.sb 3.56 kB
./bundle/sandbox-macos-strict-open.sb 4.82 kB
./bundle/sandbox-macos-strict-proxied.sb 5.02 kB

compressed-size-action

@gemini-cli gemini-cli bot added priority/p2 Important but can be addressed in a future release. area/core Issues related to User Interface, OS Support, Core Functionality 🔒 maintainer only ⛔ Do not contribute. Internal roadmap item. labels Mar 1, 2026
@keithguerin keithguerin marked this pull request as draft March 1, 2026 20:34
@keithguerin keithguerin changed the title feat(ui): add /colors command and standardize semantic focus colors feat(ui): standardize semantic focus colors and enhance history visibility Mar 2, 2026
@keithguerin keithguerin force-pushed the feat/colors-command branch from 1dba73b to ae3f4ca Compare March 2, 2026 19:07
@jacob314 jacob314 marked this pull request as ready for review March 3, 2026 17:50
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a significant and well-executed refactoring of the UI's color system. By standardizing on semantic tokens like theme.ui.focus and theme.ui.active, it greatly improves visual consistency for focus and activity states across more than 15 components. The removal of theme.border.focused simplifies the theme structure. I appreciate the thoughtful UX enhancements, such as improving the readability of user messages in the history and replacing the old spinner with a new theme-aware one. The addition of the /colors developer tool is a valuable addition for theme creation and debugging. Furthermore, the architectural improvement to resolve a circular dependency between theme.ts and color-utils.ts enhances code maintainability. The changes are comprehensive, consistent, and significantly elevate the quality and clarity of the UI codebase.

Note: Security Review did not run due to the size of the PR.

@jacob314 jacob314 force-pushed the feat/colors-command branch 3 times, most recently from e52a03a to eb4ab8e Compare March 3, 2026 22:39
keithguerin and others added 2 commits March 3, 2026 15:25
feat(ui): refine /colors layout and add colorized names and vertical gradients

feat(ui): move backgrounds to top and further refine /colors layout

feat(ui): fix ESLint unescaped entities in /colors

feat(ui): finalize /colors layout and improve interaction explanation

feat(ui): use primary color for /colors summary and remove background row gaps

feat(ui): make the first column narrower in /colors output

feat(ui): refine /colors value column width and prevent text wrap in tests

feat(ui): merge /colors table into /theme dialog and restrict to authors

feat(ui): refine /theme colors debug visualizer layout and styling

feat(ui): simplify colors visualizer bullets and remove redundant usage column

feat(ui): narrow background boxes and update title in colors visualizer

feat(ui): remove redundant column logic and use flexGrow for name column in colors visualizer

refactor(ui): implement recursive color flattening and improve contrast in colors visualizer

feat(ui): standardize focus/selection color and integrate visualizer into theme dialog

feat(ui): implement standardized selection background with interpolation

feat(ui): rename selection to focus and use AccentGreen for focus by default

fix(ui): resolve test failures and snapshot mismatches

fix(ui): improve user message visibility and refine focus hints

feat(ui): replace rainbow shell icon with themed blue spinner

feat(ui): make shell icon green when focused and fix DescriptiveRadioButtonSelect test mock

chore: re-trigger CI

fix(cli): make string-width test environment-agnostic

fix(cli): update remaining test mocks for consistent semantic-colors

chore: re-trigger CI with latest fixes

fix(cli): normalize Header tests and mock CliSpinner to avoid act warnings
@jacob314 jacob314 force-pushed the feat/colors-command branch from eb4ab8e to f9ed83f Compare March 3, 2026 23:25
@jacob314 jacob314 enabled auto-merge March 4, 2026 00:09
Copy link
Contributor

@jacob314 jacob314 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@jacob314 jacob314 added this pull request to the merge queue Mar 4, 2026
Merged via the queue into main with commit d250889 Mar 4, 2026
27 checks passed
@jacob314 jacob314 deleted the feat/colors-command branch March 4, 2026 00:21
BryanBradfo pushed a commit to BryanBradfo/gemini-cli that referenced this pull request Mar 5, 2026
struckoff pushed a commit to struckoff/gemini-cli that referenced this pull request Mar 6, 2026
liamhelmer pushed a commit to badal-io/gemini-cli that referenced this pull request Mar 12, 2026
yashodipmore pushed a commit to yashodipmore/geemi-cli that referenced this pull request Mar 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/core Issues related to User Interface, OS Support, Core Functionality 🔒 maintainer only ⛔ Do not contribute. Internal roadmap item. priority/p2 Important but can be addressed in a future release.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants