v2.9.3
Cloud Sync
- iCloud & WebDAV hardening — Separate retry backoffs, atomic writes, and lock fixes reduce the chance of conflicts during concurrent syncs
- ETag-based optimistic concurrency — WebDAV uploads now use
If-Matchto detect mid-air collisions; iCloud sync returns ETags via the Electron bridge and forwardsIf-None-Matchthrough the WebDAV proxy - Encryption consistency — iCloud sync now encrypts writes and decrypts reads when a passphrase is configured
- Config field merging —
habitsEnabled,routinesEnabled,goalsProjectsEnabled, andobsidianConfiguse per-field last-writer-wins timestamps to prevent one device from clobbering another's settings - Habit log decrements sync cross-device — Per-entry timestamps ensure decrements propagate correctly rather than being overwritten
- Tombstone fence — Tasks deleted more than 90 days ago can no longer be resurrected after long offline periods
- Spurious sync cycles eliminated — Replaced
JSON.stringifycomparisons with deep equality checks so unchanged data no longer triggers uploads - iCloud poll interval — Reduced from 60 s → 15 s for faster cross-device propagation
- Sync error visibility — Desktop/tablet settings now show the error message in red where "Last synced" normally appears; mobile settings show error message and last-synced time
- Passphrase flash fixed — Passphrase modal no longer flashes on cold open when a cached key is present
- Misc correctness fixes — First-sync reload, native imports, missed events, and passphrase handling
Bug Fixes
- LIST view: past calendar events — Past events now show strikethrough text and a filled checkmark, matching the visual treatment of completed tasks
- Obsidian
[[wikilink autocomplete (Android) — Notes inside subdirectories were missing from autocomplete; now indexes the full vault recursively - Obsidian
[[wikilink autocomplete (PWA) — After a browser restart, wikilink suggestions were empty until the next full sync; now repopulated immediately when vault access is re-acquired - LIST view: Obsidian icon opacity — The BookOpen icon no longer appears dimmer than the other row icons
Improvements
- AI suggestion button in New Task modals — The AI tag/duration suggestion is no longer triggered automatically while typing; a small
AIbutton now appears to run it on demand - Obsidian sync toast (mobile) — Toast is now centered horizontally between the Notes and Weekly Review FABs
- GLANCEahead in LIST view — Tapping GLANCEahead scrolls the list to the top to show the earliest item
- Home timezone setting — A new Home Timezone option (Localization section in Settings) lets you pin your home timezone; when your device is in a different timezone, an amber warning banner appears
Internal
- Version rolled back from 3.0.1 → 2.9.3 (3.0.0 is reserved for the iOS launch)
- Android versionCode bumped to 63