diff options
| author | Claude Code <claude@terst.org> | 2026-08-15 17:59:12 +0000 |
|---|---|---|
| committer | Claude Code <claude@terst.org> | 2026-08-15 17:59:12 +0000 |
| commit | eb0932bddad0daa47c36cd20599944c3dc45482a (patch) | |
| tree | 4b0013e72af9a56ce496d8aeede7068d36fe4389 /project_doot_android_roadmap.md | |
Initial commit: tungsten's memory tree
Diffstat (limited to 'project_doot_android_roadmap.md')
| -rw-r--r-- | project_doot_android_roadmap.md | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/project_doot_android_roadmap.md b/project_doot_android_roadmap.md new file mode 100644 index 0000000..50613a9 --- /dev/null +++ b/project_doot_android_roadmap.md @@ -0,0 +1,16 @@ +--- +name: project-doot-android-roadmap +description: "doot Android app's native/web split and the offline-support requirement, from the 2026-08-07 architecture review" +metadata: + node_type: memory + type: project + originSessionId: 2607e018-d4ad-4ec6-bb68-5f1d0f9a3906 +--- + +The Android app is deliberately split: a native shell (Glance widget, QuickAddActivity, TaskDetailActivity, SettingsActivity) for glance/sub-second-capture surfaces, and a WebView wrapper (DashboardActivity) around the real web dashboard for everything administrative (chains, buckets, recurrence, projects, labels). The user confirmed the "glanceable" test — native only for things that must work from the home screen without opening the app, or need sub-second capture — is the right seam and endorsed keeping it as the ongoing boundary. + +**User wants offline support for the Android app.** This was stated before 2026-08-07 (not captured in memory until now — an earlier architecture-review draft treated it as a hypothetical future trigger and the user corrected that directly: "you got off gesticulating about no need for offline support when I already told you I want it"). + +**How to apply:** Don't treat offline support as optional or a someday-maybe in Android planning — it's a confirmed requirement. The architecturally consistent way to build it (matching the native/web split above): a service worker + IndexedDB write queue in the *web app itself* (caches the shell/last-fetched tab data, queues mutations like complete-atom/unified-add, replays on reconnect), not a native rewrite — this benefits a browser tab and the WebView-wrapped app identically and keeps doot's task/chain/bucket business logic living in one place (the Go server) instead of being reimplemented in Kotlin. Separately, the Glance widget talks to the bearer-token API directly over OkHttp and never touches the WebView, so a service worker does nothing for it — its own offline behavior (does a checkbox tap or quick-add fail silently when offline, or queue?) needs a small native fix of its own (a Room-backed retry queue flushed by the existing WorkManager refresh cycle), independent of the web app's offline work. + +See also [[project_doot_widget_build]] for the widget build/publish workflow. |
