Mindwtr 0.8.6
Highlights
- Desktop planning is clearer with separate Sync and Data settings pages, better dialog accessibility, confirmation before permanent archive/trash deletes, and steadier sync conflict/status feedback.
- Recurring tasks are more complete across desktop and mobile with end conditions for Never, On date, and After N occurrences, a custom Pomodoro duration preset, and translated copy across every shipped language.
- Import and sync flows are sturdier with OmniFocus CSV import, automatic WebDAV parent-folder creation before PUTs, bounded MKCOL traversal, deterministic legacy merges, and a macOS Dropbox OAuth callback fix.
- Mobile daily use is safer with iOS quick-capture keyboard submit fixes, calendar-push deletion hardening, checklist updates that read the full task set, and better task-editor reset behavior.
Desktop Planning, Settings & Accessibility
- Split desktop settings into dedicated Sync and Data pages so transfer, cleanup, diagnostics, and provider configuration are easier to find.
- Added confirmation prompts before permanently clearing Archive or Trash and expanded accessibility coverage for dialogs, recurrence controls, and placeholder copy.
- Added a custom Pomodoro duration preset so desktop focus sessions can keep user-defined timings.
- Refreshed desktop artwork, AppStream/Flathub screenshots, and install docs so Linux release metadata matches the shipped UI.
Sync, Import & Reliability
- Added OmniFocus CSV import with project/action mapping and related wiki/readme updates.
- Created missing WebDAV parent collections automatically before JSON/file PUTs and capped MKCOL traversal depth for pathological nested paths.
- Fixed the macOS Dropbox OAuth callback listener so desktop self-builds and supported releases can complete the local redirect flow reliably.
- Fixed desktop sync orchestration so queued follow-up runs use the latest caller options, persisted successful sync status before the post-sync store refresh, and surfaced sync conflicts more clearly in the layout.
- Made legacy no-revision merges deterministic inside the clock-skew window instead of silently preferring whichever timestamp was a few minutes newer.
- Backfilled missing task indexes during SQLite migration, stopped batch task deletes from re-tombstoning existing tombstones, and made
purgeDeletedTasks()idempotent for already-purged rows. - Preserved deleted mobile calendar-push task IDs across the debounce window so later updates do not drop pending calendar removals.
Mobile, Localization & Daily Use
- Added recurrence end conditions (
count,until, and preservedcompletedOccurrences) so recurring tasks can stop after a set number of runs or on a target date. - Filled the new recurrence end-condition copy into every shipped language and added locale-parity coverage for those keys.
- Fixed iOS quick capture so the keyboard Done action saves the task instead of only dismissing the field.
- Reset mobile task-edit state more reliably on close and kept swipeable checklist flushes anchored to
_allTasksinstead of only the visible slice. - Localized sync result toasts, sync failure copy, sync badge labels, accessibility labels, and desktop placeholder examples to keep cross-platform UI parity tighter.
- Updated CHANGELOG, README parity, Core API docs, recurrence guides, Dropbox self-build notes, and sync wiki pages to match shipped behavior.
Full Change List (since v0.8.5)
- feat(import): add OmniFocus CSV import
- feat(recurrence): add end conditions
- feat(settings): split sync and data pages
- feat(pomodoro): add custom duration preset
- fix(sync): create missing WebDAV collections before put
- fix(macos): allow Dropbox OAuth callback listener
- fix(mobile): submit quick capture from keyboard done
- fix(mobile): preserve calendar deletions during debounced sync
- fix(mobile): reset task edit state on close
- fix(mobile): flush swipe checklist against
_allTasks - fix(sqlite): backfill task indexes on migration
- fix(core): make purgeDeletedTasks idempotent
- fix(core): reject tombstones in batchDeleteTasks
- fix(core): use deterministic legacy merge inside skew window
- fix(core): bound WebDAV MKCOL depth
- fix(desktop): surface sync conflicts in layout
- fix(desktop): keep latest queued sync options
- fix(desktop): persist sync status before refresh
- fix(desktop): confirm permanent archive and trash deletes
- fix(desktop): add accessibility coverage for dialogs
- fix(icons): restore previous desktop artwork
- fix(i18n): localize recurrence, sync status, placeholders, and accessibility labels
- docs: refresh CHANGELOG, release-note index, screenshots, install docs, and sync/import wiki coverage