## Summary
- add a `codex sandbox` subcommand with macOS and Linux targets while
keeping the legacy `codex debug` aliases
- update documentation to highlight the new sandbox entrypoints and
point existing references to the new command
- clarify the core README about the linux sandbox helper alias
## Testing
- just fmt
- just fix -p codex-cli
- cargo test -p codex-cli
------
https://chatgpt.com/codex/tasks/task_i_68e2e00ca1e8832d8bff53aa0b50b49e
## Summary
- replace manual wiremock SSE mounts in the compact suite with the
shared response helpers
- simplify the exec auth_env integration test by using the
mount_sse_once_match helper
- rely on mount_sse_sequence plus server request collection to replace
the bespoke SeqResponder utility in tests
## Testing
- just fmt
------
https://chatgpt.com/codex/tasks/task_i_68e2e238f2a88320a337f0b9e4098093
## Summary
- expand the TypeScript SDK README with streaming, architecture, and API
docs
- refresh quick start examples and clarify thread management options
## Testing
- Not Run (docs only)
---------
Co-authored-by: Hanzo Dev <[email protected]>
## Summary
- add a reusable `ev_response_created` helper that builds
`response.created` SSE events for integration tests
- update the exec and core integration suites to use the new helper
instead of repeating manual JSON literals
- keep the streaming fixtures consistent by relying on the shared helper
in every touched test
## Testing
- `just fmt`
------
https://chatgpt.com/codex/tasks/task_i_68e1fe885bb883208aafffb94218da61
`codex-responses-api-proxy` is designed so that there should be exactly
one copy of the API key in memory (that is `mlock`'d on UNIX), but in
practice, I was seeing two when I dumped the process data from
`/proc/$PID/mem`.
It appears that `std::io::stdin()` maintains an internal `BufReader`
that we cannot zero out, so this PR changes the implementation on UNIX
so that we use a low-level `read(2)` instead.
Even though it seems like it would be incredibly unlikely, we also make
this logic tolerant of short reads. Either `\n` or `EOF` must be sent to
signal the end of the key written to stdin.
Updated ROADMAP.md to reflect all completed Phase 1 work and reorganize
next actions with completion markers.
Completed (2025-10-06):
- Feature flag audit: code-fork properly used, gates 12 TUI extensions
- Module usage audit: All core and TUI modules actively used
- Test scaffolding documentation: ChatWidgetHarness patterns documented
- Dead code inventory: Comprehensive audit summary added
Active Work:
- Phase 2: Core runtime test porting (blocked on codex-rs/ checkout)
- Upstream diff review (requires codex-rs/ directory setup)
- Smoke test expansion (ongoing, following documented patterns)
Next Steps:
- Checkout upstream to codex-rs/ for diff tracking and test porting
- Begin porting 9 critical tests per legacy-tests-retirement.md
- Expand smoke test coverage using documented harness patterns
All Phase 1-3 objectives complete (Baseline & Tooling, Crate Adoption,
Fork Cleanup). Phase 4 (Test Suite Rebuild) in progress with scaffolding
complete and porting plan documented.
Co-authored-by: Hanzo Dev <[email protected]>
Added comprehensive documentation for the new test scaffolding infrastructure
created for code-rs smoke tests.
Test Scaffolding Documentation:
- ChatWidgetHarness: Test harness for widget testing without terminal I/O
- Assertion helpers: Pre-built assertions for common test patterns
- Usage examples: Real-world test patterns from ui_smoke.rs
- Best practices: Guidelines for writing maintainable smoke tests
- Extension guide: How to add new helpers and harness variants
Helper Functions Documented:
- ChatWidgetHarness::new() - Create test harness with defaults
- harness.handle_event() - Send protocol events to widget
- harness.drain_events() - Collect emitted AppEvents
- assert_has_insert_history() - Verify history insertion
- assert_has_background_event_containing() - Check background events
- assert_has_terminal_chunk_containing() - Verify terminal output
- assert_has_codex_event() - Check CodexEvent emission
- assert_no_events() - Verify no events emitted
Future Infrastructure:
- AppHarness for full app-level testing
- ExecutorHarness for command lifecycle testing
- MCPHarness for MCP server interaction testing
- VT100 replay tests for rendering regression testing
This documentation enables developers to write new smoke tests following
established patterns and expand test coverage incrementally.
Related: chatwidget::smoke_helpers in code-rs/tui/src/chatwidget/smoke_helpers.rs
Co-authored-by: Hanzo Dev <[email protected]>
Completed comprehensive audit of code-fork feature flag usage and module
organization across code-rs workspace.
Audit Results:
- Feature flags: All flags actively used, no unused flags detected
- code-fork: Enabled by default, gates 12 fork-specific TUI extensions
- vt100-tests: Retained for future test scaffolding
- debug-logs, dev-faults: Active for development
- Module usage: All core and TUI modules actively used
- code-rs/core subdirs (codex/, unified_exec/, exec_command/): All active
- code-rs/tui modules: No orphaned code detected
- #![allow(dead_code)]: 9 files with acceptable usage (helpers, utilities)
- Dead code status: No critical dead code remaining after Phase 1 cleanup
- 35,000+ lines removed (106 test files + 6 orphaned modules)
- All remaining code actively used and properly integrated
Updated DEAD_CODE_INVENTORY.md with:
- Feature flag audit results and usage details
- Module usage verification for core and TUI
- Audit summary section with documentation links
- Updated success metrics reflecting Phase 1 completion
Next: Focus on porting 9 critical tests per legacy-tests-retirement.md
Co-authored-by: Hanzo Dev <[email protected]>
This commit completes Phase 1 of the codebase cleanup plan documented in
ROADMAP.md and related migration documents.
Major changes:
- Removed legacy test suites from code-rs/ crates (~35,000 lines)
- Adopted upstream codex-mcp-client and codex-responses-api-proxy
- Deleted TUI compat layer, agent task planning docs, and orphaned modules
- Updated documentation to reflect current state and future phases
Test Coverage:
- Deleted tests from: app-server, apply-patch, chatgpt, cli, core, exec,
login, mcp-server
- Documented 9 remaining coverage gaps requiring new tests (see
docs/migration/legacy-tests-retirement.md)
- Preserved smoke test infrastructure in tui/tests/ui_smoke.rs
Crate Adoptions:
- mcp-client: Now re-exports codex-mcp-client with fork-specific buffer config
- responses-api-proxy: Now re-exports codex-responses-api-proxy with minimal
wrapper
- mcp-types: Updated to use upstream types where possible
TUI Cleanup:
- Removed compat.rs ratatui adapter layer
- Deleted obsolete modules: app_backtrack, custom_terminal, scroll_view,
text_block, transcript_app
- Archived agent_tasks/ planning docs to docs/archive/
Documentation Updates:
- ROADMAP.md: Marked Phases 1-2 complete, updated next actions
- TEST_SUITE_RESET.md: Documented Phase 1 completion
- DEAD_CODE_INVENTORY.md: Updated with deletion outcomes
- Added docs/migration/legacy-tests-retirement.md with 6-week plan
- Added docs/maintenance/prompt-architecture.md
Next Steps (Phase 2-3):
- Port critical test coverage (9 test files identified)
- Expand smoke test scenarios
- Continue upstream tracking per monthly cadence
See docs/migration/ for detailed migration status and roadmap.
Co-authored-by: Hanzo Dev <[email protected]>
## Summary
- replace manual event polling loops in several core test suites with
the shared wait_for_event helpers
- keep prior assertions intact by using closure captures for stateful
expectations, including plan updates, patch lifecycles, and review flow
checks
- rely on wait_for_event_with_timeout where longer waits are required,
simplifying timeout handling
## Testing
- just fmt
------
https://chatgpt.com/codex/tasks/task_i_68e1d58582d483208febadc5f90dd95e
## Summary
This PR is an alternative approach to #4711, but instead of changing our
storage, parses out shell calls in the client and reserializes them on
the fly before we send them out as part of the request.
What this changes:
1. Adds additional serialization logic when the
ApplyPatchToolType::Freeform is in use.
2. Adds a --custom-apply-patch flag to enable this setting on a
session-by-session basis.
This change is delicate, but is not meant to be permanent. It is meant
to be the first step in a migration:
1. (This PR) Add in-flight serialization with config
2. Update model_family default
3. Update serialization logic to store turn outputs in a structured
format, with logic to serialize based on model_family setting.
4. Remove this rewrite in-flight logic.
## Test Plan
- [x] Additional unit tests added
- [x] Integration tests added
- [x] Tested locally