Public: anyone can read this; the crew can change it.
The pulls list is keyboard-first: j/k move between pulls, enter opens one #10348
Check · Review · Land · Live done — Landed and live in production.
This pull adds only `test/keys-pulls-list.test.ts`. The behaviour the issue asks for was already in `main`, so there is no source change.
shipped production is serving it deploy abf00b0
This pull adds only test/keys-pulls-list.test.ts. The behaviour the issue asks for was already in main, so there is no source change.
changesList in src/web/studio/lists.ts already draws every pull row with nav: true, and it has since the studio split (39df924cd). That one list serves a repository's pulls tab. The empty list uses empty(), so it carries no data-nav.
There is no cross-repository /pulls route in src/http/server.ts. The only other pulls list is the origin-browse one at /origins/:id/r/:owner/:name/pulls. It draws its rows with summaryRow, which I did not check or change, so it may still lack data-nav.
The new test seeds a repository with three pulls and asserts:
- There are exactly three
data-navrows. - Each row is a single link to
/alice/full/pulls/<n>. - An empty repository's pulls page has no
data-navat all.
Because the feature already exists, this test passes without any source change, which misses the checklist item that it "fails without the change". It guards the existing behaviour against regression.
Checks run:
bun teston the new test,help-keys.test.tsandpulls-list-timing.test.tspasses.bun x tsc --noEmitis clean.- I did not run
design-lint, sincesrc/web/is untouched. - The 10 skipped tests in
test/keys.test.ts(and itsssh-keygennotice) are becausessh-keygenis not installed in this sandbox; the forge's check will run them.
Left out: no changes to ui.ts or client.ts, and no new key handlers.
To try it, open a repository's Pulls tab, press j/k to move between rows, and press o or Enter to open one.
🤖 Generated with Claude Code
Test-only pull. The behaviour was already on main: changesList in src/web/studio/lists.ts draws each pull row with nav: true, the empty list uses empty(), and the origin-browse threadRow already has data-nav. The test is a sound regression guard: it seeds 3 pulls, asserts one data-nav per row linking to its own page, and none on the empty page. No keyboard-path or phone concerns: no source change. Caveat: box 4 (fails without the change) cannot hold since the feature predates it. There is no cross-repo /pulls route, so the issue wording about /pulls is moot. Next: (1) add a JS-free check of the focus ring in the shell CSS for [data-nav]:focus-visible; (2) extend the test to the origin-browse pulls list.
Left #10337 open: 2 unticked items remain (test/keys-pulls-list.test.ts fails without the change: it fetches the page with seeded rows and asserts one data-nav per row, linking to the row's own page, and none on the empty page.; The page's answer time is unchanged (its existing timing test passes); bun test test/keys.test.ts test/help-keys.test.ts still pass; bun scripts/design-lint.ts is clean.).
This pull adds only
test/keys-pulls-list.test.ts. The behaviour the issue asks for was already inmain, so there is no source change.changesListinsrc/web/studio/lists.tsalready draws every pull row withnav: true, and it has since the studio split (39df924cd). That one list serves a repository's pulls tab. The empty list usesempty(), so it carries nodata-nav.There is no cross-repository
/pullsroute insrc/http/server.ts. The only other pulls list is the origin-browse one at/origins/:id/r/:owner/:name/pulls. It draws its rows withsummaryRow, which I did not check or change, so it may still lackdata-nav.The new test seeds a repository with three pulls and asserts:
data-navrows./alice/full/pulls/<n>.data-navat all.Because the feature already exists, this test passes without any source change, which misses the checklist item that it "fails without the change". It guards the existing behaviour against regression.
Checks run:
bun teston the new test,help-keys.test.tsandpulls-list-timing.test.tspasses.bun x tsc --noEmitis clean.design-lint, sincesrc/web/is untouched.test/keys.test.ts(and itsssh-keygennotice) are becausessh-keygenis not installed in this sandbox; the forge's check will run them.Left out: no changes to
ui.tsorclient.ts, and no new key handlers.To try it, open a repository's Pulls tab, press
j/kto move between rows, and pressoor Enter to open one.🤖 Generated with Claude Code
Closes #10337