Skip to content

refactor(cli): settings reorganization, renaming, and logic inversion#16912

Closed
keithguerin wants to merge 20 commits intogoogle-gemini:mainfrom
keithguerin:feat/settings-naming-consistency
Closed

refactor(cli): settings reorganization, renaming, and logic inversion#16912
keithguerin wants to merge 20 commits intogoogle-gemini:mainfrom
keithguerin:feat/settings-naming-consistency

Conversation

@keithguerin
Copy link
Copy Markdown
Contributor

@keithguerin keithguerin commented Jan 17, 2026

Summary

This PR reorganizes the Gemini CLI settings into logical groups (Core & Intelligence, Appearance & UI, Editor & Input, File System & Context, System & Maintenance) to improve UX consistency. It also renames settings to use Noun-First labeling and inverts the logic for the Next Speaker Check setting (formerly Skip Next Speaker Check).

Details

  • Reorganization: Settings are now grouped into 5 clear categories.
  • Renaming: Labels are noun-first (e.g., "Output Colors" instead of "Show Color").
  • Logic Inversion: skipNextSpeakerCheck (legacy) is now nextSpeakerCheck in the UI. Enabling it means the check is performed (skip=false). The legacy config property is derived as !nextSpeakerCheck.
  • Constraints: "Preview Features" is docs: Add setup instructions for API key to README #1 and "Auto Updates" is Improve readability issues #2 in "Core & Intelligence".
  • Refactoring: settingsSchema.ts has been extensively refactored. SettingsDialog.test.tsx and settings-validation.test.ts updated.

Related Issues

Related to #14035

How to Validate

  1. Run npm start.
  2. Open Settings.
  3. Verify the new grouping headers and setting labels.
  4. Verify "Preview Features" is first and "Auto Updates" is second.
  5. Toggle "Next Speaker Check" and verify behavior/persistence.

Pre-Merge Checklist

  • Updated relevant documentation and README (if needed)
  • Added/updated tests (if needed)
  • Noted breaking changes (if any)
  • Validated on required platforms/methods:
    • MacOS
      • npm run

@keithguerin keithguerin requested review from a team as code owners January 17, 2026 07:31
@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @keithguerin, 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 refines the user settings experience by standardizing the presentation of boolean options and streamlining configuration key names. The changes aim to make settings more intuitive and easier to understand for users, while also providing a robust migration path for existing configurations to ensure a smooth transition to the new, cleaner data model.

Highlights

  • Settings UI Consistency: Boolean settings in the UI now display as 'Enabled' or 'Disabled' for improved clarity, moving away from raw 'true/false' values.
  • Concise Naming Conventions: Redundant 'Enable' prefixes have been removed from setting labels and internal configuration keys (e.g., 'enableAutoUpdate' is now 'autoUpdate').
  • Automated Settings Migration: The system now automatically migrates existing settings from both legacy 'disable*' and intermediate 'enable*' keys to the new concise format, ensuring backward compatibility.
  • Configuration Key Renaming: A property naming collision in the core Config class was resolved by renaming the boolean hooks flag to hooksEnabled.
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.

Copy link
Copy Markdown
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 is a great pull request that significantly improves the consistency and clarity of the settings. The transition to natural language statuses ("Enabled"/"Disabled") and the simplification of setting labels by removing redundant prefixes are excellent changes for user experience. The automatic migration path for legacy settings is well-implemented and will ensure a smooth transition for users. The code changes are thorough and consistent across the codebase, including documentation and tests. The critical comment regarding a renamed test file remains valid and should be addressed.

…ogic

- Renamed visibility settings to noun-first, positive keys (e.g., 'hideTips' -> 'usageTips').
- Inverted logic polarity across schema, config, and UI components to match positive keys.
- Standardized boolean display values to 'Enabled'/'Disabled' in settings UI.
- Updated migration logic to automatically invert and map legacy 'hide*' and 'disable*' keys.
- Updated documentation, schemas, and tests to reflect these changes.
@keithguerin keithguerin changed the title feat(ui): improve settings consistency and clarity refactor(cli): settings reorganization, renaming, and logic inversion Jan 19, 2026
@keithguerin
Copy link
Copy Markdown
Contributor Author

