Promotes the Steer feature from Experimental to Stable and enables it by default. ## What is Steer mode? Steer mode changes how message submission works in the TUI: - **With Steer enabled (new default)**: - `Enter` submits messages immediately, even when a task is running - `Tab` queues messages when a task is running (allows building up a queue) - **With Steer disabled (old behavior)**: - `Enter` queues messages when a task is running - This preserves the previous "queue while a task is running" behavior ## How Steer vs Queue work The key difference is in the submission behavior: 1. **Steer mode** (`steer_enabled = true`): - Enter → `InputResult::Submitted` → sends immediately via `submit_user_message()` - Tab → `InputResult::Queued` → queues via `queue_user_message()` if a task is running - This gives users direct control: Enter for immediate submission, Tab for queuing 2. **Queue mode** (`steer_enabled = false`, previous default): - Enter → `InputResult::Queued` → always queues when a task is running - Tab → `InputResult::Queued` → queues when a task is running - This preserves the original behavior where Enter respects the running task queue ## Implementation details The behavior is controlled in `ChatComposer::handle_key_event_without_popup()`: - When `steer_enabled` is true, Enter calls `handle_submission(false)` (submit immediately) - When `steer_enabled` is false, Enter calls `handle_submission(true)` (queue) See `codex-rs/tui/src/bottom_pane/chat_composer.rs` for the implementation. ## Documentation For more details on the chat composer behavior, see: - [TUI Chat Composer documentation](docs/tui-chat-composer.md) - Feature flag definition: `codex-rs/core/src/features.rs`
codex-core
This crate implements the business logic for Codex. It is designed to be used by the various Codex UIs written in Rust.
Dependencies
Note that codex-core makes some assumptions about certain helper utilities being available in the environment. Currently, this support matrix is:
macOS
Expects /usr/bin/sandbox-exec to be present.
When using the workspace-write sandbox policy, the Seatbelt profile allows
writes under the configured writable roots while keeping .git (directory or
pointer file), the resolved gitdir: target, and .codex read-only.
Linux
Expects the binary containing codex-core to run the equivalent of codex sandbox linux (legacy alias: codex debug landlock) when arg0 is codex-linux-sandbox. See the codex-arg0 crate for details.
All Platforms
Expects the binary containing codex-core to simulate the virtual apply_patch CLI when arg1 is --codex-run-as-apply-patch. See the codex-arg0 crate for details.