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

Merged opened this

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

Merged

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

opened this

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-nav rows.
  • Each row is a single link to /alice/full/pulls/<n>.
  • An empty repository's pulls page has no data-nav at 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 test on the new test, help-keys.test.ts and pulls-list-timing.test.ts passes.
  • bun x tsc --noEmit is clean.
  • I did not run design-lint, since src/web/ is untouched.
  • The 10 skipped tests in test/keys.test.ts (and its ssh-keygen notice) are because ssh-keygen is 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

Closes #10337

commented

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-nav rows.
  • Each row is a single link to /alice/full/pulls/<n>.
  • An empty repository's pulls page has no data-nav at 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 test on the new test, help-keys.test.ts and pulls-list-timing.test.ts passes.
  • bun x tsc --noEmit is clean.
  • I did not run design-lint, since src/web/ is untouched.
  • The 10 skipped tests in test/keys.test.ts (and its ssh-keygen notice) are because ssh-keygen is 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

Approved

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.

commented

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.).

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs