Skip to content

[#220]: Document Codex v0.147.0 sections as rollout-invisible - #227

Merged
delexw merged 1 commit into
mainfrom
fix-issue-220
Aug 12, 2026
Merged

[#220]: Document Codex v0.147.0 sections as rollout-invisible#227
delexw merged 1 commit into
mainfrom
fix-issue-220

Conversation

@delexw

@delexw delexw commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Summary

Codex v0.147.0 added persistent, manually-ordered conversation "sections" (upstream PRs #35722, #36007, #36380) and incremental long-transcript browsing in the TUI (#36948, #36950). This checks whether either change affects how codex-trace parses session_meta from the rollout JSONL.

Investigation

Verified directly against the real openai/codex PRs and source (not assumed):

  • Sections are SQLite-only, never in the rollout file. codex-rs/rollout/src/recorder.rs's former is_pinned parameter was renamed to section across PR #35722, but every rollout-facing call site still passes None for it — section data is joined from local SQLite state (codex-rs/state/migrations/0045_threads_section.sql, 0046_threads_section_order.sql) at read time, not written to the rollout JSONL.
  • Confirmed the SessionMeta/SessionMetaLine structs in codex-rs/protocol/src/protocol.rs have no section/section_position field, and codex-rs/rollout/src/metadata.rs's builder_from_session_meta never reads one.
  • Incremental transcript browsing is TUI-only. PRs #36948 and #36950 only touch codex-rs/tui/* (pagination/rendering of already-loaded history) — neither touches the rollout crate.

Since neither sub-change reaches the rollout JSONL, no parser change is needed or possible — this matches the issue's own suggested fallback ("if sections turn out to be purely client-side state ... just document the gap as a known limitation").

Changes

  • src-tauri/src/parser/discover.rs: documented the above findings as a doc comment on discover_sessions, and added three regression tests:
    • a v0.147.0 session still discovers/parses normally
    • the existing v0.146.0 history_base_thread_id pagination marker still works on a v0.147.0 session
    • an unrecognized section object on session_meta is tolerated, not a panic

Testing

  • cargo test --lib --manifest-path src-tauri/Cargo.toml — 363 passed
  • cargo clippy --manifest-path src-tauri/Cargo.toml -- -D warnings — clean
  • cargo fmt --manifest-path src-tauri/Cargo.toml -- --check — clean
  • npm test — 148 vitest + 366 cargo tests passed
  • npx tsc --noEmit — clean
  • npx oxlint — clean (one pre-existing, unrelated warning in MarkdownRenderer.tsx, not touched by this change)
  • npx oxfmt --check — clean

Fixes #220

…220)

Persistent thread sections (PRs #35722/#36007/#36380) and incremental
transcript browsing (PRs #36948/#36950) never touch the rollout JSONL:
sections are joined from local SQLite state at read time (the recorder's
former is_pinned param was renamed to section and stays None at every
rollout-facing call site), and the transcript-browsing PRs only touch
codex-rs/tui. No parser change is needed; add regression tests locking
in current v0.147.0 parsing behavior instead.

Fixes #220
@delexw
delexw merged commit e08fec6 into main Aug 12, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Compat] Codex v0.147.0: persistent conversation sections and incremental transcript browsing

1 participant