Add retainSearchParams middleware to the _chat.$threadId route so that diff-related search params (?diff=1, diffTurnId, diffFilePath) are preserved when navigating between threads via the sidebar. Without this, TanStack Router clears search params on navigation since the sidebar's navigate calls don't explicitly pass search.
Unified · Split
| @@ -1,4 +1,4 @@ | |||
| 1 | import { createFileRoute, useNavigate } from "@tanstack/react-router"; | 1 | import { createFileRoute, retainSearchParams, useNavigate } from "@tanstack/react-router"; |
| 2 | import { Activity, Suspense, lazy, type ReactNode, useCallback, useEffect } from "react"; | 2 | import { Activity, Suspense, lazy, type ReactNode, useCallback, useEffect } from "react"; |
| 3 | 3 | ||
| 4 | import ChatView from "../components/ChatView"; | 4 | import ChatView from "../components/ChatView"; |
| @@ -110,5 +110,8 @@ function ChatThreadRouteView() { · 105 unmodified lines | |||
| 110 | 110 | ||
| 111 | export const Route = createFileRoute("/_chat/$threadId")({ | 111 | export const Route = createFileRoute("/_chat/$threadId")({ |
| 112 | validateSearch: (search) => parseDiffRouteSearch(search), | 112 | validateSearch: (search) => parseDiffRouteSearch(search), |
| 113 | search: { | ||
| 114 | middlewares: [retainSearchParams(true)], | ||
| 115 | }, | ||
| 113 | component: ChatThreadRouteView, | 116 | component: ChatThreadRouteView, |
| 114 | }); | 117 | }); |