Commit Graph
463 Commits
Author SHA1 Message Date
GitHub Action 36778c3e8c docs(changelog): update for v0.6.67 [skip ci] 2026-02-13 05:35:46 +00:00
James Peter 0cf17fdd12 Merge remote-tracking branch 'origin/main' 2026-02-13 14:19:27 +10:00
James Peter 297a708404 Merge upstream/main: preserve local workflows and docs 2026-02-13 13:38:06 +10:00
James Peter 1af66e5f49 feat(core/skills): add .agents and admin discovery roots
Add Codex-compatible skill discovery for repo and user .agents paths,
keep legacy .codex compatibility, and include optional /etc/codex/skills.

Follow symlinked skill directories for repo/user/admin roots with cycle-safe
bounded traversal, and add regression tests for roots, precedence, symlinks,
and legacy compatibility.

fixes #540
2026-02-13 13:08:49 +10:00
Curtis 'Fjord' HawthorneandGitHub 421611febf Add js_repl_tools_only model and routing restrictions (#10671)
# 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.


#### [git stack](https://github.com/magus/git-stack-cli)
- ✅ `1` https://github.com/openai/codex/pull/10674
- ✅ `2` https://github.com/openai/codex/pull/10672
- 👉 `3` https://github.com/openai/codex/pull/10671
- ⏳ `4` https://github.com/openai/codex/pull/10673
- ⏳ `5` https://github.com/openai/codex/pull/10670
2026-02-12 15:41:05 -08:00
GitHub Action 8ddeb942d4 docs(changelog): update for v0.6.66 [skip ci] 2026-02-12 23:34:49 +00:00
James Peter 109c40ddba Merge origin/main: bring v0.6.65 release metadata updates 2026-02-13 08:58:47 +10:00
James Peter 9e1316642d Merge upstream/main: keep local workflows/docs 2026-02-13 06:21:24 +10:00
Curtis 'Fjord' HawthorneandGitHub 3c2848643e Add js_repl host helpers and exec end events (#10672)
## Summary

This PR adds host-integrated helper APIs for `js_repl` and updates model
guidance so the agent can use them reliably.

### What’s included

- Add `codex.tool(name, args?)` in the JS kernel so `js_repl` can call
normal Codex tools.
- Keep persistent JS state and scratch-path helpers available:
  - `codex.state`
  - `codex.tmpDir`
- Wire `js_repl` tool calls through the standard tool router path.
- Add/align `js_repl` execution completion/end event behavior with
existing tool logging patterns.
- Update dynamic prompt injection (`project_doc`) to document:
  - how to call `codex.tool(...)`
  - raw output behavior
- image flow via `view_image` (`codex.tmpDir` +
`codex.tool("view_image", ...)`)
- stdio safety guidance (`console.log` / `codex.tool`, avoid direct
`process.std*`)

## Why

- Standardize JS-side tool usage on `codex.tool(...)`
- Make `js_repl` behavior more consistent with existing tool execution
and event/logging patterns.
- Give the model enough runtime guidance to use `js_repl` safely and
effectively.

## Testing

- Added/updated unit and runtime tests for:
  - `codex.tool` calls from `js_repl` (including shell/MCP paths)
  - image handoff flow via `view_image`
  - prompt-injection text for `js_repl` guidance
  - execution/end event behavior and related regression coverage




#### [git stack](https://github.com/magus/git-stack-cli)
- ✅ `1` https://github.com/openai/codex/pull/10674
- 👉 `2` https://github.com/openai/codex/pull/10672
- ⏳ `3` https://github.com/openai/codex/pull/10671
- ⏳ `4` https://github.com/openai/codex/pull/10673
- ⏳ `5` https://github.com/openai/codex/pull/10670
2026-02-12 12:10:25 -08:00
Curtis 'Fjord' HawthorneandGitHub d86cd7ea03 Add feature-gated freeform js_repl core runtime (#10674)
## Summary

This PR adds an **experimental, feature-gated `js_repl` core runtime**
so models can execute JavaScript in a persistent REPL context across
tool calls.

The implementation integrates with existing feature gating, tool
registration, prompt composition, config/schema docs, and tests.

## What changed

- Added new experimental feature flag: `features.js_repl`.
- Added freeform `js_repl` tool and companion `js_repl_reset` tool.
- Gated tool availability behind `Feature::JsRepl`.
- Added conditional prompt-section injection for JS REPL instructions
via marker-based prompt processing.
- Implemented JS REPL handlers, including freeform parsing and pragma
support (timeout/reset controls).
- Added runtime resolution order for Node:
  1. `CODEX_JS_REPL_NODE_PATH`
  2. `js_repl_node_path` in config
  3. `PATH`
- Added JS runtime assets/version files and updated docs/schema.

## Why

This enables richer agent workflows that require incremental JavaScript
execution with preserved state, while keeping rollout safe behind an
explicit feature flag.

## Testing

Coverage includes:

- Feature-flag gating behavior for tool exposure.
- Freeform parser/pragma handling edge cases.
- Runtime behavior (state persistence across calls and top-level `await`
support).

## Usage

```toml
[features]
js_repl = true
```

Optional runtime override:

- `CODEX_JS_REPL_NODE_PATH`, or
- `js_repl_node_path` in config.

#### [git stack](https://github.com/magus/git-stack-cli)
- 👉 `1` https://github.com/openai/codex/pull/10674
- ⏳ `2` https://github.com/openai/codex/pull/10672
- ⏳ `3` https://github.com/openai/codex/pull/10671
- ⏳ `4` https://github.com/openai/codex/pull/10673
- ⏳ `5` https://github.com/openai/codex/pull/10670
2026-02-11 12:05:02 -08:00
GitHub Action ce19020573 docs(changelog): update for v0.6.65 [skip ci] 2026-02-11 19:03:19 +00:00
GitHub Action 9aba52d0bd docs(changelog): update for v0.6.64 [skip ci] 2026-02-11 11:19:26 +00:00
GitHub Action 6eef700c9d docs(changelog): update for v0.6.63 [skip ci] 2026-02-11 06:20:06 +00:00
James Peter 4a08f7702d Merge upstream/main: keep fork workflows and scripts 2026-02-11 14:24:12 +10:00
GitHub Action bf28814b5f docs(changelog): update for v0.6.62 [skip ci] 2026-02-11 03:58:19 +00:00
Josh McKinneyandGitHub 1c8c2f5f56 tui: keep history recall cursor at line end (#11295)
## Summary
- keep cursor at end-of-line after Up/Down history recall
- allow continued history navigation when recalled text cursor is at
start or end boundary
- add regression tests and document the history cursor contract in
composer docs

## Testing
- just fmt
- cargo test -p codex-tui --lib
history_navigation_leaves_cursor_at_end_of_line
- cargo test -p codex-tui --lib
should_handle_navigation_when_cursor_is_at_line_boundaries
- cargo test -p codex-tui *(fails in existing integration test
`suite::no_panic_on_startup::malformed_rules_should_not_panic` because
`target/debug/codex` is not present in this environment)*
2026-02-10 17:21:46 +00:00
GitHub Action 0b70cb2f46 docs(changelog): update for v0.6.61 [skip ci] 2026-02-10 10:01:49 +00:00
James Peter 407f1cb5f5 Merge upstream/main: sync build files and keep local workflows 2026-02-10 18:58:17 +10:00
Josh McKinneyandGitHub 115c7296c9 fix(tui): tab submits when no task running in steer mode (#10035)
When steer mode is enabled, Tab used to only queue while a task was
running and otherwise did nothing. Treat Tab as an immediate submit when
no task is running so input isn't dropped when the inflight turn ends
mid-typing.

Adds a regression test and updates docs/tooltips.
2026-02-10 00:39:09 +00:00
24c5a2ca90 fix(tui): rehydrate drafts and restore image placeholders (#9040)
Fixes #9050

When a draft is stashed with Ctrl+C, we now persist the full draft state
(text elements, local image paths, and pending paste payloads) in local
history. Up/Down recall rehydrates placeholder elements and attachments
so styling remains correct and large pastes still expand on submit.
Persistent (cross‑session) history remains text‑only.

Backtrack prefills now reuse the selected user message’s text elements
and local image paths, so image placeholders/attachments rehydrate when
rolling back.

External editor replacements keep only attachments whose placeholders
remain and then normalize image placeholders to `[Image #1]..[Image #N]`
to keep the attachment mapping consistent.

Docs:
- docs/tui-chat-composer.md

Testing:
- just fix -p codex-tui
- cargo test -p codex-tui

Co-authored-by: Eric Traut <[email protected]>
2026-02-07 20:08:45 -08:00
GitHub Action bb3bba0311 docs(changelog): update for v0.6.60 [skip ci] 2026-02-07 23:18:39 +00:00
GitHub Action 2a09313ce3 docs(changelog): update for v0.6.59 [skip ci] 2026-02-06 01:12:51 +00:00
Auto Review 53895aaf8a feat(models): add gpt-5.3-codex; bump opus to 4.6 2026-02-06 09:56:41 +10:00
GitHub Action 1e4e765eeb docs(changelog): update for v0.6.58 [skip ci] 2026-02-05 03:29:55 +00:00
James Peter b0c5254a7b Merge upstream/main (keep ours) 2026-02-05 11:42:59 +10:00
Josh McKinneyandGitHub 5e562873d9 feat(core): add configurable log_dir (#10678)
Adds a top-level `log_dir` config key (defaults to `$CODEX_HOME/log`) so
one-off runs can redirect `codex-tui.log` via `-c`, e.g.:

  codex -c log_dir=./.codex-log

Also resolves relative paths in CLI `-c/--config` overrides for
`AbsolutePathBuf` values against the effective cwd (when available).

Tests:
- cargo test -p codex-core
2026-02-05 01:23:30 +00:00
Charley CunninghamandGitHub eb68553822 tui: make Esc clear request_user_input notes while notes are shown (#10569)
## Summary

This PR updates the `request_user_input` TUI overlay so `Esc` is
context-aware:

- When notes are visible for an option question, `Esc` now clears notes
and exits notes mode.
- When notes are not visible (normal option selection UI), `Esc` still
interrupts as before.

It also updates footer guidance text to match behavior.

## Changes

- Added a shared notes-clear path for option questions:
- `Tab` and `Esc` now both clear notes and return focus to options when
notes are visible.
- Updated footer hint text in notes-visible state:
  - from: `tab to clear notes | ... | esc to interrupt`
  - to: `tab or esc to clear notes | ...`
- Hid `esc to interrupt` hint while notes are visible for option
questions.
- Kept `esc to interrupt` visible and functional in normal
option-selection mode.
- Updated tests to assert the new `Esc` behavior in notes mode.
- Updated snapshot output for the notes-visible footer row.
- Updated docs in `docs/tui-request-user-input.md` to reflect
mode-specific `Esc` behavior.
2026-02-03 16:17:06 -08:00
Josh McKinneyandGitHub af35f53442 feat(tui): pace catch-up stream chunking with hysteresis (#10461)
## Summary
- preserve baseline streaming behavior (smooth mode still commits one
line per 50ms tick)
- extract adaptive chunking policy and commit-tick orchestration from
ChatWidget into `streaming/chunking.rs` and `streaming/commit_tick.rs`
- add hysteresis-based catch-up behavior with bounded batch draining to
reduce queue lag without bursty single-frame jumps
- document policy behavior, tuning guidance, and debug flow in rustdoc +
docs

## Testing
- just fmt
- cargo test -p codex-tui
2026-02-03 15:01:51 -08:00
fc44c09571 [Codex][CLI] Gate image inputs by model modalities (#10271)
###### Summary

- Add input_modalities to model metadata so clients can determine
supported input types.
- Gate image paste/attach in TUI when the selected model does not
support images.
- Block submits that include images for unsupported models and show a
clear warning.
- Propagate modality metadata through app-server protocol/model-list
responses.
  - Update related tests/fixtures.

  ###### Rationale

  - Models support different input modalities.
- Clients need an explicit capability signal to prevent unsupported
requests.
- Backward-compatible defaults preserve existing behavior when modality
metadata is absent.

  ###### Scope

  - codex-rs/protocol, codex-rs/core, codex-rs/tui
  - codex-rs/app-server-protocol, codex-rs/app-server
  - Generated app-server types / schema fixtures

  ###### Trade-offs

- Default behavior assumes text + image when field is absent for
compatibility.
  - Server-side validation remains the source of truth.

  ###### Follow-up

- Non-TUI clients should consume input_modalities to disable unsupported
attachments.
- Model catalogs should explicitly set input_modalities for text-only
models.

  ###### Testing

  - cargo fmt --all
  - cargo test -p codex-tui
  - env -u GITHUB_APP_KEY cargo test -p codex-core --lib
  - just write-app-server-schema
- cargo run -p codex-cli --bin codex -- app-server generate-ts --out
app-server-types
  - test against local backend
  
<img width="695" height="199" alt="image"
src="https://github.com/user-attachments/assets/d22dd04f-5eba-4db9-a7c5-a2506f60ec44"
/>

---------

Co-authored-by: Josh McKinney <[email protected]>
2026-02-02 18:56:39 -08:00
Charley CunninghamandGitHub f5c885f26e Nicer highlighting of slash commands, /plan accepts prompt args and pasted images (#10269)
## Summary
- Make typed slash commands become text elements when the user hits
space, including paste‑burst spaces.
- Enable `/plan` to accept inline args and submit them in plan mode,
mirroring `/review` behavior and blocking submission while a task is
running.
- Preserve text elements/attachments for slash commands that take args.

<img width="1510" height="500" alt="image"
src="https://github.com/user-attachments/assets/446024df-b69a-4249-85db-1a85110e07f1"
/>

## Changes
- Add safe helper to insert element ranges in the textarea.
- Extend command‑with‑args pipeline to carry text elements and reuse
submission prep.
- Update `/plan` dispatch to switch to plan mode then submit prompt +
elements.
- Document new composer behavior and add tests.

## Notes
- `/plan` is blocked during active tasks (same as `/review`).
- Slash‑command elementization recognizes built‑ins and `/prompts:`
custom commands only.

## Codex author
`codex fork 019c16d3-4520-7bb0-9b9d-48720d40a8ab`
2026-02-02 09:53:29 -08:00
GitHub Action b8d48e44fd docs(changelog): update for v0.6.57 [skip ci] 2026-02-02 06:56:10 +00:00
GitHub Action e979e849c1 docs(changelog): update for v0.6.56 [skip ci] 2026-02-02 04:08:46 +00:00
GitHub Action cdba956d98 docs(changelog): update for v0.6.55 [skip ci] 2026-02-02 00:44:00 +00:00
James Peter 2d231aa581 Merge origin/main: adopt release metadata updates 2026-02-02 09:56:42 +10:00
James Peter 6e1a9f480d Merge upstream/main: keep local workflows and docs deletions 2026-01-30 15:22:35 +10:00
GitHub Action 635007fe4c docs(changelog): update for v0.6.54 [skip ci] 2026-01-29 15:42:19 +00:00
Charley CunninghamandGitHub 04f77c400e Restore image attachments/text elements when recalling input history (Up/Down) (#9628)
**Summary**
- Up/Down input history now restores image attachments and text elements
for local entries.
- Composer history stores rich local entries (text + text elements +
local image paths) while persistent history remains text-only.
- Added tests to verify history recall rehydrates image placeholders and
attachments in both `tui` and `tui2`.

**Changes**
- `tui/src/bottom_pane/chat_composer_history.rs`: store `HistoryEntry`
(text + elements + image paths) for local history; adapt navigation +
tests.
- `tui2/src/bottom_pane/chat_composer_history.rs`: same as above.
- `tui/src/bottom_pane/chat_composer.rs`: record rich history entries
and restore them on Up/Down; update Ctrl+C history and tests.
- `tui2/src/bottom_pane/chat_composer.rs`: same as above.
2026-01-27 18:39:59 -08:00
GitHub Action d5cd9988e6 docs(changelog): update for v0.6.53 [skip ci] 2026-01-27 10:43:34 +00:00
James Peter 64fa7a64b1 Merge origin/main: browser wait bounds, v0.6.52 metadata 2026-01-27 19:26:13 +10:00
Eric TrautandGitHub 7f82a9267c Updated contribution guidelines (#9933) 2026-01-26 17:13:25 -08:00
GitHub Action 71464299a4 docs(changelog): update for v0.6.52 [skip ci] 2026-01-26 23:59:54 +00:00
Ahmed IbrahimandGitHub bcca448527 Add composer config and shared menu surface helpers (#9891)
Centralize built-in slash-command gating and extract shared menu-surface
helpers.

- Add bottom_pane::slash_commands and reuse it from composer + command
popup.
- Introduce ChatComposerConfig + shared menu surface rendering without
changing default behavior.
2026-01-26 23:16:29 +00:00
James Peter 399bd912b5 Merge upstream/main: keep local workflows/docs 2026-01-27 08:40:19 +10:00
GitHub Action 7472578951 docs(changelog): update for v0.6.51 [skip ci] 2026-01-26 00:06:26 +00:00
James Peter 23a686682c Merge branch 'main' of https://github.com/just-every/code 2026-01-26 09:08:05 +10:00
James Peter c527071522 feat(core/tui): add session nicknames
fixes #524
2026-01-24 00:23:48 +10:00
Matthew ZengandGitHub 48146828c9 [connectors] Support connectors part 1 - App server & MCP (#9667)
In order to make Codex work with connectors, we add a built-in gateway
MCP that acts as a transparent proxy between the client and the
connectors. The gateway MCP collects actions that are accessible to the
user and sends them down to the user, when a connector action is chosen
to be called, the client invokes the action through the gateway MCP as
well.

 - [x] Add the system built-in gateway MCP to list and run connectors.
 - [x] Add the app server methods and protocol
2026-01-22 16:48:43 -08:00
GitHub Action ba613537a7 docs(changelog): update for v0.6.50 [skip ci] 2026-01-22 10:23:53 +00:00
Josh McKinneyandGitHub afceb5f76a feat(tui): retire the tui2 experiment (#9640)
## Summary
- Retire the experimental TUI2 implementation and its feature flag.
- Remove TUI2-only config/schema/docs so the CLI stays on the
terminal-native path.
- Keep docs aligned with the legacy TUI while we focus on redraw-based
improvements.

## Customer impact
- Retires the TUI2 experiment and keeps Codex on the proven
terminal-native UI while we invest in redraw-based improvements to the
existing experience.

## Migration / compatibility
- If you previously set tui2-related options in config.toml, they are
now ignored and Codex continues using the existing terminal-native TUI
(no action required).

## Context
- What worked: a transcript-owned viewport delivered excellent resize
rewrap and high-fidelity copy (especially for code).
- Why stop: making that experience feel fully native across the
environment matrix (terminal emulator, OS, input modality, multiplexer,
font/theme, alt-screen behavior) creates a combinatorial explosion of
edge cases.
- What next: we are focusing on redraw-based improvements to the
existing terminal-native TUI so scrolling, selection, and copy remain
native while resize/redraw correctness improves.

## Testing
- just write-config-schema
- just fmt
- cargo clippy --fix --all-features --tests --allow-dirty --allow-no-vcs
-p codex-core
- cargo clippy --fix --all-features --tests --allow-dirty --allow-no-vcs
-p codex-cli
- cargo check
- cargo test -p codex-core
- cargo test -p codex-cli
2026-01-22 01:02:29 +00:00
James Peter 3edfea59f3 Merge upstream/main: update Bazel module + docs 2026-01-22 08:57:32 +10:00