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

A spawned forge's first-login next steps speak the home page's language #9846

Merged opened this

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

Merged

The first-login next steps are now one plain section: an `<h2>Your next steps</h2>` and an `<ol>` of the steps, with no `card(` or `card-body` left in `src/web/pages/next-steps.ts`. I haven't been able to try it in a running app; I ran only the two next-steps test files (11 tests pass), plus `bun x tsc --noEmit` and `bun scripts/design-lint.ts`, both clean. I did not run `bun scripts/gate.ts` or t…

shipped production is serving it deploy d43c707

opened this

The first-login next steps are now one plain section: an <h2>Your next steps</h2> and an <ol> of the steps, with no card( or card-body left in src/web/pages/next-steps.ts. I haven't been able to try it in a running app; I ran only the two next-steps test files (11 tests pass), plus bun x tsc --noEmit and bun scripts/design-lint.ts, both clean. I did not run bun scripts/gate.ts or the rest of the suite.

What moved: the card() wrapper and the per-step <ul class="list"> plus .card-body block are replaced by one <section id="next-steps">. Each step is an <li> that keeps its data-step, data-done and data-primary attributes. The primary step is still bold, and a done step still shows the check icon and the "Done" badge. Each step's body (the everyday form, the app buttons, "Tell the crew" → #composer) now sits inside its <li>.

Unchanged: core/next-steps.ts, which steps show and when they count as done. The "your crew is at work" lines still appear above the list.

Test: test/next-steps-card.test.ts gains "the steps are one plain section, not boxed in cards". It asserts there is no class="card and no card-body in the section, that it holds an <ol>, and that all three steps are still listed. It would fail on main, but I didn't run it there.

New classes: none. I left the existing ones as they were and added nothing to docs/design/areas/home.md.

Closes #9837

commented

The first-login next steps are now one plain section: an <h2>Your next steps</h2> and an <ol> of the steps, with no card( or card-body left in src/web/pages/next-steps.ts. I haven't been able to try it in a running app; I ran only the two next-steps test files (11 tests pass), plus bun x tsc --noEmit and bun scripts/design-lint.ts, both clean. I did not run bun scripts/gate.ts or the rest of the suite.

What moved: the card() wrapper and the per-step <ul class="list"> plus .card-body block are replaced by one <section id="next-steps">. Each step is an <li> that keeps its data-step, data-done and data-primary attributes. The primary step is still bold, and a done step still shows the check icon and the "Done" badge. Each step's body (the everyday form, the app buttons, "Tell the crew" → #composer) now sits inside its <li>.

Unchanged: core/next-steps.ts, which steps show and when they count as done. The "your crew is at work" lines still appear above the list.

Test: test/next-steps-card.test.ts gains "the steps are one plain section, not boxed in cards". It asserts there is no class="card and no card-body in the section, that it holds an <ol>, and that all three steps are still listed. It would fail on main, but I didn't run it there.

New classes: none. I left the existing ones as they were and added nothing to docs/design/areas/home.md.

commented

The gate failed because no commit message had a "Try:" line, so I added an empty commit that has one. bun scripts/gate.ts now prints nothing and the push went through. I didn't re-run the tests, because nothing in the code changed since they last passed; the forge's check on this push will show whether the gate is now green.

The line reads: "Try: open the preview's / as the claimed owner of a spawned forge and read the Your next steps list".

The pull itself is unchanged: the first-login next steps are one plain section (a heading and an ordered list), with the new test in test/next-steps-card.test.ts.

Try it: open the preview's / as the claimed owner of a spawned forge. The steps show as a plain list with no cards, and done steps still carry the check and "Done".

commented

The failing test was test/first-login.test.ts, which still expected the old <div class="card-body"> around a pending step's body. I changed that one assertion to look for the step's <li data-step="everyday"> followed by its <p class="muted small">. The test was wrong about the markup; the page code is unchanged.

test/first-login.test.ts and test/next-steps-card.test.ts now pass together (14 tests). I did not re-run the rest of the suite; the forge's check does that on this push.

The commit message carries a "Try:" line, as the gate requires.

Try it: open / on the preview as the claimed owner of a spawned forge and read "Your next steps".

Changes requested — before the latest push

The cards are gone and the tests are honest, but the result has no layout of its own. base.ts:242 sets ul, ol { list-style: none; padding: 0 }, so the new <ol> shows no numbers, and each <li> holds the check icon, title, Done badge and body (a form or buttons) as inline siblings with no rhythm. Fix first: give the steps real structure using existing tokens/components, not a new box. Render each step as a row() (title, Done trail) followed by its body with spacing, in a ul.list as before, or give the li a flex-column with a gap token. Make the body a block under the title, not run-on inline. Keep it borderless (principles 3, 6, 7). If you add any class, document it in docs/design/areas/home.md. Also: the bold primary step is carried only by <b>; keep one accent for the primary action. Add a test that a pending step body is not in the same inline run as the title, or at least that data-primary is on the right li. Also run bun scripts/gate.ts and check the preview as the owner of a spawned forge; the pull was never seen running.

commented

The next steps now have real structure, and the card boxes are still gone. bun scripts/gate.ts, bun x tsc --noEmit and bun scripts/design-lint.ts are clean, and the 19 tests in the three next-steps test files pass. I haven't seen it running as the owner of a spawned forge. I can only reach the preview after the push, and that sandbox can't claim a forge, so please look at it there.

  • Layout: each step is a row() again, in a ul.list like the crew lines above it, with the title and the Done badge as its trail. I dropped the <ol> and the inline <li>, so there are no missing numbers and no run-on siblings. The check icon is the row's lead, as before.
  • Body: a pending step's form, app buttons or "Tell the crew" button now sits in a div.step-body under its row, not beside the title. It is borderless and has no box.
  • New class: .step-body in src/web/style/content.ts has padding on the 4px scale: 44px on the left to clear the icon, 16px on a phone. It is documented in docs/design/areas/home.md.
  • Primary step: it is still marked by data-primary and a bold title. The accent is the one variant="primary" button inside its body. I kept the bold title as the second cue and did not add a second accent.
  • Tests: test/next-steps-card.test.ts now asserts that the body is a step-body block right after the step's </ul>. It also asserts that exactly one data-primary exists and that it is on the everyday step. I updated the test/first-login.test.ts assertion to match.
Approved

Clean on security: no new input, no new write path, output still escaped through html``. The cards are gone, each step is a row() with its Done badge, a pending body is a borderless .step-body block under its row, and the one accent is the primary button. The new class is documented in docs/design/areas/home.md, not DESIGN.md. The tests assert no card/card-body, all three steps listed, and a single data-primary on everyday. Not verified in the preview: claiming a spawned forge is not possible from here. Nit for later: each step gets its own ul.list rather than one list, so the steps are not one ordered list for assistive tech.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs