-
Notifications
You must be signed in to change notification settings - Fork 6.9k
Comparing changes
Open a pull request
base repository: openai/codex
base: rust-v0.76.0
head repository: openai/codex
compare: main
- 14 commits
- 85 files changed
- 11 contributors
Commits on Dec 19, 2025
-
Fix link to contributing.md in experimental.md (#8311)
# External (non-OpenAI) Pull Request Requirements Before opening this Pull Request, please read the dedicated "Contributing" markdown file or your PR may be closed: https://github.com/openai/codex/blob/main/docs/contributing.md If your PR conforms to our contribution guidelines, replace this text with a detailed and high quality description of your changes. Include a link to a bug report or enhancement request.
Configuration menu - View commit details
-
Copy full SHA for b15b508 - Browse repository at this point
Copy the full SHA b15b508View commit details -
Fix: /undo destructively interacts with git staging (#8214) (#8303)
Fixes #8214 by removing the '--staged' flag from the undo git restore command. This ensures that while the working tree is reverted to the snapshot state, the user's staged changes (index) are preserved, preventing data loss. Also adds a regression test.
Configuration menu - View commit details
-
Copy full SHA for 014235f - Browse repository at this point
Copy the full SHA 014235fView commit details -
feat: make ConstraintError an enum (#8330)
This will make it easier to test for expected errors in unit tests since we can compare based on the field values rather than the message (which might change over time). See #8298 for an example. It also ensures more consistency in the way a `ConstraintError` is constructed.
Configuration menu - View commit details
-
Copy full SHA for 7e5c343 - Browse repository at this point
Copy the full SHA 7e5c343View commit details -
fix: enable resume_warning that was missing from mod.rs (#8333)
This test was introduced in #6507, but was not included in `mod.rs`. It does not appear that it was getting compiled?
Configuration menu - View commit details
-
Copy full SHA for 0a7021d - Browse repository at this point
Copy the full SHA 0a7021dView commit details -
Automated update of models.json. Co-authored-by: aibrahim-oai <219906144+aibrahim-oai@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for e3d3445 - Browse repository at this point
Copy the full SHA e3d3445View commit details -
feat(tui2): coalesce transcript scroll redraws (#8295)
Problem - Mouse wheel events were scheduling a redraw on every event, which could backlog and create lag during fast scrolling. Solution - Schedule transcript scroll redraws with a short delay (16ms) so the frame requester coalesces bursts into fewer draws. Why - Smooths rapid wheel scrolling while keeping the UI responsive. Testing - Manual: Scrolled in iTerm and Ghostty; no lag observed. - `cargo clippy --fix --all-features --tests --allow-dirty --allow-no-vcs -p codex-tui2`
Configuration menu - View commit details
-
Copy full SHA for 1d4463b - Browse repository at this point
Copy the full SHA 1d4463bView commit details -
feat: move file name derivation into codex-file-search (#8334)
## Summary - centralize file name derivation in codex-file-search - reuse the helper in app-server fuzzy search to avoid duplicate logic - add unit tests for file_name_from_path ## Testing - cargo test -p codex-file-search - cargo test -p codex-app-server
Configuration menu - View commit details
-
Copy full SHA for ec3738b - Browse repository at this point
Copy the full SHA ec3738bView commit details -
feat: support allowed_sandbox_modes in requirements.toml (#8298)
This adds support for `allowed_sandbox_modes` in `requirements.toml` and provides legacy support for constraining sandbox modes in `managed_config.toml`. This is converted to `Constrained<SandboxPolicy>` in `ConfigRequirements` and applied to `Config` such that constraints are enforced throughout the harness. Note that, because `managed_config.toml` is deprecated, we do not add support for the new `external-sandbox` variant recently introduced in #8290. As noted, that variant is not supported in `config.toml` today, but can be configured programmatically via app server.
Configuration menu - View commit details
-
Copy full SHA for dc61fc5 - Browse repository at this point
Copy the full SHA dc61fc5View commit details -
Configuration menu - View commit details
-
Copy full SHA for 797a68b - Browse repository at this point
Copy the full SHA 797a68bView commit details
Commits on Dec 20, 2025
-
Rename OpenAI models to models manager (#8346)
# External (non-OpenAI) Pull Request Requirements Before opening this Pull Request, please read the dedicated "Contributing" markdown file or your PR may be closed: https://github.com/openai/codex/blob/main/docs/contributing.md If your PR conforms to our contribution guidelines, replace this text with a detailed and high quality description of your changes. Include a link to a bug report or enhancement request.
Configuration menu - View commit details
-
Copy full SHA for f0dc6fd - Browse repository at this point
Copy the full SHA f0dc6fdView commit details -
chore: enusre the logic that creates ConfigLayerStack has access to c…
…wd (#8353) `load_config_layers_state()` should load config from a `.codex/config.toml` in any folder between the `cwd` for a thread and the project root. Though in order to do that, `load_config_layers_state()` needs to know what the `cwd` is, so this PR does the work to thread the `cwd` through for existing callsites. A notable exception is the `/config` endpoint in app server for which a `cwd` is not guaranteed to be associated with the query, so the `cwd` param is `Option<AbsolutePathBuf>` to account for this case. The logic to make use of the `cwd` will be done in a follow-up PR.
Configuration menu - View commit details
-
Copy full SHA for a697408 - Browse repository at this point
Copy the full SHA a697408View commit details -
feat(tui2): tune scrolling inpu based on (#8357)
## TUI2: Normalize Mouse Scroll Input Across Terminals (Wheel + Trackpad) This changes TUI2 scrolling to a stream-based model that normalizes terminal scroll event density into consistent wheel behavior (default: ~3 transcript lines per physical wheel notch) while keeping trackpad input higher fidelity via fractional accumulation. Primary code: `codex-rs/tui2/src/tui/scrolling/mouse.rs` Doc of record (model + probe-derived data): `codex-rs/tui2/docs/scroll_input_model.md` ### Why Terminals encode both mouse wheels and trackpads as discrete scroll up/down events with direction but no magnitude, and they vary widely in how many raw events they emit per physical wheel notch (commonly 1, 3, or 9+). Timing alone doesn’t reliably distinguish wheel vs trackpad, so cadence-based heuristics are unstable across terminals/hardware. This PR treats scroll input as short *streams* separated by silence or direction flips, normalizes raw event density into tick-equivalents, coalesces redraws for dense streams, and exposes explicit config overrides. ### What Changed #### Scroll Model (TUI2) - Stream detection - Start a stream on the first scroll event. - End a stream on an idle gap (`STREAM_GAP_MS`) or a direction flip. - Normalization - Convert raw events into tick-equivalents using per-terminal `tui.scroll_events_per_tick`. - Wheel-like vs trackpad-like behavior - Wheel-like: fixed “classic” lines per wheel notch; flush immediately for responsiveness. - Trackpad-like: fractional accumulation + carry across stream boundaries; coalesce flushes to ~60Hz to avoid floods and reduce “stop lag / overshoot”. - Trackpad divisor is intentionally capped: `min(scroll_events_per_tick, 3)` so terminals with dense wheel ticks (e.g. 9 events per notch) don’t make trackpads feel artificially slow. - Auto mode (default) - Start conservatively as trackpad-like (avoid overshoot). - Promote to wheel-like if the first tick-worth of events arrives quickly. - Fallback for 1-event-per-tick terminals (no tick-completion timing signal). #### Trackpad Acceleration Some terminals produce relatively low vertical event density for trackpad gestures, which makes large/faster swipes feel sluggish even when small motions feel correct. To address that, trackpad-like streams apply a bounded multiplier based on event count: - `multiplier = clamp(1 + abs(events) / scroll_trackpad_accel_events, 1..scroll_trackpad_accel_max)` The multiplier is applied to the trackpad stream’s computed line delta (including carried fractional remainder). Defaults are conservative and bounded. #### Config Knobs (TUI2) All keys live under `[tui]`: - `scroll_wheel_lines`: lines per physical wheel notch (default: 3). - `scroll_events_per_tick`: raw vertical scroll events per physical wheel notch (terminal-specific default; fallback: 3). - Wheel-like per-event contribution: `scroll_wheel_lines / scroll_events_per_tick`. - `scroll_trackpad_lines`: baseline trackpad sensitivity (default: 1). - Trackpad-like per-event contribution: `scroll_trackpad_lines / min(scroll_events_per_tick, 3)`. - `scroll_trackpad_accel_events` / `scroll_trackpad_accel_max`: bounded trackpad acceleration (defaults: 30 / 3). - `scroll_mode = auto|wheel|trackpad`: force behavior or use the heuristic (default: `auto`). - `scroll_wheel_tick_detect_max_ms`: auto-mode promotion threshold (ms). - `scroll_wheel_like_max_duration_ms`: auto-mode fallback for 1-event-per-tick terminals (ms). - `scroll_invert`: invert scroll direction (applies to wheel + trackpad). Config docs: `docs/config.md` and field docs in `codex-rs/core/src/config/types.rs`. #### App Integration - The app schedules follow-up ticks to close idle streams (via `ScrollUpdate::next_tick_in` and `schedule_frame_in`) and finalizes streams on draw ticks. - `codex-rs/tui2/src/app.rs` #### Docs - Single doc of record describing the model + preserved probe findings/spec: - `codex-rs/tui2/docs/scroll_input_model.md` #### Other (jj-only friendliness) - `codex-rs/tui2/src/diff_render.rs`: prefer stable cwd-relative paths when the file is under the cwd even if there’s no `.git`. ### Terminal Defaults Per-terminal defaults are derived from scroll-probe logs (see doc). Notable: - Ghostty currently defaults to `scroll_events_per_tick = 3` even though logs measured ~9 in one setup. This is a deliberate stopgap; if your Ghostty build emits ~9 events per wheel notch, set: ```toml [tui] scroll_events_per_tick = 9 ``` ### Testing - `just fmt` - `just fix -p codex-core --allow-no-vcs` - `cargo test -p codex-core --lib` (pass) - `cargo test -p codex-tui2` (scroll tests pass; remaining failures are known flaky VT100 color tests in `insert_history`) ### Review Focus - Stream finalization + frame scheduling in `codex-rs/tui2/src/app.rs`. - Auto-mode promotion thresholds and the 1-event-per-tick fallback behavior. - Trackpad divisor cap (`min(events_per_tick, 3)`) and acceleration defaults. - Ghostty default tradeoff (3 vs ~9) and whether we should change it.
Configuration menu - View commit details
-
Copy full SHA for 63942b8 - Browse repository at this point
Copy the full SHA 63942b8View commit details -
Chore: remove rmcp feature and exp flag usages (#8087)
### Summary With codesigning on Mac, Windows and Linux, we should be able to safely remove `features.rmcp_client` and `use_experimental_use_rmcp_client` check from the codebase now.
Configuration menu - View commit details
-
Copy full SHA for 987dd7f - Browse repository at this point
Copy the full SHA 987dd7fView commit details
Commits on Dec 21, 2025
-
Remove plan from system skills (#8374)
Removes plan from system skills. It has been rewritten into `create-plan` for evaluation and feedback: openai/skills#22
Configuration menu - View commit details
-
Copy full SHA for fab1ded - Browse repository at this point
Copy the full SHA fab1dedView commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff rust-v0.76.0...main