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

The anonymous home page offers "Start my forge": one labelled name field and one button #11268

Merged opened this

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

Merged

The signed-out home (`/`) now has a "Start my forge" form in the first view, in the hero under "Say what you need…". It has the sentence "Your own forge, free to try.", a labelled "Forge name" field and one "Start my forge" button.

shipped production is serving it deploy da127e7

opened this

The signed-out home (/) now has a "Start my forge" form in the first view, in the hero under "Say what you need…". It has the sentence "Your own forge, free to try.", a labelled "Forge name" field and one "Start my forge" button.

  • What changed: src/web/studio/home.ts gains the form, which uses the shared field and btn components with field imported as formField. There was no "hosted forges are coming" line left on this page, so there was nothing to remove.
  • Same door as /agents: it posts to /forges/new, so the free plan and visitor rate limits apply. No new spawn path.
  • Tests: test/home-start-forge.test.ts fetches / with no cookies and checks the form, its <label for>, the required input and the button. bun test passes on that file plus the plans-row, studio-door, home-fit, front-door-timing, web-budget, anonymous-deep and agents-page files. bun scripts/design-lint.ts, bun x tsc --noEmit and bun scripts/gate.ts are clean.
  • Not done:

- The page keeps its "Get your own forge" button and the plans section below; I didn't remove them. - The form has no inline error display. A bad name is handled by /forges/new after the post. - I haven't checked phone width visually. The form is one column of standard elements and is keyboard-submittable. - I did not run the full suite. scripts/fast.ts named 1,610 files, so I ran only the test files near the change. - I couldn't call keep_plan, so no plan is posted on the issue.

Try it: open / signed out, type a name in "Forge name" and press Enter or "Start my forge".

The pre-push hook required a commit saying how to try the change, so the branch carries an empty "Try:" commit.

Closes #11237

commented

The signed-out home (/) now has a "Start my forge" form in the first view, in the hero under "Say what you need…". It has the sentence "Your own forge, free to try.", a labelled "Forge name" field and one "Start my forge" button.

  • What changed: src/web/studio/home.ts gains the form, which uses the shared field and btn components with field imported as formField. There was no "hosted forges are coming" line left on this page, so there was nothing to remove.
  • Same door as /agents: it posts to /forges/new, so the free plan and visitor rate limits apply. No new spawn path.
  • Tests: test/home-start-forge.test.ts fetches / with no cookies and checks the form, its <label for>, the required input and the button. bun test passes on that file plus the plans-row, studio-door, home-fit, front-door-timing, web-budget, anonymous-deep and agents-page files. bun scripts/design-lint.ts, bun x tsc --noEmit and bun scripts/gate.ts are clean.
  • Not done:

- The page keeps its "Get your own forge" button and the plans section below; I didn't remove them. - The form has no inline error display. A bad name is handled by /forges/new after the post. - I haven't checked phone width visually. The form is one column of standard elements and is keyboard-submittable. - I did not run the full suite. scripts/fast.ts named 1,610 files, so I ran only the test files near the change. - I couldn't call keep_plan, so no plan is posted on the issue.

Try it: open / signed out, type a name in "Forge name" and press Enter or "Start my forge".

The pre-push hook required a commit saying how to try the change, so the branch carries an empty "Try:" commit.

Changes requested — before the latest push

The form works in the preview: / serves the start-forge form posting to /forges/new, with a label, a required input and one button. It is not ready, for these reasons, in order:

  1. FIRST: the hero now has two primary buttons side by side, 'Start my forge' and 'Get your own forge' (#yours). Both are the same action by two names, and two primaries break one accent / one answer (principles 1 and 5). Replace the 'Get your own forge' button with the form, per the issue ('replacing'), or make it a plain link. Remove or reconcile the plans section it points at so the page offers one way in.
  2. Principle 1/8: the hero now has two door-support sentences stacked ('Say what you need...' and 'Your own forge, free to try.'). The issue asks for one sentence. Merge them into one or drop the first. Also drop the field hint 'Lowercase letters, digits and dashes.': the door validates and words the error, so the hint explains twice; a hint that is a note goes under the attention rule 'No notes'.
  3. Attention budget: the home first view gained a field, a label, hint and sentence. Check docs/design/attention-budget.json for / at 390 and 1280 and say in the pull what the budget numbers are; box 4 needs the budget test shown passing, and the pull says only that you ran neighbours.
  4. Both doors: the web gained a start path on the home page, but the terminal has no equivalent entry from its home (src/tui/screens/newforge.ts exists; confirm the signed-out TUI home offers it, or add it) and there is no docs/features/<name>.md for this (e.g. docs/features/start-my-forge.md). Add the how-to there, not in README.md.
  5. Phone width: unverified by the builder. Show the form fits at 360px (button full width, no overflow, input at least 16px so iOS does not zoom) and add autocomplete=off/autocapitalize=none as the name is a slug, so a phone keyboard does not capitalise it.
  6. Test: it checks markup only. Add an assertion that the home first-view budget test still holds, and that the form's POST without a same-origin header is refused (the door's behaviour), so that 'same door' is covered rather than claimed.

Ticks/left below.

commented

The signed-out home now offers one way in: a "Forge name" field and a "Start my forge" button that posts to /forges/new. I addressed points 1, 2, 5 and 6 as asked, point 3 partly, and point 4 only partly; the disagreements are below. bun test on the change's test and its neighbours (64 tests), tsc, scripts/gate.ts and scripts/design-lint.ts all pass. I did not run the full suite.

  • One primary (1): the hero's "Get your own forge" button is replaced by the form. "See what it built" stays as the only other button.
  • One sentence (2): the hero has a single door-support line: "Say what you need and an AI crew builds it in your own forge, free to try." The hint under the field is gone.
  • Attention budget (3): the home entry in docs/design/attention-budget.json is 95 words, 20 blocks and 2 colours at both 390 and 1280. test/attention.test.ts passes with the page at 95/95, 20/20 and 2/2. That entry measures the signed-in home; the signed-out door has no budget, so nothing measures this form's cost there.
  • Docs (4): docs/features/start-my-forge.md has the how-to. The new .door-start class is named in docs/design/areas/front.md and styled in src/web/style/content.ts, which goes past the issue's home.ts-plus-one-test scope.
  • Phone width (5): the input is hand-written in home.ts with autocomplete="off", autocapitalize="none" and spellcheck="false", because field() has no autocapitalize option. .door-start sets the form to full width, capped at 28rem, and the button to full width. Touch screens already force 16px on fields (components.ts:1122), so iOS won't zoom. I did not measure 360px in a browser.
  • Tests (6): test/home-start-forge.test.ts now checks the label, the autocapitalize and autocomplete attributes, one primary and one door-support in the hero, and that a POST to /forges/new with a foreign Origin is refused. The first-view budget is covered by attention.test.ts as above.

What I did not do:

  • Plans section: I left #yours in place. It is below the fold, and plans-row.test.ts pins its single "Get a forge" button. Removing it is a separate decision.
  • Terminal: I added no new entry point. Signed out, the terminal already has "Get your own forge", which prints the plans and the web address. "New forge" (newForgeScreen) is for signed-in sessions. A guest spawn screen would be a new path in a different module, outside this issue's scope. The feature doc says this.

Try it: open / signed out, type a name and press Enter.

🤖 Generated with Claude Code

commented

The gate failed on its "pipeline first" rule: the pull adds docs/features/start-my-forge.md but changes nothing in the pipeline. I haven't changed the pipeline. I added an empty commit with a Direction: line, which the rule accepts instead of a pipeline change. The line says this is the owner's ask in #11153, that a visitor signs up on the home page itself. After that commit bun scripts/gate.ts printed nothing, and I pushed. I didn't re-run the tests, since only the commit message changed. The forge's check on the new push is the next verdict.

The pull's earlier changes still stand:

  • Home page: the signed-out home has one labelled "Forge name" field and one "Start my forge" button, posting to /forges/new. It is the only primary button in the first view.
  • Docs and styles: the how-to is docs/features/start-my-forge.md, and .door-start is named in docs/design/areas/front.md.
  • Tests: test/home-start-forge.test.ts covers the form, the single primary button, and that a POST from a foreign origin is refused.
  • Not done: I left the plans section below the fold (#yours) and added no new terminal entry for guests.

Try it: open / signed out, type a name and press Enter.

🤖 Generated with Claude Code

Approved

The clone lacks e8fecf09bfb4, so I read the full change and the preview. Earlier asks are met: one primary button in the hero (test pins it), one door-support sentence, no hint under the field, how-to in docs/features/start-my-forge.md (README untouched), .door-start named in areas/front.md, and the tests cover label, autocapitalize/autocomplete and a foreign-origin POST being refused. The preview serves the form in the hero with one "Start my forge". It posts to /forges/new, so no new spawn path. Two things to do next: (1) Non-blocking: the #yours plans section still carries a second "Get a forge" path; decide whether to fold it into this form. (2) Non-blocking: a signed-out terminal screen that takes a name would give the terminal the same door; today it prints the web address only.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs