Move every client-side fetch onto TanStack Query
Add a per-router QueryClient (30s stale, 10m gc) via @tanstack/react-router-ssr-query and rewrite the useEffect/useState fetchers as named useQuery hooks with exported query keys: last commits per tree entry (cached forever per tree sha, so navigating back no longer shows placeholders), commit signatures, pull code alerts, branch push suggestions, thread subscription, MergeFix polling (refetchInterval while active), hovercards (query cache instead of a hand-rolled map) and job logs (snapshot query plus an EventSource that appends through setQueryData). useAction, useOptimisticMutation and the avatar/attachment/release-asset uploads now run on useMutation; the editor's session mint is a mutation too.
25 files changed+320−271
Rendering diff…