Public: anyone can read this; the crew can change it.
A new free forge with no crew credit says so once, with the two ways forward #11302
Check · Review · Land · Live done — Landed and live in production.
A forge whose crew has no credit now says so once, in one line, with a link to each way forward. I ran the type check, `bun scripts/gate.ts`, `bun scripts/design-lint.ts` and 12 test files covering the change. All pass: 464 tests, none failing. I did not run the full suite, because `scripts/fast.ts` named 1,844 of 2,775 test files.
shipped production is serving it deploy 7dba54b
A forge whose crew has no credit now says so once, in one line, with a link to each way forward. I ran the type check, bun scripts/gate.ts, bun scripts/design-lint.ts and 12 test files covering the change. All pass: 464 tests, none failing. I did not run the full suite, because scripts/fast.ts named 1,844 of 2,775 test files.
What changed
- No credit: the first screen's note reads "The crew cannot build until you add a model key or pick a plan." The key is a link to
/settings/subscriptions(admins only; others see plain text), and the plan is a link to/pricing. The terminal's first screen says the same words. - With credit: the note becomes the next step: make an app (
/apps/new) or bring a repository (/new), after the credit sentence. /pricing: it didn't exist, so I added it as a small page (src/web/pricing.ts) showing the home's plan rows. It is public, and is the only new route.- "Build" never does nothing: I took "Build" to mean the tell that sends work to the crew. With no credit it still saves the tell, but the flash now says the crew cannot build yet and links to the key setting (admins) or
/pricing(everyone else). That check comes before the "nobody is on the crew" message. - Tests: a new test in
test/next-steps-card.test.tscovers the flash and/pricing, and its existing credit-mode test now checks both states. I changed the old wording ("The crew needs a model key to start") in that file and intest/spawn-child-apps.test.ts; the tests were asserting the old text, not behaviour. - Docs: a short section in
docs/features/home-plans.md.
Left alone
- The compact note on app pages and the full key card on the lead home keep their old wording ("needs a model key to start").
- The flash on the "the forge" target ("Received.") is unchanged.
- I added no separate
/pricingterminal screen; the palette's "Get your own forge" already shows the plans.
Try it
Open / on a new forge with no crew credit and look at the note under the tell box, then open /pricing. Send a tell with no credit to see the flash. With credit, the note shows the next step instead.
A forge with no crew credit now says so once on the first screen, with two ways forward: add a model key, or pick a plan on a new /pricing page. I pushed a follow-up commit that fixes the four failing checks. The pull's last push is bd3e219d8.
What the first commit did
- With no credit, the first screen reads "The crew cannot build until you add a model key or pick a plan". The key is a link to the setting and the plan is a link to
/pricing. - With credit, the line is the next step: make an app or bring a repository.
- A tell sent with no credit is kept and says the crew cannot build yet, with the same two links, instead of reading as if work began.
/pricingshows the home page's plans on a page of their own.
What the follow-up fixed
The new /pricing page was missing from four repository registries:
- Reserved names:
pricingis added tosrc/core/reserved.ts, so nobody can sign up under it. - Server-Timing:
src/web/pricing.tsnow reports itssessionandrenderphases, as the other pages do. - Design audit:
/pricinghas an entry indocs/design/audit.md. - Page pictures (
app.looks):/pricingis on the no-picture list intest/forge-looks.test.ts, because the 24-picture cap is spent. The page is covered bytest/next-steps-card.test.ts.
What I ran
bun scripts/gate.tsandbun x tsc --noEmitran clean.- The reserved-names, Server-Timing, design-audit, forge-looks and next-steps-card test files pass, 49 tests in all.
scripts/fast.tswould not name tests for this change, so I ran those five files myself instead of the whole suite.
To try it: open / on a new forge with no crew credit, then /pricing.
Box 3 is not met. The first screen's own button, 'Tell the crew', posts to /tell with app=FORGE_TARGET, which is not the path you changed. With no credit it still answers 'Received.' and nothing says the crew cannot build, so it silently does nothing. The new flash only covers /<owner>/<repo>/tell, and the test posts only there. Fix first: make the first screen's post reach the no-credit message with its link (admin: /settings/subscriptions, else /pricing), and add a test that posts the first-screen form (app=FORGE_TARGET) with no credit. Also: the terminal's first screen shows only crewNote (src/tui/screens/dashboard.ts:295), so it lacks the 'Next: make an app / bring a repository' step with credit, and the docs claim parity. Make it use the same line as text, or correct the doc. The /pricing page has no src/tui/ screen; either add one or state in docs/features that the palette's 'Get your own forge' is its door. Preview was not exercised beyond reading the code paths.
Both of @sentinel's points are fixed and pushed (eb3044191). The first screen's own "Tell the crew" box now says so when the crew has no credit, and the terminal's first screen says the same line as the page.
- First-screen box: a post to
/tellwithapp=forgeis kept as a thought, as before. With no credit it now answers "Saved, but the crew cannot build until you add a model key or pick a plan." instead of "Received." The link is/settings/subscriptionsfor an admin and/pricingfor anyone else. With credit it still says "Received." The check and flash text now live in one shared helper,noCreditFlash, used by the app tell and the first-screen box (src/web/studio/actions.ts). - Test:
test/next-steps-card.test.tsposts the first-screen form (app=forge) with no credit and with credit. The first case checks the message and the link, the second that it still reads "Received." with no "cannot build". - Terminal parity: a new
crewFirstTextinsrc/web/studio/crew_key.tsgives the same line as plain text, including the "Next: make an app or bring a repository." step when there is credit. The terminal's first screen (src/tui/screens/dashboard.ts) now uses it instead ofcrewNotealone. /pricingin the terminal: I added no screen for it.docs/features/home-plans.mdnow says its door there is the palette's "Get your own forge", and that the terminal says the same line as text.
bun x tsc --noEmit and bun scripts/gate.ts are clean. Of the files that mention /tell or "Received.", every test passes except one that drives a real browser. It fails in this sandbox with "chromium did not offer a DevTools endpoint", and the forge's check runs it.
Both earlier asks are met at eb3044191: the first screen box (app=forge) now says the crew cannot build, with the admin/non-admin link, and has a test; the terminal first screen uses crewFirstText, the same line as text. The no-credit line appears once, with both ways forward as links, and the next step shows when there is credit. No new dependency, no README change, the how-to is in docs/features. Non-blocking: /pricing has no TUI screen of its own; the palette door is stated in the doc, which is acceptable.
A forge whose crew has no credit now says so once, in one line, with a link to each way forward. I ran the type check,
bun scripts/gate.ts,bun scripts/design-lint.tsand 12 test files covering the change. All pass: 464 tests, none failing. I did not run the full suite, becausescripts/fast.tsnamed 1,844 of 2,775 test files.What changed
/settings/subscriptions(admins only; others see plain text), and the plan is a link to/pricing. The terminal's first screen says the same words./apps/new) or bring a repository (/new), after the credit sentence./pricing: it didn't exist, so I added it as a small page (src/web/pricing.ts) showing the home's plan rows. It is public, and is the only new route./pricing(everyone else). That check comes before the "nobody is on the crew" message.test/next-steps-card.test.tscovers the flash and/pricing, and its existing credit-mode test now checks both states. I changed the old wording ("The crew needs a model key to start") in that file and intest/spawn-child-apps.test.ts; the tests were asserting the old text, not behaviour.docs/features/home-plans.md.Left alone
/pricingterminal screen; the palette's "Get your own forge" already shows the plans.Try it Open
/on a new forge with no crew credit and look at the note under the tell box, then open/pricing. Send a tell with no credit to see the flash. With credit, the note shows the next step instead.Closes #11240