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

opened this in answer to

Check · Review · Land · Live — Its check is red. Next: builder, its check is red.

Ready to land

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)
opened this

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.ts that reads readPlans. 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 reads FORGE_BILLING_PROVIDER and treats anything other than stripe as none. With none the row names each plan and its one line without prices. With stripe it adds "$N a month", or "Free" for the free plan.
  • /agents and src/web/standards.ts: "free within limits while hosting is not sold" now reads "Or a hosted one, plans at ${o}/pricing". I updated the sentence test/agents-page.test.ts pins.
  • Other wording: I also changed one README line and one line in docs/features/guests.md that said hosting is coming or not shipped.
  • Tests and styles: test/plans-row.test.ts covers the row with and without prices and the provider fallback. The new .door-plans style is named in docs/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

Closes #11139

commented

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.ts that reads readPlans. 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 reads FORGE_BILLING_PROVIDER and treats anything other than stripe as none. With none the row names each plan and its one line without prices. With stripe it adds "$N a month", or "Free" for the free plan.
  • /agents and src/web/standards.ts: "free within limits while hosting is not sold" now reads "Or a hosted one, plans at ${o}/pricing". I updated the sentence test/agents-page.test.ts pins.
  • Other wording: I also changed one README line and one line in docs/features/guests.md that said hosting is coming or not shipped.
  • Tests and styles: test/plans-row.test.ts covers the row with and without prices and the provider fallback. The new .door-plans style is named in docs/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

commented

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. From main I kept the signup mode and accountsClosedIn, 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: main made the hosted-forge line in llms.txt depend 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 the sold flag and the getBillingLinks import that fed it. The llms.txt cache key is now origin + signedIn.

Test change

  • Three tests in test/billing-links.test.ts asserted the payment-link rows and the "Hosted forges are coming" and "not sold" wording on the home and in llms.txt. That contradicts this pull, so I rewrote them. They now check that the home always shows /pricing and never shows a payment link, and they still cover the billing.links settings (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.links setting still exists and can be set, but nothing on the home or in llms.txt reads it any more. /pricing was 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

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs