From 59ce2e65dc22504db4b25372cf69d4ac4a1fd19a Mon Sep 17 00:00:00 2001 From: eggfriedrice Date: Wed, 11 Mar 2026 01:16:31 +0000 Subject: [PATCH] feat: persist diff panel state across thread navigation with retainSearchParams --- apps/web/src/routes/_chat.$threadId.tsx | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/apps/web/src/routes/_chat.$threadId.tsx b/apps/web/src/routes/_chat.$threadId.tsx index 57b8ad43b5..b85aeab0d9 100644 --- a/apps/web/src/routes/_chat.$threadId.tsx +++ b/apps/web/src/routes/_chat.$threadId.tsx @@ -1,10 +1,14 @@ import { ThreadId } from "@t3tools/contracts"; -import { createFileRoute, useNavigate } from "@tanstack/react-router"; +import { createFileRoute, retainSearchParams, useNavigate } from "@tanstack/react-router"; import { Suspense, lazy, type ReactNode, useCallback, useEffect } from "react"; import ChatView from "../components/ChatView"; import { useComposerDraftStore } from "../composerDraftStore"; -import { parseDiffRouteSearch, stripDiffSearchParams } from "../diffRouteSearch"; +import { + type DiffRouteSearch, + parseDiffRouteSearch, + stripDiffSearchParams, +} from "../diffRouteSearch"; import { useMediaQuery } from "../hooks/useMediaQuery"; import { useStore } from "../store"; import { Sheet, SheetPopup } from "../components/ui/sheet"; @@ -224,5 +228,8 @@ function ChatThreadRouteView() { export const Route = createFileRoute("/_chat/$threadId")({ validateSearch: (search) => parseDiffRouteSearch(search), + search: { + middlewares: [retainSearchParams(["diff"])], + }, component: ChatThreadRouteView, });