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

The reports list is keyboard-first: j/k move between rows, enter opens one #10366

Merged opened this

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

Merged

Each report row on `/reports` now carries `data-nav tabindex="-1"`, so `j`/`k` move between rows, and the empty page has none. The new `test/keys-reports-list.test.ts`, `test/keys.test.ts`, `test/help-keys.test.ts` and the reports timing test passed, with 10 skipped because `ssh-keygen` isn't installed here. `bun scripts/design-lint.ts` is clean and `bun x tsc --noEmit` printed no errors. I didn't…

shipped production is serving it deploy abf00b0

opened this

Each report row on /reports now carries data-nav tabindex="-1", so j/k move between rows, and the empty page has none. The new test/keys-reports-list.test.ts, test/keys.test.ts, test/help-keys.test.ts and the reports timing test passed, with 10 skipped because ssh-keygen isn't installed here. bun scripts/design-lint.ts is clean and bun x tsc --noEmit printed no errors. I didn't run the new test against the old code to see it fail, though without the change the page has no data-nav and the assertion for three would fail.

The change is one line in src/web/pages/reports.ts, passing nav: true to the row.

  • Enter doesn't open a page: a report has no page of its own, because each row is a fold (a <details> with a <summary>). Enter on the focused row opens or closes that report's fold natively, rather than following a link. The forms inside stay reachable by tab. The test therefore asserts one data-nav summary per row, and no nested data-nav, instead of a link to each row's page.
  • No new JavaScript: I didn't add any.
  • Hook-required commit: the pre-push hook asked for a "Try:" commit message, so I added an empty "Try:" commit.

To try it, sign in, open /<owner>/<repo>/reports on a repo with waiting reports, and press j/k, then Enter.

🤖 Generated with Claude Code

Closes #10355

commented

The reports list now moves between rows with j/k, and I've pushed again to get a fresh preview. I haven't confirmed the preview deploys.

I found nothing in the code to fix. The deploy log you sent ends with the forge draining on SIGTERM and "no tests declared, none run", with no error from this change. The change itself is small: nav: true on each report row in src/web/pages/reports.ts.

What I checked locally before pushing:

  • bun scripts/gate.ts passed.
  • bun x tsc --noEmit was clean.
  • test/keys-reports-list.test.ts passed, both tests.

Between those checks and the push I merged main into the branch (no rebase, since force-pushing is refused). I ran tsc and that test file again after the merge and they were still clean, but I didn't re-run the gate.

If the preview fails again, the cause is in the deploy. Look at why it reports "no tests declared": forge.json has no app-level test command, and I didn't change it.

Pull description

The reports list (/<owner>/<repo>/reports) is keyboard-first. Each report row is a data-nav summary, so the shell's j/k traversal moves between rows and enter opens one. The empty list draws no data-nav. The change is one line in src/web/pages/reports.ts, plus test/keys-reports-list.test.ts, which checks that three reports give three nav rows and an empty list gives none.

I added no new JavaScript and no dependencies. To try it, open a repository's /reports page and press j and k.

🤖 Generated with Claude Code

commented

The failing check came from main, not from the reports change, and merging main into the branch fixes it. I've pushed the merge as 52274eedb.

My branch changes only src/web/pages/reports.ts and adds test/keys-reports-list.test.ts. The repository page, which the budget test measures, was over its first-view budget (197 words and 29 blocks, against 189 and 28) because the branch was behind main. main has since updated the budget in docs/design/attention-budget.json. After the merge the page measures 197 words and 29 blocks, against budgets of 197 and 29.

I re-ran only test/attention.test.ts and test/keys-reports-list.test.ts, and both pass. bun x tsc --noEmit is clean. I did not run the full suite, scripts/gate.ts or scripts/design-lint.ts; the forge's check will cover the rest on this push.

What the pull does: the reports list takes j and k to move between rows.

What I left out: nothing new in this fix.

To try it: open a repository's /reports page and press j and k.

Approved

Clean one-line change using the existing nav option; each report row is a fold summary with data-nav, empty list has none. Test fails without the change and no new markup, JS or dependency. Enter on a focused summary toggles the fold (reports have no page of their own), so the test rightly checks summaries rather than links.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs