Skip to content

feat(ui): give non-blocking questions their own collapsed style - #538

Merged
Tryanks merged 1 commit into
mainfrom
feat/async-question-style
Sep 24, 2026
Merged

Tryanks merged 1 commit into
mainfrom
feat/async-question-style

Conversation

@Tryanks

@Tryanks Tryanks commented Sep 24, 2026

Copy link
Copy Markdown
Owner

What changes

Non-blocking questions from Codex request_user_input_async (#536) used the blocking question card. That card reads as "the agent is waiting on you", which is wrong for a question the agent works past.

The Codex TUI shows these questions collapsed on arrival, as a one-line "? 1 question" summary that never takes focus, and the user opens them to answer. Tcode now does the same:

  • Collapsed by default. A one-line strip above the composer shows an info icon, the "Question from the agent" label, the truncated question, and buttons to expand and hide. Clicking the strip expands it.
  • Expanded. A light inline area with the full question, the options as chips, a custom answer field and the "agent keeps working" hint. A chevron collapses it again.
  • Blocking questions from Claude, OpenCode, pi and Codex requestUserInput keep the full card unchanged. The non-blocking-only header, hint and hide button are removed from it.

New strings for expanding and collapsing are added in English and Chinese.

Checks run

  • cargo fmt --all --check, cargo clippy --workspace --all-targets --locked -- -D warnings, cargo nextest run --workspace --locked: all pass locally on macOS.
  • Desktop app with a live Codex session (codex-cli 0.156.1, gpt-6-astra) on a throwaway profile. Light theme at wide width: the strip appears collapsed, expands, and answering with a chip steers the running turn and closes it. Dark theme at narrow width: collapsed and expanded states render, and long questions truncate or wrap cleanly.
  • No new unit test: the change is presentation only, and the answer path it drives is covered by the Codex client test from feat(codex): surface non-blocking asks from request_user_input_async #536.

A non-blocking question used the blocking question card, which reads as
"the agent is waiting on you". It now follows Codex's own clients: it
arrives as a one-line strip above the composer (icon, label, question,
expand and hide) that never takes focus. Opening it shows a light inline
area with the options as chips, a custom answer field and the "agent keeps
working" hint. Blocking questions keep the full card unchanged.
@Tryanks
Tryanks merged commit c4d0741 into main Sep 24, 2026
7 checks passed
@Tryanks
Tryanks deleted the feat/async-question-style branch September 24, 2026 07:44
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