🔄 Major Revision Update

I have pushed a significant update to this PR to finalize the UX consistency.

Changes in this revision:

  • Logical Grouping: Settings are now organized into 5 specific categories: Core & Intelligence, Appearance & UI, Editor & Input, File System & Context, System & Maintenance.
  • Noun-First Naming: All setting labels have been renamed to be noun-first (e.g., "Output Colors" instead of "Show Color").
  • Logic Inversion: The Next Speaker Check setting has been inverted. It now defaults to Disabled. Enabling it enforces the check (replacing the confusing double-negative of the previous Skip Next Speaker Check).
  • Constraints: Enforced "Preview Features" (docs: Add setup instructions for API key to README #1) and "Auto Updates" (Improve readability issues #2) positioning.

Please review the updated PR description and the latest commits.

@gemini-cli gemini-cli bot added the priority/p1 Important and should be addressed in the near term. label Jan 19, 2026
@keithguerin
Copy link
Copy Markdown
Contributor Author

I have fully implemented the Settings UX Specification.

  • Reorganized settings into 6 consolidated groups (APPLICATION, INTELLIGENCE & MODEL, etc.).
  • Renamed labels to Noun-First format.
  • Updated header styling to Bold Title Case with trailing separators and proper spacing.
  • Implemented On (Green) / Off (Gray) visual toggles.
  • Fixed logic inversion for Git Extensions.
  • Restored missing auth configuration.
  • Fixed array type inference issues.
  • Verified with npm run preflight.

Ready for review.

@keithguerin keithguerin marked this pull request as draft January 23, 2026 08:38
@keithguerin
Copy link
Copy Markdown
Contributor Author

Update: Recent Changes

I have pushed additional updates to this branch to refine the settings refactor based on recent feedback.

Key Changes

  1. Restored Original Settings Categories:

    • Reverted the experimental grouping (e.g., 'Core & Intelligence', 'System & Maintenance').
    • Returned to the familiar and established categories: General, UI, Model, Context, Tools, Security, Privacy, Advanced, Experimental, etc.
    • This ensures continuity for existing users while still benefiting from the cleaner, noun-first setting labels.
  2. Documentation Context Refactor:

    • Moved the Settings UX Guidelines from the root GEMINI.md to a context-specific packages/cli/src/config/.gemini.md.
    • This keeps the documentation co-located with the code it governs, making it easier to maintain and reference during development.

Next Steps

  • Implement 'Tabs' for better UI organization.
  • Apply writing improvements (per Mark's feedback).
  • Finalize PR for review.

@danzaharia1
Copy link
Copy Markdown
Contributor

danzaharia1 commented Jan 23, 2026

This PR introduces a new tabbed interface to improve UX. The implementation uses a flexible component-based approach, allowing for easy addition and management of multiple content views within a single display area. This enhances navigation and organization of information for the user.

Tabs are introduced as a new, reusable UI component as part of this change.

@clocky clocky self-assigned this Jan 23, 2026
@danzaharia1 danzaharia1 force-pushed the feat/settings-naming-consistency branch from a2de1c8 to b2d9e56 Compare January 23, 2026 21:49
@gemini-cli
Copy link
Copy Markdown
Contributor

gemini-cli bot commented Jan 24, 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. You can easily reopen this PR once you have linked it to an issue.

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, see the GitHub Documentation.

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

@gemini-cli gemini-cli bot closed this Jan 24, 2026
@keithguerin
Copy link
Copy Markdown
Contributor Author

This PR was reimplemented/abandoned in favor of #20099.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

priority/p1 Important and should be addressed in the near term.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants