- Use searchParams.toString() to forward all query params instead of
manually encoding only client_id and redirect_uri
- Remove legacy localStorage fallback since storage utility is now
the sole persistence layer
- Add tests for OAuth authorize page, home page, and post-login redirect
- Use storage utility instead of raw localStorage for OAuth pending
redirect with legacy fallback for backward compatibility
- Forward search params from root page to /apps so query strings
(e.g. redirect_url) are not lost during server-side redirect
Move OAuth pending redirect check out of page.tsx since AppInitializer
already handles it globally. Simplify home page to a server-side redirect
and remove dayjs dependency in favor of native Date.now().
Follow-up to SSR prefetch migration (2833965). Eliminates the Zustand
middleman that was syncing TanStack Query data into a separate store.
- Remove useGlobalPublicStore Zustand store entirely
- Create hooks/use-global-public.ts with useSystemFeatures,
useSystemFeaturesQuery, useIsSystemFeaturesPending, useSetupStatusQuery
- Migrate all 93 consumers to import from @/hooks/use-global-public
- Simplify global-public-context.tsx to a thin provider component
- Update 18 test files to mock the new hook interface
- Fix SetupStatusResponse.setup_at type from Date to string (JSON)
- Fix setup-status.spec.ts mock target to match consoleClient
BREAKING CHANGE: useGlobalPublicStore is removed. Use useSystemFeatures()
from @/hooks/use-global-public instead.