-
Notifications
You must be signed in to change notification settings - Fork 9.5k
feat: Blend educative tips with witty phrases during loading times (fun, subtle learning...) #10569
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: Blend educative tips with witty phrases during loading times (fun, subtle learning...) #10569
Conversation
Summary of ChangesHello @JayadityaGit, 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 upgrades the user experience during application loading by transforming generic witty messages into informative tips. The new messages guide users through various commands, keyboard shortcuts, and settings, clearly distinguishing between UI-configurable and Highlights
Using Gemini Code AssistThe 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
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 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
|
There was a problem hiding this 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 is a great improvement, replacing generic loading messages with genuinely useful tips about the CLI's features. The new messages will definitely help users discover commands, shortcuts, and settings.
My review focuses on a couple of areas to enhance the clarity and consistency of these new messages. I've identified some minor formatting inconsistencies and a more critical issue with ambiguous setting names that could confuse users. Addressing these points will make this feature even more polished and helpful.
| 'You shall pass! `allowed` (settings.json)', | ||
| 'You shall not pass! `exclude` (settings.json)', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The setting keys allowed and excluded are ambiguous here, as they also exist under the mcp configuration (lines 121-122). Displaying only the leaf key could cause users to edit the wrong setting in settings.json, which is a critical issue.
To be 'genuinely informative' as the PR description states, I recommend using the full setting path (e.g., tools.allowed) to remove ambiguity. This principle should also be applied to the mcp settings and other nested settings in this list that have non-unique leaf names.
Here's a suggestion to improve clarity for the tools settings:
| 'You shall pass! `allowed` (settings.json)', | |
| 'You shall not pass! `exclude` (settings.json)', | |
| 'You shall pass! Let your favorite tools run with `tools.allowed` (settings.json).', | |
| 'You shall not pass! Block unwanted tools with `tools.exclude` (settings.json).', |
| 'Allow your favorite MCPs. `allowed` (settings.json)', | ||
| "Exclude the MCPs you don't like. `excluded` (settings.json)", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Similar to my comment on the tools settings, the keys allowed and excluded are ambiguous here. Using the full setting path mcp.allowed and mcp.excluded would prevent any confusion for the user when editing their settings.json file.
| 'Allow your favorite MCPs. `allowed` (settings.json)', | |
| "Exclude the MCPs you don't like. `excluded` (settings.json)", | |
| 'Allow your favorite MCPs. `mcp.allowed` (settings.json)', | |
| "Exclude the MCPs you don't like. `mcp.excluded` (settings.json)", |
| 'Your secrets are safe with us. `/privacy`', | ||
| "Don't let the door hit you on the way out. `/quit`", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These two messages are missing backticks around the commands and trailing punctuation, which is inconsistent with most other messages in this list. For better consistency and readability, I suggest adding backticks and a period at the end.
| 'Your secrets are safe with us. `/privacy`', | |
| "Don't let the door hit you on the way out. `/quit`", | |
| 'Your secrets are safe with us. `/privacy`.', | |
| "Don't let the door hit you on the way out. `/quit`.", |
| 'Let the AI talk to itself. `skipNextSpeakerCheck`', | ||
| 'How deep will you go? `discoveryMaxDirs`', | ||
| 'Load more memories. `loadMemoryFromIncludeDirectories`', | ||
| 'Ignore your gitignore. Or not. `respectGitIgnore`', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Did we forget the "(settings)" suffix for many UI configurable settings or have I misunderstood intent?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yeah i missed it, thanks for pointing out !
| 'How many lines is short? `truncateToolOutputLines`', | ||
| 'Let the tools talk to each other. `enableMessageBusIntegration`', | ||
| 'Trust no one. Or do. `folderTrust.enabled`', | ||
| 'Let the model choose. `useModelRouter` (settings)', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe /settings instead of (settings)?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thanks will use the slash command, i think that's better.
| 'Have you tried turning it off and on again? (The loading screen, not me.)', | ||
| 'Constructing additional pylons...', | ||
| 'New line? That’s Ctrl+J.', | ||
| 'Squash bugs with `/bug`!', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: Squash --> Report
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sure !
| 'Constructing additional pylons...', | ||
| 'New line? That’s Ctrl+J.', | ||
| 'Squash bugs with `/bug`!', | ||
| 'Save your brilliant ideas with `/chat save`.', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
to keep the style consistent I would end all of these with ...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the suggestion !
|
I'd suggest we enable this as a setting rather than the default. In addition, would be ideal if we interleaved the useful with funny settings when the option is enabled. That would align with how we already show a tip about ctrl-J |
|
Hey @jacob314, I believe that many users — myself included — may not be fully aware of all the useful features available(I really can't decide which are important). Of course, the importance of certain features can vary from person to person, but sometimes users might simply miss out on functionalities that could actually enhance their UNIQUE workflow. That’s the main motivation behind this PR. Since we already have an option to disable loading phrases, I don’t see a strong reason to introduce an additional setting just for this. If a user prefers fully personalized witty phrases, they can always opt for the custom witty feature. What I’ve done here is extract about 50% of the original witty phrases and blend them with a new set that’s both educative and witty. I feel this strikes a nice balance — keeping the humor while also subtly teaching or sharing something useful in a lighthearted way. |
I personally feel that if this is placed within the settings, there’s a chance it could be missed by users, which might lessen the impact of the intended change. |
| 'Report bugs with `/bug`!...', | ||
| 'Save your brilliant ideas with `/chat save`....', | ||
| 'A fresh slate is just a `/clear` away....', | ||
| 'Shrink your conversation with `/compress`....', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
fix cases with four dots and cleanup cases that now have ! and ...
| 'Feed the beast with `@`....', | ||
| 'Play in the sandbox with `-s`....', | ||
| 'Go incognito with `--headless`....', | ||
| 'Go back in time with checkpoints....', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
how?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ops — thank you so much for clarifying, @jacob314!
|
Even if we eventually make this the default we will need to have it be a setting so users who already feel they are familiar with the CLI can go back to the witty phrases. If you make the logic slightly more complex so you get a maybe 5-1 ratio of funny phrases to tips we could roll it out as the default. |
Introduces a new system to display informative tips to users during loading states. The phrase cycler logic has been updated to show a tip with a 1-in-6 probability, mixing educational content with the existing witty phrases. The new `INFORMATIVE_TIPS` array is populated with comprehensive tips covering: - All application settings, with suffixes indicating where they can be configured (`/settings` or `settings.json`). - A complete list of keyboard shortcuts. - A full list of all available slash commands. Additionally, this commit includes fixes for the `usePhraseCycler.test.ts` and `useLoadingIndicator.test.ts` test suites, which were updated to handle the new non-deterministic nature of the phrase cycler by adding appropriate mocks.
bde6909 to
b5e8dab
Compare
@jacob314 absolutely brilliant suggestion — thank you so much for the clear and thoughtful guidance! |
|
The npm preflight checks are all passing. I’ve personally tested it, and the 1–6 probability for the educative tips is working as expected. Since the probability is quite low and I wanted the tips to stand out, I chose not to make them witty. |
jacob314
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
| 'Create and use your own custom themes (settings.json)...', | ||
| 'Hide window title for a more minimal UI (/settings)...', | ||
| "Don't like these tips? You can hide them (/settings)...", | ||
| 'Hide the startup banner for a faster launch (/settings)...', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: not really faster. more just cleaner.
| 'Hide the startup banner for a faster launch (/settings)...', | ||
| 'Reclaim vertical space by hiding the footer (/settings)...', | ||
| 'Show memory usage for performance monitoring (/settings)...', | ||
| 'Show line numbers in the chat for better context (/settings)...', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this is on by default so remove the tip
| 'Show citations to see where the model gets information (/settings)...', | ||
| 'Disable loading phrases for a quieter experience (/settings)...', | ||
| 'Add custom witty phrases to the loading screen (settings.json)...', | ||
| 'Enable IDE integration mode for a seamless workflow (settings.json)...', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
have these point to /settings wherever possible rather than settings.json. IDE integration is in settings for example.
| 'Disable loading phrases for a quieter experience (/settings)...', | ||
| 'Add custom witty phrases to the loading screen (settings.json)...', | ||
| 'Enable IDE integration mode for a seamless workflow (settings.json)...', | ||
| 'Help improve Gemini by enabling usage stats (/settings)...', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
remove as is the default
| 'Control when chat history gets compressed based on token usage (settings.json)...', | ||
| 'Define custom context file names, like CONTEXT.md (settings.json)...', | ||
| 'Set max directories to scan for context files (settings.json)...', | ||
| 'Expand your workspace with additional directories (settings.json)...', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this should be /directory not settings.json
|
Today I came across a small issue in the settings dialog — there wasn’t a clear visual cue for closing it. Initially, I was closing the CLI with ctrl+c, but later realized that esc works to close the settings dialog. I’ve added that clarification. Note: Some tests are currently failing. The snapshot tests in SettingsDialog.test.tsx need to be updated to match the new help text. There are also some unrelated test failures in InputPrompt.test.tsx and mcp-client.test.ts. |
|
And since I’m participating in Hacktoberfest, if possible, could you please add the |
|
@jacob314 I’ve updated the snapshot test, and the preflight checks are now passing. Thank you for adding the label — I truly appreciate it! |
|
@jacob314, is there anything else I should do on this? |
| <Text color={theme.text.secondary}> | ||
| (Use Enter to select | ||
| {showScopeSelection ? ', Tab to change focus' : ''}) | ||
| {showScopeSelection ? ', Tab to change focus' : ''}, Esc to close) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why is this change in this pr?
| expect(lastFrame()).toContain('User Settings'); // Scope options (no numbers when settings focused) | ||
| expect(lastFrame()).toContain( | ||
| '(Use Enter to select, Tab to change focus)', | ||
| '(Use Enter to select, Tab to change focus, Esc to close)', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why is this change in this PR?
jacob314
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Seems like a settings dialog change accidentally got in this PR. please revert and I will land.
jacob314
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
… during loading times (fun, subtle learning...) (google-gemini#10569)
…un, subtle learning...) (google-gemini#10569) Co-authored-by: Jacob Richman <[email protected]>

TL;DR
This PR replaces the existing loading-screen witty messages with an updated set that is both clever and genuinely informative. The new messages surface useful tips about commands, keyboard shortcuts, and settings—while noting whether a setting is configurable via the UI or only through
settings.json.Purpose
The goal is to make the CLI experience more engaging and helpful during load times. Instead of filler text, users now see short, fun messages that teach them something useful about the tool.
These improvements aim to:
What's Included
The updated messages cover:
For clarity:
settings.jsonnow include a(settings.json)suffix(/settings)suffix✅ Testing Matrix
🔗 Linked Issue
Resolves #10568