Codex+Opus gate (both reproduced): the new mixed-content ordered render path resolved tool snippets only from the S.messages join (_collectToolResultSnippetsByTid) and never consulted persistedSnippetByTid (S.session.tool_calls) — so on a cold/paginated load where the tool_result join misses (#4927 scenario) the inline card rendered an EMPTY body, AND its tid was added to transparentOrderedToolIds, suppressing the post-loop derived card that WOULD have recovered via #4927. Build a transparentPersistedSnippetByTid map from S.session.tool_calls and thread it as a 5th arg to _transparentOrderedToolCall, falling back in both the live and non-live branches. Also gate the transparent-only scans (S.toolCalls + _collectToolResultSnippetsByTid) behind isTransparentStream() so non-transparent renders skip the O(messages×parts) work (Opus perf finding). Redaction (#4926/#4928) was already safe (shared buildToolCard). + cold-load persisted-fallback regression test. |
||
|---|---|---|
| .. | ||
| vendor | ||
| apple-touch-icon.png | ||
| assistant_turn_anchors.js | ||
| boot.js | ||
| commands.js | ||
| favicon-32.png | ||
| favicon-192.png | ||
| favicon-512.png | ||
| favicon-512.svg | ||
| favicon.ico | ||
| favicon.svg | ||
| i18n.js | ||
| icons.js | ||
| index.html | ||
| login.js | ||
| manifest.json | ||
| messages.js | ||
| onboarding.js | ||
| outline.js | ||
| panels.js | ||
| pwa-startup.js | ||
| sessions.js | ||
| style.css | ||
| sw.js | ||
| terminal.js | ||
| ui.js | ||
| workspace.js | ||