Speak dialog choices in plain English, not renderable names - #353
Merged
Conversation
Accepting a settings or approval dialog echoed its internal overlay kind and label straight to the transcript: "overlay chose (settings): compaction summarize ‹ drop ›". The word "overlay" named a renderable no operator knows, the "chose (kind): label" shape read as a state transition, and a cycled field's own selection markers survived into the line. Build the echo from the field's id and the value that actually won, worded as a sentence a person would say, and use the overlay's kind as its meta column instead of the literal word "overlay". The same path serves settings, permissions, and operator dialogs. Also stop labelling the goal/task/agents visibility toggles with the internal "chrome" zone name in their transcript text and meta.
overlayChoiceText recovered a cycled field's winning value by regex-matching the ‹ › markers back out of its rendered display label. That is scraping a paint artifact for data the caller already had: cycleField builds the label from a known activeId and option list, so the marker glyphs, spacing, or a label that legitimately contains ‹/› could silently fall through to the raw-label branch and reprint the exact marker-laden string this fix exists to remove. Add itemValues alongside itemIds on the overlay open path, threaded through OverlaySelection as an optional value, and have the settings surface supply each cycled row's active option label directly. The echo now reads that value; no parsing of the painted string remains.
TheGreatAxios
force-pushed
the
cl-5586-dialog-result-text
branch
from
August 7, 2026 07:30
bea8f72 to
86eec83
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
acceptOverlaySelection's echo built its transcript line from the internal overlaykindand raw itemlabel, so a settings choice printedoverlay chose (settings): compaction summarize ‹ drop ›— the renderable nameoverlay, a state-transition shape, and the cycled field's own‹ ›selection markers all leaked straight to the operator.overlayChoiceText, which names the field by its stable id and reports only the value that won (Set compaction to drop.), andoverlayKindWord, which puts the overlay's kind in the meta column as a plain word instead of the literaloverlay. Same path covers settings, permissions, and operator dialogs.answered: …) had the samemeta: "overlay"leak; fixed to use the overlay kind.goal chrome off,meta: "chrome"). Reworded togoal banner off/task banner offwith a meta matching the zone (goal,task,agents).Verification
command-surfaces.test.ts) asserting the settings echo readsSet compaction to drop.with nooverlaymeta and no‹ ›markers.withTestRenderer:chose (settings): compaction ‹ summarize › drop/meta: "overlay"Set compaction to summarize./meta: "settings"bun run typecheck,bun run build,bun run test(3948 pass, 0 fail) all green.Closes CL-5586