Commit graph

3 commits

Author SHA1 Message Date
df951ff2ab fix: recover from expired Authentik session without clearing site data
Store Tracker is a PWA behind the shared Authentik forward-auth provider.
When the session expires (Android Chrome evicts the PWA cookie), the same-origin
/api XHR is 302'd cross-origin and CORS-blocked, the app showed only a generic
"backend connection" error, and the service worker served the cached shell for
any navigation — so re-auth was impossible without clearing all site data.

Fix:
- App swaps to a "Session expired" screen on an auth error (axios error with no
  response, or 401/403) while online. Its "Sign in" button unregisters the
  service worker + deletes all caches before navigating (programmatic "clear
  site data"), so the re-auth navigation reaches forward-auth -> Authentik.
- vite.config: navigateFallbackDenylist [/[?&]reauth=/] keeps the SW from
  serving the cached shell for the re-auth navigation.

Same bug class fixed in books (#19), speedracer, and vpn-stats.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018rXJ49eToZ6YFZzDYH8GXd
2026-06-27 09:10:09 -04:00
Maddox
e97f620dff Add PWA support (vite-plugin-pwa)
Manifest with standalone display, dark theme color, 192/512 icons.
NetworkFirst workbox strategy for API routes. Dockerfile uses
--legacy-peer-deps for vite-plugin-pwa peer dep conflict with Vite 8.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-07 21:02:20 -04:00
Maddox
69e0b864e4 Initial commit — Store Tracker v2 frontend
React 18 + Vite + TypeScript + Tailwind v4 + TanStack Query v5.
Dark glassmorphism design, table/grid views, color-coded route badges,
filter bar, stats bar, add/edit modal, delete confirm, toast notifications.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-06 20:40:08 -04:00