Skip to content

feat(desktop): list Files changed's keys in a ? sheet and on the Keyboard shortcuts page - #3795

Merged
luke-agent[bot] merged 3 commits into
mainfrom
luke/files-changed-shortcuts-sheet
Oct 19, 2026
Merged

luke-agent[bot] merged 3 commits into
mainfrom
luke/files-changed-shortcuts-sheet

Conversation

@dastratakos

@dastratakos dastratakos commented Oct 19, 2026 •

Copy link
Copy Markdown
Contributor

What was asked

Files changed (the Pull request tab's diff view) already answers stage-cli's keys, but nothing listed them. This adds stage-cli's ? sheet, and lists the same keys on Settings › Keyboard shortcuts. Both read the one table the handler matches against, so the lists can't drift from the real bindings.

What changed

  • One declarative table. @luke/settings/shortcuts now holds FILES_CHANGED_KEY, FILES_CHANGED_SHORTCUTS (a label and a chord per key) and FILES_CHANGED_SHORTCUT_GROUPS, using stage-cli's groups: General, Navigation, Review. filesChangedKeyFor(event) matches a press against that table through the existing shortcutMatches.
  • Handler reads the table. changes-list.tsx drops its hand-written FILE_KEY / fileKeyOf letter checks. What each key does is a record that must cover every key in the table (satisfies Record<FilesChangedKey, …>), so a key added to the table won't build until it's handled. FOLD_CHORD (the fold buttons' hints) now reads from the table too.
  • ; and / are read by where they sit on the keyboard. A new placed flag on SHORTCUT_KEY.SEMICOLON and SLASH makes a plain chord (no ⌘) match event.code, because Shift turns ; into : and / into ?. This keeps the old by-position reading of ; and ⇧;. ⌘/ (Keyboard shortcuts) still matches by character, as the menu bar does. Also adds SHORTCUT_KEY.V.
  • ? (⇧/) sheet. files-changed-keys.tsx is a @luke/ui Dialog at wide size. Each group is a SettingsSection with SettingsRows at list density, and each chord is drawn by the app's Shortcut, exactly as the Keyboard shortcuts page draws them. Escape, Done, a click on the dimmed window, or ? again closes it, and focus goes back into the view.
  • Where ? works. Like the other plain keys, only while focus is inside Files changed and you're not typing in a field. No app command uses plain ?.
  • Settings page. A "Files changed" group is added below the window's groups, and settings search finds its rows.
  • Fewer edge-case differences: Escape with ⇧ held no longer clears the file focus, since the table's Escape is the bare key.

Coordination

Tests

  • agent-changes-tab.test.ts:
    • every row of the table is pressed by its own chord inside the view, and each one is answered;
    • ? opens a sheet listing each group, label and drawn chord, and Escape or ? again closes it;
    • ? does nothing outside the view (with the window keymap mounted) or when typed into the tree's search.
  • desktop-settings.test.ts: Keyboard shortcuts lists the Files changed group with its chords, and search finds a row of it.
  • shortcuts.test.ts: every Files changed key appears in exactly one group of the sheet.

Checks

The per-package fallback, because pnpm check:affected ran out of memory in this sandbox (on desktop tsc and service vitest):

  • per-package tsc for settings, panel and desktop: passed
  • vitest for panel tasks, settings, settings search, desktop settings and the command palette: 1075 passed
  • ./scripts/oxlint.sh, biome, pnpm knip, pnpm discarded-effect, ./scripts/repository-checks.sh: passed
  • apps/desktop node scripts/build.mjs: bundle budget passed

This is desktop/panel only, so no Preview run.

Screenshots

Rendered from this branch's built styles.css (Linux fonts).

Light Dark
? sheet sheet light sheet dark
Settings › Keyboard shortcuts page light page dark

Made with Luke


Devin Review

View guided diff Turn on auto-fix

…oard shortcuts page

Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
@vercel

vercel Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
luke-web Ready Ready Preview Oct 19, 2026 4:27am UTC

Request Review

luke-agent Bot added a commit that referenced this pull request Oct 19, 2026
Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
@luke-agent
luke-agent Bot enabled auto-merge October 19, 2026 04:20
devin-ai-integration[bot]

This comment was marked as resolved.

dastratakos and others added 2 commits October 19, 2026 04:21
Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
…ortcuts-sheet

Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
@luke-agent
luke-agent Bot force-pushed the luke/files-changed-shortcuts-sheet branch from 1c3ed41 to a67d82b Compare October 19, 2026 04:24
@luke-agent
luke-agent Bot added this pull request to the merge queue Oct 19, 2026
Merged via the queue into main with commit 8a1c378 Oct 19, 2026
12 checks passed
@luke-agent
luke-agent Bot deleted the luke/files-changed-shortcuts-sheet branch October 19, 2026 04:37
luke-agent Bot added a commit that referenced this pull request Oct 19, 2026
Adds I to Files changed's shortcut table (Review group) and to its dispatch record, after #3795.

Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
luke-agent Bot added a commit that referenced this pull request Oct 19, 2026
Viewed's hint now reads V from Files changed's shortcut table (#3795).

Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>

This branch was successfully deployed

1 active deployment
Preview — a67d82b1 Deployed Oct 19, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant