Skip to content

F1 shows your live keys, grouped by menu #512

Open

Description

@a-team-app

Context

F1's Everywhere column is a fixed list of eight keys, so it shows the old key after a rebind and never shows a key you've added. This task makes F1 open the MentalDesk.Tui library's KeysDialog (titled Help since 0.3.3), built from TuiCode's live bindings and menu bar, per the style guide's Finding keys rule. Pitch: #497.

tui-style-guide#44 (an AppDialog, and so KeysDialog, running without AppShell) has shipped, and main already has MentalDesk.Tui 0.3.9 (#571), so no bump is needed here.

Acceptance criteria

  • F1 in the explorer opens a dialog titled Help, with Everywhere on the left and Explorer on the right (its fixed keys like Enter Open first, then Delete, Ctrl+D, F2, Ctrl+X, Ctrl+V).
  • Everywhere lists every global command that has a key and can run now, grouped under the menu bar's headings in menu order (File, Edit, Selection, View, Go, Review, Help), then Other for bound commands with no menu item. A heading with no bound commands doesn't appear.
  • Rebind Command palette in Settings › Keyboard Shortcuts, press F1: the new key shows and the old one is gone.
  • Give Go to line (or any unbound command) a key, press F1: it appears under its menu heading. Unbind it: it's gone.
  • A command that's disabled right now isn't listed (the same commands the palette greys out or hides).
  • F1 works the same everywhere it works today: editor, find bar, diff, Review, Usages, tabs, explorer, each with its own column headed with the place's name. Where a place has no keys of its own, only Everywhere shows.
  • In a narrow terminal the place's keys go on top and Everywhere below; in a short one the dialog scrolls with ↑ ↓ PgUp PgDn.
  • Esc closes it and focus returns where it was. No key reaches the editor behind it while it's open.
  • The status bar always ends with Press F1 for help at its right edge (whatever key Show keys is bound to; nothing when it's unbound), whether or not a file is open. A status message shows on the left and never replaces it.
  • The command is Show keys in the Help menu and the palette.

Tests

  • The KeySheet TuiCode builds: menu grouping and order, Other, a rebind replacing a key, a newly bound command appearing, an unbound or disabled command left out, editor-only commands under Editor not Everywhere, fixed place keys first in the place's column.
  • F1 from each place opens KeysDialog with the right heading, and Esc closes it and restores the key scope.
  • The status bar hint follows the Show keys binding, including unbound.
  • Remove HelpView and its tests if nothing else uses it.

Out of scope

Update AGENTS.md's F1 and status-bar bullets to describe the new behaviour: Everywhere is now every bound global command, not a curated onboarding list.

Updated for MentalDesk.Tui 0.3.3 (style guide #70): the sheet is titled Help with Everywhere first, and the status bar's hint is Press F1 for help at its right end.

Activity

  1. a-team-app commented on Oct 11, 2026

    @a-team-app
    ContributorAuthor

    Held as blocked: KeysDialog can only run through AppShell, which TuiCode doesn't use, until tui-style-guide#44 ships in a MentalDesk.Tui release. Remove the label once it's out.

  2. a-team-app commented on Oct 15, 2026

    @a-team-app
    ContributorAuthor

    The hold has cleared: tui-style-guide#44 closed this morning, and MentalDesk.Tui 0.3.5 (now at 0.3.7) has it. Remove blocked to let the Dev pick this up. The task includes bumping MentalDesk.Tui past #559's 0.3.3.

  3. added
    a-team:devClaimed by the a-team Dev
    and removed
    blockedWaiting on another issue
    on Oct 20, 2026
  4. a-team-app commented on Oct 20, 2026

    @a-team-app
    ContributorAuthor

    Draft PR #583 is up.

  5. added a commit that references this issue on Oct 20, 2026
    5a1d8bd
  6. jamescrosswell commented on Oct 20, 2026

    @jamescrosswell
    Contributor

    One oddity, when I'm in the Explore tab, with no files open, I see:
    Screenshot 2026-10-20 at 19.33.06

    So the 'Edit' commands are showing up undes global commands.

    If I was on the Find panel, I'd expect to see some hints about find related shortcuts (match case, whole word etc.) on the other/right hand side of the find dialog - but these shouldn't really be in the global shortcuts right?

    Are there other commands that are miscategorised as global in the application?

  7. added a commit that references this issue on Oct 20, 2026
    4be3ad3
  8. a-team-app commented on Oct 20, 2026

    @a-team-app
    ContributorAuthor

    Thanks. Your screenshot shows Find in file, Replace in file and Replace globally under Edit in Everywhere, from the Explorer with no file open. Fixed on #583:

    • Find/Replace in file only show while a file is open. With no tab, Ctrl+F/Ctrl+H open the Find pane, so listing them was misleading. When a file is open they stay in Everywhere: from the Explorer, Ctrl+F finds in that file.
    • Replace globally stays. It's truly global: it opens the Find pane from anywhere.
    • Find pane: Match case, Whole word and Ignored files are now only in the Find column on the right. Everywhere skips any key the place's column already lists.

    The audit found the same duplication from the same cause, now fixed: the sidebar tab keys, Ctrl+PgUp/Ctrl+PgDn (next/previous tab), and Mark viewed in Review. They're registered as global so they reach every pane, but each is gated to its place. I found no other global commands that don't belong.

    I checked F1 in the app from the Explorer (no file open) and from the Find pane. Edit now shows only Ctrl+Shift+H Replace globally, and the find options appear once, on the right. Main is merged in too, so the conflict is gone.

  9. added a commit that references this issue on Oct 20, 2026
    ed3fe10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    a-team:devClaimed by the a-team Dev

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions