feat(ui): redesign chat composer controls#100461
Conversation
|
Codex review: needs maintainer review before merge. Reviewed July 6, 2026, 5:20 PM ET / 21:20 UTC. Summary Reproducibility: not applicable. this is a maintainer feature/redesign PR with targeted regression coverage for included UI behavior fixes, not a standalone current-main bug report. Review metrics: 3 noteworthy metrics.
Stored data model Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Mantis proof suggestion Risk before merge
Maintainer options:
Next step before merge
Maintainer decision needed
Security Review detailsBest possible solution: Land only after maintainer visual/product acceptance and required current-head checks are green; no contributor-facing code repair is identified in this review. Do we have a high-confidence way to reproduce the issue? Not applicable: this is a maintainer feature/redesign PR with targeted regression coverage for included UI behavior fixes, not a standalone current-main bug report. Is this the best way to solve the issue? Yes, with product acceptance: the branch keeps composer behavior in the Control UI and model availability in the gateway method, while the remaining question is whether maintainers want this broad redesigned interaction to land as-is. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against c7295e417d5d. Label changesLabel justifications:
Evidence reviewedAcceptance criteria:
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
Review history (19 earlier review cycles; latest 8 shown)
|
|
Merged via squash.
|
Summary
upstream/mainmergesBehavioral proof
The previous screenshots were removed because later review iterations changed the exact-head composer, attachment, model-picker, and mobile control layouts. This body now records the current-head behavior rather than retaining stale visual evidence.
The Android/mobile regression is covered at the input-event boundary: while an IME composition is active, the first inserted character is stored as a pane-local transient draft, requests an immediate render, and changes the primary action to Send before the host draft is committed. Composition end or blur then commits and clears the transient state.
The latest
upstream/mainworkspace file-link work was merged while retaining this PR's message action row. Markdown rendering enables file links, and assistant canvas/copy/delete actions remain under the bubble instead of reserving space inside it.Verification
node scripts/run-vitest.mjs ui/src/pages/chat/chat-view.test.ts ui/src/pages/chat/chat-controls.test.ts ui/src/pages/chat/chat-composer.test.ts ui/src/pages/chat/components/chat-message.test.ts ui/src/pages/chat/chat-responsive.browser.test.ts ui/src/pages/chat/chat-page.test.ts ui/src/pages/chat/components/chat-sidebar.test.tspnpm ui:buildpnpm checkpnpm check:test-typesandpnpm tsgo:prodpnpm ui:i18n:checkgit diff --check$autoreview --mode local --base upstream/mainafter resolving the workspace file-link merge: clean, no actionable findingsExact PR head:
a934d3f10c433d37fb885cf02da8e5ad286f5980.Included canonical base:
c7295e417d5daec76c18fb452d117f7b8eadc4d6.Real behavior proof
Behavior addressed: Control UI chat composer layout, provider/model selection, staged reasoning and speed controls, combined chat/voice settings, attachment menu, voice start/stop, send-state switching, context display, message alignment/actions, timestamp details, run lifecycle state, error dismissal, response auto-scroll, realtime voice draft handling, split-pane isolation, and workspace file links.
Real environment tested: Chromium desktop/mobile fixtures and the live Rosita Control UI during the iterative layout work; the first-character Android IME failure was reproduced on the remote mobile surface shown during review.
Exact steps or command run after this patch: Dispatched an
inputevent containing the first character while composition was active, verified the host draft remained uncommitted, and asserted the primary action rendered Send immediately; then ran the full focused chat suite and production UI build after merging currentupstream/main.Evidence after fix: The focused suite passes 291 tests, including
switches to send on the first composing character without committing the draft; the production Control UI build and locale consistency check pass; final autoreview reported no actionable branch-caused regression.Observed result after fix: The mic changes to Send as soon as the first IME character appears. It no longer waits for a space or composition completion. Pane-local staged model changes, attachment keyboard focus, responsive message actions, context display, and current-main file links remain intact.
What was not tested: A physical Android keyboard was not rerun after the final patch; the exact browser composition/input sequence is covered by the regression test. Live external realtime voice and physical camera hardware were not exercised in this final verification pass.
Release note
Redesigns the Control UI chat composer across desktop and mobile and fixes model-selection, run-state, scrolling, realtime voice, timestamp-hover, responsive action, and first-character IME send-state regressions.