Skip to content

refactor(web): composer controls own their look instead of restyling ui components - #13209

Merged
juliusmarminge merged 1 commit into
restyle/stack-button-restfrom
restyle/stack-button-composer
Sep 23, 2026
Merged

juliusmarminge merged 1 commit into
restyle/stack-button-restfrom
restyle/stack-button-composer

Conversation

@juliusmarminge

@juliusmarminge juliusmarminge commented Sep 23, 2026 •

Copy link
Copy Markdown
Member

The composer's controls own their look instead of restyling ui components. No composer look goes into components/ui.

  • ComposerControl / ComposerSelectControl render their own element with one class recipe for the toolbar size and the resting-strip size, instead of restyling Button and SelectTrigger. Plan mode is aria-pressed. The "open provider settings" button is a ComposerControl too.
  • The model and traits pickers in Settings take no variant. They used triggerVariant="outline" plus a size and colour class string, which restyled a real Button where the lint rule couldn't see it. In Settings they are now the composer control, 28px on every breakpoint, with no outline.
  • Submit, Next, Refine, Implement and the chevron are plain buttons sharing one local recipe, like send and stop already were. They lose Button's inset highlight and press scale. "Previous" is a standard rounded outline button.
  • Attachment chips: retry uses overlay (a dark circle), remove uses media-close, and the snapshot hover-reveal moves to a wrapper.
  • Model picker:
    • Rows take ComboboxItem's defaults, so they are tighter with the standard highlight.
    • The favourite star is ghost-muted, and "open provider setup" is an InlineButton.
  • ComboboxItem (generic): disabled items don't highlight on hover.

No screenshots yet: these changes are verified by lint, typecheck and tests only.

no-restyle findings: 101 → 0.

Claude Opus 5.5 via Claude Code.

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Style
    • Updated the appearance of chat composer controls, message actions, model pickers, and settings selectors for a more consistent interface.
    • Adjusted model-list and empty-state presentation.
  • Bug Fixes
    • Disabled options in selection menus no longer show the hover background used by active options.

@juliusmarminge
juliusmarminge added this pull request to stack #13194 September 23, 2026 04:08
@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Sep 23, 2026
*/
function composerControlClassName(size: ComposerControlSize, className?: string) {
return cn(
"relative inline-flex shrink-0 cursor-pointer items-center justify-center whitespace-nowrap rounded-[var(--control-radius)] border border-transparent text-base outline-none hover:bg-accent data-pressed:bg-accent focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-64 data-disabled:pointer-events-none data-disabled:opacity-64 pointer-coarse:after:absolute pointer-coarse:after:size-full pointer-coarse:after:min-h-11 pointer-coarse:after:min-w-11 [&:active:not([aria-haspopup])]:scale-[0.97] [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg]:-mx-0.5 [&_svg[data-composer-control-icon]]:mx-0 [&_svg:not([class*='text-'])]:text-[var(--control-icon-color)]",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shared primitives over custom controls: this recreates ui/Button and ui/SelectTrigger styling instead of composing those primitives. Add the composer sizes/variants to the UI primitives and have ComposerControl delegate to them.

Suggested fix: No diff; the fix requires coordinated primitive variants and component changes.

Posted via Macroscope — UI Consistency

// The composer's labeled primary actions (Submit, Refine, Implement) share the send button's
// message-action pill, so they are composer-owned buttons rather than restyled Buttons.
const messageActionPillClassName =
"inline-flex shrink-0 cursor-pointer items-center justify-center gap-1.5 whitespace-nowrap rounded-full bg-message-action font-medium text-base text-message-action-foreground shadow-xs shadow-message-action/24 outline-none hover:bg-message-action-hover focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1 focus-visible:ring-offset-background disabled:pointer-events-none disabled:opacity-64 disabled:shadow-none sm:text-sm";

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shared primitives over custom controls: this class turns several raw <button> elements into product controls. Add a message-action variant/size to ui/Button and render these actions with Button instead.

Suggested fix: No diff; the fix requires adding a shared Button variant and updating multiple call sites.

Posted via Macroscope — UI Consistency

@github-actions

github-actions Bot commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ℹ️ No successful main baseline artifact is available yet. This run establishes the initial measurement.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire — 13.5 KiB — 15.1 KiB ✅
Codex Thread snapshot wire — 7.1 KiB — 7.3 KiB ✅
Codex Live turn WebSocket wire — 6.5 KiB — 7.8 KiB ✅
Codex Live turn WebSocket decoded — 56.3 KiB — 66.4 KiB ✅
Codex Live turn messages — 10 — 21 ✅
Claude Total thread wire — 13.5 KiB — 15.1 KiB ✅
Claude Thread snapshot wire — 7.1 KiB — 7.3 KiB ✅
Claude Live turn WebSocket wire — 6.4 KiB — 7.8 KiB ✅
Claude Live turn WebSocket decoded — 57.0 KiB — 66.4 KiB ✅
Claude Live turn messages — 9 — 21 ✅

Baseline: unavailable · PR result: 2212de6 · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 114.0 KiB
  • Claude decoded thread snapshot: 114.7 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@macroscopeapp

This comment has been minimized.

@macroscopeapp

This comment has been minimized.

@macroscopeapp

macroscopeapp Bot commented Sep 23, 2026 •

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Not approved

Macroscope's review found this PR not approvable — This multi-surface web refactor changes the runtime appearance and implementation of composer, model-picker, attachment, and settings controls, including replacing shared UI wrappers with custom styling and raw buttons. The unresolved architecture concerns about bypassing shared primitives merit human evaluation before merging.

No code changes detected at 2212de6. Prior analysis still applies.

You can add or adjust custom eligibility rules. Learn more.

@coderabbitai

coderabbitai Bot commented Sep 23, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository: pingdotgg/t3code/.coderabbit.yaml

Review profile: CHILL

Plan: Team

Run ID: eeea185e-34ed-4dad-8128-103c6bd68eb4

📥 Commits

Reviewing files that changed from the base of the PR and between 4204200 and bb80f82.

📒 Files selected for processing (15)
  • apps/web/src/components/chat/ChatComposer.tsx
  • apps/web/src/components/chat/CompactComposerControlsMenu.tsx
  • apps/web/src/components/chat/ComposerControl.tsx
  • apps/web/src/components/chat/ComposerPrimaryActions.tsx
  • apps/web/src/components/chat/ModelListRow.tsx
  • apps/web/src/components/chat/ModelPickerContent.tsx
  • apps/web/src/components/chat/ProviderModelPicker.tsx
  • apps/web/src/components/chat/TraitsPicker.tsx
  • apps/web/src/components/chat/composerProviderState.tsx
  • apps/web/src/components/settings/ProjectDefaultsSettings.tsx
  • apps/web/src/components/settings/SettingsPanels.tsx
  • apps/web/src/components/settings/SourceControlWritingSettings.tsx
  • apps/web/src/components/settings/settingsLayout.tsx
  • apps/web/src/components/ui/combobox.tsx
  • scripts/lint-restyle-ceiling.ts
💤 Files with no reviewable changes (6)
  • apps/web/src/components/chat/ProviderModelPicker.tsx
  • apps/web/src/components/settings/SettingsPanels.tsx
  • apps/web/src/components/settings/ProjectDefaultsSettings.tsx
  • apps/web/src/components/chat/composerProviderState.tsx
  • apps/web/src/components/settings/SourceControlWritingSettings.tsx
  • apps/web/src/components/chat/TraitsPicker.tsx

Included review availability: Your plan provides up to 10 included reviews per hour; 1 remains after this review.


📝 Walkthrough

Walkthrough

Composer controls now use Base UI primitives or native buttons with updated styling. Provider and traits picker trigger variants were removed, and model-picker list styles changed. The restyle lint threshold is now zero.

Changes

Composer and picker controls

Layer / File(s) Summary
Composer control primitives and actions
apps/web/src/components/chat/ComposerControl.tsx, apps/web/src/components/chat/ComposerPrimaryActions.tsx, apps/web/src/components/chat/ChatComposer.tsx, apps/web/src/components/chat/CompactComposerControlsMenu.tsx
ComposerControl and ComposerSelectControl now render through Base UI primitives. Composer message actions use native buttons with shared pill styling. Other composer controls use updated shared styles and variants; their existing actions and conditions remain.
Picker trigger options and settings callers
apps/web/src/components/chat/ProviderModelPicker.tsx, apps/web/src/components/chat/TraitsPicker.tsx, apps/web/src/components/chat/composerProviderState.tsx, apps/web/src/components/settings/ProjectDefaultsSettings.tsx, apps/web/src/components/settings/SettingsPanels.tsx, apps/web/src/components/settings/SourceControlWritingSettings.tsx, apps/web/src/components/settings/settingsLayout.tsx
Provider and traits pickers no longer accept or forward triggerVariant. Settings callers no longer set explicit trigger variants. The shared settings trigger class retains only width and shrink rules.
Picker list styles and lint threshold
apps/web/src/components/chat/ModelListRow.tsx, apps/web/src/components/chat/ModelPickerContent.tsx, apps/web/src/components/ui/combobox.tsx, scripts/lint-restyle-ceiling.ts
Model list and empty-state classes changed, and the setup action now uses InlineButton. Disabled combobox items no longer receive the hover background. The restyle lint ceiling is zero.

Priority: ⬇️ Low

Estimated code review effort: 3 (Moderate) | ~20 minutes

Change: Refactor

Possibly related PRs

  • pingdotgg/t3code#7855: This PR also changes size-aware ComposerControl usage and resting composer controls.

Suggested reviewers: chrisdeeming, t3dotgg

Merge Risk: ⚪ Minimal · up to bb80f

No actionable issue remains from these control changes; the PR is mergeable after normal checks.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 28.57% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 7 functions across 9 files. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Title check ✅ Passed The title clearly and concisely describes the main refactor: composer controls now own their styling instead of restyling generic UI components.
Description check ✅ Passed The description clearly explains what changed and why, covers the affected UI behavior, and reports validation results. It does not use the template headings, include the checklist, or provide the req…
  • Fix all pre-merge checks with AI
✨ Finishing Touches 💡 1
📝 Generate docstrings 💡
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR

Comment @coderabbitai help to get the list of available commands.

…ui components

The chat composer restyled Button, SelectTrigger and ComboboxItem with
className in 101 places. components/ui stays generic, so nothing here adds
a ui variant; each cluster either becomes a composer-owned element or moves
onto an existing primitive.

- ComposerControl / ComposerSelectControl: the composer toolbar control is a
  real named concept but composer-specific, so it is now an app control that
  renders its own element (useRender button, Select.Trigger) with one class
  recipe for the sm toolbar and the dimmer xs resting strip. Plan mode is
  marked with aria-pressed instead of call-site color classes. Settings
  pickers that pass triggerVariant still get a plain Button in that variant.
- Provider-unavailable action becomes a ComposerControl (was a ghost Button
  restyled to look like one).
- ComposerPrimaryActions: Submit/Refine/Implement pills share the send
  button's message-action look, which only the composer uses, so they are
  plain composer-owned buttons with one local class recipe, like send and
  stop already were. Previous buttons drop rounded-full (plain outline).
- Attachment chips: retry uses Button's overlay variant and remove uses
  media-close (drift from bg-background/85). The snap-shot hover reveal moves
  to a plain wrapper span.
- Model picker: ModelListRow and the legacy row drop their padding, radius
  and highlight overrides and use ComboboxItem's own states; the favorite
  star uses ghost-muted; provider setup link becomes InlineButton; the list
  and empty state use their defaults. ComboboxItem's hover no longer paints
  disabled rows (generic fix, replaces data-disabled:hover:bg-transparent).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@juliusmarminge
juliusmarminge force-pushed the restyle/stack-button-composer branch from bb80f82 to 2212de6 Compare September 23, 2026 04:27
@juliusmarminge
juliusmarminge merged commit 0e512db into main Sep 23, 2026
27 of 39 checks passed
@juliusmarminge
juliusmarminge deleted the restyle/stack-button-composer branch September 23, 2026 04:33
cursor Bot pushed a commit to aaditagrawal/t3code that referenced this pull request Sep 23, 2026
…ui components (pingdotgg#13209)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
cursor Bot pushed a commit to aaditagrawal/t3code that referenced this pull request Sep 23, 2026
…ui components (pingdotgg#13209)

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
github-actions Bot added a commit to omarcresp/t3code-flake that referenced this pull request Sep 23, 2026
## What's Changed
* hatch/variant functions by @juliusmarminge in pingdotgg/t3code#13191
* refactor(web): context chips render through one ContextChip component by @juliusmarminge in pingdotgg/t3code#13192
* refactor(web): ui components drop their secondary className props by @juliusmarminge in pingdotgg/t3code#13193
* refactor(web): menu triggers and items stop restyling ui/menu by @juliusmarminge in pingdotgg/t3code#13205
* refactor(web): field controls stop restyling Input, Select, Combobox and Command by @juliusmarminge in pingdotgg/t3code#13206
* refactor(web): app code stops restyling sidebar, popover, table and misc ui exports by @juliusmarminge in pingdotgg/t3code#13207
* refactor(web): Button consumers outside the composer stop restyling it by @juliusmarminge in pingdotgg/t3code#13208
* refactor(web): composer controls own their look instead of restyling ui components by @juliusmarminge in pingdotgg/t3code#13209
* chore(web): no-restyle fails lint, and the ceiling gate goes by @juliusmarminge in pingdotgg/t3code#13210
* fix(mobile): recover from screen render errors by @juliusmarminge in pingdotgg/t3code#13197
* feat(web): navigate back and forward with mod+[ and mod+] by @juliusmarminge in pingdotgg/t3code#13212
* fix(web): sort title matches by recent activity by @Yash-Singh1 in pingdotgg/t3code#13219
* test(desktop): remove redundant keyring module-load test by @t3-code[bot] in pingdotgg/t3code#13220


**Full Changelog**: pingdotgg/t3code@v0.0.43-nightly.20260923.2135...v0.0.43-nightly.20260923.2150

Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.43-nightly.20260923.2150
donjor added a commit to RSI-Software/t3code-hyprws that referenced this pull request Sep 24, 2026
## What Changed

`AgentPicker.fork.tsx` drops the `triggerVariant` prop and stops passing `variant` to `ComposerControl`.
No caller sets `triggerVariant`, so the trigger renders as before.

## Why

Upstream `0e512db` (`pingdotgg#13209`) removed `variant` from `ComposerControl`.
Syncing `v0.0.43-nightly.20260923.2150` replays cleanly but fails web typecheck at `AgentPicker.fork.tsx`, blocking the sync.
Landing this on the trunk first lets the sync pass its check battery.

## Checklist

- [x] This PR is small and focused
- [x] I explained what changed and why
- [ ] I included before/after screenshots for any UI changes
- [ ] I included a video for animation/interaction changes

## Fork trailers

Refs #1277

Fork-Domain: custom-agents
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <38745786+donjor@users.noreply.github.com>
donjor added a commit to RSI-Software/t3code-hyprws that referenced this pull request Sep 24, 2026
## What Changed

`AgentPicker.fork.tsx` drops the `triggerVariant` prop and stops passing `variant` to `ComposerControl`.
No caller sets `triggerVariant`, so the trigger renders as before.

## Why

Upstream `0e512db` (`pingdotgg#13209`) removed `variant` from `ComposerControl`.
Syncing `v0.0.43-nightly.20260923.2150` replays cleanly but fails web typecheck at `AgentPicker.fork.tsx`, blocking the sync.
Landing this on the trunk first lets the sync pass its check battery.

## Checklist

- [x] This PR is small and focused
- [x] I explained what changed and why
- [ ] I included before/after screenshots for any UI changes
- [ ] I included a video for animation/interaction changes

## Fork trailers

Refs #1277

Fork-Domain: custom-agents
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <38745786+donjor@users.noreply.github.com>
donjor added a commit to RSI-Software/t3code-hyprws that referenced this pull request Sep 24, 2026
## What Changed

`AgentPicker.fork.tsx` drops the `triggerVariant` prop and stops passing `variant` to `ComposerControl`.
No caller sets `triggerVariant`, so the trigger renders as before.

## Why

Upstream `0e512db` (`pingdotgg#13209`) removed `variant` from `ComposerControl`.
Syncing `v0.0.43-nightly.20260923.2150` replays cleanly but fails web typecheck at `AgentPicker.fork.tsx`, blocking the sync.
Landing this on the trunk first lets the sync pass its check battery.

## Checklist

- [x] This PR is small and focused
- [x] I explained what changed and why
- [ ] I included before/after screenshots for any UI changes
- [ ] I included a video for animation/interaction changes

## Fork trailers

Refs #1277

Fork-Domain: custom-agents
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <38745786+donjor@users.noreply.github.com>
donjor added a commit to RSI-Software/t3code-hyprws that referenced this pull request Sep 24, 2026
## What Changed

`AgentPicker.fork.tsx` drops the `triggerVariant` prop and stops passing `variant` to `ComposerControl`.
No caller sets `triggerVariant`, so the trigger renders as before.

## Why

Upstream `0e512db` (`pingdotgg#13209`) removed `variant` from `ComposerControl`.
Syncing `v0.0.43-nightly.20260923.2150` replays cleanly but fails web typecheck at `AgentPicker.fork.tsx`, blocking the sync.
Landing this on the trunk first lets the sync pass its check battery.

## Checklist

- [x] This PR is small and focused
- [x] I explained what changed and why
- [ ] I included before/after screenshots for any UI changes
- [ ] I included a video for animation/interaction changes

## Fork trailers

Refs #1277

Fork-Domain: custom-agents
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <38745786+donjor@users.noreply.github.com>
donjor added a commit to RSI-Software/t3code-hyprws that referenced this pull request Sep 24, 2026
## What Changed

`AgentPicker.fork.tsx` drops the `triggerVariant` prop and stops passing `variant` to `ComposerControl`.
No caller sets `triggerVariant`, so the trigger renders as before.

## Why

Upstream `0e512db` (`pingdotgg#13209`) removed `variant` from `ComposerControl`.
Syncing `v0.0.43-nightly.20260923.2150` replays cleanly but fails web typecheck at `AgentPicker.fork.tsx`, blocking the sync.
Landing this on the trunk first lets the sync pass its check battery.

## Checklist

- [x] This PR is small and focused
- [x] I explained what changed and why
- [ ] I included before/after screenshots for any UI changes
- [ ] I included a video for animation/interaction changes

## Fork trailers

Refs #1277

Fork-Domain: custom-agents
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <38745786+donjor@users.noreply.github.com>
donjor added a commit to RSI-Software/t3code-hyprws that referenced this pull request Sep 24, 2026
## What Changed

`AgentPicker.fork.tsx` drops the `triggerVariant` prop and stops passing `variant` to `ComposerControl`.
No caller sets `triggerVariant`, so the trigger renders as before.

## Why

Upstream `0e512db` (`pingdotgg#13209`) removed `variant` from `ComposerControl`.
Syncing `v0.0.43-nightly.20260923.2150` replays cleanly but fails web typecheck at `AgentPicker.fork.tsx`, blocking the sync.
Landing this on the trunk first lets the sync pass its check battery.

## Checklist

- [x] This PR is small and focused
- [x] I explained what changed and why
- [ ] I included before/after screenshots for any UI changes
- [ ] I included a video for animation/interaction changes

## Fork trailers

Refs #1277

Fork-Domain: custom-agents
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <38745786+donjor@users.noreply.github.com>
donjor added a commit to RSI-Software/t3code-hyprws that referenced this pull request Sep 24, 2026
## What Changed

`AgentPicker.fork.tsx` drops the `triggerVariant` prop and stops passing `variant` to `ComposerControl`.
No caller sets `triggerVariant`, so the trigger renders as before.

## Why

Upstream `0e512db` (`pingdotgg#13209`) removed `variant` from `ComposerControl`.
Syncing `v0.0.43-nightly.20260923.2150` replays cleanly but fails web typecheck at `AgentPicker.fork.tsx`, blocking the sync.
Landing this on the trunk first lets the sync pass its check battery.

## Checklist

- [x] This PR is small and focused
- [x] I explained what changed and why
- [ ] I included before/after screenshots for any UI changes
- [ ] I included a video for animation/interaction changes

## Fork trailers

Refs #1277

Fork-Domain: custom-agents
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <38745786+donjor@users.noreply.github.com>
donjor added a commit to RSI-Software/t3code-hyprws that referenced this pull request Sep 25, 2026
## What Changed

`AgentPicker.fork.tsx` drops the `triggerVariant` prop and stops passing `variant` to `ComposerControl`.
No caller sets `triggerVariant`, so the trigger renders as before.

## Why

Upstream `0e512db` (`pingdotgg#13209`) removed `variant` from `ComposerControl`.
Syncing `v0.0.43-nightly.20260923.2150` replays cleanly but fails web typecheck at `AgentPicker.fork.tsx`, blocking the sync.
Landing this on the trunk first lets the sync pass its check battery.

## Checklist

- [x] This PR is small and focused
- [x] I explained what changed and why
- [ ] I included before/after screenshots for any UI changes
- [ ] I included a video for animation/interaction changes

## Fork trailers

Refs #1277

Fork-Domain: custom-agents
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <38745786+donjor@users.noreply.github.com>
donjor added a commit to RSI-Software/t3code-hyprws that referenced this pull request Sep 27, 2026
## What Changed

`AgentPicker.fork.tsx` drops the `triggerVariant` prop and stops passing `variant` to `ComposerControl`.
No caller sets `triggerVariant`, so the trigger renders as before.

## Why

Upstream `0e512db` (`pingdotgg#13209`) removed `variant` from `ComposerControl`.
Syncing `v0.0.43-nightly.20260923.2150` replays cleanly but fails web typecheck at `AgentPicker.fork.tsx`, blocking the sync.
Landing this on the trunk first lets the sync pass its check battery.

## Checklist

- [x] This PR is small and focused
- [x] I explained what changed and why
- [ ] I included before/after screenshots for any UI changes
- [ ] I included a video for animation/interaction changes

## Fork trailers

Refs #1277

Fork-Domain: custom-agents
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <38745786+donjor@users.noreply.github.com>
donjor added a commit to RSI-Software/t3code-hyprws that referenced this pull request Sep 27, 2026
## What Changed

`AgentPicker.fork.tsx` drops the `triggerVariant` prop and stops passing `variant` to `ComposerControl`.
No caller sets `triggerVariant`, so the trigger renders as before.

## Why

Upstream `0e512db` (`pingdotgg#13209`) removed `variant` from `ComposerControl`.
Syncing `v0.0.43-nightly.20260923.2150` replays cleanly but fails web typecheck at `AgentPicker.fork.tsx`, blocking the sync.
Landing this on the trunk first lets the sync pass its check battery.

## Checklist

- [x] This PR is small and focused
- [x] I explained what changed and why
- [ ] I included before/after screenshots for any UI changes
- [ ] I included a video for animation/interaction changes

## Fork trailers

Refs #1277

Fork-Domain: custom-agents
Fork-Tier: bugfix
Fork-Upstreamable: no
Co-authored-by: donjor <38745786+donjor@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