feat(web): sticky provider options and Grok composer affordances - #5426
feat(web): sticky provider options and Grok composer affordances#5426EnzoTironi wants to merge 3 commits into
Conversation
|
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 (sticky provider options) that changes how model options persist across threads, adding new user-facing capability. New features introducing runtime behavior changes warrant human review. You can customize Macroscope's approvability policy. Learn more. |
|
Review findings from Bugbot/Macroscope for this slice are fixed on the Zoen product tip ( |
d93ecf6 to
ad5b707
Compare
ad5b707 to
d882090
Compare
Draft options for another provider/instance no longer short-circuit sticky or thread options for the currently selected instance.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit cb97299. Configure here.
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.




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 send-time model option resolution across threads and custom provider instances; wrong precedence could ship stale or cross-provider options, though behavior is heavily unit-tested.
Overview
Sticky composer options now feed
deriveEffectiveComposerModelStatewhen the per-thread draft has no options for the selected instance, so picker changes (e.g. Grok reasoning effort) apply on existing threads without overriding the thread/project model slug. Resolution is instance-scoped: options from other instances or kind-keyed legacy drafts no longer block sticky, and sticky options are re-keyed under the active custom instance id.Grok is included in
setProviderModelOptionsdraft persistence, the Grok Early Access badge is removed in settings metadata, and built-in/plan//defaultslash menu items only appear whenshowInteractionModeToggleis true (hiding no-ops on providers like OpenCode).Unit tests cover sticky vs draft/thread precedence and Grok sticky persistence.
Reviewed by Cursor Bugbot for commit 1d77552. 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 1d77552.