fix(cli): extensions dialog UX polish#19685
Conversation
|
Hi @jacob314, 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! |
Summary of ChangesHello @jacob314, 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 focuses on refining the user experience of dialogs and searchable lists within the CLI. It introduces a new custom hook to encapsulate search buffer logic, enhances the scrolling behavior of searchable lists to provide a smoother and more intuitive navigation, and updates visual cues for selected items. Additionally, it improves the adaptability of list displays by dynamically adjusting the number of visible items based on terminal dimensions. Highlights
Changelog
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
|
|
Size Change: +1.54 kB (+0.01%) Total Size: 25.2 MB
ℹ️ View Unchanged
|
There was a problem hiding this comment.
Code Review
This pull request introduces several excellent UX improvements, particularly in the SearchableList component, which now features more intuitive scrolling and clearer visual indicators. The refactoring of search input logic into the useSearchBuffer hook is a great step towards better code organization and reusability. I've identified one potential high-severity issue in the useRegistrySearch hook's useEffect implementation that could lead to performance degradation if the onSearch prop is not stable. My review includes a specific suggestion to make this more robust.
a56b4c0 to
fdc031b
Compare
chrstnb
left a comment
There was a problem hiding this comment.
Looks good to me! Thanks for adding the searchBuffer-- very nice.
FWIW e.g., the selected item icon was from the mocks, but I like the way this looks and feels so I say we get it in and get people testing it.
|
If we want to use that selection icon across the whole product that is fine (I like it better as well) but we should not be using different icons in different parts of the product. |
Summary
This PR introduces several UX improvements to the settings dialog, specifically focusing on the
SearchableListcomponent. It includes better scrolling, clearer visual indicators, and refactoring search input logic into a reusableuseSearchBufferhook.Demo:
https://screencast.googleplex.com/cast/NjY1MjA1NzMxNzUzOTg0MHxhYjgxYWExNS1lMg
Details
SearchableListto use a●character with proper styling instead of>.SearchableListto prevent visual flicker.SettingsDialoganduseRegistrySearchinto a newuseSearchBufferhook for better code organization and reusability.ExtensionRegistryViewnow calculatesmaxItemsToShowdynamically based on available terminal height fromuseUIState().useRegistrySearchwhere an unstableonSearchprop could cause performance degradation viauseEffect.Related Issues
Fixes #19697
How to Validate
●) should follow.You should now be able to navigate with consistent behavior to the settings dialog (e.g. the list scrolls when you are at the top or bottom rather than odd behavior keeping a line in the middle selected).