| 1 |
1 |
|
# GoingsOn Todo
|
| 2 |
2 |
|
|
| 3 |
|
- |
Done: Phases 1-9. Active: Phase 5 sync tests. Next: Phase 4 live sync, desktop distribution.
|
|
3 |
+ |
Done: Phases 1-9, Phase 5 attachments, code fuzz, email compose (10/10). Next: sync monetization, live sync, desktop distribution.
|
| 4 |
4 |
|
|
| 5 |
|
- |
v0.3.1. Audit grade A. ~762 tests. Code fuzz: 17/18 fixed.
|
|
5 |
+ |
v0.3.1. Audit grade A. ~313 tests. Code fuzz: 18/18 resolved. Migrations 041-044.
|
| 6 |
6 |
|
|
| 7 |
7 |
|
Completed items: [todo_done.md](./todo_done.md)
|
| 8 |
8 |
|
|
| 9 |
9 |
|
---
|
| 10 |
10 |
|
|
|
11 |
+ |
## Audit Items (Run 19, 2026-05-04)
|
|
12 |
+ |
|
|
13 |
+ |
- [x] Fix symlink canonicalization in plugin loader — already fixed (verified 2026-05-05)
|
|
14 |
+ |
- [ ] Add execution timeout to Rhai engine (in addition to operation limit) — deferred, low priority
|
|
15 |
+ |
|
|
16 |
+ |
---
|
|
17 |
+ |
|
| 11 |
18 |
|
## Sync Monetization
|
| 12 |
19 |
|
|
| 13 |
20 |
|
GO is free. Cloud sync is the only revenue source. Includes full metadata + attachment blob sync. See `MNW/server/docs/internal/business/app_sync_pricing.md` for full pricing rationale.
|
| 50 |
57 |
|
|
| 51 |
58 |
|
---
|
| 52 |
59 |
|
|
| 53 |
|
- |
## Phase 5: File Attachments
|
| 54 |
|
- |
|
| 55 |
|
- |
- [x] Sync tests: attachment in changelog, table_columns whitelist, UPSERT/DELETE ordering
|
| 56 |
|
- |
|
| 57 |
|
- |
---
|
| 58 |
|
- |
|
| 59 |
60 |
|
## Phase 6: Passkey Authentication (WebAuthn/FIDO2)
|
| 60 |
61 |
|
|
| 61 |
62 |
|
### Pre-beta
|
| 101 |
102 |
|
|
| 102 |
103 |
|
---
|
| 103 |
104 |
|
|
| 104 |
|
- |
## Email Compose (pre-beta)
|
| 105 |
|
- |
|
| 106 |
|
- |
- [ ] Attachment sending — can receive but not attach to outbound
|
| 107 |
|
- |
- [ ] Signatures — per-account email signature
|
| 108 |
|
- |
- [ ] Drafts (real) — current drafts save as regular emails with draft@local address
|
| 109 |
|
- |
- [ ] Contact autocomplete — recipient address completion
|
| 110 |
|
- |
- [ ] Email search UI — FTS backend exists, no email-specific search in UI
|
| 111 |
|
- |
- [ ] Attachment download/open — metadata extracted, no UI to save/open
|
| 112 |
|
- |
- [ ] Keyboard shortcuts — only Cmd+Enter and Escape currently
|
| 113 |
|
- |
- [ ] Quoted text collapse — threads get unreadable without it
|
| 114 |
|
- |
- [ ] Labels / folders — only INBOX + Archive, no custom organization
|
| 115 |
|
- |
- [ ] Notifications — system notifications on new mail
|
| 116 |
|
- |
|
| 117 |
|
- |
---
|
| 118 |
|
- |
|
| 119 |
105 |
|
## Shared Code Extraction (Cross-Project)
|
| 120 |
106 |
|
|
| 121 |
107 |
|
- [ ] Updater UI: extract nearly-identical updater.js from GO/BB into shared module
|
| 130 |
116 |
|
|
| 131 |
117 |
|
### Discoverability
|
| 132 |
118 |
|
- [ ] Add touch gesture hints on first mobile use (long-press, swipe, pull-to-refresh)
|
| 133 |
|
- |
- [x] Surface hidden features in task detail modal — subtasks, annotations, focus mode, and time tracking are only accessible via right-click context menu; add visible buttons/sections in the task detail view
|
| 134 |
119 |
|
- [ ] Add global search / command palette (Cmd+K) — backend FTS5 exists but has no UI; search across tasks, projects, emails, contacts, events
|
| 135 |
|
- |
- [x] Add `g`-prefix visual feedback — pressing `g` gives no indication a key sequence is active; show a brief "Go to..." overlay listing destinations
|
| 136 |
|
- |
- [x] Show keyboard shortcut hints on major buttons — e.g. "[q] Quick Add", "[n] New Task", "[?] Shortcuts" as title attributes or subtle inline labels
|
| 137 |
|
- |
- [x] Add quick-add syntax popover — show syntax help when user types `@`, `#`, or `+` in the quick-add field
|
| 138 |
|
- |
|
| 139 |
|
- |
### Learnability
|
| 140 |
|
- |
- [x] Enhance welcome flow with first-action guidance or "Load sample data" option
|
| 141 |
|
- |
- [x] Add frontend error message mapper — humanize backend error codes for toasts
|
| 142 |
|
- |
- [x] Add real-time date parse preview — show parsed date below Due Date input as user types (e.g. "next friday" → "Friday, May 8, 2026")
|
| 143 |
|
- |
- [x] Add tooltip/help text for domain-specific terms — "Snooze" ("hide until a chosen date"), "Milestone" ("group tasks into project phases"), "Recurrence" ("auto-create copy after completion")
|
| 144 |
120 |
|
|
| 145 |
121 |
|
### Complexity
|
| 146 |
|
- |
- [x] Use natural language date parsing for milestone target dates (currently requires YYYY-MM-DD)
|
| 147 |
|
- |
- [x] Simplify email account setup — make OAuth the hero path; hide IMAP server/port/TLS fields behind "Advanced" toggle; auto-detect from domain; move sync interval to post-setup settings
|
| 148 |
|
- |
- [x] Extend undo toast window from 5s to 15s — accidental deletions are irreversible if user misses the short toast
|
| 149 |
122 |
|
- [ ] Add batch project linking — let users select multiple tasks via checkboxes and link them all to a project in one action
|
| 150 |
123 |
|
|
| 151 |
124 |
|
### Feature Completeness
|
| 152 |
|
- |
- [ ] Recurring events — table stakes for any calendar feature
|
|
125 |
+ |
- [x] Recurring events — virtual expansion (store once, compute instances at query time). Events form now has recurrence field. Expansion integrated into list_events, day planner, weekly review.
|
| 153 |
126 |
|
- [ ] Calendar month/week grid view — even a basic one (events currently list-only)
|
| 154 |
127 |
|
- [ ] Separate planning and visualization dashboards — day/week/month views should be distinct from weekly review; weekly review timeline is useful but planning and reviewing are different workflows
|
| 155 |
128 |
|
- [ ] Habit tracking — daily checklist with streak/completion visualization (e.g. "gym 6/7 days", "music 5/7 days"). Recurring tasks exist but there's no "did I do this every day this week" view. Key for routine-building use cases.
|
| 156 |
|
- |
- [ ] Richer recurrence rules — Daily recurrence should support specifying which hours; Weekly should support specifying which days; Monthly should support specifying which weeks. E.g. "every weekday at 7am" or "weekly on Mon/Wed/Fri" instead of needing 3 separate weekly recurring items. Applies to both tasks and events.
|
|
129 |
+ |
- [x] Richer recurrence rules — RecurrenceRule struct with interval, weekday selection (Mon/Wed/Fri), monthly day-of-month or Nth-weekday (2nd Friday, last Monday). Config UI in both task and event forms. Tasks use rich rules for next-due calculation on completion.
|
| 157 |
130 |
|
- [ ] Time tracking reports — per-project breakdown, estimated-vs-actual, weekly/monthly summaries
|
| 158 |
131 |
|
- [ ] Contacts export to vCard — import exists but no export (asymmetric)
|
| 159 |
132 |
|
- [ ] Bulk operations for contacts (tag, delete) and events (delete)
|
| 162 |
135 |
|
|
| 163 |
136 |
|
---
|
| 164 |
137 |
|
|
| 165 |
|
- |
## Code Fuzz Remaining (2026-05-03)
|
| 166 |
|
- |
|
| 167 |
|
- |
### Serious
|
| 168 |
|
- |
- [x] `create_initial_snapshot` called outside sync_lock — TOCTOU gap (commands/sync.rs:269-276)
|
| 169 |
|
- |
|
| 170 |
|
- |
### Minor
|
| 171 |
|
- |
- [x] iCal DST spring-forward gap falls back to UTC interpretation (ical.rs:129). Fixed: fall back to `.latest()` for spring-forward gaps.
|
| 172 |
|
- |
- [x] Blob files loaded entirely into memory for sync upload (blob_sync.rs:53-61). Non-issue: attachments capped at 50 MB (attachment.rs:79), uploaded sequentially (one at a time), so worst case is ~100 MB transient (plaintext + ciphertext). XChaCha20-Poly1305 AEAD requires full plaintext for sealing.
|
| 173 |
|
- |
- [x] Temp HTML files from "Open in Browser" never cleaned up (commands/email.rs:345). Fixed: delayed cleanup + startup sweep.
|
| 174 |
|
- |
- [x] Migration FK update failures silently swallowed (migrations.rs:74). Fixed: propagate error.
|
| 175 |
|
- |
|
| 176 |
|
- |
---
|
| 177 |
|
- |
|
| 178 |
138 |
|
## Deferred
|
| 179 |
139 |
|
|
| 180 |
140 |
|
- [ ] Co-working feature: E2E encrypted project sharing (XChaCha20-Poly1305, X25519, Argon2, CRDTs, 7 phases)
|
| 198 |
158 |
|
plugins/ Bundled reference plugins
|
| 199 |
159 |
|
src-tauri/ Desktop app (Tauri 2 + vanilla JS)
|
| 200 |
160 |
|
src-tauri/src/commands/ Tauri command layer (24 modules)
|
| 201 |
|
- |
src-tauri/frontend/js/ Frontend JS (45 IIFE modules under GoingsOn namespace)
|
|
161 |
+ |
src-tauri/frontend/js/ Frontend JS (46 IIFE modules under GoingsOn namespace)
|
| 202 |
162 |
|
src-tauri/frontend/css/ Styles (Skeubrute design system)
|
| 203 |
|
- |
migrations/sqlite/ SQLite migrations (36 files)
|
|
163 |
+ |
migrations/sqlite/ SQLite migrations (44 files)
|
| 204 |
164 |
|
docs/architecture.md Crate structure and data flow
|
| 205 |
165 |
|
docs/audit_review.md Audit grades and action items
|
| 206 |
166 |
|
docs/todo/todo_mobile.md Mobile port subtodo
|