Commit Graph

20 Commits

  • Rename tui_app_server to tui (#16104)
    This is a follow-up to https://github.com/openai/codex/pull/15922. That
    previous PR deleted the old `tui` directory and left the new
    `tui_app_server` directory in place. This PR renames `tui_app_server` to
    `tui` and fixes up all references.
  • chore: clean up argument-comment lint and roll out all-target CI on macOS (#16054)
    ## Why
    
    `argument-comment-lint` was green in CI even though the repo still had
    many uncommented literal arguments. The main gap was target coverage:
    the repo wrapper did not force Cargo to inspect test-only call sites, so
    examples like the `latest_session_lookup_params(true, ...)` tests in
    `codex-rs/tui_app_server/src/lib.rs` never entered the blocking CI path.
    
    This change cleans up the existing backlog, makes the default repo lint
    path cover all Cargo targets, and starts rolling that stricter CI
    enforcement out on the platform where it is currently validated.
    
    ## What changed
    
    - mechanically fixed existing `argument-comment-lint` violations across
    the `codex-rs` workspace, including tests, examples, and benches
    - updated `tools/argument-comment-lint/run-prebuilt-linter.sh` and
    `tools/argument-comment-lint/run.sh` so non-`--fix` runs default to
    `--all-targets` unless the caller explicitly narrows the target set
    - fixed both wrappers so forwarded cargo arguments after `--` are
    preserved with a single separator
    - documented the new default behavior in
    `tools/argument-comment-lint/README.md`
    - updated `rust-ci` so the macOS lint lane keeps the plain wrapper
    invocation and therefore enforces `--all-targets`, while Linux and
    Windows temporarily pass `-- --lib --bins`
    
    That temporary CI split keeps the stricter all-targets check where it is
    already cleaned up, while leaving room to finish the remaining Linux-
    and Windows-specific target-gated cleanup before enabling
    `--all-targets` on those runners. The Linux and Windows failures on the
    intermediate revision were caused by the wrapper forwarding bug, not by
    additional lint findings in those lanes.
    
    ## Validation
    
    - `bash -n tools/argument-comment-lint/run.sh`
    - `bash -n tools/argument-comment-lint/run-prebuilt-linter.sh`
    - shell-level wrapper forwarding check for `-- --lib --bins`
    - shell-level wrapper forwarding check for `-- --tests`
    - `just argument-comment-lint`
    - `cargo test` in `tools/argument-comment-lint`
    - `cargo test -p codex-terminal-detection`
    
    ## Follow-up
    
    - Clean up remaining Linux-only target-gated callsites, then switch the
    Linux lint lane back to the plain wrapper invocation.
    - Clean up remaining Windows-only target-gated callsites, then switch
    the Windows lint lane back to the plain wrapper invocation.
  • Remove the legacy TUI split (#15922)
    This is the part 1 of 2 PRs that will delete the `tui` /
    `tui_app_server` split. This part simply deletes the existing `tui`
    directory and marks the `tui_app_server` feature flag as removed. I left
    the `tui_app_server` feature flag in place for now so its presence
    doesn't result in an error. It is simply ignored.
    
    Part 2 will rename the `tui_app_server` directory `tui`. I did this as
    two parts to reduce visible code churn.
  • Move git utilities into a dedicated crate (#15564)
    - create `codex-git-utils` and move the shared git helpers into it with
    file moves preserved for diff readability
    - move the `GitInfo` helpers out of `core` so stacked rollout work can
    depend on the shared crate without carrying its own git info module
    
    ---------
    
    Co-authored-by: Ahmed Ibrahim <219906144+aibrahim-oai@users.noreply.github.com>
    Co-authored-by: Codex <noreply@openai.com>
  • Apply argument comment lint across codex-rs (#14652)
    ## Why
    
    Once the repo-local lint exists, `codex-rs` needs to follow the
    checked-in convention and CI needs to keep it from drifting. This commit
    applies the fallback `/*param*/` style consistently across existing
    positional literal call sites without changing those APIs.
    
    The longer-term preference is still to avoid APIs that require comments
    by choosing clearer parameter types and call shapes. This PR is
    intentionally the mechanical follow-through for the places where the
    existing signatures stay in place.
    
    After rebasing onto newer `main`, the rollout also had to cover newly
    introduced `tui_app_server` call sites. That made it clear the first cut
    of the CI job was too expensive for the common path: it was spending
    almost as much time installing `cargo-dylint` and re-testing the lint
    crate as a representative test job spends running product tests. The CI
    update keeps the full workspace enforcement but trims that extra
    overhead from ordinary `codex-rs` PRs.
    
    ## What changed
    
    - keep a dedicated `argument_comment_lint` job in `rust-ci`
    - mechanically annotate remaining opaque positional literals across
    `codex-rs` with exact `/*param*/` comments, including the rebased
    `tui_app_server` call sites that now fall under the lint
    - keep the checked-in style aligned with the lint policy by using
    `/*param*/` and leaving string and char literals uncommented
    - cache `cargo-dylint`, `dylint-link`, and the relevant Cargo
    registry/git metadata in the lint job
    - split changed-path detection so the lint crate's own `cargo test` step
    runs only when `tools/argument-comment-lint/*` or `rust-ci.yml` changes
    - continue to run the repo wrapper over the `codex-rs` workspace, so
    product-code enforcement is unchanged
    
    Most of the code changes in this commit are intentionally mechanical
    comment rewrites or insertions driven by the lint itself.
    
    ## Verification
    
    - `./tools/argument-comment-lint/run.sh --workspace`
    - `cargo test -p codex-tui-app-server -p codex-tui`
    - parsed `.github/workflows/rust-ci.yml` locally with PyYAML
    
    ---
    
    * -> #14652
    * #14651
  • add codex cloud list (#9324)
    for listing cloud tasks.
  • Immutable CodexAuth (#8857)
    Historically we started with a CodexAuth that knew how to refresh it's
    own tokens and then added AuthManager that did a different kind of
    refresh (re-reading from disk).
    
    I don't think it makes sense for both `CodexAuth` and `AuthManager` to
    be mutable and contain behaviors.
    
    Move all refresh logic into `AuthManager` and keep `CodexAuth` as a data
    object.
  • cloud: default to current branch in cloud exec (#7460)
    ## Summary
    - add a shared git-ref resolver and use it for `codex cloud exec` and
    TUI task submission
    - expose a new `--branch` flag to override the git ref passed to cloud
    tasks
    - cover the git-ref resolution behavior with new async unit tests and
    supporting dev dependencies
    
    ## Testing
    - cargo test -p codex-cloud-tasks
    
    
    ------
    [Codex
    Task](https://chatgpt.com/codex/tasks/task_i_692decc6cbec8332953470ef063e11ab)
    
    ---------
    
    Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
    Co-authored-by: Jeremy Rose <172423086+nornagon-openai@users.noreply.github.com>
    Co-authored-by: Jeremy Rose <nornagon@openai.com>
  • cloud: status, diff, apply (#7614)
    Adds cli commands for getting the status of cloud tasks, and for
    getting/applying the diffs from same.
  • add --branch to codex cloud exec (#7602)
    Adds `--branch` to `codex cloud exec` to set base branch.
  • Add test timeout (#6612)
    Add an overall test timeout of 30s.
  • fix(cloud-tasks): respect cli_auth_credentials_store config (#5856)
    ## Problem
    
    `codex cloud` always instantiated `AuthManager` with `File` mode,
    ignoring the user's actual `cli_auth_credentials_store` setting. This
    caused users with `cli_auth_credentials_store = "keyring"` (or `"auto"`)
    to see "Not signed in" errors even when they had valid credentials
    stored in the system keyring.
    
    ## Root cause
    
    The code called `Config::load_from_base_config_with_overrides()` with an
    empty `ConfigToml::default()`, which always returned `File` as the
    default store mode instead of loading the actual user configuration.
    
    ## Solution
    
    - **Added `util::load_cli_auth_manager()` helper**  
    Properly loads user config via
    `load_config_as_toml_with_cli_overrides()` and extracts the
    `cli_auth_credentials_store` setting before creating `AuthManager`.
    
    - **Updated callers**  
      - `init_backend()` - used when starting cloud tasks UI
      - `build_chatgpt_headers()` - used for API requests
    
    ## Testing
    
    -  `just fmt`
    -  `just fix -p codex-cloud-tasks`
    -  `cargo test -p codex-cloud-tasks`
    
    ## Files changed
    
    - `codex-rs/cloud-tasks/src/lib.rs`
    - `codex-rs/cloud-tasks/src/util.rs`
    
    ## Verification
    
    Users with keyring-based auth can now run `codex cloud` successfully
    without "Not signed in" errors.
    
    ---------
    
    Co-authored-by: Eric Traut <etraut@openai.com>
    Co-authored-by: celia-oai <celia@openai.com>
  • stop capturing r when environment selection modal is open (#6249)
    This fixes an issue where you can't select environments with an r in them when the selection modal is open
  • Fix handling of non-main default branches for cloud task submissions (#5069)
    ## Summary
    - detect the repository's default branch before submitting a cloud task
    - expose a helper in `codex_core::git_info` for retrieving the default
    branch name
    
    Fixes #4888
    
    
    ------
    https://chatgpt.com/codex/tasks/task_i_68e96093cf28832ca0c9c73fc618a309
  • [Auth] Choose which auth storage to use based on config (#5792)
    This PR is a follow-up to #5591. It allows users to choose which auth
    storage mode they want by using the new
    `cli_auth_credentials_store_mode` config.
  • cloud: codex cloud exec (#5060)
    By analogy to `codex exec`, this kicks off a task in codex cloud
    noninteractively.
  • add pulsing dot loading state (#4736)
    ## Description 
    Changes default CLI spinner to pulsing dot
    
    
    https://github.com/user-attachments/assets/b81225d6-6655-4ead-8cb1-d6568a603d5b
    
    ## Tests
    Passes CI
    
    ---------
    
    Co-authored-by: Fouad Matin <fouad@openai.com>
  • Support CODEX_API_KEY for codex exec (#4615)
    Allows to set API key per invocation of `codex exec`
  • fix ctr-n hint (#4566)
    don't show or enable ctr-n to choose best of n while not in the composer
  • Add cloud tasks (#3197)
    Adds a TUI for managing, applying, and creating cloud tasks