Skip to content

[Frontend][Shortcuts] Board bare-letter bindings fire behind the open shell help dialog #2621

Description

@Chris0Jeky

Found by the fresh-context review of PR #2615 (#2007 AC5/AC6); pre-existing on main, not introduced by that PR, which only adds a second entry point into the dialog and prints the two keys inside it.

Defect. With the shell keyboard-help dialog open over a Legacy board (ShellKeyboardHelp.vue, role="dialog" aria-modal="true"), a plain f or n still reaches the board. AppShell.vue (~252) returns without stopPropagation when hasActiveKeyboardOwningSurface() is true and no app-shell binding matched, so the keydown bubbles to BoardView's useKeyboardShortcuts listener (useKeyboardShortcuts.ts ~67): f toggles the filter panel behind the modal; n clicks [data-action="toggle-add-card"] (ColumnLane.vue ~247) and focuses the add-card input, pulling focus out of the open dialog. boardShortcutsEnabled (BoardView.vue ~473-475) gates the board bindings on Paper dialogs (the #1959 class) but not on the shell's own help surface.

Repro. Legacy skin, open any board, press ? (or the toolbar help button), press f: the filter panel toggles behind the dialog. Press n: focus leaves the dialog for the add-card input.

Acceptance.

  • Board bare-letter bindings do not fire while the shell help dialog (either skin twin) is open; either the shell stops propagation for non-matching keys while a keyboard-owning surface is active, or boardShortcutsEnabled also tests the shell help state (the useShellKeyboardHelp seam from PR fix(shortcuts): retire the lying Legacy help dialog and stop the ledger chip clipping #2615 exposes it).
  • A spec dispatching f and n from document.body with bubbles: true while the help dialog is open asserts neither handler ran and focus stays inside the dialog.
  • ? and Escape keep toggling and closing the dialog.

Refs #2007, #1968, PR #2615.

Activity

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

    Priority VMeta-tracking, archival consistency, historical context.bugSomething isn't workingfrontendPrimary implementation impact in Vue/TypeScript UI and client runtime.uxDiscoverability, accessibility, interaction model, and user workflow quality.

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions