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

/agents answers at first sight: the make-my-forge form and three steps, with the long how-to behind one `?` #11078

Merged opened this

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

Merged

`/agents` now shows the Make my forge form and three steps first, with the whole guide behind a `?` disclosure. The before/after light and dark looks are not on this pull: the sandbox can't take screenshots, so those still need doing from a preview. `tsc`, `bun scripts/design-lint.ts` and the four `agents*` test files pass. I did not run the full suite or the phone-width check.

shipped production is serving it deploy 2937aef

opened this

/agents now shows the Make my forge form and three steps first, with the whole guide behind a ? disclosure. The before/after light and dark looks are not on this pull: the sandbox can't take screenshots, so those still need doing from a preview. tsc, bun scripts/design-lint.ts and the four agents* test files pass. I did not run the full suite or the phone-width check.

What changed in src/web/pages/agents.ts:

  • Above the fold: a one-line subtitle, the form, and three one-line steps:

- Start an app by POSTing to /api/v1/start. - Clone what it returns and push to main. - Give the claim link to the person who takes it over.

  • Behind the ?: a single <details id="agents-more"> holds the full llms.txt text unchanged, rendered from the same llmsBody source as before. Every section heading is still there, with the curl examples and the claim, sleep and account rules, plus a link to /llms.txt.
  • Removed: the free-within-limits note and the long subtitle. The note's words are still in /llms.txt, inside the disclosure.
  • /llms.txt itself is untouched.

New test in test/agents-page.test.ts: it checks for exactly one <details>, the form and three <li> outside it, at most one note-class element and at most 80 visible words outside it. It also checks that the guide with its curl examples and the /llms.txt link sits inside the disclosure. I found no existing #10998 test to copy, so this follows the issue's description.

Not done: no new CSS class. The disclosure uses existing button styles and the existing prose styling.

To try it: open /agents on the preview and tap ?.

🤖 Generated with Claude Code

Closes #11068

commented

/agents now shows the Make my forge form and three steps first, with the whole guide behind a ? disclosure. The before/after light and dark looks are not on this pull: the sandbox can't take screenshots, so those still need doing from a preview. tsc, bun scripts/design-lint.ts and the four agents* test files pass. I did not run the full suite or the phone-width check.

What changed in src/web/pages/agents.ts:

  • Above the fold: a one-line subtitle, the form, and three one-line steps:

- Start an app by POSTing to /api/v1/start. - Clone what it returns and push to main. - Give the claim link to the person who takes it over.

  • Behind the ?: a single <details id="agents-more"> holds the full llms.txt text unchanged, rendered from the same llmsBody source as before. Every section heading is still there, with the curl examples and the claim, sleep and account rules, plus a link to /llms.txt.
  • Removed: the free-within-limits note and the long subtitle. The note's words are still in /llms.txt, inside the disclosure.
  • /llms.txt itself is untouched.

New test in test/agents-page.test.ts: it checks for exactly one <details>, the form and three <li> outside it, at most one note-class element and at most 80 visible words outside it. It also checks that the guide with its curl examples and the /llms.txt link sits inside the disclosure. I found no existing #10998 test to copy, so this follows the issue's description.

Not done: no new CSS class. The disclosure uses existing button styles and the existing prose styling.

To try it: open /agents on the preview and tap ?.

🤖 Generated with Claude Code

Changes requested — before the latest push

Direction is right and the structure works on the preview, but one box is unmet and the test is looser than the issue asks. Fix first: post before/after looks (light and dark, 360 px) on the pull; box 4 requires them and the sandbox excuse does not meet it (take them from the preview). Then: (1) the three steps restate llms.txt in hand-written copy, so the page explains itself twice; (2) tighten the test so it fails on a regression: it allows one note-class element when the page now has none, and the 80-word ceiling is far above the real count; (3) the test does not check that /llms.txt is unchanged, word for word. No security, TUI or README issues found: the change is a read-only page with no new input.

commented

Four of the five review points are fixed and pushed; the before/after looks (light and dark, 360 px) are still missing. Chromium here won't start (it can't create its user-data directory), and the preview doesn't carry this push yet. Someone needs to capture them from the preview once it deploys. tsc, bun scripts/design-lint.ts and the four agents* test files pass. I did not run the full suite or the phone-width check.

  • Steps no longer hand-written. The three steps now come from the first three "Start here" bullets of the llms text, each cut at its first colon (new stepNames). They read "Build now, no account", "Or with an account" and "Get your own forge", so they can't drift from the guide.
  • Numbers. Global CSS strips list markers, so each item carries its own 1., 2., 3..
  • Disclosure. It now uses the disclosure helper from ui.ts instead of a hand-styled btn summary. That helper has a 44px minimum height. I did not check its focus ring on a phone. The label reads "? Full guide", so it can be found without the ?.
  • Link above the fold. The /llms.txt link is back in the visible subtitle.
  • Test.

- Exactly one note-class element outside the disclosure, the subtitle, matched by class token on any tag. I did not set it to 0 as asked, because the page head's subtitle (page-head-sub muted small) is itself a note-class element and is the one line saying what the page is. - At most 45 visible words outside the disclosure. - The steps are checked against the guide's own words. - The disclosure holds every section heading and the curl examples. - /llms.txt is fetched twice and is identical.

  • /llms.txt unchanged. I did not touch standards.ts. The test checks only that two fetches match and that the text starts # forge at , so a changed word would not fail it.

🤖 Generated with Claude Code

Changes requested — before the latest push

Fix first: box 4 needs before/after looks (light and dark, 360 px) on the pull, taken from the preview, which is up at this head. Then, all in one round: (1) the steps are bare titles, not a line an assistant can act on; (2) the disclosure's aria-label hides its visible text; (3) the test does not prove /llms.txt is word for word unchanged, and the notes ceiling (principle 1: one sentence) is still loose. Works without JS (details/form), no security or TUI issue (read-only page, no new input), no README change. Design lint reported clean by the builder.

commented

I've made all four of the review's changes and pushed them. The looks are still missing: I couldn't take the before and after pictures from here, so a person has to attach them.

Changes in src/web/pages/agents.ts:

  • The steps are now actions, not headings. A new function, firstSteps, takes the first three sentences of the guide's first "Start here" bullet (the no-account path):

1. the curl -sX POST …/api/v1/start -d '{"name":"my-app"}' command; 2. "Clone git.url (user:token@), git push to main: app.url is live"; 3. "Give claim.url to the person who takes it over".

They come from the guide's own text, so the page and the guide can't drift apart. stepNames and the hand-written "1." are removed. The <ol> now sits inside the existing .prose break classes, which give it real numbers and let the long curl line wrap at 360 px. No new class was added.

  • The disclosure's name is its visible text. The summary is <summary>? Full guide</summary> with no aria-label (WCAG 2.5.3).
  • The subtitle says one thing: "What this forge is. Plain text: /llms.txt".
  • The guide inside the disclosure is rendered by a small exported function, guideHtml(body), so the test can render the same thing.

Changes in test/agents-page.test.ts:

  • The only note-class element above the disclosure must be the page head's subtitle (["page-head-sub muted small"]), so adding a second note fails. The search found no shared helper from #10998, so it keeps the same class-token count inline.
  • Visible words above the disclosure must be at most WORDS_CEILING = 56; the page measures 52 today.
  • The steps must be three <li> in an <ol> inside .prose, with no hand-written numbers. Each one must carry the guide's own sentence.
  • The summary must have no aria-label.
  • The disclosure must contain guideHtml(/llms.txt) exactly, so a changed word in the guide fails. Three sentences are also checked in both /llms.txt and the disclosure: the claim and 7-day/30-day rule, "free within limits", and the sleep / bring-your-own-credential note.
  • A unit test pins what firstSteps returns.

/llms.txt itself (src/web/standards.ts) is untouched by this pull.

Looks (box 4): these are still missing.

  • An agent can't attach looks: POST …/pulls/:n/looks is for writers who are people.
  • The preview's own pictures only cover app.looks. That list is already at its limit of 24 pages and doesn't include /agents. Adding it would mean dropping a page from production's pictures, which this pull shouldn't decide.
  • Taking the pictures here also failed: headless Chromium couldn't start in my sandbox because it needs a unix socket, which is blocked.

So a writer needs to attach the light and dark 360 px pictures from https://lab--11078--forge-trevato-apps.open-platform.sh/agents, with production's /agents as the before.

Checks run:

  • bun scripts/gate.ts, bun x tsc --noEmit and bun scripts/design-lint.ts are clean.
  • These tests pass: test/agents-page.test.ts, agents-etag, agents-page-language, public-head, landing and forge-looks.
  • scripts/fast.ts named 1,562 test files, too many to run here; the forge's check runs the rest.

To try it: open /agents on the preview at a 360 px width. Above the fold you should see the subtitle, the Make my forge form and three numbered, actionable steps. Opening ? Full guide shows /llms.txt word for word.

🤖 Generated with Claude Code

Approved

Earlier asks: steps now come from the guide's own first Start-here bullet via firstSteps, so nothing is restated by hand (met); the test counts note-class elements by class token and pins the only one as the page-head subtitle, with a 56-word ceiling against a real count of about 52 (met); the disclosure must contain guideHtml(/llms.txt) exactly plus three pinned sentences, so a changed word fails (met). The summary has no aria-label. On the preview: subtitle, form, a real numbered ol of three steps, one details with the whole guide, JS-off safe, no new CSS class. Not met: before/after looks (box 4) are still not on the pull; an agent cannot attach them, so a person should capture /agents at 360px light and dark. Next, two things: (1) Non-blocking: step 1 carries the long response shape -> {user, token, repo, git, app, claim}; cut it at the arrow so the step is one line at 360px. (2) Non-blocking: add /agents to the preview looks list when a slot frees up.

commented

Left #11068 open: 1 unticked item remain (Looks before and after, light and dark, on the pull; bun scripts/design-lint.ts is clean.).

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs