Public: anyone can read this; the crew can change it.
The anonymous home page and /agents show the plans and one button to get a forge #11164
Check · Review · Land · Live — Its check is red.
The anonymous home page's `#yours` section now shows the plans in one row with a single "See plans and get a forge" button to `/pricing`, and `/pricing` does not exist yet. The button 404s until the issue that builds it ("/pricing sells a forge…", still open and blocked) lands. I linked to it anyway because this issue asks for it.
11 files · +93 −72
stopped failed before it answered — 14532 passed, 1 failed: budgets > /map and / answer under their p95 and statement budgets deploy fd1a172
Check failed: budgets > /map and / answer under their p95 and statement budgetsCheck of fd1a172checked against main at 8011647fast tier: red in 8m58s
Website spec: 19 findings (report only)
- /board http://127.0.0.1:36451/board answered 303 — https://specification.website/
- /notes http://127.0.0.1:36451/notes answered 303 — https://specification.website/
- /feed http://127.0.0.1:36451/feed answered 303 — https://specification.website/
- /review http://127.0.0.1:36451/review answered 303 — https://specification.website/
- /new http://127.0.0.1:36451/new answered 303 — https://specification.website/
- /pinned http://127.0.0.1:36451/pinned answered 303 — https://specification.website/
- /releases http://127.0.0.1:36451/releases answered 303 — https://specification.website/
- /repos http://127.0.0.1:36451/repos answered 303 — https://specification.website/
- /map http://127.0.0.1:36451/map answered 303 — https://specification.website/
- /system http://127.0.0.1:36451/system answered 303 — https://specification.website/
- /talk http://127.0.0.1:36451/talk answered 303 — https://specification.website/
- /flow http://127.0.0.1:36451/flow answered 303 — https://specification.website/
- /resilience http://127.0.0.1:36451/resilience answered 303 — https://specification.website/
- /settings http://127.0.0.1:36451/settings answered 303 — https://specification.website/
- /preview-admin/sample expected exactly one <h1>, found 2 — headings
- /preview-admin/sample/next expected exactly one <h1>, found 2 — headings
- /preview-admin/sample/bets expected exactly one <h1>, found 2 — headings
- /preview-admin/sample/waves expected exactly one <h1>, found 2 — headings
- /preview-admin/sample/milestones expected exactly one <h1>, found 2 — headings
The anonymous home page's #yours section now shows the plans in one row with a single "See plans and get a forge" button to /pricing, and /pricing does not exist yet. The button 404s until the issue that builds it ("/pricing sells a forge…", still open and blocked) lands. I linked to it anyway because this issue asks for it.
I ran tsc, the gate script, the design lint and ten home and /agents test files, and all pass. I did not run the whole suite. Four of the ten files (home-fit, home-buttons-rest and two others) skip their Chromium checks in this sandbox.
- Home: the row is a new
src/web/plans_row.tsthat readsreadPlans. Self-hosting sits beneath it under "Or run it yourself, free", with the git clone block and the guide button unchanged. The "Hosted forges are coming" wording is gone. - Provider: the code had no billing provider setting, despite the #11150 title. I added
src/billing/provider.ts, which readsFORGE_BILLING_PROVIDERand treats anything other thanstripeasnone. Withnonethe row names each plan and its one line without prices. Withstripeit adds "$N a month", or "Free" for the free plan. /agentsandsrc/web/standards.ts: "free within limits while hosting is not sold" now reads "Or a hosted one, plans at ${o}/pricing". I updated the sentencetest/agents-page.test.tspins.- Other wording: I also changed one README line and one line in
docs/features/guests.mdthat said hosting is coming or not shipped. - Tests and styles:
test/plans-row.test.tscovers the row with and without prices and the provider fallback. The new.door-plansstyle is named indocs/design/areas/home-plans.md.
I did not run the cold-read eval, since it needs a browser the sandbox lacks. The home first-view budget test wasn't named in the files I ran. The "get your own forge" heading and button are still on the page.
To try it, open / signed out and read #yours. Setting FORGE_BILLING_PROVIDER=stripe adds the prices.
🤖 Generated with Claude Code
I merged main into the branch, resolved both conflicts and pushed. tsc, gate.ts and design-lint.ts are clean. About 100 test files that touch the changed pages passed, including the plans row, standards, llms, studio door, billing and agents ones. I did not run the full suite.
Conflicts
src/web/studio/home.ts:main(#11151) had put a list of plans on the anonymous home, each with a payment link. This branch puts the plans in one row with one button to/pricing. I kept the branch's version. FrommainI kept the signup mode andaccountsClosedIn, which decide the "by invitation" and "not taking new accounts" lines. The payment-link rendering and its imports (getPlans,BILLING_SIZES,sizeWords) are gone from the home.src/web/standards.ts:mainmade the hosted-forge line inllms.txtdepend on whether payment links are set ("not sold" or "paid plans are on the home page"). I kept the branch's wording, "plans at/pricing", and removed thesoldflag and thegetBillingLinksimport that fed it. Thellms.txtcache key is noworigin + signedIn.
Test change
- Three tests in
test/billing-links.test.tsasserted the payment-link rows and the "Hosted forges are coming" and "not sold" wording on the home and inllms.txt. That contradicts this pull, so I rewrote them. They now check that the home always shows/pricingand never shows a payment link, and they still cover thebilling.linkssettings (validation, admin-only, change count). The later form and MCP tests in that file had failed only because the earlier tests left links set.
Open question
- The
billing.linkssetting still exists and can be set, but nothing on the home or inllms.txtreads it any more./pricingwas not part of this merge, so I did not check whether it uses it. If it does not, the setting is dead and could be removed.
To try it
- Open
/signed out and read#yours. You should see the plans row and one button to/pricing.
🤖 Generated with Claude Code
The anonymous home page's
#yourssection now shows the plans in one row with a single "See plans and get a forge" button to/pricing, and/pricingdoes not exist yet. The button 404s until the issue that builds it ("/pricing sells a forge…", still open and blocked) lands. I linked to it anyway because this issue asks for it.I ran
tsc, the gate script, the design lint and ten home and/agentstest files, and all pass. I did not run the whole suite. Four of the ten files (home-fit,home-buttons-restand two others) skip their Chromium checks in this sandbox.src/web/plans_row.tsthat readsreadPlans. Self-hosting sits beneath it under "Or run it yourself, free", with the git clone block and the guide button unchanged. The "Hosted forges are coming" wording is gone.src/billing/provider.ts, which readsFORGE_BILLING_PROVIDERand treats anything other thanstripeasnone. Withnonethe row names each plan and its one line without prices. Withstripeit adds "$N a month", or "Free" for the free plan./agentsandsrc/web/standards.ts: "free within limits while hosting is not sold" now reads "Or a hosted one, plans at ${o}/pricing". I updated the sentencetest/agents-page.test.tspins.docs/features/guests.mdthat said hosting is coming or not shipped.test/plans-row.test.tscovers the row with and without prices and the provider fallback. The new.door-plansstyle is named indocs/design/areas/home-plans.md.I did not run the cold-read eval, since it needs a browser the sandbox lacks. The home first-view budget test wasn't named in the files I ran. The "get your own forge" heading and button are still on the page.
To try it, open
/signed out and read#yours. SettingFORGE_BILLING_PROVIDER=stripeadds the prices.🤖 Generated with Claude Code
Closes #11139