Commit Graph

4 Commits

Author SHA1 Message Date
Jeff Emmett af3468e0d5 fix: include Immich chunk manifest hash in inject-version
After an Immich upgrade, Svelte chunk filenames rotate but the cached
PWA shell still imports old ones — dynamic imports 500 or 404. Our
auto-update mechanism only caught changes to our injected script, not
upstream changes, so the stuck PWA never self-healed.

Now /api/custom/inject-version returns a hash of
(custom script || Immich chunk manifest fingerprint), so any upgrade
bumps the version, the PWA detects it on next poll, unregisters the
service worker, clears caches, and reloads with fresh chunks.

We extract only the /_app/immutable/... references from the HTML to
avoid hashing server-rendered per-user state (CSRF tokens etc) that
would cause spurious version churn.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 12:56:37 -04:00
Jeff Emmett 7be768e2db feat: pinch-zoom, heatmap iframe, and scroll strips on /explore
- Enable native mobile pinch-zoom by rewriting the viewport meta.
- Strip Content-Security-Policy / X-Frame-Options from HTML responses
  so heatmap.jeffemmett.com can be iframed in.
- On /explore: inject a collapsible heatmap iframe at the top, and
  replace People + Places sections (truncated grid with 'view more')
  with horizontally-scrollable strips fetched from /api/people and
  /api/search/cities.
- Re-run injection on history pushState + MutationObserver to cover
  Svelte SPA route changes.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 12:41:14 -04:00
Jeff Emmett 2418298d77 feat: PWA auto-update detection for injected script
server.js: hash live-search.js into INJECT_VERSION, expose
/api/custom/inject-version, set no-store on HTML so inline version
tag stays fresh.

live-search.js: compare baked window.__LS_VERSION vs server version
every 2 min + on visibility change; show banner, auto-unregister
service worker, clear caches, and reload when a new version ships.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 12:26:04 -04:00
Jeff Emmett 38bdcf25dc feat: add search-app proxy with WebSocket support and upload buffering
Adds immich-proxy (search-app) with live search injection, WebSocket
proxying for socket.io, and 10GB upload buffering via Traefik middleware.
Moves Traefik routing from immich-server to proxy. Updates valkey 8→9.
Adds backlog tasks for drone sync and Syncthing reconnection.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-14 12:47:53 -04:00