Skip to content

Support multi-select pending user inputs#1797

Merged
juliusmarminge merged 1 commit intomainfrom
t3code/questionnaire-multiselect-fix
Apr 6, 2026
Merged

Support multi-select pending user inputs#1797
juliusmarminge merged 1 commit intomainfrom
t3code/questionnaire-multiselect-fix

Conversation

@juliusmarminge
Copy link
Copy Markdown
Member

@juliusmarminge juliusmarminge commented Apr 6, 2026

Summary

  • Add multiSelect support to Codex user-input questions and carry it through server/web parsing.
  • Update pending-user-input state to track multiple selected option labels, including toggle behavior and answer resolution.
  • Adjust composer UI and keyboard handling so multi-select questions stay open until the user advances, while single-select questions keep auto-advance.
  • Expand tests to cover multi-select answer building, progress derivation, adapter parsing, and browser interaction flows.

Testing

  • bun fmt
  • bun lint
  • bun typecheck
  • bun run test

Note

Medium Risk
Changes user-input question/answer shape to support multi-select, including different answer types (string vs string[]) and updated UI selection behavior; regressions could affect responding to prompts or keyboard shortcuts in the chat composer.

Overview
Adds end-to-end multiSelect support for pending user-input questions: server adapters/session parsing now preserve a multiSelect flag, and the web client can submit multi-select answers as arrays.

Updates pending user-input state and UI to track multiple selected option labels with toggle semantics, disables auto-advance for multi-select questions (single-select still auto-advances), and tightens numeric shortcut handling to avoid firing while the composer/contenteditable is focused.

Expands unit and browser tests to cover multi-select parsing, selection toggling, progress/answer resolution, and submission payloads.

Reviewed by Cursor Bugbot for commit 0ab01a7. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Add multi-select support to pending user input questions

  • Adds a multiSelect flag to user input question types in both pendingUserInput.ts and session-logic.ts, parsed from the activity payload.
  • Replaces selectedOptionLabel: string with selectedOptionLabels: string[] throughout the pending user input data model to support multiple selections uniformly.
  • Introduces togglePendingUserInputOptionSelection to toggle option state; multi-select questions accumulate selections while single-select questions replace them.
  • Multi-select questions no longer auto-advance after an option is chosen; number key shortcuts (1–9) are blocked when focus is inside editable fields.
  • resolvePendingUserInputAnswer returns string[] for multi-select questions and string for single-select; buildPendingUserInputAnswers propagates arrays in the final answers map.
  • Behavioral Change: answer state shape changes from a single string to an array; any code reading selectedOptionLabel directly will break.

Macroscope summarized 0ab01a7.

- Preserve question multi-select metadata end to end
- Toggle option selections in the composer and submit arrays
- Cover keyboard and answer-building behavior with tests
@github-actions github-actions bot added size:L 100-499 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. labels Apr 6, 2026
@macroscopeapp
Copy link
Copy Markdown
Contributor

macroscopeapp bot commented Apr 6, 2026

Approvability

Verdict: Needs human review

This PR introduces a new multi-select capability for user input questions, changing data structures from single to array-based selection and adding new toggle behavior. While well-tested and self-contained, it represents new user-facing functionality with runtime behavior changes that warrants human review.

You can customize Macroscope's approvability policy. Learn more.

