feat(web): sticky provider options and Grok composer affordances - #5504
feat(web): sticky provider options and Grok composer affordances#5504EnzoTironi wants to merge 4 commits into
Conversation
Draft options for another provider/instance no longer short-circuit sticky or thread options for the currently selected instance.
When the selected instance already has a draft entry without options, skip legacy kind-key option fallback so sticky/thread options can apply — matching the model path which only falls back when the instance entry is missing.
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
ApprovabilityVerdict: Needs human review This PR introduces a new feature with cross-thread sticky model options state and provider-specific UI behavior changes (conditional slash commands). New features with runtime behavior changes and new state management warrant human review. You can customize Macroscope's approvability policy. Learn more. |
What Changed
sendTurnon existing threads/plan/defaultslash items onshowInteractionModeToggleFixes #5421
Why
Without sticky option fallback, changing effort on an existing thread kept stale thread-turn options. Folding sticky into
selectedModelwould silently switch models — fixed so sticky is options-only.UI Changes
Grok Early Access badge removed
Before (badge present):
After (badge removed; Cursor still has Early Access):
Composer effort control (sticky options apply to this picker)
Sticky is send-payload behavior (no new components).
/planslash only when the provider exposes plan mode.Checklist
Test plan
Model: grok-4.5 (Grok Build)
Note
Medium Risk
Changes how composer model options are merged for send payloads across instances and sticky state; well-covered by new unit tests but affects multi-provider draft behavior.
Overview
Fixes composer option resolution (e.g. Grok reasoning effort) so picker changes on existing threads reach
sendTurnwithout changing the thread/project model slug.deriveEffectiveComposerModelStatenow takesstickyModelSelectionByProviderand resolves options per selected instance viaoptionsForInstance, with precedence: draft options for the current instance → sticky → thread/project. Cross-instance and legacy kind-keyed draft entries no longer block sticky; Grok is included insetProviderModelOptionspersistence.Built-in
/planand/defaultslash menu items only appear whenshowInteractionModeToggleis true. Grok’s Early Access settings badge is removed.Reviewed by Cursor Bugbot for commit 907d061. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Add sticky provider options and Grok composer affordances in the chat composer
deriveEffectiveComposerModelStatenow acceptsstickyModelSelectionByProviderand uses it as a fallback when the draft lacks options for the selected provider instance, without affecting model slug resolution.optionsForInstancehelper, replacing the broadermodelSelectionByProviderToOptions.setProviderModelOptions, matching the behavior of codex, claudeAgent, cursor, and opencode./planand/defaultslash commands are gated behindcomposerProviderControls.showInteractionModeToggle, hiding them for providers that don't expose an interaction mode toggle.Macroscope summarized 907d061.