Skip to content

Settings: add automatic steering for active chats - #713

Draft
woosal1337 wants to merge 1 commit into
zeronsh:mainfrom
woosal1337:feat/auto-steer
Draft

woosal1337 wants to merge 1 commit into
zeronsh:mainfrom
woosal1337:feat/auto-steer

Conversation

@woosal1337

@woosal1337 woosal1337 commented Oct 1, 2026 •

Copy link
Copy Markdown

Summary

  • Add Automatically steer messages under Settings → General, with a default-off preference that persists locally.
  • When enabled, Send and the configured send key deliver submitted text to a supported active run through the existing durable Steer command. The host applies the message at its next supported step boundary without interrupting running tools.
  • Keep the queue for images, Appshots, unknown capabilities, Hermes, and Antigravity. Idle sends, queued edits, and question answers keep their existing behavior.
  • Correct the lazy steering descriptors for Devin, Grok, and OpenCode. They previously reported turn boundaries until the drivers loaded, which disabled automatic steering on a cold catalog.
  • Reuse the existing settings row and switch, with pointer, Space, Enter, focus, and accessibility support. The Send tooltip shows Steer active run when applicable.

This change adds no dependency, wire field, migration, or version bump. Existing settings files keep the current queue behavior.

Test plan

  • cargo test --locked -p zeron-ui --lib -- --test-threads=1: 1,404 passed. New tests cover settings persistence, pointer and keyboard input, durable steering dispatch, and routing across every registered harness before and after loading.
  • Full engine gate: cargo test --locked -p zeron-engine --no-fail-fast -- --test-threads=1: 613 passed, 1 failed, 18 ignored. The failure is online_runtime_shutdown_stops_edge_workers_and_retires_the_graph, which also fails on upstream main at b42fc2b. It counts one request after shutdown. The engine unit suite passes 381 tests, including the new descriptor regression. That regression first failed for Devin, Grok, and OpenCode.
  • cargo test --locked -p zeron-harness --features native-fixture --no-fail-fast -- --test-threads=1: 510 passed, 12 ignored, with an empty, isolated GEMINI_HOME. Native and ACP fixtures cover the supported protocol paths.
  • Clippy for all engine and UI targets, the desktop build, and git diff --check. Clippy reports no warning on a changed line. Live steering passes with Claude Code's Haiku and Sonnet aliases, and Grok's default model. Those checks cover tool survival, retained context, and ordered delivery of steering and queued messages.
  • Native UI checks and screenshot attachments: before/after, toggle off/on, restart persistence, light/dark appearance, and frosted/opaque surfaces. Native window capture is unavailable in this environment, so this PR stays a draft.

The offline routing matrix covers all nine real harnesses and the mock. Live checks cover the three cases above. They do not establish live support for every provider or advertised model.

On macOS, the engine run uses the existing TMPDIR resolved to its canonical path. This avoids an existing generated-image path assertion that also reproduces on upstream main. No change to either integration test is part of this PR.


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant