Summary
After updating to the ChatGPT desktop app that includes Codex, opening existing long conversations shows only the most recent turns. Older turns are not accessible in the conversation UI, even though the complete rollout files remain present and the app-server successfully pages through stored turns.
This reproduces across multiple existing long conversations and looks like a Desktop transcript hydration/rendering regression rather than data loss.
Environment
- Product: ChatGPT desktop app with Codex
- Desktop app version:
26.707.31428
- Bundled Codex version:
codex-cli 0.144.0-alpha.4
- OS: macOS 15.7.3
- Architecture: arm64
- Local thread history mode: existing threads are marked
legacy
Steps to reproduce
- Have one or more existing Codex conversations with substantial history.
- Update to the ChatGPT desktop app build above.
- Open an existing long conversation.
- Scroll upward and try to reach the beginning of the transcript.
- Only the recent portion of the conversation remains visible; earlier turns cannot be reached.
Expected behavior
The complete stored conversation should be viewable. Incremental history loading may be used for performance, but all older pages should eventually be merged into the transcript while preserving a usable scroll position.
Actual behavior
Only the recent turns are rendered in the conversation view. The UI behaves as if older history is unavailable, even though the storage and app-server layers still contain and return it.
Local diagnostics
The following checks were performed without modifying any Codex data:
PRAGMA integrity_check on ~/.codex/state_5.sqlite: ok
- Thread rows in the state database: 1,504
- Corresponding rollout files found: 1,504
- Missing rollout files: 0
- Empty rollout files: 0
- Active session storage: approximately 1.9 GB
- Archived session storage: approximately 705 MB
- A
threads history mode migration was applied during the update; all existing rows currently report history_mode = legacy
- Desktop logs recorded 40 successful
thread/turns/list responses with errorCode=null
- No
Failed to load older thread turns or Failed to load remaining thread turns after resume messages were found
- The renderer repeatedly logged:
ResizeObserver loop completed with undelivered notifications.
- In one long-conversation window, 21 successful history-page responses were followed by 129 of those renderer errors
This suggests the rollout reader and pagination API are working, but the Desktop renderer or virtualized transcript state is not reliably exposing the hydrated older turns.
Suggested areas to inspect
- Merging
thread/turns/list pages into canonical transcript state
- Virtualized-list scroll anchoring when older pages are prepended
- Whether repeated
ResizeObserver errors prevent older entries from becoming reachable
- Compatibility between
history_mode = legacy, tail hydration, and canonical turn history
- A visible recovery/loading state when older turns cannot be rendered
Related issue
#21211 discusses large-thread hydration and rendering performance, but this report is specifically about successful history-page responses not becoming accessible in the Desktop transcript.
Raw session transcripts and full logs are intentionally not attached because they may contain sensitive data. Sanitized excerpts can be provided if needed.
Summary
After updating to the ChatGPT desktop app that includes Codex, opening existing long conversations shows only the most recent turns. Older turns are not accessible in the conversation UI, even though the complete rollout files remain present and the app-server successfully pages through stored turns.
This reproduces across multiple existing long conversations and looks like a Desktop transcript hydration/rendering regression rather than data loss.
Environment
26.707.31428codex-cli 0.144.0-alpha.4legacySteps to reproduce
Expected behavior
The complete stored conversation should be viewable. Incremental history loading may be used for performance, but all older pages should eventually be merged into the transcript while preserving a usable scroll position.
Actual behavior
Only the recent turns are rendered in the conversation view. The UI behaves as if older history is unavailable, even though the storage and app-server layers still contain and return it.
Local diagnostics
The following checks were performed without modifying any Codex data:
PRAGMA integrity_checkon~/.codex/state_5.sqlite:okthreads history modemigration was applied during the update; all existing rows currently reporthistory_mode = legacythread/turns/listresponses witherrorCode=nullFailed to load older thread turnsorFailed to load remaining thread turns after resumemessages were foundResizeObserver loop completed with undelivered notifications.This suggests the rollout reader and pagination API are working, but the Desktop renderer or virtualized transcript state is not reliably exposing the hydrated older turns.
Suggested areas to inspect
thread/turns/listpages into canonical transcript stateResizeObservererrors prevent older entries from becoming reachablehistory_mode = legacy, tail hydration, and canonical turn historyRelated issue
#21211 discusses large-thread hydration and rendering performance, but this report is specifically about successful history-page responses not becoming accessible in the Desktop transcript.
Raw session transcripts and full logs are intentionally not attached because they may contain sensitive data. Sanitized excerpts can be provided if needed.