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

The terminal's Adapter screen lists the last pull runs #10155

Merged opened this

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

Merged

The Adapter screen now lists the last pull runs below its facts. This was already done and pushed in `d76c0386`, and I changed nothing this run. `tsc --noEmit` is clean and `test/adapter-tui.test.ts` passes (5 tests). I did not run `scripts/gate.ts`, and I did not run `scripts/design-lint.ts` either (the change is under `src/tui`, not `src/web`).

shipped production is serving it deploy 2937aef

opened this

The Adapter screen now lists the last pull runs below its facts. This was already done and pushed in d76c0386, and I changed nothing this run. tsc --noEmit is clean and test/adapter-tui.test.ts passes (5 tests). I did not run scripts/gate.ts, and I did not run scripts/design-lint.ts either (the change is under src/tui, not src/web).

  • Runs list: src/tui/screens/adapter.ts reads the runs through pullRunLines. Each line shows when, state, the written/skipped/failed counts, and the error of a failed run, clipped to the width. j/k scroll when the list overflows.
  • Gate: the runs sit behind the same read gate as the facts. They are only read once the app record is found and shown after the facts load. runsOf is injectable, like facts, so tests don't need a git repository.
  • Tests: test/adapter-tui.test.ts renders the screen with a good run and a failed run, and with none.

I made no change to the pull API and added no dependency.

To try it, open an app's Adapter screen in the terminal and press j/k when the runs overflow.

🤖 Generated with Claude Code

Closes #10128

commented

The Adapter screen now lists the last pull runs below its facts. This was already done and pushed in d76c0386, and I changed nothing this run. tsc --noEmit is clean and test/adapter-tui.test.ts passes (5 tests). I did not run scripts/gate.ts, and I did not run scripts/design-lint.ts either (the change is under src/tui, not src/web).

  • Runs list: src/tui/screens/adapter.ts reads the runs through pullRunLines. Each line shows when, state, the written/skipped/failed counts, and the error of a failed run, clipped to the width. j/k scroll when the list overflows.
  • Gate: the runs sit behind the same read gate as the facts. They are only read once the app record is found and shown after the facts load. runsOf is injectable, like facts, so tests don't need a git repository.
  • Tests: test/adapter-tui.test.ts renders the screen with a good run and a failed run, and with none.

I made no change to the pull API and added no dependency.

To try it, open an app's Adapter screen in the terminal and press j/k when the runs overflow.

🤖 Generated with Claude Code

commented

I merged main into the branch and pushed it; the src/tui/screens/adapter.ts conflict is resolved. tsc --noEmit is clean and test/adapter-tui.test.ts passes (8 tests). I did not run scripts/gate.ts or the rest of the suite.

What the conflict was. While this pull waited, main landed #10150 and #10146. Between them the Adapter screen already lists the last ten runs, under a "Pull runs" row, and has the p key to pull now. So main already did most of this issue, in a different way from my first version.

What I kept.

  • I dropped my own pullRunLines list, its "Last pulls" heading and my two render tests, because they duplicated main.
  • From main I kept the "Pull runs" row, the "No pulls yet" wording and the p key.
  • The only thing main lacked was j/k scrolling. The run rows now sit below the facts and scroll with j/k when they overflow, and the facts stay where they are.
  • Each run line is clipped to the width. Anyone who can't read the facts still sees nothing.
  • A new test renders ten runs on a short screen. It presses j three times and checks the first run has scrolled out while the facts remain.

What I left out. j/k is not listed in the key bar, because main's tests require a reader to see no keys there. The keys work but are only discoverable through the terminal's help.

To try it, open an adapter app's Adapter screen in the terminal with more runs than fit, and press j/k.

🤖 Generated with Claude Code

commented

The gate failed because no commit on the pull had a Try: line. I pushed an empty commit with one. No code changed, so I didn't re-run the gate, type check or tests, and the forge's check on the new push will be the first to confirm the gate now passes.

What the pull does: The terminal's Adapter screen lists the adapter's last pull runs below its facts. The runs scroll with j/k.

Try: Open the preview's terminal, go to an adapter's Adapter screen, and scroll its last pull runs with j/k.

Approved

Small and in the pattern: the run rows move below the facts and scroll with the shared Scroll/drawLines; the gate is untouched (rows stay undefined for anyone who cannot read the facts, so j/k does nothing for them). Next two things: (1) add j/k to the key bar and to docs/features/adapters-card.md so scrolling can be found; the key bar test for readers can stay by showing them only when runs overflow and rows are read. (2) key() returns true for j/k even when the runs are hidden (facts fill the area) or empty; return false then so the keys fall through to the global handler.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs