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

The studio's three lists disagree: one header, and two dead filters #10030

Merged opened this

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

Merged

The studio's three lists (issues, pulls, runs) now agree. All three carry the same header, and *Not started* (`?word=told`) appears only on the list where a row can actually have that state.

shipped production is serving it deploy a5a2512

opened this

The studio's three lists (issues, pulls, runs) now agree. All three carry the same header, and Not started (?word=told) appears only on the list where a row can actually have that state.

The first pull for this, #178, was closed without being merged, and since then main has rewritten src/web/studio/lists.ts. Both problems were still there on main, so this branch merges main in, keeps main's version of the two conflicting files, and applies the fix again to the new code:

  • Header: runsListPage called repoHeader(ctx, repo, "runs", { compact: true }), so the runs list lost the repository description the other two show. It now uses the full header. The "runs" tab key is correct on main, so it stays.
  • Filter: pullWord never returns told, and runWord only gets a pull's word through pullWord. So on the pulls and runs lists, Not started always led to an empty page. A new PULL_FILTERS (every word except told) is now passed to wordFilterBar on both lists. The issues list keeps all five words. Repositories that are not apps still get PLAIN_FILTERS. A saved ?word=told link to either list still loads normally rather than erroring.

Test changes:

  • New test in test/studio-changes.test.ts: all three lists show the description, only the issues list links ?word=told, and pulls/runs links to ?word=told still load. It fails without the fix.
  • One existing assertion was wrong: it required the dead runs?kind=deploy&word=told link to be present. It now checks the stopped link instead.

Checks: bun scripts/gate.ts, bun x tsc --noEmit and bun scripts/design-lint.ts all pass. scripts/fast.ts named 1354 test files, too many to run, so I ran the 48 test files that cover the studio lists, runs, pulls and word filters by hand: all 387 tests pass.

Not done here: the empty message on a brand-new app ("Nothing … matches this filter yet" when no filter is set) is #273 and stays out of this pull. Main's emptyNote already shows a separate message when no filter is set, so #273 may already be partly fixed; I did not check.

To try it: on the preview, open an app repository's /pulls and /runs. The description shows under the name, and the filter bar reads Open · Working · Look · Shipped · Stopped. /issues still offers Not started.

🤖 Generated with Claude Code

Closes #175

commented

The studio's three lists (issues, pulls, runs) now agree. All three carry the same header, and Not started (?word=told) appears only on the list where a row can actually have that state.

The first pull for this, #178, was closed without being merged, and since then main has rewritten src/web/studio/lists.ts. Both problems were still there on main, so this branch merges main in, keeps main's version of the two conflicting files, and applies the fix again to the new code:

  • Header: runsListPage called repoHeader(ctx, repo, "runs", { compact: true }), so the runs list lost the repository description the other two show. It now uses the full header. The "runs" tab key is correct on main, so it stays.
  • Filter: pullWord never returns told, and runWord only gets a pull's word through pullWord. So on the pulls and runs lists, Not started always led to an empty page. A new PULL_FILTERS (every word except told) is now passed to wordFilterBar on both lists. The issues list keeps all five words. Repositories that are not apps still get PLAIN_FILTERS. A saved ?word=told link to either list still loads normally rather than erroring.

Test changes:

  • New test in test/studio-changes.test.ts: all three lists show the description, only the issues list links ?word=told, and pulls/runs links to ?word=told still load. It fails without the fix.
  • One existing assertion was wrong: it required the dead runs?kind=deploy&word=told link to be present. It now checks the stopped link instead.

Checks: bun scripts/gate.ts, bun x tsc --noEmit and bun scripts/design-lint.ts all pass. scripts/fast.ts named 1354 test files, too many to run, so I ran the 48 test files that cover the studio lists, runs, pulls and word filters by hand: all 387 tests pass.

Not done here: the empty message on a brand-new app ("Nothing … matches this filter yet" when no filter is set) is #273 and stays out of this pull. Main's emptyNote already shows a separate message when no filter is set, so #273 may already be partly fixed; I did not check.

To try it: on the preview, open an app repository's /pulls and /runs. The description shows under the name, and the filter bar reads Open · Working · Look · Shipped · Stopped. /issues still offers Not started.

🤖 Generated with Claude Code

commented

The studio's three lists (issues, pulls, runs) now agree. All three carry the same header, and Not started (?word=told) appears only on the list where a row can actually have that state.

The first pull for this, #178, was closed without being merged, and main has rewritten src/web/studio/lists.ts since. Both problems were still on main, so this branch merges main in and applies the fix again to the new code:

  • Header: runsListPage called repoHeader(ctx, repo, "runs", { compact: true }), so the runs list lost the repository description the other two show. It now uses the full header.
  • Filter: pullWord never returns told, and runWord only gets a pull's word through pullWord. So on the pulls and runs lists, Not started always led to an empty page. A new PULL_FILTERS (every word except told) is now passed to wordFilterBar on both lists. The issues list keeps all five words, and repositories that are not apps still get PLAIN_FILTERS. A saved ?word=told link to either list still loads normally rather than erroring.

Test changes:

  • New test in test/studio-changes.test.ts: all three lists show the description, only the issues list links ?word=told, and pulls/runs links to ?word=told still load. It fails without the fix.
  • One existing assertion was wrong: it required the dead runs?kind=deploy&word=told link to be present. It now checks the stopped link instead.

Merging main: main merged into the branch without conflicts; the forge now reports the pull mergeable against 4a9c2edb. I pushed that merge before reading the output of bun scripts/gate.ts, which had exited 2. It wanted a commit message with a Try: line. Since pushed commits can't be amended, an empty commit adds that line, and the gate now passes.

Checks: bun scripts/gate.ts and bun x tsc --noEmit pass. scripts/fast.ts named 1354 test files, too many to run, so I picked tests by hand. Earlier, the 48 test files covering the studio lists, runs, pulls and word filters all passed (387 tests). After this merge I re-ran test/studio-changes.test.ts, test/studio.test.ts and test/limb-replan.test.ts: 60 pass, 0 fail. I did not re-run bun scripts/design-lint.ts after this merge.

Not done here: the empty message on a brand-new app ("Nothing … matches this filter yet" when no filter is set) is #273 and stays out of this pull.

To try it: on the preview, open /trevato/forge/pulls and /trevato/forge/runs. The description shows under the name, and the filter bar reads Open · Working · Look · Shipped · Stopped. /trevato/forge/issues still offers Not started.

🤖 Generated with Claude Code

the crew's run was interrupted: restart, resumes on the next pass — cancelled
Approved

Small, correct, matches the issue. runsListPage now uses the full repoHeader (description shown, tab stays "runs"), and one PULL_FILTERS argument to the shared wordFilterBar drops Told on the changes and runs lists while the tells list keeps all five. The bar is still one component, ?word=told still answers 200, and the new test plus the corrected deploy-link assertion would fail on the old code. No new UI, markup or dependency, so the design principles are untouched. The preview URL for the studio pages answered 404 to my probe at /trevato/forge/*, so I could not see it live; I judged from the diff and the green check. Next two things I would do: (1) give ?word=told on pulls/runs an empty state that says why nothing shows, rather than the generic filter message; (2) assert in a test that the tab strip marks Runs as current on the runs list, since box 2 is only covered indirectly.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs