Skip to content

Comments

feat(cli): replace loading phrases boolean with enum setting#19347

Merged
jacob314 merged 8 commits intomainfrom
gemini-cli-bye-witty
Feb 19, 2026
Merged

feat(cli): replace loading phrases boolean with enum setting#19347
jacob314 merged 8 commits intomainfrom
gemini-cli-bye-witty

Conversation

@LyalinDotCom
Copy link
Collaborator

@LyalinDotCom LyalinDotCom commented Feb 18, 2026

Summary

  • Replace the binary ui.accessibility.enableLoadingPhrases toggle with a new ui.loadingPhrases enum setting supporting four modes: tips, witty, all, and off
  • Default changes from showing everything to tips only, giving users a quieter experience by default while still surfacing useful information
  • Wire up the previously unused customWittyPhrases setting so it actually takes effect
  • Migrate existing enableLoadingPhrases: falseloadingPhrases: 'off' so users who disabled phrases keep their preference

Resolves #14942

Test plan

  • npm run build:all — no type errors
  • usePhraseCycler.test.tsx — 16 tests pass (new tests for each mode)
  • useLoadingIndicator.test.tsx — 8 tests pass (new off mode test)
  • Composer.test.tsx — 55 tests pass (updated to use new setting)
  • settings.test.ts — 94 tests pass (3 new migration tests)
  • settingsSchema.test.ts — enum property test added
  • npm run lint — clean, no warnings
  • Manual: verify /settings shows the new enum, default is tips, cycling works, off hides phrases

Replace the binary `ui.accessibility.enableLoadingPhrases` toggle with a
new `ui.loadingPhrases` enum setting supporting four modes: `tips`,
`witty`, `all`, and `off`. The default changes from `all` to `tips`,
showing only informative tips while the model is working.

- Add `loadingPhrases` enum to settings schema with `tips | witty | all | off`
- Migrate `enableLoadingPhrases: false` → `loadingPhrases: 'off'`
- Wire `customWittyPhrases` setting through to `usePhraseCycler`
- Update Composer to read from settings instead of deprecated config
- Regenerate settings docs and JSON schema
@LyalinDotCom LyalinDotCom requested review from a team as code owners February 18, 2026 02:45
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @LyalinDotCom, 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 user experience by providing granular control over loading phrases within the CLI. By transitioning from a simple on/off toggle to an enum-based setting, users can now choose between informative tips, witty comments, a combination of both, or disable them entirely. This change also activates the previously dormant custom witty phrases feature and includes a seamless migration for existing user settings, ensuring a smoother and more personalized interaction with the CLI.

Highlights

  • Loading Phrases Setting Refactor: Replaced the binary ui.accessibility.enableLoadingPhrases boolean setting with a more flexible ui.loadingPhrases enum, allowing for 'tips', 'witty', 'all', or 'off' modes.
  • Default Experience Adjustment: The default behavior for loading phrases has been changed from showing 'all' to 'tips only', providing a less verbose experience by default.
  • Custom Witty Phrases Activation: The customWittyPhrases setting is now fully wired up and functional, allowing users to define their own witty loading messages.
  • Backward Compatibility Migration: Implemented a migration path for existing users, automatically converting enableLoadingPhrases: false to the new loadingPhrases: 'off' setting to preserve user preferences.
Changelog
  • docs/cli/settings.md
    • Updated documentation to reflect the new ui.loadingPhrases enum setting.
    • Marked ui.accessibility.enableLoadingPhrases as deprecated in the documentation.
  • docs/get-started/configuration.md
    • Added detailed documentation for the new ui.loadingPhrases enum setting, including its description, default value, and possible options.
    • Updated the description for ui.accessibility.enableLoadingPhrases to indicate its deprecation and suggest using ui.loadingPhrases instead.
  • packages/cli/src/config/settings.test.ts
    • Added new test cases to verify the migration logic for enableLoadingPhrases: false to loadingPhrases: 'off'.
    • Included tests to ensure enableLoadingPhrases: true does not create a loadingPhrases entry and that existing loadingPhrases values are not overwritten during migration.
  • packages/cli/src/config/settings.ts
    • Defined the LoadingPhrasesMode type as a union of 'tips', 'witty', 'all', and 'off'.
    • Marked the enableLoadingPhrases property in AccessibilitySettings as deprecated.
    • Implemented migration logic within migrateDeprecatedSettings to convert enableLoadingPhrases: false to loadingPhrases: 'off' if loadingPhrases is not already set.
  • packages/cli/src/config/settingsSchema.test.ts
    • Added a test to confirm the presence and correct definition of the loadingPhrases enum property in the settings schema, including its type, default, and options.
  • packages/cli/src/config/settingsSchema.ts
    • Introduced the loadingPhrases enum setting to the UI category of the settings schema, specifying its label, description, default value ('tips'), and available options.
    • Updated the enableLoadingPhrases setting in the accessibility schema to mark it as deprecated and hide it from the dialog.
  • packages/cli/src/ui/AppContainer.tsx
    • Passed the new loadingPhrasesMode and customWittyPhrases settings from the merged configuration to the useLoadingIndicator hook.
  • packages/cli/src/ui/components/Composer.test.tsx
    • Updated the test description for rendering the LoadingIndicator to reflect the new loadingPhrases setting.
    • Modified the test setup to use settings.merged.ui.loadingPhrases: 'off' instead of the deprecated enableLoadingPhrases: false.
  • packages/cli/src/ui/components/Composer.tsx
    • Updated the conditional logic for displaying thought and currentLoadingPhrase to check settings.merged.ui.loadingPhrases === 'off' instead of the deprecated config.getAccessibility()?.enableLoadingPhrases === false.
  • packages/cli/src/ui/constants/tips.ts
    • Updated an informative tip related to loading phrases to reflect the new customization options.
  • packages/cli/src/ui/hooks/useLoadingIndicator.test.tsx
    • Imported the LoadingPhrasesMode type.
    • Added loadingPhrasesMode as a parameter to the renderLoadingIndicatorHook utility function and TestComponent.
    • Included a new test case to verify that no phrases are shown when loadingPhrasesMode is set to 'off'.
  • packages/cli/src/ui/hooks/useLoadingIndicator.ts
    • Imported the LoadingPhrasesMode type.
    • Added loadingPhrasesMode to the UseLoadingIndicatorProps interface and as a destructured parameter in the useLoadingIndicator hook.
    • Passed the loadingPhrasesMode to the usePhraseCycler hook.
  • packages/cli/src/ui/hooks/usePhraseCycler.test.tsx
    • Imported the LoadingPhrasesMode type.
    • Added loadingPhrasesMode as a prop to the TestComponent and the usePhraseCycler hook call within it.
    • Updated existing tests to explicitly pass loadingPhrasesMode where appropriate.
    • Added a new describe block with tests for each loadingPhrasesMode ('tips', 'witty', 'off', 'all') to ensure correct phrase display behavior.
  • packages/cli/src/ui/hooks/usePhraseCycler.ts
    • Imported the LoadingPhrasesMode type.
    • Added loadingPhrasesMode as a parameter to the usePhraseCycler hook with a default value of 'tips'.
    • Refactored the phrase selection logic to use a switch statement based on loadingPhrasesMode, determining whether to show tips, witty phrases, both, or nothing.
    • Adjusted the useEffect dependency array to include loadingPhrasesMode.
  • packages/core/src/config/config.ts
    • Added a JSDoc @deprecated tag to the enableLoadingPhrases property within the AccessibilitySettings interface.
  • schemas/settings.schema.json
    • Added a new JSON schema definition for loadingPhrases under the ui section, specifying its title, description, default value, type, and enum options.
    • Updated the JSON schema for enableLoadingPhrases to include a deprecation notice in its description and markdownDescription.
Activity
  • The author has confirmed that npm run build:all passed without type errors.
  • All 16 tests in usePhraseCycler.test.tsx passed, including new tests for each loading phrase mode.
  • All 8 tests in useLoadingIndicator.test.tsx passed, including a new test for the 'off' mode.
  • All 55 tests in Composer.test.tsx passed after being updated to use the new setting.
  • All 94 tests in settings.test.ts passed, with 3 new migration tests added.
  • A new enum property test was added and passed in settingsSchema.test.ts.
  • The author confirmed that npm run lint ran cleanly with no warnings.
  • Manual verification is pending to ensure the /settings UI displays the new enum, the default is 'tips', cycling works, and 'off' correctly hides phrases.
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
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 enum setting ui.loadingPhrases to replace the old boolean toggle, providing more granular control over the loading phrases shown in the UI. The changes are well-implemented across the board, including updates to the settings schema, migration logic for existing users, comprehensive tests, and documentation. The new default behavior of showing only tips is a sensible choice for a quieter user experience. The implementation of the usePhraseCycler hook is now cleaner and correctly handles the different modes, including the use of custom witty phrases. Overall, this is a solid improvement to the CLI's user experience and configuration.

@github-actions
Copy link

github-actions bot commented Feb 18, 2026

Size Change: +1.27 kB (+0.01%)

Total Size: 24.5 MB

Filename Size Change
./bundle/gemini.js 24.5 MB +1.27 kB (+0.01%)
ℹ️ View Unchanged
Filename Size
./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

@LyalinDotCom
Copy link
Collaborator Author

@jacob314 can you review please as discussed. I did not add the notification of the feature in this PR figured we can do that as a separate follow-up PR?

@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 labels Feb 18, 2026
@LyalinDotCom
Copy link
Collaborator Author

Heads up: while rebasing/merging this branch onto the latest main, the Link Checker job intermittently failed on https://www.conventionalcommits.org/ (network/certificate-style transient failure).

I tested a .lycheeignore workaround locally but removed it from this PR to keep the scope focused on ui.loadingPhrases changes.

If link-check flakes continue after this lands, we should handle it in a separate follow-up PR (e.g., update that doc link to a more stable target or add a narrowly-scoped lychee exclusion).

default: true,
description: 'Enable loading phrases during operations.',
showInDialog: true,
description:
Copy link
Contributor

Choose a reason for hiding this comment

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

love that you set showInDialog to false for this.

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 Feb 19, 2026
Merged via the queue into main with commit 372f41e Feb 19, 2026
25 of 27 checks passed
@jacob314 jacob314 deleted the gemini-cli-bye-witty branch February 19, 2026 18:56
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 priority/p2 Important but can be addressed in a future release.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Remove unprofessional witty phrases

2 participants