Codex gate (the key one): the persistedSnippetByTid fallback read S.session.tool_calls, but loadSession() keeps the messages=0 session object (tool_calls []), and the real messages=1 summary arrives only as the sessionToolCalls argument to _syncToolCallsForLoadedMessages() — never copied onto S.session. So the fallback source was empty on exactly the cold-load path it repairs. Persist sessionToolCalls onto S.session.tool_calls in _syncToolCallsForLoadedMessages (covering _ensureMessagesLoaded, older-message paging, and full-history loaders) so renderMessages builds a populated persistedSnippetByTid. + guard 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 | ||