Repository navigation
Conversation
|
Thanks @artile and @tao-io for identifying the wrong-thread transcript fallback and demonstrating the selected-thread cache approach. Rebuilt this as the one-layer replacement #21560, which is verified and unmerged. GitHub advertised maintainer edits for this fork, but rejected the push with HTTP 403. The replacement keeps the fix focused on current main: it removes the foreign transcript fallback while retaining the existing selected-thread cache and newer find, handoff, and paint-only guards. I compared the complete original diff with the replacement. Selected-thread caching and cold-switch behavior are covered there; the original removal of context/callback guards is intentionally omitted to preserve current safety paths. Overlapping tests were consolidated into the cold-switch regression. Both independent reviewers found no blockers in two rounds; 311 focused tests pass, current-head CI passes, and the replacement body includes matching Linux web screenshots and recordings. Two browser fixtures also now await their lazy resources without changing assertions or timeouts. |
Switching to a thread whose history is still loading paints the last-viewed transcript under the new title and pane widths. That old text reflows before the selected transcript replaces it, causing the jump shown in #17115.
Reuse cached history only for the selected thread. Keep the bounded cache and existing loading surface, and remove the context and callback guards used to paint another thread’s history. This changes the shared web/desktop ChatView; mobile navigation, providers, and wire contracts do not change.
Closes #17115.
Validation:
vp test run apps/web/src/components/ChatView.logic.test.ts apps/web/src/components/chat/MessagesTimeline.logic.test.ts: 285 passed.vp run --filter @t3tools/web typecheck: passed.Before, while destination history is pending:
After, while destination history is pending:
After the request completes:
Videos: before, after: cold loading, after: cached switches. The long idle wait is cut from the before video; the switch and final response remain. Evidence is hosted as assets in the fork’s PR evidence entry; no evidence files are committed.
Model: gpt-6.1-sol. Harness: Codex in T3 Code.