From f24148c29909303d07c01adc6c5a6bef12eb0dbd Mon Sep 17 00:00:00 2001 From: eggfriedrice Date: Wed, 11 Mar 2026 22:32:34 +0000 Subject: [PATCH] fix: diff panel unclosable due to retainSearchParams re-injecting diff param --- apps/web/src/components/ChatView.tsx | 2 +- apps/web/src/diffRouteSearch.ts | 6 +++--- apps/web/src/routes/_chat.$threadId.tsx | 4 +--- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/apps/web/src/components/ChatView.tsx b/apps/web/src/components/ChatView.tsx index 3c8a0a1529..49f3c8a9ac 100644 --- a/apps/web/src/components/ChatView.tsx +++ b/apps/web/src/components/ChatView.tsx @@ -1400,7 +1400,7 @@ export default function ChatView({ threadId }: ChatViewProps) { replace: true, search: (previous) => { const rest = stripDiffSearchParams(previous); - return diffOpen ? rest : { ...rest, diff: "1" }; + return diffOpen ? { ...rest, diff: undefined } : { ...rest, diff: "1" }; }, }); }, [diffOpen, navigate, threadId]); diff --git a/apps/web/src/diffRouteSearch.ts b/apps/web/src/diffRouteSearch.ts index f310b74b78..d7de23e348 100644 --- a/apps/web/src/diffRouteSearch.ts +++ b/apps/web/src/diffRouteSearch.ts @@ -1,9 +1,9 @@ import { TurnId } from "@t3tools/contracts"; export interface DiffRouteSearch { - diff?: "1"; - diffTurnId?: TurnId; - diffFilePath?: string; + diff?: "1" | undefined; + diffTurnId?: TurnId | undefined; + diffFilePath?: string | undefined; } function isDiffOpenValue(value: unknown): boolean { diff --git a/apps/web/src/routes/_chat.$threadId.tsx b/apps/web/src/routes/_chat.$threadId.tsx index b85aeab0d9..5e05b51fbd 100644 --- a/apps/web/src/routes/_chat.$threadId.tsx +++ b/apps/web/src/routes/_chat.$threadId.tsx @@ -170,9 +170,7 @@ function ChatThreadRouteView() { void navigate({ to: "/$threadId", params: { threadId }, - search: (previous) => { - return stripDiffSearchParams(previous); - }, + search: { diff: undefined }, }); }, [navigate, threadId]); const openDiff = useCallback(() => {