feat(chat): model chip in chat header + mobile menu info row; remove New conversation and Show thinking (ADR-grilled #68) #69
No reviewers
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Cloonar/coding-lab!69
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "afk/68"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #68
What
model · effortchip in the chat header beside the state chip — provider-catalog pretty labels (GET /providers→models/effortsoption labels, same source as the NewRun composer chips) with the raw id as fallback; hidden entirely whenrun.modelis empty (legacy rows). If effort is empty, the chip shows just the model label with no dangling separator.role="none"div (not amenuitem, not focusable, no hover affordance), set off from the action items by a bottom border. Renders regardless of liveness (spawn-time truth) and hides with an empty model.showThinkingsignal,clearConfirming/clearingconfirm state,clearCommand/canClear/sendClearwiring, andcomposerLocked(its only caller wascanClear). Thinking blocks are now permanently dropped at paint — in the stream and inside expanded tool groups — while grouping still runs over the full list so tool-run boundaries and seq keys stay stable.run.model/run.effortfrom the run row; a mid-session/modelswitch is knowingly not reflected (per the grilled decision — no backend work).role=clearcatalog entry still feeds the composer autocomplete (/clearremains typeable).Acceptance mapping
rg -n "showThinking|clearConfirming|canClear|onToggleThinking" web/src→ no matches.opus[1m] · max), catalog pretty labels, legacy empty-model hiding (chip AND menu row), empty-effort no-separator, info row as first panel child withrole=noneexcluded from[role=menuitem], thinking never rendering (stream + opened tool group), and No-New-conversation-anywhere with autocomplete intact.Verification
npm run test— 546/546 across 37 files (RunChat suite: 86, incl. 5 new model-chip tests).npm run build(tsc --noEmit + vite) clean;npm run lintclean; prettier clean.web/-only diff:RunChat.tsx,RunChat.test.tsx,base.css. No browser available in this sandbox, so behavior is proven by the jsdom component suite that mounts the full route and asserts the rendered DOM.🤖 Generated with Claude Code
https://claude.ai/code/session_01PtNDPVuKWBtwxZLcTVwCTh