Public: anyone can read this; the crew can change it.
Pages and the terminal say "your AI"; a vendor's name appears only in the picker, recommended first #12309
Check · Review · Land · Live done — Landed and live in production.
Pages and the terminal now say "your AI", "model" or "runner" where they named a vendor. The new vendor-words test passes. `tsc`, `design-lint` and `gate` are clean. I did not run the full suite.
shipped production is serving it deploy 97489a2
5 earlier comments · 2 events
Pages and the terminal now say "your AI", "model" or "runner" where they named a vendor. The new vendor-words test passes. tsc, design-lint and gate are clean. I did not run the full suite.
What changed
- The Model settings page and the TUI model screen are titled "Connect your AI". Their hints now say "your AI's sign-in command" in place of
claude setup-token, and the token placeholder is generic. - The web pages and the terminal screens you listed say "AI", "runner" or "sign-in token" in place of Claude, Anthropic and Claude Code. The same goes for
studio/crew_key.ts,standards.tsand the hints innew-forge.tsandnewforge.ts. test/vendor-words.test.tswalkssrc/webandsrc/tui, skipping thevendordirectories, and fails on any vendor name. It exempts a few files and literals, each with its reason:
- studio/cards.ts: the ChatGPT globals key in the MCP Apps host protocol.
- tui/screens/changelog.ts: the model a commit says built it, which is data.
- client.ts and runs.ts: the runner's own claude: log prefix.
- Literal identifiers and commands: claudeInstall, FORGE_CLAUDE, claude --plugin-dir, plugins/claude-code.
- The "Open in ChatGPT / Grok / Claude" links on the front door (studio/home.ts).
- I updated two tests that asserted the old wording: "Add a Claude account" in
test/tui-subscriptions-add.test.ts, and the model page title.
What I left out
- Recommended-first ordering: it doesn't apply, because no provider picker exists in these files. The only list of vendors is the front-door assistant links, which I left as they are. If you want one provider marked recommended and listed first, that is a separate change.
- Spawn lists: I added no process start, so
test/spawn-sites.test.tsandtest/spawn-pipes.test.tsare untouched. - Tests run:
bun scripts/fast.tsnamed 2,116 test files, which is too broad. I ran about 15 targeted files covering the touched pages, the TUI screens,standardsandllms, plus the new test. The forge's check runs the rest.
Try it: open /settings/model and see it titled "Connect your AI". Then run bun test test/vendor-words.test.ts.
Pages and the terminal now say "your AI". A vendor's name stays only where a person picks one, such as the model and subscription pickers.
Check fix: one test was red because of this pull. test/tui-token-make.test.ts still looked for the old label "Claude Code plugin (c copies):" on the sign-ins screen. That screen now reads "Terminal agent plugin (c copies):", so the test was stale and I updated it to match. With the fix, test/tui-token-make.test.ts and test/standards.test.ts pass (39 tests) and bun x tsc --noEmit is clean. I did not rerun the full suite.
Not from this pull: the other failing shards (first-screen-line, spawn-in-process-visible, mcp-table, and the one-command drift test) were already red on main at ad44386 or are unrelated to this change. The check log says the first three are red on main too; for the drift test it didn't say. I left them alone.
To try it: open /settings/model and see the page titled "Connect your AI".
No security findings. Two things to fix: (1) Issue box 3 is not met. The pull's own note says no picker exists, but the issue asks that wherever a person picks a provider, the recommended one is listed first. The front-door assistant links (src/web/studio/home.ts, Open in ChatGPT / Claude / Grok) are that picker, and they are untouched, so either order them recommended-first with a marker or point out which picker is the right one. (2) The vendor-words test is lenient: whole-file exemptions plus regex literals mean it would not catch a vendor inside those files. Narrow the exemptions to the specific lines, and make the test also forbid the vendor-shaped placeholder sk-ant-… in crew_key.ts, which is still a vendor hint on a page that should say 'your AI'. Design: copy-only change, no principle broken. No docs needed (no new feature).
Pages and the terminal now say "your AI" where they named a vendor, and a vendor's name stays only in the front-door picker. Review feedback is addressed.
Feedback addressed
- Key placeholders: the
sk-ant-…placeholders are gone. The subscriptions form now reads "your provider's key" and the crew key field reads "paste it here". Thenew-forge.tsreword of the validator's refusal text no longer printssk-ant-oat…. The vendor-words test now also catchessk-ant. - Test exemptions: the vendor-words test now exempts specific lines instead of whole files, so new vendor wording in those files fails. The exempt lines are the MCP globals key, the runner's
claude:log prefix, one changelog doc example, and thenew-forge.tsline that matches the validator's text. - Recommended first: the front-door "Have an AI assistant?" links now list "Open in Claude" first, marked "(recommended)". A new test checks the order and the marker. This is the only vendor list in these files; there is still no provider picker here.
Checks
tsc,design-lintandgateare clean.- 42 tests across 10 targeted files pass.
scripts/fast.tswas too broad to name tests, so I picked the files that cover the touched pages and screens. - I did not run the full suite. The forge's check runs it on this push.
To try it: run bun test test/vendor-words.test.ts, or open / signed out and see "Open in Claude (recommended)" first.
Pages and the terminal now say "your AI", "model" or "runner" wherever a vendor's name isn't a literal the machine needs or a choice a person makes. That is the change #12126 asked for, as part of #12068.
This push fixes only the check failure: a 105-column comment line in test/vendor-words.test.ts, now rewrapped to two lines. The gate, tsc --noEmit and test/vendor-words.test.ts pass locally. I did not run the wider suite; the forge runs the full check on this push.
What changed in the pull
- Pages and terminal wording say "your AI" and "Connect your AI", for example
/settings/model. - A vendor's name stays only where a person picks one, such as the picker, which lists the recommended AI first, and the key placeholders, now neutral.
test/vendor-words.test.tsfails if a vendor name appears outside those places. Its exemptions are single lines with a stated reason, not whole files.
What I left out
- Literals the machine needs keep their vendor names: install commands,
FORGE_CLAUDE, protocol keys such as the ChatGPT Apps SDK globals, and the runner's own log prefix. The test lists each one.
Try it
- Open
/settings/model; the page is titled "Connect your AI". - Run
bun test test/vendor-words.test.ts.
Pages and the terminal now say "your AI", "model" or "runner" wherever a vendor's name isn't a literal the machine needs or a choice a person makes. This push only answers the before/after looks rule, which failed the last check.
Looks rule: I added an empty commit with a Looks: /settings/crew line. That page is in the looks list in forge.json, and src/web/pages/crew.ts is among the files this pull changes. The gate passes locally; I did not run tsc or any tests this round, since only a commit message changed.
What changed in the pull
- Wording on the pages and in the terminal says "your AI" and "Connect your AI", for example
/settings/model. - A vendor's name stays only where a person picks one, such as the picker, which lists the recommended AI first, and the key placeholders, now neutral.
test/vendor-words.test.tsfails if a vendor name appears outside those places. Its exemptions are single lines with a stated reason, not whole files.
What I left out
- Literals the machine needs keep their vendor names: install commands,
FORGE_CLAUDE, protocol keys such as the ChatGPT Apps SDK globals, and the runner's own log prefix. The test lists each one. - I did not add
/settings/modelto the looks list, so it has no before/after pictures of its own;/settings/crewstands in for the pages that were reworded.
Try it
- Open
/settings/model; the page is titled "Connect your AI". - Run
bun test test/vendor-words.test.ts.
I merged main into the branch and pushed. The branch merges cleanly again.
The conflict: it was one line in src/web/pages/crew.ts, the "No runner" message. I kept this pull's wording ("the runner on PATH") and took main's renamed variable, FORGE_AGENT_RUNNER, in place of FORGE_CLAUDE.
Checks run before the push:
- The gate and
tsc --noEmitpass. scripts/fast.tscould not name a test list, because the merge touched too many files. So I ran 717 tests across 113 files that cover this change, all that hold the vendor wording, the agent pages and the runner. 675 pass, 42 skip and 0 fail. I did not run the whole suite; the forge runs the full check on this push.
What changed in the pull
- Pages and terminal wording say "your AI" and "Connect your AI", for example
/settings/model. A vendor's name stays only where a person picks one, such as the picker, which lists the recommended AI first. test/vendor-words.test.tsfails if a vendor name appears elsewhere. Its exemptions are single lines with a stated reason.
What I left out
- Literals the machine needs keep their vendor names: install commands, protocol keys, and the runner's own log prefix.
/settings/modelis not in the looks list, so the before/after pictures use/settings/crew.
Try it
- Open
/settings/model; the page is titled "Connect your AI". - Run
bun test test/vendor-words.test.ts.
Wording is neutral across the listed pages and screens, the model page is titled "Connect your AI", and the front-door picker lists Claude first, marked recommended. The vendor-words test uses single-line exemptions, each with a reason. Earlier asks (placeholders, line-level exemptions, recommended-first) are met. Non-blocking: the picker-order test reads source with indexOf, so it is brittle; a rendered-page check would be sturdier.
Pages and the terminal now say "your AI", "model" or "runner" where they named a vendor. The new vendor-words test passes.
tsc,design-lintandgateare clean. I did not run the full suite.What changed
claude setup-token, and the token placeholder is generic.studio/crew_key.ts,standards.tsand the hints innew-forge.tsandnewforge.ts.test/vendor-words.test.tswalkssrc/webandsrc/tui, skipping thevendordirectories, and fails on any vendor name. It exempts a few files and literals, each with its reason:-
studio/cards.ts: the ChatGPT globals key in the MCP Apps host protocol. -tui/screens/changelog.ts: the model a commit says built it, which is data. -client.tsandruns.ts: the runner's ownclaude:log prefix. - Literal identifiers and commands:claudeInstall,FORGE_CLAUDE,claude --plugin-dir,plugins/claude-code. - The "Open in ChatGPT / Grok / Claude" links on the front door (studio/home.ts).test/tui-subscriptions-add.test.ts, and the model page title.What I left out
test/spawn-sites.test.tsandtest/spawn-pipes.test.tsare untouched.bun scripts/fast.tsnamed 2,116 test files, which is too broad. I ran about 15 targeted files covering the touched pages, the TUI screens,standardsandllms, plus the new test. The forge's check runs the rest.Try it: open
/settings/modeland see it titled "Connect your AI". Then runbun test test/vendor-words.test.ts.Closes #12126