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.86.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: rust-v0.87.0
Choose a head ref
  • 13 commits
  • 50 files changed
  • 8 contributors

Commits on Jan 16, 2026

  1. Add text element metadata to protocol, app server, and core (#9331)

    The second part of breaking up PR
    #9116
    
    Summary:
    
    - Add `TextElement` / `ByteRange` to protocol user inputs and user
    message events with defaults.
    - Thread `text_elements` through app-server v1/v2 request handling and
    history rebuild.
    - Preserve UI metadata only in user input/events (not `ContentItem`)
    while keeping local image attachments in user events for rehydration.
    
    Details:
    
    - Protocol: `UserInput::Text` carries `text_elements`;
    `UserMessageEvent` carries `text_elements` + `local_images`.
    Serialization includes empty vectors for backward compatibility.
    - app-server-protocol: v1 defines `V1TextElement` / `V1ByteRange` in
    camelCase with conversions; v2 uses its own camelCase wrapper.
    - app-server: v1/v2 input mapping includes `text_elements`; thread
    history rebuilds include them.
    - Core: user event emission preserves UI metadata while model history
    stays clean; history replay round-trips the metadata.
    charley-oai authored Jan 16, 2026
    Configuration menu
    Copy the full SHA
    1fa8350 View commit details
    Browse the repository at this point in the history
  2. chore(windows) Enable Powershell UTF8 feature (#9195)

    ## Summary
    We've received a lot of positive feedback about this feature, so we're
    going to enable it by default.
    dylan-hurd-oai authored Jan 16, 2026
    Configuration menu
    Copy the full SHA
    3cabb24 View commit details
    Browse the repository at this point in the history
  3. fix(tui): only show 'Worked for' separator when actual work was perfo…

    …rmed (#8958)
    
    Fixes #7919.
    
    This PR addresses a TUI display bug where the "Worked for" separator
    would appear prematurely during the planning stage.
    
    **Changes:**
    - Added `had_work_activity` flag to `ChatWidget` to track if actual work
    (exec commands, MCP tool calls, patches) was performed in the current
    turn.
    - Updated `handle_streaming_delta` to only display the
    `FinalMessageSeparator` if both `needs_final_message_separator` AND
    `had_work_activity` are true.
    - Updated `handle_exec_end_now`, `handle_patch_apply_end_now`, and
    `handle_mcp_end_now` to set `had_work_activity = true`.
    
    **Verification:**
    - Ran `cargo test -p codex-tui` to ensure no regressions.
    - Manual verification confirms the separator now only appears after
    actual work is completed.
    
    ---------
    
    Co-authored-by: Josh McKinney <joshka@openai.com>
    ThanhNguyxn and joshka-oai authored Jan 16, 2026
    Configuration menu
    Copy the full SHA
    a6324ab View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    99f47d6 View commit details
    Browse the repository at this point in the history
  5. Fix token estimate during compaction (#9337)

    This addresses #9287
    etraut-openai authored Jan 16, 2026
    Configuration menu
    Copy the full SHA
    1fc72c6 View commit details
    Browse the repository at this point in the history
  6. rename model turn to sampling request (#9336)

    We have two type of turns now: model and user turns. It's always
    confusing to refer to either. Model turn is basically a sampling
    request.
    aibrahim-oai authored Jan 16, 2026
    Configuration menu
    Copy the full SHA
    0cce6eb View commit details
    Browse the repository at this point in the history
  7. feat: propagate approval request of unsubscribed threads (#9232)

    A thread can now be spawned by another thread. In order to process the
    approval requests of such sub-threads, we need to detect those event and
    show them in the TUI.
    
    This is a temporary solution while the UX is being figured out. This PR
    should be reverted once done
    jif-oai authored Jan 16, 2026
    Configuration menu
    Copy the full SHA
    f5b3e73 View commit details
    Browse the repository at this point in the history
  8. feat: run user commands under user snapshot (#9357)

    The initial goal is for user snapshots to have access to aliases etc
    jif-oai authored Jan 16, 2026
    Configuration menu
    Copy the full SHA
    c1ac522 View commit details
    Browse the repository at this point in the history
  9. Configuration menu
    Copy the full SHA
    c576756 View commit details
    Browse the repository at this point in the history
  10. feat: CODEX_CI (#9366)

    jif-oai authored Jan 16, 2026
    Configuration menu
    Copy the full SHA
    7fc4969 View commit details
    Browse the repository at this point in the history
  11. prompt collab (#9367)

    jif-oai authored Jan 16, 2026
    Configuration menu
    Copy the full SHA
    7905e99 View commit details
    Browse the repository at this point in the history
  12. chore: close pipe on non-pty processes (#9369)

    Closing the STDIN of piped process when starting them to avoid commands
    like `rg` to wait for content on STDIN and hangs for ever
    jif-oai authored Jan 16, 2026
    Configuration menu
    Copy the full SHA
    1668ca7 View commit details
    Browse the repository at this point in the history
  13. ## New Features

    - User message metadata (text elements and byte ranges) now round-trips through protocol/app-server/core so UI annotations can survive history rebuilds. (#9331)
    - Collaboration wait calls can block on multiple IDs in one request, simplifying multi-thread coordination. (#9294)
    - User shell commands now run under the user snapshot so aliases and shell config are honored. (#9357)
    - The TUI now surfaces approval requests from spawned/unsubscribed threads. (#9232)
    
    ## Bug Fixes
    - Token estimation during compaction is now accurate, improving budgeting during long sessions. (#9337)
    - MCP CallToolResult now includes `threadId` in both `content` and `structuredContent`, and returns a defined output schema for compatibility. (#9338)
    - The TUI “Worked for” separator only appears after actual work has occurred. (#8958)
    - Piped non-PTY commands no longer hang waiting on stdin. (#9369)
    
    ## Documentation
    - MCP interface docs updated to reflect structured output schema and `threadId` behavior. (#9338)
    
    ## Chores
    - Windows builds enable the PowerShell UTF-8 feature by default. (#9195)
    
    ## Changelog
    
    Full Changelog: rust-v0.86.0...rust-v0.87.0
    
    - #9331 Add text element metadata to protocol, app server, and core @charley-oai
    - #9195 chore(windows) Enable Powershell UTF8 feature @dylan-hurd-oai
    - #8958 fix(tui): only show 'Worked for' separator when actual work was performed @ThanhNguyxn
    - #9338 fix(mcp): include threadId in both content and structuredContent in CallToolResult @bolinfest
    - #9337 Fix token estimate during compaction @etraut-openai
    - #9336 rename model turn to sampling request @aibrahim-oai
    - #9232 feat: propagate approval request of unsubscribed threads @jif-oai
    - #9357 feat: run user commands under user snapshot @jif-oai
    - #9294 feat: collab wait multiple IDs @jif-oai
    - #9366 feat: CODEX_CI @jif-oai
    - #9367 prompt collab @jif-oai
    - #9369 chore: close pipe on non-pty processes @jif-oai
    jif-oai committed Jan 16, 2026
    Configuration menu
    Copy the full SHA
    8e8c884 View commit details
    Browse the repository at this point in the history
Loading