feat(settings): move mid-turn steering behind a Settings toggle - #118
Merged
Conversation
Add settings.midTurnSteeringEnabled (Settings → Steer / Queue) as the primary on/off switch for mid-turn steering, threaded through the provider IPC contract (schema, preload, main, runtime) to the existing STAVE_ENABLE_MID_TURN_STEERING env check, which now acts as a legacy/ops fallback rather than the only way to enable it. The composer's steer option is now hidden entirely when the setting is off instead of being offered and then rejected by the main process.
astyfx
enabled auto-merge (squash)
July 8, 2026 07:11
heath-s
approved these changes
Jul 8, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Mid-turn steering was previously gated solely by the
STAVE_ENABLE_MID_TURN_STEERINGenv var, with no user-facing way to turn it on. This adds a real Settings UI toggle as the primary control, keeping the env var as a backward-compatible fallback for existing dev/ops usage.Changes
Features
settings: addmidTurnSteeringEnabled(Settings → Steer / Queue) as the on/off switch for mid-turn steering; the "Active-Turn Keys" selector is disabled when it's offchat-input: hide the steer option entirely when the setting is off, instead of offering it and having it silently rejected by the main processFixes
provider-runtime:steerTurnnow accepts anenabledflag from the renderer setting; steering works if either the setting istrueorSTAVE_ENABLE_MID_TURN_STEERING=1is set — neither alone is required, so existing env-var-only setups keep workingRefactors / Chores
enabledfield through the full provider IPC contract:SteerTurnArgsSchema→preload.ts→window-api.d.ts→ProviderRuntime.steerTurntype →runtime.tstests/that were left broken by the prior Send/Stop composer redesign (fix(prompt-input): unify steer/queue composer into a codex-style morphing button #115) — they asserted on removed UI (the old separate abort button and the floating "Adjust current work" secondary button)Test Evidence
bun run typecheckpasses cleanbun test tests/prompt-input-queue-mode.test.tsx tests/provider-runtime-steer.test.ts— 19/19 pass, including new coverage forenabled:trueoverriding the env flag andenabled:falsestill blocking when the env flag is offbun testrun has 11 pre-existing failures inprovider-executable-resolution.test.ts(test-isolation issue when run as part of the full suite) — confirmed present onmainbefore this change too, unrelated to this diffNotes
Builds on the composer UX work from #115 (already merged into
main); this PR is based on currentmainand only carries the settings-toggle diff.