Public: anyone can read this; the crew can change it.
Making a forge says what each follow mode does: tell-me opens an inbox card, take-updates opens a pull — not "recorded for now" #7216
Check · Review · Land · Live done — Landed and live in production.
`/forges/new`, the terminal's new-forge screen and MCP `spawn` now say what each follow mode does. None of them says "recorded for now" any more. Both modes already work: `src/spawn/upstream.ts` sends a `tell-me` owner an inbox card when the parent's code moves, and for `take-updates` it opens the one `forge/take-updates` pull.
shipped production is serving it deploy e209d31
/forges/new, the terminal's new-forge screen and MCP spawn now say what each follow mode does. None of them says "recorded for now" any more. Both modes already work: src/spawn/upstream.ts sends a tell-me owner an inbox card when the parent's code moves, and for take-updates it opens the one forge/take-updates pull.
- One words module: the new
src/spawn/follow_words.tsholds the wording. It has a label and one plain line for each mode, a combined line for the terminal hint, and a 60-byte short form for MCP. All three surfaces read it. /forges/new: the legend is now "How it follows this forge's code". The radios read "Tell me — tells the owner in their inbox when this forge's code moves." and "Take updates — opens a pull with the new code, and a person merges it."- Terminal: the
followModehint uses the combined line. The plan line says "It follows this forge's code as tell-me: it tells the owner in their inbox…". If what was typed is not a real mode, it shows the mode and leaves out the description; the door still refuses it as before. - MCP:
spawn.followModenow has the description "tell-me: an inbox card; take-updates: a pull a person merges". It is short becausetest/mcp-size.test.tsallows at most 60 bytes per field description, and I did not raise that limit. The full wording is indocs/MCP.md. - Tests: in
test/new-forge.test.tsandtest/tui-newforge.test.tsI changed only the assertions that pinned the old "Recorded for now" wording. They now check the new words and that "recorded for now" appears nowhere. A new test intest/new-forge.test.tschecks the MCP field's description.
Nothing changes in behaviour. bun x tsc --noEmit and bun scripts/design-lint.ts pass. The change was too broad for scripts/fast.ts to pick tests (it named 932 files), so I chose them myself: the two tests above, test/mcp-size.test.ts, and the MCP, llms, spawn and new-forge size and timing suites all pass.
To try it, open /forges/new on the preview and read the follow-mode fieldset, or open new forge in the terminal and press Ctrl+P to see the plan.
🤖 Generated with Claude Code
Approved. The words are now true: on main, src/spawn/upstream.ts already files an inbox card for tell-me (tellOwner), and for take-updates it opens the one forge/take-updates pull through src/spawn/take.ts. A person merges that pull. The new src/spawn/follow_words.ts is one small module named after one concept, and the page, the terminal hint, the terminal plan and MCP spawn all read it, so both doors say the same thing. Every value is still escaped through html. The markup keeps the existing field/check/muted small components and works with JavaScript off. No input, auth or write path changes. A typed value that is not a mode falls back to showing the mode without words, and the door still refuses it. Each changed assertion now pins the new text and that "recorded for now" appears nowhere, so the tests would fail on the old copy. The new MCP description stays within the 60-byte field limit. I checked the preview: /forges/new answers 200, shows the legend "How it follows this forge's code" and both new lines, and has no "recorded for now".
A note for later, not a blocker: when take-updates hits a merge conflict it opens an issue instead of a pull. The one-line wording leaves that out, and that is acceptable for a hint.
/forges/new, the terminal's new-forge screen and MCPspawnnow say what each follow mode does. None of them says "recorded for now" any more. Both modes already work:src/spawn/upstream.tssends atell-meowner an inbox card when the parent's code moves, and fortake-updatesit opens the oneforge/take-updatespull.src/spawn/follow_words.tsholds the wording. It has a label and one plain line for each mode, a combined line for the terminal hint, and a 60-byte short form for MCP. All three surfaces read it./forges/new: the legend is now "How it follows this forge's code". The radios read "Tell me — tells the owner in their inbox when this forge's code moves." and "Take updates — opens a pull with the new code, and a person merges it."followModehint uses the combined line. The plan line says "It follows this forge's code as tell-me: it tells the owner in their inbox…". If what was typed is not a real mode, it shows the mode and leaves out the description; the door still refuses it as before.spawn.followModenow has the description "tell-me: an inbox card; take-updates: a pull a person merges". It is short becausetest/mcp-size.test.tsallows at most 60 bytes per field description, and I did not raise that limit. The full wording is indocs/MCP.md.test/new-forge.test.tsandtest/tui-newforge.test.tsI changed only the assertions that pinned the old "Recorded for now" wording. They now check the new words and that "recorded for now" appears nowhere. A new test intest/new-forge.test.tschecks the MCP field's description.Nothing changes in behaviour.
bun x tsc --noEmitandbun scripts/design-lint.tspass. The change was too broad forscripts/fast.tsto pick tests (it named 932 files), so I chose them myself: the two tests above,test/mcp-size.test.ts, and the MCP, llms, spawn and new-forge size and timing suites all pass.To try it, open
/forges/newon the preview and read the follow-mode fieldset, or open new forge in the terminal and press Ctrl+P to see the plan.🤖 Generated with Claude Code
Closes #7199