Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: openai/codex
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: rust-v0.76.0
Choose a base ref
...
head repository: openai/codex
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: main
Choose a head ref
  • 14 commits
  • 85 files changed
  • 11 contributors

Commits on Dec 19, 2025

  1. 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.
    jdijk-deventit authored Dec 19, 2025
    Configuration menu
    Copy the full SHA
    b15b508 View commit details
    Browse the repository at this point in the history
  2. 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.
    Galaxy-0 authored Dec 19, 2025
    Configuration menu
    Copy the full SHA
    014235f View commit details
    Browse the repository at this point in the history
  3. 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.
    bolinfest authored Dec 19, 2025
    Configuration menu
    Copy the full SHA
    7e5c343 View commit details
    Browse the repository at this point in the history
  4. 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?
    bolinfest authored Dec 19, 2025
    Configuration menu
    Copy the full SHA
    0a7021d View commit details
    Browse the repository at this point in the history
  5. Update models.json (#8168)

    Automated update of models.json.
    
    Co-authored-by: aibrahim-oai <219906144+aibrahim-oai@users.noreply.github.com>
    github-actions[bot] and aibrahim-oai authored Dec 19, 2025
    Configuration menu
    Copy the full SHA
    e3d3445 View commit details
    Browse the repository at this point in the history
  6. 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`
    joshka-oai authored Dec 19, 2025
    Configuration menu
    Copy the full SHA
    1d4463b View commit details
    Browse the repository at this point in the history
  7. 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
    RQfreefly authored Dec 19, 2025
    Configuration menu
    Copy the full SHA
    ec3738b View commit details
    Browse the repository at this point in the history
  8. 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.
    bolinfest authored Dec 19, 2025
    Configuration menu
    Copy the full SHA
    dc61fc5 View commit details
    Browse the repository at this point in the history
  9. Configuration menu
    Copy the full SHA
    797a68b View commit details
    Browse the repository at this point in the history

Commits on Dec 20, 2025

  1. 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.
    aibrahim-oai authored Dec 20, 2025
    Configuration menu
    Copy the full SHA
    f0dc6fd View commit details
    Browse the repository at this point in the history
  2. 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.
    bolinfest authored Dec 20, 2025
    Configuration menu
    Copy the full SHA
    a697408 View commit details
    Browse the repository at this point in the history
  3. 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.
    joshka-oai authored Dec 20, 2025
    Configuration menu
    Copy the full SHA
    63942b8 View commit details
    Browse the repository at this point in the history
  4. 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.
    shijie-oai authored Dec 20, 2025
    Configuration menu
    Copy the full SHA
    987dd7f View commit details
    Browse the repository at this point in the history

Commits on Dec 21, 2025

  1. 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
    gverma-openai authored Dec 21, 2025
    Configuration menu
    Copy the full SHA
    fab1ded View commit details
    Browse the repository at this point in the history
Loading