Mindwtr 1.0.5
Highlights
- Repeat reminders are available for tasks with an explicit due time, with bounded re-notification intervals on desktop and mobile.
- Capture and import are more capable with bulk Quick Add capture, safer quick-add token handling, TickTick and Obsidian import improvements, and migration helpers.
- Planning views are more flexible with board filters, board search, Focus grouping by tag/context, default task areas, relative start offsets, date-only scheduling, and longer recurrence intervals.
- Mobile and desktop task editing are smoother with keyboard-safe popups, long-title wrapping, project reorder polish, better completed-task visibility, and calmer desktop sidebar controls.
- Sync, storage, and cloud paths are more defensive with parent-reference repair, WebDAV cache-busting reads, CloudKit relative-start sync, deterministic area dedupe, safer duplicate attachments, and stricter REST validation.
- Local dictation is safer with downloadable offline models, hash/runtime verification, bounded audio capture, and FOSS speech-provider enforcement.
- Release quality improved with release-candidate automation, Android tester-track recovery, stable artifact immutability guards, AUR beta validation, AppImage packaging fixes, and broader regression coverage.
Capture, Import & Editing
- Added bulk Quick Add capture and an opt-in quick-add auto-clean setting.
- Added TickTick backup import support, preserved nested subtasks/all-day dates/archived status, and made imports more idempotent.
- Added Obsidian task import bridging into Mindwtr and refreshed import migration docs.
- Added a CSV-to-QuickAdd helper script for migration workflows.
- Improved Markdown typing helpers, duplicate keypress handling, and title editing behavior.
- Preserved people during app imports and kept project tasks out of Inbox during import.
Planning, Review & GTD
- Added repeat reminders for due-time tasks across core, desktop, mobile, cloud writes, and sync signatures.
- Added relative start offsets and synced them through CloudKit.
- Added date-only buttons to desktop task and Inbox date fields.
- Added board filters for contexts, tags, and dates, plus mobile board search and project filters.
- Added Focus grouping by tag/context and exposed tag grouping in Next.
- Added a default task area setting and area-aware quick capture behavior.
- Improved recurrence previews, regenerated recurrence fields, and longer recurrence intervals.
- Improved project reorder controls, project promotion/reuse, and completed-task sorting.
Mobile & Apple Platform Polish
- Added Apple Shortcuts v1 actions and an Apple Shortcuts guide.
- Improved iOS widget readability and added iPad extra-large widget support.
- Kept editing, bulk organize, Inbox processing, and quick-add popups above the keyboard.
- Improved large text, compact text, board filter chips, long task titles, and read-only task previews.
- Added Material 3 color, typography, shape, elevation, state-layer, pressable, FAB, card ripple, and filled-button tokens.
- Stabilized startup project/task state, Focus hydration, task-list row keys, clipped list handling, and project screen refreshes.
- Improved completed-task visibility wording, project/board filter states, quick-capture accessibility labels, and CJK substring search.
Desktop, Sync & Automation
- Added desktop reference organization fields and a slash-command title picker.
- Routed desktop add-task shortcuts to the current view and preserved project scroll state.
- Improved desktop sidebar hierarchy, contrast, spacing, and Add Task button accessibility.
- Added local model downloads and dictation support with safer runtime/model verification.
- Preserved WebDAV failure causes and avoided cache-busting read regressions.
- Repaired missing parent references before persistence and rejected invalid task references before cloud repair.
- Added a read-only Cloud backend for the MCP server and aligned Cloud search semantics.
- Enabled PWA auto sync and improved native request failure details.
Release, Docs & Quality
- Added the release candidate workflow and Linux beta RC channels for GitHub prereleases, Flathub beta, and AUR beta testing.
- Added Android Play versionCode recovery, tester-track handoff, manual RC dispatch, and RC retag recovery.
- Hardened stable artifact immutability guards, internal RC tag pushes, AUR package validation, and release workflow checks.
- Fixed AppImage packaging by excluding the bundled Wayland client.
- Added RC-aware heartbeat versions and performance diagnostic logs.
- Updated README install routing, public docs links, privacy routing, release references, sponsor docs, and validation script docs.
- Added Vietnamese localization and Czech dictation translations.
Full Change List (since v1.0.0)
- fix(release): clean npm publish config
- fix(mobile): sort completed project tasks by completion time
- chore: update french translations (#741)
- fix(android): schedule snooze as an independent alarm so it survives reschedule
- fix(markdown): only auto-close link and code characters while typing
- fix(quick-add): keep typed text by default; detected tokens are applied, not stripped
- feat(settings): add quick-add auto-clean toggle (opt-in token stripping)
- feat(core): add shared calendar-push event content builder (#743)
- fix(calendar): enrich mobile push events and serialize sync to prevent duplicates (#743)
- test(desktop): align quick-add cleanup fixtures
- test(ci): stabilize mobile calendar and perf budgets
- test(mobile): complete calendar sync mock state
- Fix/french translations (#745)
- feat(editor): add toggle to disable markdown typing helpers (#742)
- feat(desktop): show reference organization fields (#744)
- fix(mobile): stabilize startup project and task state (#747 #748)
- fix(mobile): gate focus section hydration (#747)
- fix(desktop): use Microsoft Store for store updates
- feat(mobile): add swipe-dismiss to toasts (#750)
- fix(mobile): refresh Focus rows after done (#751)
- feat(capture): add bulk quick-add capture (#749)
- feat(desktop): enrich calendar push events and serialize writes (#743)
- fix(i18n): translate bulk capture strings (#749)
- fix(mobile): ignore duplicate markdown keypress echoes (#565)
- fix(recurrence): show projected date in previews (#557)
- fix(mobile): lift inbox processing above keyboard (#738)
- fix(mobile): pin project bulk selection actions (#672)
- fix(mobile): reflect Mindwtr calendar color change in external Android apps (#726)
- fix(mobile): keep daily/weekly review progress on task chip taps (#752)
- fix(mobile): repair review-modal test type guard breaking CI (#752)
- fix(mobile): lift keyboard-covered popups across screens (#738)
- fix(mobile): restore quick status change as icon button on single-status lists
- fix(mobile): polish bulk organize actions
- fix(mobile): improve large text wrapping (#632)
- docs(readme): add IzzyOnDroid install badges (#682)
- docs(readme): resize IzzyOnDroid badge (#682)
- docs(readme): use compact IzzyOnDroid badge (#682)
- docs(readme): match IzzyOnDroid badge proportions (#682)
- docs(readme): reorder install badges (#682)
- docs(readme): add Snap Store install badge (#682)
- feat(core): add repeatReminderMinutes field and bounded repeat occurrence helper (#731)
- feat(core): normalize repeatReminderMinutes on create and load (#731)
- feat(core): include repeatReminderMinutes in task sync signature (#731)
- feat(core): persist repeatReminderMinutes in SQLite (#731)
- feat(cloud): allow repeatReminderMinutes on task write routes (#731)
- feat(core): add repeat-reminder i18n strings and keep locale parity (#731)
- feat(desktop): re-notify due-time repeat reminders in the poll loop (#731)
- feat(desktop): add repeat-reminder picker to the due-date editor (#731)
- feat(mobile): schedule bounded due-time repeat reminder alarms (#731)
- feat(mobile): add repeat-reminder picker to the due-date editor (#731)
- docs: note repeat reminder notifications (#731)
- fix: compact repeat reminder controls and harden desktop CI (#731)
- chore: ignore local git worktrees
- fix(mobile): finish large-font label wrapping with a shared scale cap (#632)
- feat(desktop): route add-task shortcut to current view (#753)
- fix(mobile): use chevron back button on project and focus screens (#746)
- feat(mobile): improve iOS widget readability and add iPad extra-large size
- feat(import): add TickTick backup importer (#754)
- docs(import): add migration guide and CSV helper
- fix(desktop): stabilize import follow-up tests (#754)
- feat(mobile): add Apple Shortcuts v1 actions
- docs(wiki): add Apple Shortcuts guide
- fix(mobile): preserve task area on project clear
- ci(desktop): reduce redundant setup work
- fix(sync): expose native request failure details (#663)
- feat(mcp): add read-only Cloud backend (#713)
- feat(focus): group tasks by tag (#756)
- fix(sync): enable PWA auto sync
- fix(sync): repair missing parent refs before persistence (#718)
- fix(cloud): reject invalid task refs before repair (#718)
- feat(gtd): add default task area setting
- fix: address task management feedback
- fix(mobile): reset task list layout after refresh (#748)
- fix(mobile): exclude git worktrees from Metro watchers
- docs: add ADR 0018 for mobile theming token hook
- test(mobile): lock non-Material theme colors as byte-identical baseline
- feat(mobile): add complete M3 color role tokens
- feat(mobile): add M3 type scale tokens
- feat(mobile): add M3 shape tokens
- feat(mobile): add self-gating M3 elevation helper
- fix(sync): preserve WebDAV fetch error causes (#758)
- docs: point Mindwtr docs to public site
- docs: point Mindwtr docs to public sources
- test(mobile): cover isMaterial-true roles-null elevation guard
- feat(mobile): add self-gating M3 state-layer helper
- feat(board): filter board view by context, tags, and dates (#759)
- refactor(filters): use shared FilterCriteria
- fix(desktop): focus title in popup task editor
- feat(desktop): add slash command title picker
- feat(mobile): add useThemeTokens hook with self-gating Material tokens
- refactor(mobile): delegate useThemeColors to useThemeTokens
- feat(mobile): add M3 type roles to ThemedText
- feat(mobile): add MaterialPressable state-layer wrapper
- feat(mobile): materialize capture FAB in tab bar under M3 theme
- feat(mobile): materialize task item card ripple and corner radius under M3
- feat(mobile): boost capture FAB to high-emphasis M3 primary role
- feat(mobile): materialize quick-capture save button under M3
- feat(mobile): add gated filled-button helper and materialize core CTA buttons under M3
- feat(mobile): materialize review and daily-review CTA buttons under M3
- feat(mobile): materialize remaining CTA buttons (projects, inbox, bulk, pomodoro, feedback) under M3
- feat(mobile): materialize CTA buttons missed in first sweep (focus/inbox/review/settings screens) under M3
- fix(mobile): update focus grouping view
- fix(desktop): preserve project scroll state
- ci(release): add release candidate workflow
- docs(readme): trim installation section
- docs(readme): link install nav to docs
- Merge branch 'feat/mobile-material3-theme'
- docs(readme): remove install nav link
- fix(settings): update about links
- ci(release): add Linux beta RC channels
- feat(core): add performance diagnostic log builder (#766)
- fix(import): preserve TickTick archived status
- fix(mcp): align Cloud search semantics
- chore(release): v1.0.5-rc.1
- ci(release): align RC publishing channels
- fix(ios): repair AppIntents list default
- ci(docker): skip duplicate RC image builds
- fix(windows): compile Store update check
- fix(release): resolve rc blocker regressions (#768)
- ci(android): skip Play preflight when upload disabled
- ci(release): require manual rc dispatch
- ci(release): handle rc retag recovery
- fix(release): resolve rc feedback blockers
- fix(release): preserve rc version signals
- fix(mobile): avoid clipped list crashes
- fix(mobile): relift quick add after refocus (#767)
- fix(mobile): highlight inbox no-date choice (#768)
- fix(desktop): disable WebView2 GPU on Windows (#770)
- fix(desktop): scope webview gpu fallback (#773)
- fix(mobile): log task action timing diagnostics (#766)
- Add Vietnamese Language (#774)
- docs: mention Vietnamese localization
- fix(mobile): keep iOS description input above keyboard
- fix(mobile): include existing tasks in calendar push (#775)
- fix(desktop): close date picker after selection (#777)
- feat(tasks): add relative start offsets (#776)
- fix: exclude bundled Wayland client from AppImage (#778)
- fix(mobile): group project actions in their own section
- feat(desktop): add date-only button to task and inbox date fields
- fix: support longer recurrence intervals (#779)
- fix(webdav): bypass caches for reads
- fix(tasks): improve duplicate and project promotion
- chore(release): use custom app service URLs
- fix(tasks): refine duplicate and project creation
- fix(task): align waiting and promotion actions
- fix(tasks): reset completion on duplicate and clarify project promotion
- feat(obsidian): bridge imported tasks into Mindwtr (#291)
- fix(android): reschedule reminders on notification startup (#607)
- fix(mobile): keep CJK substring search results (#780)
- fix(recurrence): preserve regenerated task fields
- fix(release): guard stable artifact immutability
- fix(cloudkit): sync relative start offsets
- fix(i18n): localize schedule and GTD labels
- fix(filters): prepare saved filter context once
- fix(release): keep RC tag pushes internal
- fix(mobile): lift bulk organize above keyboard
- fix(mobile): narrow board store subscription
- fix(projects): skip archived reuse on promotion
- fix(tasks): reject sub-day offsets for date-only due dates
- fix(attachments): avoid shared local URIs on duplicate
- fix(mobile): translate quick capture a11y labels
- docs: update import and release references
- fix(mobile): add board search and project filters
- fix(release): harden AUR package validation
- test: update i18n mocks for localized labels
- fix(focus): group tasks under every context
- fix(sync): normalize attachment file paths (#781)
- docs: point PRIVACY.md to canonical policy at mindwtr.app/privacy
- fix(mobile): harden local Whisper audio capture (#424)
- feat(asr): add local model downloads and dictation
- feat(desktop): polish sidebar hierarchy
- fix(core): add Czech dictation translations
- fix(desktop): restore sidebar contrast
- fix: open project quick-add edit target in long lists (#782)
- fix(imports): preserve people during app imports
- fix(mobile): enforce FOSS speech provider at runtime
- fix(mobile): validate offline speech models
- fix(release): tighten release workflow guards
- fix(projects): reuse promoted projects by area
- fix(cloud): validate REST task prop values
- fix(mobile): apply area filter to new captures
- fix(mobile): clarify project and board filter states
- docs(release): refresh post-rc notes
- fix(sync): make area dedupe deterministic
- fix(audio): verify sherpa runtime downloads
- fix(audio): reject truncated model downloads
- fix(ai): verify downloaded model hashes
- fix(audio): cap recording buffers
- fix(audio): move transcription off command thread
- fix(audio): clean up timed-out recording starts
- fix(filters): reuse prepared task predicates
- fix(attachments): skip local files on duplicate
- fix(recurrence): preserve relative start offsets
- fix(import): keep Todoist date-only due dates
- fix(import): abort stale full-snapshot writes
- fix(import): keep project tasks out of inbox
- fix(i18n): localize audio capture status
- fix(mobile): stabilize task list row keys
- fix(cloud): validate task props in bulk data
- fix(import): preserve nested TickTick subtasks
- fix(import): preserve TickTick all-day dates
- fix(import): make imports idempotent
- fix(import): escape quick-add tokens in CSV titles
- perf(import): seed TickTick task order buckets
- fix(audio): bound archive extraction and capture names
- fix(audio): restrict local transcription paths
- fix(mobile): cap board filter chip text scaling
- fix(list): expose tag grouping in next view
- perf(views): narrow store subscriptions
- docs: update Chinese automation and import docs
- docs: list root validation scripts
- fix(mobile): prevent compact text truncation (#632)
- test(desktop): cover project save-edit virtualization (#782)
- fix(mobile): lighten project reorder rows (#784)
- fix(sync): avoid WebDAV cache-busting reads
- test: update CI assertions for metadata changes
- fix: improve project reorder and toolbar controls (#632, #784, #785)
- fix(mobile): clarify completed task visibility toggle
- docs: update sponsor list
- chore: polish README links and calendar planning hint
- fix(desktop): soften sidebar Add Task button to a calmer tonal fill
- fix(desktop): loosen sidebar top-cluster spacing for consistent rhythm
- fix(desktop): give sidebar logo its own breathing room below the header
- fix(desktop): meet AA contrast on Add Task button (tonal fill failed a11y)
- feat(mobile): show task title as a wrapping, capped field in view and edit (#786)
- fix(mobile): let task title edit field grow so long titles show from the start (#786)
- fix(mobile): show full task title in the read-only preview (#786)