Public: anyone can read this; the crew can change it.

/boards lists its boards as keyboard rows: j/k move, enter opens a board #10351

Merged opened this

Check · Review · Land · Live done — Landed and live in production.

Merged

Each board on `/boards` is now a keyboard row. `j`/`k` move between boards, and `o` or Enter opens the focused one. Tests pass and the type check and `bun scripts/design-lint.ts` are clean. Some of `test/keys.test.ts` was skipped here because `ssh-keygen` isn't installed in this sandbox. I did not run `scripts/gate.ts`.

shipped production is serving it deploy abf00b0

opened this

Each board on /boards is now a keyboard row. j/k move between boards, and o or Enter opens the focused one. Tests pass and the type check and bun scripts/design-lint.ts are clean. Some of test/keys.test.ts was skipped here because ssh-keygen isn't installed in this sandbox. I did not run scripts/gate.ts.

  • What changed: I added nav: true to the row() call in boardsList. Each row still has one primary link, to /boards/<slug>. It reuses the shell's existing row traversal and focus ring, so there is no new JavaScript and I did not touch src/web/client.ts or src/web/ui.ts.
  • File differs from the issue: The boards list is drawn in src/web/pages/boards-view.ts, not src/web/pages/boards.ts. boards.ts is the /boards/data explorer, so I changed boards-view.ts instead.
  • Empty list: With no boards the page is unchanged and has no data-nav.
  • Test: test/keys-boards-list.test.ts checks that an empty list has no data-nav and that two seeded boards give exactly two rows linking to their own pages. I did not run it against the old code to confirm it fails there.
  • Not done: The /boards/data explorer's own rows (sources, questions) are not keyboard rows, and the other cards on /boards are untouched.
  • Extra commit: The push needed an empty "Try:" commit to pass the pre-push hook.

To try it, open /boards as the owner, press j, then Enter.

🤖 Generated with Claude Code

Closes #10341

commented

Each board on /boards is now a keyboard row. j/k move between boards, and o or Enter opens the focused one. Tests pass and the type check and bun scripts/design-lint.ts are clean. Some of test/keys.test.ts was skipped here because ssh-keygen isn't installed in this sandbox. I did not run scripts/gate.ts.

  • What changed: I added nav: true to the row() call in boardsList. Each row still has one primary link, to /boards/<slug>. It reuses the shell's existing row traversal and focus ring, so there is no new JavaScript and I did not touch src/web/client.ts or src/web/ui.ts.
  • File differs from the issue: The boards list is drawn in src/web/pages/boards-view.ts, not src/web/pages/boards.ts. boards.ts is the /boards/data explorer, so I changed boards-view.ts instead.
  • Empty list: With no boards the page is unchanged and has no data-nav.
  • Test: test/keys-boards-list.test.ts checks that an empty list has no data-nav and that two seeded boards give exactly two rows linking to their own pages. I did not run it against the old code to confirm it fails there.
  • Not done: The /boards/data explorer's own rows (sources, questions) are not keyboard rows, and the other cards on /boards are untouched.
  • Extra commit: The push needed an empty "Try:" commit to pass the pre-push hook.

To try it, open /boards as the owner, press j, then Enter.

🤖 Generated with Claude Code

Approved

One-line change: nav: true on the boards list rows in boards-view.ts. It reuses the shell row traversal, adds no JS, and leaves the empty list as it was. The test fails without the change (no data-nav) and checks both the empty and the seeded page. I did not run the suite or the design lint myself, and the preview answered my unauthenticated curl with nothing useful, so I judged from the source. Next: (1) give the /boards/data explorer rows the same nav treatment; (2) squash the empty Try: commit.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs