1 Commits

Author SHA1 Message Date
shawn 7c8eb458ad Offline Queue: IndexedDB PhotoQueue, offline routing, SW caching + sync
- PhotoQueue class with IndexedDB store (queued/uploading/done/failed)
- uploadSelected() and startBulkProcess() check navigator.onLine and queue offline
- Online event auto-drains queue via /api/bulk-process with exponential backoff
- Offline banner shows queued count, hides when empty
- Service Worker: cache-first static, network-first API, background sync listener
- Exponential backoff: 2s → 5s → 15s, then mark failed after 3 retries
2026-05-25 19:28:50 -04:00