Skip to content

feat(dashboard): inbox density + keyboard cockpit + default-submit-recommended#10

Closed
OriginalGary wants to merge 1 commit intofeat/cockpit-chromefrom
feat/cockpit-inbox-density
Closed

feat(dashboard): inbox density + keyboard cockpit + default-submit-recommended#10
OriginalGary wants to merge 1 commit intofeat/cockpit-chromefrom
feat/cockpit-inbox-density

Conversation

@OriginalGary
Copy link
Copy Markdown
Owner

Stacks on #9 (cockpit chrome). Three changes that turn the Inbox from a form into a cockpit.

Density

  • Compact two-line gate rows: title on row 1, slug + color-coded risk pill + playbook on row 2.
  • Risk pill is now color-coded — green low, amber medium, red high, saturated red irreversible. Text-only risk: medium was invisible at scan.
  • Priority rail on the left of each row (red/amber/muted by P0..P3).
  • 12 gate cards above the fold on 1440×900, vs 5 originally / 9 with chrome change.
  • Sort is P0-first then newest, so the keyboard 'top of list' is always the most critical gate.

Keyboard cockpit

Key Action
j / ↓ Next gate
k / ↑ Previous gate
19 Pick option N
Enter Submit selected option
⌘↵ / Ctrl↵ Submit (works inside form fields)
? Toggle help overlay
Esc Close help / drawer

Form fields (input / textarea / contenteditable) opt out of the letter shortcuts so typing isn't hijacked. Cmd+Enter still works inside form fields because the modifier is unambiguous.

Default-submit-recommended

When the gate carries a recommended option, the decide block is a single primary button labelled with that option ("Click merge on PR #20 — ships Wave 0 bootstrap…"), plus a change… affordance that expands the full radio group. One click + Enter ships the recommended path — the click count for the ~99% case drops from 2 (radio + submit) to 1.

The radio fieldset only opens for explicit overrides. Each option is numbered (1, 2, …) so the keyboard mapping matches what's on screen.

Test plan

  • OPERATOR_BUILD=true npm run dev. /approvals=200.
  • Help overlay opens on ?, closes on Esc / backdrop click. Confirmed via Playwright.
  • j advances selection (URL hash flipped from 109-animal-impact-intelligence-scraper to 50-enforce-worktree-discipline).
  • Enter submits the recommended option.
  • 1/2 pick option 1/2.
  • Risk pills render green / amber / red / saturated red for the four risk levels.
  • Form fields don't intercept j/k/digits.

What's NOT in this PR

…commended

Three changes that turn the Inbox from a form into a cockpit.

Density:
  - Compact two-line gate row (title row + slug/risk/playbook row)
  - Risk pill is now color-coded — green low, amber medium, red high,
    saturated red irreversible. Text-only 'risk: medium' was invisible
    at scan.
  - Priority rail on the left of each row (red/amber/muted by P0..P3)
  - 12 cards above the fold on 1440x900 (was 5 before chrome change,
    9 after chrome change)

Keyboard cockpit:
  - j / arrow-down: next gate
  - k / arrow-up: previous gate
  - 1-9: pick option N
  - Enter: submit selected option
  - Cmd/Ctrl+Enter: submit (works inside form fields too)
  - ?: toggle help overlay
  - Esc: close help / drawer
  - Form fields (input/textarea/contenteditable) opt out of letter
    shortcuts — j/k/1/?  inside a form field type normally.

Default-submit-recommended:
  - When the gate carries a recommended option, the decide block is a
    single primary button labelled with that option, plus a 'change…'
    affordance that expands the full radio group.
  - One click + Enter ships the recommended path. The radio fieldset
    only opens for actual overrides, with numbered keys (1, 2, ...)
    matching the listed options.

Inbox is sorted by priority then most-recent gate-entry, so P0 work
bubbles to the top and the keyboard 'first item' is always the most
critical gate.

Adds priority/updated/due to the GateRow contract so the page server
component can sort and surface the priority rail.
@OriginalGary OriginalGary deleted the branch feat/cockpit-chrome May 8, 2026 04:24
@OriginalGary OriginalGary deleted the feat/cockpit-inbox-density branch May 8, 2026 04:25
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.

2 participants