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

The next page at /:owner/:name/next speaks the home page's language #9783

Merged opened this

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

Merged

The next page now shows its ready steps as rows under headings instead of boxed cards with badges. I haven't looked at it in a browser. The 390 px phone check in `test/next-fit.test.ts` was skipped because no Chromium starts in this sandbox. The forge's check runs on this push.

shipped production is serving it deploy 3d07d6f

opened this

The next page now shows its ready steps as rows under headings instead of boxed cards with badges. I haven't looked at it in a browser. The 390 px phone check in test/next-fit.test.ts was skipped because no Chromium starts in this sandbox. The forge's check runs on this push.

What changed

  • src/web/pages/next.ts:

- The ranked list sits under a new <h2>Ready, in order</h2>. - The ranked list and the Not now list use the existing .card.bare style, so they sit on the page's one background with no frame. - Blocker and Enabler are plain text in each row's meta line instead of a badge, so the unused badge import is gone.

  • docs/design/areas/next-up.md: a short section describing the new shape. There is no new component class.
  • test/next-up.test.ts: a new test, "Next up page shape (#9764)", checks that the page source has no badge( call, no { pad: false } boxed card, and contains the <h2>. It reads the source rather than rendering the page, so it fails on the old markup but is a weaker check than a rendered one.

What I left alone

  • Each row still shows its issue number, who is on it, what it waits on, and its estimate.
  • Top, Up, Down and Not now are untouched POST forms with the same-origin check.
  • src/web/pages/next-steps.ts is unchanged.

How I checked

  • bun scripts/design-lint.ts and bun x tsc --noEmit are clean.
  • test/next-fit.test.ts, test/next-up.test.ts and test/next-steps-card.test.ts give 27 passes and 1 skip, with no failures.

To try it Open /:owner/:name/next on the preview.

🤖 Generated with Claude Code

Closes #9764

commented

The next page now shows its ready steps as rows under headings instead of boxed cards with badges. I haven't looked at it in a browser. The 390 px phone check in test/next-fit.test.ts was skipped because no Chromium starts in this sandbox. The forge's check runs on this push.

What changed

  • src/web/pages/next.ts:

- The ranked list sits under a new <h2>Ready, in order</h2>. - The ranked list and the Not now list use the existing .card.bare style, so they sit on the page's one background with no frame. - Blocker and Enabler are plain text in each row's meta line instead of a badge, so the unused badge import is gone.

  • docs/design/areas/next-up.md: a short section describing the new shape. There is no new component class.
  • test/next-up.test.ts: a new test, "Next up page shape (#9764)", checks that the page source has no badge( call, no { pad: false } boxed card, and contains the <h2>. It reads the source rather than rendering the page, so it fails on the old markup but is a weaker check than a rendered one.

What I left alone

  • Each row still shows its issue number, who is on it, what it waits on, and its estimate.
  • Top, Up, Down and Not now are untouched POST forms with the same-origin check.
  • src/web/pages/next-steps.ts is unchanged.

How I checked

  • bun scripts/design-lint.ts and bun x tsc --noEmit are clean.
  • test/next-fit.test.ts, test/next-up.test.ts and test/next-steps-card.test.ts give 27 passes and 1 skip, with no failures.

To try it Open /:owner/:name/next on the preview.

🤖 Generated with Claude Code

commented

The preview deploy log shows the app booted, answered, and finished with done. The "no tests declared, none run" note is about the app manifest, not a failure in this change. The real failure was bun scripts/gate.ts, which said the pull had no "Try:" line in any commit message.

I added an empty commit whose message has that line: open /preview-admin/sample/next and see the ready steps as rows under a heading. The gate now passes, and I pushed it. I did not re-run the three next-page test files, since only a commit message changed.

Pull description (unchanged otherwise): the next page now lists issues as rows under headings, not boxes and badges.

  • Ready list: it sits under a new "Ready, in order" heading.
  • Layout: both lists use .card.bare, with no frame.
  • Role label: Blocker or Enabler is plain meta text, not a badge.
  • What stayed the same: each row still names its issue, who is on it, and what it waits on. Top, Up, Down and Not now are still same-origin POST forms.
  • Docs and test: the area doc docs/design/areas/next-up.md has a short new section, with no new component class. A new test in test/next-up.test.ts checks the page source and fails on the old markup.
  • Not done: src/web/pages/next-steps.ts is untouched. The 390 px phone check in test/next-fit.test.ts was skipped because no Chromium starts here.

Try: open /preview-admin/sample/next on the preview.

🤖 Generated with Claude Code

Changes requested — before the latest push

One thing to fix first: the new test greps next.ts source instead of rendering the page, so box 3 is not met. Everything else in the markup change looks right: no new class, POST forms untouched, no security surface changed, and the preview serves the page.

To fix:

  1. Replace the source-grep test with one that renders nextPage on a seeded repo and asserts on the HTML: an <h2>Ready, in order</h2>, the list inside .card.bare, no badge element, each row naming #N, its role as plain text, and 'on it' / what it waits on, and Top/Up/Down/Not now still <form method="post">. It must fail on the old markup. Follow the render helpers already in test/next-up.test.ts and test/next-steps-card.test.ts.
  2. The 390 px fit check in test/next-fit.test.ts was skipped in the builder's sandbox and nobody has run it, so box 5 is unverified. Say in the pull whether the forge's check ran it.
commented

The next page's shape test now renders the page and asserts on the HTML, and it fails on the old markup. I swapped src/web/pages/next.ts back to its pre-#9764 version and the test went red. I restored the file afterwards. The only change since the last push is in test/next-up.test.ts; no source changed.

What changed

  • The test seeds a repo with three open issues:

- A blocker that another issue waits on. - An enabler that has bob assigned. - An issue that waits on the blocker and is ranked to the top.

  • It fetches /alice/shape/next as the owner and checks:

- Heading and list: <h2>Ready, in order</h2> is present, and the list sits directly inside .card.bare with no card-body padding wrapper. - No badges: no element carries a badge class. - Rows: there are three, and the first two read Blocker · #N and Enabler · #N as plain text. The estimate <span> that follows is not checked. - "On it" and "waits": the assigned row contains on it: bob, and the waiting row contains waits for #N. - Actions: Top, Up, Down and Not now are each inside <form method="post" action=".../next">, and no /next form lacks method="post".

  • The source-grep test and the typeof nextPage assertion are gone.

Checks run

  • bun test test/next-up.test.ts: 18 pass.
  • bun x tsc --noEmit and bun scripts/gate.ts: clean.

Box 5, the 390 px fit check

  • It is still unverified. test/next-fit.test.ts skips its chromium measurement in my sandbox ("no chromium that starts here"). The non-browser checks in that file pass.
  • I can't see whether the forge's check ran the measured part on the earlier push. The forge's check log on this push is the place to confirm it. If chromium is available there, it runs.

I made no other changes.

🤖 Generated with Claude Code

Changes requested — before the latest push

The markup change is in the right direction (no badge, POST forms untouched, rows still name issue, owner and blocker, no new class), but it only half-reaches the DESIGN.md principles. Fix in one round:

  1. (Principle 1, first fix) The page head is still three sentences that explain the page twice: 'The crew builds strictly from the top', the drag/keys instruction, 'Dependencies order work...', then a second muted paragraph (#next-week) restating the week, and a third under Not now. Cut to one confident sentence; move the key hints out of the lead (they belong beside the controls). The head is also hand-rolled div.page-head.mt instead of pageHead() from chrome.ts, which the issue's 'the home page's type' asks for. Not changed by this pull.
  2. (Principle 7) The list is still wrapped in card(..., {pad:false, extra:'bare'}). Render the <ul> directly under the <h2> so a list is rows, not a card in disguise; if the bare card is kept, say why in next-up.md.
  3. (Principle 3) Rows rely on setting-list hairlines between every row; check the rhythm at 390 px and prefer space over lines.
  4. Box 5 is unverified: the 390 px fit test was skipped in the builder's sandbox and the pull does not say whether the forge's check ran it, nor the statement budget of the warm page. State it in the pull description.
  5. Test: the 'no badge' regexes are fine, but add an assertion for the Not now section (?all=1), since it was also changed and is untested.
commented

The next page at /:owner/:name/next now follows the home page's design principles (from docs/DESIGN.md). The head is one sentence, both lists sit straight under their headings, and rows are separated by space instead of lines. The test renders the page, including ?all=1. All of this round's changes are in src/web/pages/next.ts, test/next-up.test.ts and docs/design/areas/next-up.md, with no new class.

  • Head (principle 1): the page uses pageHead("Next up", …) with one sentence: "The crew builds strictly from the top." These are gone:

- the hand-rolled div.page-head.mt - the drag/keys instructions and the "Dependencies order work…" sentence - the reader-only line - the muted paragraph under Not now

  • Footer line: one muted line after the list now holds the week's projection, its link, and, for someone who can write, the drag and j/k hint. Each button already shows its own key.
  • Rows, not cards (principle 7): <ul class="list setting-list" id="next-list"> comes directly after <h2>Ready, in order</h2>, with no card() wrapper, bare or otherwise. Not now gets the same treatment under its own <h2>.
  • Space, not lines (principle 3): without the bare card, the default .list lines between rows would come back. Rules scoped to [data-next] in NEXT_CSS turn them off and add a 4px gap. The dashed cut line stays because it marks where this week ends. No width rule was added.
  • Test: "Next up page shape" in test/next-up.test.ts renders the page and checks:

- the one-sentence pageHead - the <ul> directly after its <h2>, with no card inside [data-next] - the key hint placed after the list - no badges, and Blocker/Enabler as plain text alongside #N, "on it" and "waits for" - every move is a POST form - for ?all=1: Not now as rows under its <h2>, the old explainer gone, and a gated issue offering Top but not Up or Down

The test fails against the previous version of next.ts.

  • Checks: bun x tsc --noEmit, bun scripts/gate.ts and bun scripts/design-lint.ts are clean. 130 tests pass, 1 is skipped and none fail, across the next-up, next-fit, week, looks-owner, not-startable, design and statements suites. scripts/fast.ts named 1285 files, so I picked the suites that cover this page.
  • Not verified, 390 px phone fit: the chromium measurement in test/next-fit.test.ts is skipped here because no chromium starts in this sandbox. The CSS checks in that file pass. I can't see whether the forge's check ran the measurement on earlier pushes; its log on this push will show "measured at 390x844" if it did, or "SKIPPING" if it didn't.
  • Not verified, statement budget: no test sets a statement budget for /next, so I have no number for the warm page. This pull changes only markup and CSS, so it adds no queries.

To try it: open /preview-admin/sample/next on the preview while signed in as the owner, and add ?all=1 to see Not now.

🤖 Generated with Claude Code

Approved

All five earlier asks are met. (1) The head is now pageHead with one sentence, and the key hint sits after the list. (2) The ul sits straight under the h2 with no card. (3) Rows are spaced by a 4px gap, with no hairlines. (4) The test now covers ?all=1. (5) The builder says the 390px fit and statement budget could not be measured in their sandbox. design-lint passes, and next-up, next-fit and next-steps-card give 26 pass and 1 skip (the chromium measurement) here. The preview answers 200. POST forms and same-origin checks are untouched, no class is added, and the README is not touched. Non-blocking: the 390px chromium measurement is skipped here, so confirm "measured at 390x844" in the forge check log.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs