Closes #19. Copy only: no new views, no route changes, no engine selection logic.
What was wrong
Uplink has answered texts with Codex since #7, and the page still said the answers came from Claude Code. Most of the strings only named one engine and could be reworded. Three stated facts that are true of Claude and of no other agent, so rewording could not fix them.
The API key answer gave claude setup-token and the Keychain as the way in. That is Claude's path, not Codex's, which keeps its own credentials and leaves Uplink holding nothing. Each engine gets its own clause now, checked against codex-engine.ts and settings.ts rather than written from the old answer.
The cost answer billed against "your own Claude plan". It is the plan you already have, Claude or ChatGPT.
The bento cell named CLAUDE.md as the per-repository instruction file. It is a filename rather than an engine's name, which is why it is easy to skim past, but a second engine reads a different one. It names both.
What deliberately still says Claude
The hero headline and the <title>. The issue's requirement was copy that survives a second engine, not the page's strongest line flattened into "your agent". The title is also 55 characters, and listing both would push it past what search results show.
Two alt texts, because alt text follows the image rather than the copy. The menubar screenshot and the social card describe what those images actually show, and editing the alt before the image is retaken makes it describe something that is not there.
Two things the issue did not know about
It was written before some of this moved, so for the record:
- The download subhead and one FAQ already name both engines. Chris got there first.
- The head is now
/var/www/reviewos-reviewos/releases/6c73186/resources/views/layouts/app.stx:3619:2285: include error: Error loading include file site-head: ENOENT: no such file or directory, open '/var/www/reviewos-reviewos/releases/6c73186/resources/views/partials/site-head.stx' [1m[31m╭──────────────────────────────────────────────────────────────╮[0m [1m[31m│[0m [1m[41m ERROR [0m [31mInclude Error[0m [1m[31m│[0m [1m[31m╰──────────────────────────────────────────────────────────────╯[0m [36m[1mFile:[0m [2mapp.stx[0m [90m(line 3619, col 2285)[0m [33m[1mMessage:[0m Error loading include file site-head: ENOENT: no such file or directory, open '/var/www/reviewos-reviewos/releases/6c73186/resources/views/partials/site-head.stx' [34m[1mContext:[0m [2m 3617: 3618: > 3619:, and that partial carries its own schema.org description which named Claude Code. It renders on this page, so it is fixed here. Its3620: 3621: [0mCloses #19. Copy only: no new views, no route changes, no engine selection logic.
What was wrong
Uplink has answered texts with Codex since #7, and the page still said the answers came from Claude Code. Most of the strings only named one engine and could be reworded. Three stated facts that are true of Claude and of no other agent, so rewording could not fix them.
The API key answer gave
claude setup-tokenand the Keychain as the way in. That is Claude's path, not Codex's, which keeps its own credentials and leaves Uplink holding nothing. Each engine gets its own clause now, checked againstcodex-engine.tsandsettings.tsrather than written from the old answer.The cost answer billed against "your own Claude plan". It is the plan you already have, Claude or ChatGPT.
The bento cell named
CLAUDE.mdas the per-repository instruction file. It is a filename rather than an engine's name, which is why it is easy to skim past, but a second engine reads a different one. It names both.What deliberately still says Claude
The hero headline and the
<title>. The issue's requirement was copy that survives a second engine, not the page's strongest line flattened into "your agent". The title is also 55 characters, and listing both would push it past what search results show.Two alt texts, because alt text follows the image rather than the copy. The menubar screenshot and the social card describe what those images actually show, and editing the alt before the image is retaken makes it describe something that is not there.
Two things the issue did not know about
It was written before some of this moved, so for the record:
- The download subhead and one FAQ already name both engines. Chris got there first.
- The head is now
/var/www/reviewos-reviewos/releases/6c73186/resources/views/layouts/app.stx:3708:34: include error: Error loading include file site-head: ENOENT: no such file or directory, open '/var/www/reviewos-reviewos/releases/6c73186/resources/views/partials/site-head.stx' [1m[31m╭──────────────────────────────────────────────────────────────╮[0m [1m[31m│[0m [1m[41m ERROR [0m [31mInclude Error[0m [1m[31m│[0m [1m[31m╰──────────────────────────────────────────────────────────────╯[0m [36m[1mFile:[0m [2mapp.stx[0m [90m(line 3708, col 34)[0m [33m[1mMessage:[0m Error loading include file site-head: ENOENT: no such file or directory, open '/var/www/reviewos-reviewos/releases/6c73186/resources/views/partials/site-head.stx' [34m[1mContext:[0m [2m 3706: 3707: > 3708: 3709: 3710: [0m, and that partial carries its own schema.org description which named Claude Code. It renders on this page, so it is fixed here. Itsog:image:altis left, by the alt-text rule above.
Out of scope and still naming Claude alone:
dashboard.stxandthanks.stx. Different pages, not this issue.Verification
- 155 unit tests pass, lint clean
stx typecheckon the view: 22 template expressions, 0 errors- no em-dashes or en-dashes, verified by grep
🤖 Generated with Claude Code
og:image:altis left, by the alt-text rule above.
Out of scope and still naming Claude alone: dashboard.stx and thanks.stx. Different pages, not this issue.
Verification
- 155 unit tests pass, lint clean
stx typecheckon the view: 22 template expressions, 0 errors- no em-dashes or en-dashes, verified by grep
🤖 Generated with Claude Code