Skip to content

mac: an answered question collapses to what it decided - #294

Merged
stupart merged 1 commit into
mainfrom
feat/question-wiring
Sep 16, 2026
Merged

stupart merged 1 commit into
mainfrom
feat/question-wiring

Conversation

@stupart

@stupart stupart commented Sep 16, 2026

Copy link
Copy Markdown
Owner

§3: "Once answered it collapses to 'Legacy keys · you chose Keep them under legacy'." #293 settled the rule; this wires it.

An answered question currently redraws its header, the whole question text, and every option greyed out at 0.58 opacity — the largest block in a finished transcript, saying the least. It now becomes one quiet line naming what was decided.

What it will and won't do

  • A running question is untouched. It is the row the session is blocked on, and every option stays pressable. The collapse only applies to a finished call.
  • An answer that names no option collapses nothing. The wire never states a choice — it is recovered by matching the options' own labels against the finished call's result text — so when nothing matches, the block renders exactly as it does today. Guessing at a person's decision is worse than not summarising it, and the fallback is guarded.
  • The line is not a button. There is nothing left to do to it, and leaving an answered question tappable is how an earlier choice gets sent in answer to a later prompt — the reason the existing code already disables those options.

Mutation battery

mutation result
a question still waiting on you collapses anyway 1 fail
the collapsed line becomes pressable again 1 fail
the collapsed row is renamed out from under its guard 1 fail
the choice is no longer recovered from the answer 1 fail

Gate

bun test 2299/0 exit 0 (2298 on main plus this guard — the count moving is the check that it runs) · tsc --noEmit exit 0 · swift test exit 0 · Mac xcodebuild BUILD SUCCEEDED · iOS xcodebuild BUILD SUCCEEDED.

I'll deploy and take a conch shot once this lands. Worth saying plainly: an answered question has to be on screen for the shot to show anything, so this may be one I can report as built and guarded but not seen — three of tonight's bugs were only visible in a screenshot, and I'd rather name that gap than imply it was checked.

🤖 Generated with Claude Code

https://claude.ai/code/session_01SfEX6bfwCGXtThk1JRNmsE

§3's collapse, wired onto #293's rule. An answered question was redrawing
its header, the whole question, and every option greyed at 0.58 -- the
largest block in a finished transcript, saying the least. It becomes one
quiet line naming the decision.

A running question is untouched: it is the row the session is blocked on and
every option stays pressable. An answer naming no option collapses nothing,
since the wire never states a choice and it is recovered by matching the
options' labels against the finished call's result -- when nothing matches
the block stays as it was, and that fallback is guarded.

The line is not a button. There is nothing left to do to it, and leaving an
answered question tappable is how an earlier choice gets sent in answer to a
later prompt, which is why the existing code already disables those options.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01SfEX6bfwCGXtThk1JRNmsE
@stupart
stupart merged commit f70880b into main Sep 16, 2026
2 checks passed
@stupart
stupart deleted the feat/question-wiring branch September 16, 2026 17:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant