Follow-up to the Tier 1 installable PWA work (manifest, service worker, offline fallback page).
Currently the PWA only precaches the static app shell — it does not support creating, editing, or completing tasks while offline. The web app is fully server-rendered and session-gated with no client-side data layer today, so this would mean:
Rebuilding the relevant frontend views as API-driven (JSON) rather than server-rendered HTML
Adding a local data cache (IndexedDB) mirroring the existing mobile sync/ app's protocol (sync_id, timestamp-based conflict detection, local/server/merged resolution)
Queueing offline writes and replaying them via POST /api/sync/ once back online
Service worker changes to intercept and serve task data from the local cache when offline
This is a substantially larger project than Tier 1 and should be scoped separately. Noting here since the native Android app may be retired once the PWA covers its use cases, and offline task access was one of its capabilities.
Follow-up to the Tier 1 installable PWA work (manifest, service worker, offline fallback page).
Currently the PWA only precaches the static app shell — it does not support creating, editing, or completing tasks while offline. The web app is fully server-rendered and session-gated with no client-side data layer today, so this would mean:
- Rebuilding the relevant frontend views as API-driven (JSON) rather than server-rendered HTML
- Adding a local data cache (IndexedDB) mirroring the existing mobile `sync/` app's protocol (sync_id, timestamp-based conflict detection, local/server/merged resolution)
- Queueing offline writes and replaying them via `POST /api/sync/` once back online
- Service worker changes to intercept and serve task data from the local cache when offline
This is a substantially larger project than Tier 1 and should be scoped separately. Noting here since the native Android app may be retired once the PWA covers its use cases, and offline task access was one of its capabilities.
Full offline task management now works via an IndexedDB cache + the existing /api/sync/ protocol:
Full task CRUD offline: title, description, status, priority, due date/time, recurrence (simple presets), tags
Subtasks: create, nest correctly under parent, complete
Tags: full CRUD via a sidebar modal, tag filtering, tag chips on tasks
Time tracking: start/stop timer offline, single-running-timer enforcement, live elapsed display
Sync replay on reconnect with auto-resolve-local conflict handling
A SYNC_FORMAT_VERSION mechanism forces one full resync when a devices cached data predates a newly-tracked entity type (e.g. tags/time entries added after a device already had a sync token)
Background sync now runs unthrottled on every real page load (not just every 2 minutes), so the offline cache never lags behind mutations made on the online UI
UI reuses the real dashboard layout (_sidebar.html/_task_detail.html structure) with an amber-tinted header and an offline banner, per feedback that it should look identical to the online app rather than a separate bespoke UI.
Closing as complete. The native Android apps offline capability is now covered by the PWA.
Shipped in commits 373bfe6, bde7be4, and c454423.
Full offline task management now works via an IndexedDB cache + the existing `/api/sync/` protocol:
- Full task CRUD offline: title, description, status, priority, due date/time, recurrence (simple presets), tags
- Subtasks: create, nest correctly under parent, complete
- Tags: full CRUD via a sidebar modal, tag filtering, tag chips on tasks
- Time tracking: start/stop timer offline, single-running-timer enforcement, live elapsed display
- Sync replay on reconnect with auto-resolve-local conflict handling
- A SYNC_FORMAT_VERSION mechanism forces one full resync when a devices cached data predates a newly-tracked entity type (e.g. tags/time entries added after a device already had a sync token)
- Background sync now runs unthrottled on every real page load (not just every 2 minutes), so the offline cache never lags behind mutations made on the online UI
UI reuses the real dashboard layout (_sidebar.html/_task_detail.html structure) with an amber-tinted header and an offline banner, per feedback that it should look identical to the online app rather than a separate bespoke UI.
Closing as complete. The native Android apps offline capability is now covered by the PWA.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Follow-up to the Tier 1 installable PWA work (manifest, service worker, offline fallback page).
Currently the PWA only precaches the static app shell — it does not support creating, editing, or completing tasks while offline. The web app is fully server-rendered and session-gated with no client-side data layer today, so this would mean:
sync/app's protocol (sync_id, timestamp-based conflict detection, local/server/merged resolution)POST /api/sync/once back onlineThis is a substantially larger project than Tier 1 and should be scoped separately. Noting here since the native Android app may be retired once the PWA covers its use cases, and offline task access was one of its capabilities.
Shipped in commits
373bfe6,bde7be4, andc454423.Full offline task management now works via an IndexedDB cache + the existing
/api/sync/protocol:UI reuses the real dashboard layout (_sidebar.html/_task_detail.html structure) with an amber-tinted header and an offline banner, per feedback that it should look identical to the online app rather than a separate bespoke UI.
Closing as complete. The native Android apps offline capability is now covered by the PWA.