Repository navigation
feat(tui): mouse clicks and hover, bounded values, config set-password - #148
Merged
Merged
Conversation
Forms and confirm dialogs ignored the mouse. A long value wrapped onto extra rows, and Form budgets one row per field, so the action row and hints were pushed off screen. - Form: click a field, toggle a checkbox, click Submit/Cancel, wheel, double-click to edit; Confirm: click Yes/No. useRowMouse gains matchColumn for targets that share a line. - Values truncate with an ellipsis in Form, SelectList, Panel titles, StatusList, FilePicker, log rows and Home rows; TextInput scrolls around its cursor. Toast and the Home access warning stay wrapped: their tail carries the repair-access hint. - x empties a highlighted password field. A blank password on the config edit form still keeps the stored one, as its placeholder says. - noorm config set-password <name> [value] [--stdin]: headless password rotation under the config:write policy; never prints the password.
Every [key] Label hint presses its key on a click, through Ink's input emitter, so the focused component answers as it would the key. Breadcrumb crumbs, list rows and the idle search row are clickable; whatever a click acts on is shaded on hover. - Hover needs ?1003 motion reports, which reach every useInput handler: any-key handlers now ignore mouse reports. - Guards: busy screens refuse crumb clicks, confirmations make hints inert, a double click presses once.
noorm ui asks the terminal for its background (OSC 11) before Ink starts and shades a step off it, lighter on a dark theme and darker on a light one. Terminals that do not answer keep ANSI bright black. Hover no longer un-dims form labels and buttons.
DB Explore and Debug category rows press their number (zero-count rows stay inert), the table detail footer and SQL editor hints are clickable, and "Press a to add ..." prompts press their key. ProtectedConfirm's buttons are click targets of their own because its modal guard blocks hint wrappers.
damusix
marked this pull request as ready for review
November 12, 2026 06:07
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Mouse support for the TUI, plus the long-value and password fixes that came with it.
[key] Labelhint (a click presses the key, so the focused screen answers as it would the key), earlier breadcrumb crumbs, the idle search row, and the file picker, log viewer, SQL history/clear and known-users rows.?1003motion reports (one per cell the pointer crosses, noticeable over slow SSH);ui.mouse: falseturns all of it off.…instead of wrapping and pushing the action row off screen; an open text field scrolls around its cursor.xempties a highlighted password field. A blank password on the config edit form still keeps the stored one (its placeholder says so).noorm config set-password <name> [value] [--stdin]rotates a stored password headlessly underconfig:write; it never prints the password.Guards: busy screens refuse crumb clicks, confirmations make hints inert, a double click presses once, and handlers that act on any key ignore mouse reports (motion would otherwise close help).
mouse-rows.test.tsxmocksgetSettingsManagerprocess-wide, so CI runs it in its own step.Not done:
[D] Delete allin the debug list shares its key with the global dry-run toggle.Hover on a white theme and on Solarized Light (the shade is derived from each theme's background; the text is unchanged):
Long values truncate with
…and an open field scrolls to the cursor: