diff --git a/backlog/tasks/task-001 - offline-local-storage.md b/backlog/tasks/task-001 - offline-local-storage.md index ae06a27..fa77ffc 100644 --- a/backlog/tasks/task-001 - offline-local-storage.md +++ b/backlog/tasks/task-001 - offline-local-storage.md @@ -4,7 +4,7 @@ title: offline local storage status: To Do assignee: [] created_date: '2025-12-03 23:42' -updated_date: '2025-12-04 20:25' +updated_date: '2025-12-04 20:27' labels: - feature - offline @@ -17,23 +17,24 @@ priority: high ## Description -Add IndexedDB persistence layer to the existing Automerge sync system. Board data should be cached locally for offline access, with graceful online/offline transitions. +IndexedDB persistence is already implemented via @automerge/automerge-repo-storage-indexeddb. The remaining work is: -Key requirements: -- Store board state in IndexedDB (not localStorage - 5MB limit insufficient) -- Integrate with existing useAutomergeSync hook -- Detect online/offline status and show connection indicator -- Sync local changes when connection restores -- Handle Safari's 7-day eviction with service worker touch +1. Add real online/offline detection (currently always returns "online") +2. Create UI indicator showing connection status +3. Handle Safari's 7-day IndexedDB eviction + +Existing code locations: +- src/automerge/useAutomergeSyncRepo.ts (lines 346, 380-432) +- src/automerge/useAutomergeStoreV2.ts (connectionStatus property) +- src/automerge/documentIdMapping.ts (room→document mapping) ## Acceptance Criteria -- [ ] #1 IndexedDB schema for board documents and assets -- [ ] #2 Persist Automerge document to IndexedDB on changes -- [ ] #3 Load from IndexedDB on initial page load (before WebSocket connects) -- [ ] #4 Online/offline status detection with UI indicator -- [ ] #5 Queue local changes during offline and sync on reconnect -- [ ] #6 Handle storage quota limits gracefully -- [ ] #7 Safari 7-day eviction mitigation via service worker +- [ ] #1 Real WebSocket connection state tracking (not hardcoded 'online') +- [ ] #2 navigator.onLine integration for network detection +- [ ] #3 UI indicator component showing connection status +- [ ] #4 Visual feedback when working offline +- [ ] #5 Auto-reconnect with status updates +- [ ] #6 Safari 7-day eviction mitigation (service worker or periodic touch)