Area
apps/web, apps/server
Problem / Observed Behavior
When using the OpenCode provider in T3 Code, the reasoning effort (model variant, e.g. Low / Medium / High / Max) and the agent mode (Build / Plan) are bundled into a single compound dropdown trigger in the composer footer (e.g. Max · Build or Medium · Build).
Clicking this trigger opens a single shared popover menu grouping both Reasoning and Agent together:
+-----------------------+
| Reasoning |
| Low |
| High |
| ✓ Max |
+-----------------------+
| Agent |
| ✓ Build [Default] |
| Plan |
+-----------------------+
This contrasts with Codex and Claude, where reasoning/effort is exposed as its own dedicated input control separate from interaction/mode controls.
Background
In PR #9287 (fix(opencode): show Reasoning selector for OpenCode models, addressing #2144), the OpenCode variant descriptor was renamed to Reasoning and synthesized into the provider's optionDescriptors. Because TraitsPicker joins all select option descriptors together (labels.join(' · ')), OpenCode's reasoning and agent options ended up rendered as a single joint trigger (Max · Build).
Expected Behavior
Reasoning effort and Agent selection should be distinct, separate controls in the composer:
- Dedicated Reasoning Effort picker: A standalone dropdown for reasoning levels (
Low, Medium, High, Max / xhigh), matching the UX pattern of Codex and Claude.
- Dedicated Agent / Mode control: A separate control for OpenCode agent selection (
Build, Plan), aligned with how interaction modes are handled.
Steps to Reproduce
- Open T3 Code composer.
- Select the OpenCode provider and any model supporting variants (e.g., DeepSeek V4.1 Flash).
- Observe the footer toolbar: instead of a dedicated reasoning selector, a single joint pill (
Max · Build) is displayed that bundles both Reasoning and Agent options into one menu.
Why this matters
- Cross-provider consistency: Users switching between Codex, Claude, and OpenCode expect reasoning controls to be in a familiar, dedicated location.
- Discoverability: Bundling reasoning into the agent/mode dropdown makes reasoning effort hard to discover, leading users to believe effort adjustment is unsupported or fixed to the default.
- UX Clarity: Reasoning depth and agent mode are orthogonal settings that should not require opening a compound popover to change.
Area
apps/web, apps/server
Problem / Observed Behavior
When using the OpenCode provider in T3 Code, the reasoning effort (model variant, e.g.
Low/Medium/High/Max) and the agent mode (Build/Plan) are bundled into a single compound dropdown trigger in the composer footer (e.g.Max · BuildorMedium · Build).Clicking this trigger opens a single shared popover menu grouping both Reasoning and Agent together:
This contrasts with Codex and Claude, where reasoning/effort is exposed as its own dedicated input control separate from interaction/mode controls.
Background
In PR #9287 (
fix(opencode): show Reasoning selector for OpenCode models, addressing #2144), the OpenCodevariantdescriptor was renamed toReasoningand synthesized into the provider'soptionDescriptors. BecauseTraitsPickerjoins all select option descriptors together (labels.join(' · ')), OpenCode's reasoning and agent options ended up rendered as a single joint trigger (Max · Build).Expected Behavior
Reasoning effort and Agent selection should be distinct, separate controls in the composer:
Low,Medium,High,Max/xhigh), matching the UX pattern of Codex and Claude.Build,Plan), aligned with how interaction modes are handled.Steps to Reproduce
Max · Build) is displayed that bundles both Reasoning and Agent options into one menu.Why this matters