@juliusmarminge juliusmarminge merged commit 11d456f into main Apr 6, 2026
11 checks passed
@juliusmarminge juliusmarminge deleted the t3code/questionnaire-multiselect-fix branch April 6, 2026 23:08
Aditya190803 pushed a commit to Aditya190803/t3code that referenced this pull request Apr 7, 2026
Chrono-byte pushed a commit to Chrono-byte/t3code that referenced this pull request Apr 7, 2026
gigq pushed a commit to gigq/t3code that referenced this pull request Apr 8, 2026
rororowyourboat added a commit to rororowyourboat/t3code that referenced this pull request Apr 9, 2026
…threadId (#2)

* Raise slow RPC ack warning threshold to 15s (pingdotgg#1760)

* Use active worktree path for workspace saves (pingdotgg#1762)

* Stream git status updates over WebSocket (pingdotgg#1763)

Co-authored-by: codex <codex@users.noreply.github.com>

* fix(web): unwrap windows shell command wrappers (pingdotgg#1719)

* Rename "Chat" to "Build" in interaction mode toggle (pingdotgg#1769)

Co-authored-by: Julius Marminge <julius0216@outlook.com>

* Assign default capabilities to Codex custom models (pingdotgg#1793)

* Add project rename support in the sidebar (pingdotgg#1798)

* Support multi-select pending user inputs (pingdotgg#1797)

* Add Zed support to Open actions via editor command aliases (pingdotgg#1303)

Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>

* Closes pingdotgg#1795 - Support building and developing in a devcontainer (pingdotgg#1791)

* Add explicit timeouts to CI and release workflows (pingdotgg#1825)

* fix(web): distinguish singular/plural in pending action submit label (pingdotgg#1826)

* Refactor web stores into atomic slices ready to split ChatView (pingdotgg#1708)

* Add VSCode Insiders and VSCodium icons (pingdotgg#1847)

* Prepare datamodel for multi-environment (pingdotgg#1765)

Co-authored-by: justsomelegs <145564979+justsomelegs@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: cursor[bot] <206951365+cursor[bot]@users.noreply.github.com>

* Implement server auth bootstrap and pairing flow (pingdotgg#1768)

Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius@macmini.local>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: cursor[bot] <206951365+cursor[bot]@users.noreply.github.com>

* Use dev proxy for loopback auth and environment requests (pingdotgg#1853)

* Refresh local git status on turn completion (pingdotgg#1821)

Co-authored-by: codex <codex@users.noreply.github.com>

* fix(desktop): add Copy Link action for chat links (pingdotgg#1835)

* fix: map runtime modes to correct permission levels (pingdotgg#1587)

Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>

* Fix persisted composer image hydration typo (pingdotgg#1831)

* Clarify environment and workspace picker labels (pingdotgg#1854)

* Scope git toast state by thread ref (pingdotgg#1855)

* fix build (pingdotgg#1859)

* Stabilize keybindings toast stream setup (pingdotgg#1860)

Co-authored-by: Julius Marminge <julius@macmini.local>

* feat(web): add embeddable thread route for canvas tile hosts

Adds /embed/thread/:environmentId/:threadId — a standalone route that
renders the existing ChatView without the app sidebar chrome. This is the
iframe target for t3-canvas agent shapes (see rororowyourboat/t3-canvas#3).

- New file-based route embed.thread.\$environmentId.\$threadId.tsx
- __root.tsx bypasses AppSidebarLayout for any /embed/* pathname so the
  environment connection + websocket surface + toasts still initialize
  but the sidebar/diff/plan chrome does not render
- minimal=1 search param is parsed and wired to a data attribute on the
  container for future targeted CSS; chrome hiding (BranchToolbar,
  PlanSidebar, ThreadTerminalDrawer) stays as a follow-up pass
- routeTree.gen.ts regenerated by the @tanstack/router-plugin

---------

Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: legs <145564979+justsomelegs@users.noreply.github.com>
Co-authored-by: sonder <168988030+heysonder@users.noreply.github.com>
Co-authored-by: Adem Ben Abdallah <96244394+AdemBenAbdallah@users.noreply.github.com>
Co-authored-by: Kyle Gottfried <6462596+Spitfire1900@users.noreply.github.com>
Co-authored-by: Jacob <589761+jvzijp@users.noreply.github.com>
Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: cursor[bot] <206951365+cursor[bot]@users.noreply.github.com>
Co-authored-by: Julius Marminge <julius@macmini.local>
Co-authored-by: Klemencina <56873773+Klemencina@users.noreply.github.com>
Co-authored-by: Oskar Sekutowicz <me.oski646@gmail.com>
Co-authored-by: Noxire <59626436+noxire-dev@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L 100-499 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant