Skip to content

Keep stale chat navigation callbacks out of the current view - #854

Open
Maya-Kid wants to merge 1 commit into
deeplethe:devfrom
Maya-Kid:fix/chat-view-request-ownership
Open

Maya-Kid wants to merge 1 commit into
deeplethe:devfrom
Maya-Kid:fix/chat-view-request-ownership

Conversation

@Maya-Kid

@Maya-Kid Maya-Kid commented Sep 21, 2026

Copy link
Copy Markdown
Contributor

Post-merge synchronization (2026-09-22)

Rebased onto dev@7cfeedfeb11c3a1c42d5091c5941a51afaaeb161 after #848, #851, #849, #850 and #852 merged. Current head: bd11c1d9ea61f5015d55ed8bc0f656c1bb2e2717.

The UI dependency order remains #854#856#855. Retained upstream stream-interruption strings alongside the history/pagination keys when resolving i18n conflicts. The complete UI tree is byte-for-byte identical to the previous validated integration tree. Maintainer visual review remains outstanding.

Validation on combined tree d06f4ad0199a382635a6bbf94210b9421cbeba66 (675 tracked Linux inputs hash-matched):

Earlier evidence below refers to its stated historical heads.


When conversation A loads slowly and the user selects B, A's late success or failure can replace B's transcript or navigate away. A late identity response from a new chat can likewise pull the user back after they leave.

This gives each view request an identity, including separate visits in A → B → A. History, navigation and initial reattachment callbacks must still own that view before changing it. Existing generation handles continue in the background. Temporary history failures keep the selected URL and offer a retry; missing/inaccessible conversations retain their existing redirect behavior. Route changes also hide the previous transcript before paint.

Validation on dev@ea0557b, fix 0df6d2a:

  • The first four browser regressions fail on the original production component, then pass with the fix. All 11 component/browser cases pass: late success/error, repeated visits, late identity, new chat, cross-KB navigation, retry, missing history, StrictMode, late snapshots, and selecting an already-loading conversation. Tests import the real Chat, router, query client and live-answer store; HTTP responses are controlled.
  • Frontend 116 module tests and the production build/typecheck/guard pass.
  • A separate Chrome run against the actual Linux server and PostgreSQL delayed a real history response while selecting another conversation; the current URL and transcript stayed correct. No history payloads were fabricated in that run.
  • Integration tree f7bcd0878bf490d6efb122b71d6f13d379df4709 combines this with Hand off exhausted tool runs to an evidence-only final answer #845 and the other scoped Chat fixes: Rust fmt, strict workspace Clippy, 1,013 tests (one pre-existing external-HTTPS RSS test ignored), workspace build, 129 frontend module tests, 27 browser subtests and frontend build pass. This integration result is distinct from the standalone branch checks.

The browser harness uses optional Playwright/Chromium, following the repository's existing browser-test pattern; it adds no package dependency. Run node --test tests/chat-view.test.mjs from web, with CHAT_PLAYWRIGHT_PATH and CHAT_CHROMIUM_PATH if needed. This does not introduce server-side cancellation, retries of a generation, or changes to #845's model policy.

Signed-off-by: dada-yan <BinjunYann@gmail.com>
@Maya-Kid
Maya-Kid force-pushed the fix/chat-view-request-ownership branch from 5d863a6 to bd11c1d Compare September 22, 2026 03:38
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.

1 participant