Repository navigation
manual: ten places the manual or --help disagrees with the dev build #1765
Description
What happened
2026-10-05, dev@f81638787 (dev-20261005-f816387875e5). Found in the v0.7.1 happy-path pass. In each of these ten places the manual or --help says one thing and the binary does another. None blocks the release. Most are wording; for items 7 and 8 it may be the binary rather than the page that is wrong.
-
Approvals.
getting-started.md(Which settings the setup does not ask about) says "Memory stays on, tool approvals keep prompting". A fresh conversation shows◇ YOLOand/statussaysapprovals allow.permissions.mdagrees with the binary:allow"is the interactive default, shown as YOLO". -
Setup header.
getting-started.mdsays a one-step setup readssetting up. With a key in the environment,codeaf chat --no-hostopens a one-step Basic settings whose header is justcodeaf. On the two-step flow the first screen readssetting up · 1 of 2and the secondsetup · 2 of 2:firstrun.goandonboarding.gospell it differently. -
--no-host.getting-started.mdsays "A--no-hostlaunch on such a profile …", but barecodeaf --no-hostis refused withError: there is no `codeaf --no-host`.. Onlycodeaf chat --no-hostworks. -
The default model.
codeaf manual "what is the default model"and"which model does codeaf ship with"reach no section that names~deepseek/deepseek-v4-flash-latest. Only the tilde section oflanes.mdstates it. -
Exit codes.
codeaf --helpandcodeaf do --helplist0 1 2 3 4, butdo --timeoutexits 124. HEADLESS.md and the manual document 124; the two help screens don't. -
codeaf modelswith no key.--helpfiles it under "Look at what happened — read-only, no key, nothing spent", but with no key it exits 1 with "codeaf needs a model to work with." -
/debugon the default launch answersthis conversation has no run to record.debug-record.mdpresents/debugas the in-conversation switch that answersrecording this conversation · it goes to …. -
The standing place has no message box when empty. It shows only
tab next place · esc, and typed characters are dropped.places.mdsays every printable key there belongs to the composer. -
Bare
/exportwritestranscript.mdinto the repository rather than the documented<stem>_<session-name>.md, so every conversation's bare export now shares one name. -
Smaller wording:
/helpsays/memories"print what is remembered about you", but it opens the memory place.screen.mdsays/quit ends the program, but it closes the conversation in front and ends the program only on the last one.getting-started.mdsays ctrl+c "(twice, as always)", butkeys.mdsays once, which is what happens at rest.
Replication
Deterministic (no model).
- Items 3, 5 and 6: run each command on a fresh
CODEAF_HOMEwith no key and compare with the quoted help. - Item 4: add the two questions as probes to
internal/manual/chat_test.go. - Items 1–2: on a fresh
CODEAF_HOME, setOPENROUTER_API_KEYto anysk-or--shaped string, then runcodeaf chat --no-hostand/status.
Where
internal/manual/chat/getting-started.md. The setup header strings in internal/tui3/firstrun.go (setting up · ) and internal/tui3/onboarding.go (setup · ). The usage text in cmd/codeaf. The models command's key check.
The fix
The manual says what the binary does. Approvals are allow/YOLO by default; setup's header has one spelling; --no-host is a chat flag. A heading carries "default model" and names ~deepseek/deepseek-v4-flash-latest. Both help screens list 124. codeaf models either answers without a key or moves out of the "no key" group. /debug and the standing composer either work as the pages say or the pages say what they do. Bare /export and the smaller lines match the binary.
Acceptance
- e2e:
internal/manual/chat_test.goprobes "what is the default model" and "which model does codeaf ship with" reach a section that names the model. - Unit: one function spells the setup header for both screens.
- The manual pages quote the binary's own strings.
Activity
ZeroPoint95 commentedon Oct 5, 2026
Staging pass note (2026-10-05,
staging-20261005-7e30335645c8, same code as the dev pass): item 9 varies with state. In a conversation that has a title, bare/exportwritestranscript-<title-slug>.md(e.g.transcript-tool-inspection-for-sub-occurrences-in-calc.md), and a second bare export refuses with… is already there · /export <path> writes it somewhere else.transcript.mdappears when the conversation is untitled (see #1762). Neither matches the documented<stem>_<session-name>.md.