Mindwtr 0.6.13
Highlights
- Major sync reliability hardening across core, desktop, and mobile (revision persistence, local-change aborts, queued-error surfacing, and safer merge behavior).
- Cloud attachment security and stability improvements (path traversal hardening, endpoint rate limits, and upload timeout/retry).
- Better desktop/mobile UX and accessibility (delete confirmation + undo, improved labels, localized placeholders, loading skeletons, and larger mobile touch targets).
- Large refactor and testability push (sync orchestration coverage, cloud API integration tests, shared sync runtime helpers, and component splitting).
- Linux desktop polish: native top menu is now macOS-only, and Linux app metadata/icon handling was improved.
Core Sync & Data
- Persisted
rev/revByin SQLite so conflict resolution metadata survives local saves. - Ignore invalid
deletedAtvalues for operation-time tie breaking. - Preserve winner
updatedAtduring timestamp normalization. - Detect content divergence when revisions tie.
- Merge settings per-field inside sync groups.
- Keep pending snapshot after save failures to reduce data-loss risk.
Desktop
- Cleared orphaned external sync debounce timer on watcher stop.
- Captured local snapshot timestamp after pending flush to avoid false stale aborts.
- Added timeout/retry for cloud attachment uploads.
- Added task delete confirmation and undo toast recovery.
- Improved metadata/attachment accessibility labels.
- Added global search loading skeleton.
- Kept project/section/area selectors within viewport.
- Refactored task/project editor internals and split oversized modules.
Mobile
- Added local-change sync abort protection and in-flight sync abort handling.
- Added offline/network-drop abort behavior for sync HTTP requests.
- Default sync backend now
offfor first launch parity. - Localized hardcoded tag placeholders.
- Sanitized sync failure alerts to avoid exposing raw internal errors.
- Increased task edit touch target sizes.
- Cached sync config reads between cycles.
- Capped attachment cleanup work per sync cycle.
Cloud / MCP / FOSS
- Hardened cloud attachment path resolution.
- Added attachment endpoint-specific rate limiting.
- Added enforceable cloud bearer-token allowlist option.
- Strengthened cloud app-data payload validation.
- Reused SQLite connection in MCP server to reduce overhead.
- Kept FOSS APK prep stable and CI signing flow aligned.
Testing / Refactor
- Added desktop and mobile sync orchestration tests.
- Added cloud API integration tests.
- Added desktop sync service reset hooks for test isolation.
- Lazy-loaded mobile logger Expo FS dependency for Node test compatibility.
- Extracted shared sync runtime helpers into
@mindwtr/core. - Unified attachment map/loop handling across desktop sync backends.
Full Change List (since 0.6.12)
- 6866e5c fix(desktop): limit native menu to macOS and improve Linux app metadata
- aeed2ba fix(desktop): resolve task refactor TypeScript regressions
- c659c9f refactor(desktop): use resolveText for discard confirmation
- d793597 refactor(desktop): split project section dnd and actions
- 0551160 refactor(desktop): extract task layout and project attachment hooks
- 50fbd36 refactor(desktop): split task item field editors and context hook
- 2168c83 refactor(sync): share cloud/file attachment sync loop
- f0e9357 feat(desktop): add loading skeleton for global search
- e484224 fix(mobile): increase task edit touch target sizes
- af73b84 fix(desktop): keep selectors within viewport bounds
- f129ac6 test(sync): add desktop and mobile orchestration coverage
- 5fc3dfe test(cloud): add api integration coverage
- 27fc07a fix(mobile): lazy-load expo fs in logger for node tests
- 32a2883 refactor(sync): extract shared runtime helpers to core
- cd89027 test(sync): add desktop sync service reset hooks
- 72cc9a8 refactor(sync): share attachment map collection across backends
- 7086a94 feat(mobile): abort in-flight sync HTTP requests on offline
- ef08938 fix(desktop): improve accessibility labels for metadata and attachments
- fce0bd0 perf(mobile): cap attachment cleanup work per sync cycle
- 29425d3 perf(mobile): cache sync config reads between cycles
- 92b42a1 fix(mobile): avoid exposing raw sync errors in alerts
- 41d74c2 refactor(desktop): centralize translation fallbacks in components
- 6ba87a7 fix(mobile): localize tag input placeholders
- be6553b feat(desktop): add undo toast action for task delete
- a3c16aa fix(desktop): confirm task deletion before soft delete
- 44357b7 fix(desktop): stage attachment sync mutations on a working copy
- 2dc050e fix(mcp): reuse sqlite connection across tool calls
- 53effad fix(cloud): strengthen app data payload validation
- 5dbd482 fix(cloud): support enforceable bearer token allowlist
- 336eb7b fix(mobile): default sync backend to off
- 224795c fix(mobile): abort in-flight sync when network drops
- 369632d fix(sync): merge settings groups per field
- 4dc0f46 fix(sync): flag content divergence when revisions tie
- a3cf58d fix(sync): preserve updatedAt during timestamp normalization
- 900de83 fix(sync): surface queued sync failures
- de12e63 fix(cloud): apply dedicated rate limits to attachment endpoints
- 7a37a94 fix(desktop): capture sync snapshot after pending flush
- 22887ba fix(desktop): add retry and timeout for cloud attachment uploads
- 581ecdc fix(core): retain pending snapshot after save failures
- e4e5acc fix(core): ignore invalid deletedAt operation times
- 3f31112 fix(desktop): clear external sync timer on watcher stop
- 7a1f047 fix(cloud): harden attachment path resolution
- 294114f fix(mobile): abort sync when local data changes
- 83c29c0 fix(core): persist rev metadata in sqlite
- ca3a64a fix(mobile): suppress sync errors when offline or in airplane mode
- 9e253ea fix(macos): use help menu id without extra reference
- a687faf fix(desktop): add actionable macOS Help menu items
- 7794f7e fix(foss): keep unsigned apk prep stable
- cb30cb8 fix(ci): sign foss apk with release keystore
- f04569a fix(mobile): parse Play Store version from AF_initData payload
- 4f73106 fix(mobile): align Metro doctor config
- 5ed78a8 fix(mobile): harden update checks for Play and FOSS builds
- 53dbc4f fix(desktop): harden Windows notifications and weekly review reminders
- 841e3d1 fix(mobile): remove bottom tab active underline