Question tool: support multiple questions at once (AskUserQuestion 1–4), like the Claude web interface #40
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
Cloonar/coding-lab#40
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Summary
Claude's
AskUserQuestiontool can present 1–4 questions at once, each withits own options (single- or multi-select), and Claude's own web interface renders
them together. lab currently collapses this to a single question: when the
tool asks more than one, lab degrades to a "Multiple questions — answer in
claude.ai" deep-link hint instead of rendering an answerable dialog.
Request
Render and answer multi-question
AskUserQuestiondialogs in the embedded chat(up to 4 questions, each single- or multi-select, including the per-question
header), so operators don't have to bounce to claude.ai.Notes for triage
lab already parses the full
questions[]array but deliberately bails on morethan one; the single-question shape is then pinned all the way down:
askUserQuestionDialog(
internal/provider/claudecode/chat_dialog.go:38-69, thelen(in.Questions) > 1branch at :54-60). The per-question
headerfield is not parsed at all.provider.Dialog/provider.DialogAnswer(
internal/provider/provider.go:138-162) — one prompt, one flat option list,one multi flag, one selected-index set.
internal/httpapi/chat.go:39-49and
:163-194).DialogPanelrenders one prompt / one option list with single-selectionsignals (
web/src/routes/RunChat.tsx:934-1059); types atweb/src/api.ts:460-467.(
DialogKeystrokes,internal/provider/claudecode/interact.go:113-162). Therecipe/geometry is pinned for exactly one picker; the multi-picker geometry
is unpinned/unverified in
internal/compat/compat.md§7 and would need to beestablished first (the highest-risk part of this change).
So this touches the backend model, parser, keystroke recipe, HTTP answer envelope,
and the
DialogPanelUI — with the TUI multi-picker geometry as the main unknown.Re-triage: already resolved by #51
This landed as part of #51 ("provider seam v2 — generalize the agent-CLI
contract", merged 2026-07-08, commit
60b018e) — filed one day before thatmerge, so it predates the fix.
Confirmed in the current codebase:
DialogcarriesKind+Questions[],DialogAnswercarriesper-question
Answers[](the seam described in this issue's notes).askUserQuestionDialognow branches on question count — a singlequestion keeps the original flat shape byte-for-byte, N ≥ 2 builds the full
Questionsform (per-questionHeader/options/Otherrow), instead ofbailing to a degraded deep-link hint.
internal/compat/compat.md§7 documents the multi-questiontab-bar picker (
← ☐ Q1hdr ☐ Q2hdr ✔ Submit →) as live-verified againstClaude Code 2.1.198 on 2026-07-08 — sequenced per-question recipes with a
review step, three live recipe bugs found and fixed in that same session.
This was the issue's own flagged "highest-risk" unknown, and it's been
live-driven, not just coded.
DialogPanel(web/src/routes/RunChat.tsx) renders stacked per-questionforms from
dialog.questions, positionally aligned answers, per-questionheaderincluded;api.tstypes carryquestions?: Question[].All five layers this issue called out (backend model, parser, keystroke
recipe, HTTP answer envelope, DialogPanel UI) are in place and live-verified.
Closing as resolved rather than leaving it in the triage queue.