authorgravatar for eggfriedricew.g.o@gmail.comeggfriedrice <eggfriedricew.g.o@gmail.com> 2026-03-11 01:42:39+00:00
committergravatar for noreply@github.comGitHub <noreply@github.com> 2026-03-10 18:42:39-07:00
log7ddcb239c5ce4031653afbc404a860ccf5606549
tree74aba465108181d0a713af054c0bab09fdf83e11
parent9e4e22197045a2d2ba7ba7d7813054e49234f6f1
signature Signed by PGP key B5690EEEBB952194

feat: persist diff panel state across thread navigation (#875)


1 files changed, 9 insertions(+), 2 deletions(-)

apps/web/src/routes/_chat.$threadId.tsx+9-2
...@@ -1,10 +1,14 @@...@@ -1,10 +1,14 @@
1import { ThreadId } from "@t3tools/contracts";1import { ThreadId } from "@t3tools/contracts";
2import { createFileRoute, useNavigate } from "@tanstack/react-router";2import { createFileRoute, retainSearchParams, useNavigate } from "@tanstack/react-router";
3import { Suspense, lazy, type ReactNode, useCallback, useEffect } from "react";3import { Suspense, lazy, type ReactNode, useCallback, useEffect } from "react";
44
5import ChatView from "../components/ChatView";5import ChatView from "../components/ChatView";
6import { useComposerDraftStore } from "../composerDraftStore";6import { useComposerDraftStore } from "../composerDraftStore";
7import { parseDiffRouteSearch, stripDiffSearchParams } from "../diffRouteSearch";7import {
8 type DiffRouteSearch,
9 parseDiffRouteSearch,
10 stripDiffSearchParams,
11} from "../diffRouteSearch";
8import { useMediaQuery } from "../hooks/useMediaQuery";12import { useMediaQuery } from "../hooks/useMediaQuery";
9import { useStore } from "../store";13import { useStore } from "../store";
10import { Sheet, SheetPopup } from "../components/ui/sheet";14import { Sheet, SheetPopup } from "../components/ui/sheet";
...@@ -224,5 +228,8 @@ function ChatThreadRouteView() {...@@ -224,5 +228,8 @@ function ChatThreadRouteView() {
224228
225export const Route = createFileRoute("/_chat/$threadId")({229export const Route = createFileRoute("/_chat/$threadId")({
226 validateSearch: (search) => parseDiffRouteSearch(search),230 validateSearch: (search) => parseDiffRouteSearch(search),
231 search: {
232 middlewares: [retainSearchParams<DiffRouteSearch>(["diff"])],
233 },
227 component: ChatThreadRouteView,234 component: ChatThreadRouteView,
228});235});