Mindwtr 0.9.1
Highlights
- Sync is safer under contention with serialized sync cycles, capped revision increments, better tombstone conflict handling, clearer delete-vs-live history details, and stronger cleartext endpoint protection.
- Mobile capture and planning are smoother with duplicate-save protection in quick capture, an actionable Inbox empty state, tips discovery for capture paths and gestures, and project task reordering.
- Desktop control surfaces are steadier with a launch-at-startup setting, clearer sync status and cleartext warnings, guarded global quick-add open requests, project delete undo, and fixed board tag layout.
- Calendar and Focus behavior is more predictable with mobile calendar swipe and density fixes, future-start task deferral, and shared composer time helpers.
- Performance and maintainability improved through ID-based task mutations, stable sync signature caching, split desktop list selectors, explicit core exports, and new regression coverage.
Sync, Cloud & Security
- Serialized concurrent sync cycles so scheduled and manual sync cannot interleave read, merge, and write windows.
- Capped sync revision increments at the safe 32-bit ceiling and added warnings near the cap.
- Used tombstone
updatedAtvalues during conflict handling and surfaced delete-vs-live conflict details in sync history. - Blocked public cleartext HTTP sync endpoints while still allowing local and private HTTP sync targets.
- Hardened Mindwtr Cloud attachment path creation against symlink traversal races.
- Kept local WebDAV HTTP sync working where private or local endpoints are intentionally used.
Mobile Capture, Projects & Calendar
- Added an actionable Inbox empty state and tips discovery for capture paths, gestures, and app shortcuts.
- Added task reordering inside mobile project detail views.
- Guarded quick capture against duplicate rapid saves and replaced the remount workaround with explicit open-request state.
- Improved mobile calendar swipe behavior, density controls, and follow-up regressions.
- Localized sync activity copy and removed duplicate sync status overlays.
- Removed noisy Android bundle warnings and aligned Expo SDK package patch versions.
Desktop Experience
- Added a launch-at-startup setting.
- Labeled sync status visibly and aggregated cleartext sync warnings into a single banner.
- Guarded global quick add against duplicate open requests.
- Added undo for project deletion and fixed board tag overlap.
- Split desktop ListView store selectors so data, settings, and actions subscribe independently.
Core, Docs & Tests
- Patched hot task-store mutations by ID instead of rebuilding full task arrays for single-task updates.
- Kept batch task lookup maps aligned during batch updates, deletes, and trash purges.
- Added validated sync signature caching by stable revision.
- Shared the serialized async queue helper and calendar composer time helpers through core.
- Replaced core root wildcard exports with explicit named exports.
- Added Caddy HTTPS compose docs, sync conflict recovery docs, Android calendar-sharing notes, llama.cpp endpoint guidance, project reorder gesture docs, and ADRs for sync revision caps and serialized sync cycles.
- Consolidated overlapping deployment and GTD wiki pages.
- Added browser contrast coverage, quick-capture lifecycle coverage, modal accessibility coverage, and regression tests for task lookup alignment and duplicate quick-capture saves.
Full Change List (since v0.9.0)
- fix(mobile): align expo sdk packages
- docs: clean up v0.9.1 review notes
- fix(desktop): aggregate cleartext warnings
- fix(mobile): guard quick capture saves
- fix(core): align batch task lookups
- fix(mobile): remove android bundle warnings
- docs(changelog): update v0.9.1 unreleased notes
- fix(sync): surface delete-live history details
- refactor(core): make root exports explicit
- refactor(calendar): share composer time helpers
- docs(wiki): consolidate deployment and gtd guides
- test(mobile): cover quick capture modal accessibility
- feat(mobile): add capture path and tips discovery
- fix(mobile): reset quick capture by open request
- fix(desktop): guard quick add open requests
- refactor(core): share serialized async queue
- docs(sync): document conflict recovery
- fix(mobile): localize sync activity copy
- fix(projects): add undo for project delete
- test(desktop): add browser contrast check
- fix(desktop): label sync status visibly
- perf(desktop): split list store selectors
- perf(sync): cache signatures by stable revision
- perf(store): patch task mutations by id
- fix(desktop): warn on cleartext sync
- fix(sync): block public cleartext endpoints
- fix(cloud): harden attachment path creation
- fix(sync): serialize sync cycles
- fix(sync): cap revision increments
- fix(sync): use tombstone update time for conflicts
- fix(sync): allow local http sync targets
- docs(docker): add caddy https compose
- fix(mobile): remove duplicate sync status overlay
- fix(mobile): satisfy tab layout test typing
- fix(focus): keep future-start tasks deferred
- fix(mobile): repair calendar follow-up regressions
- fix(mobile): improve calendar swipe and density controls
- fix(mobile): remount quick capture sheet
- fix(desktop): prevent board tag overlap
- fix(android): allow local WebDAV HTTP sync
- docs(calendar): clarify Google Calendar Android sharing
- fix(desktop): prevent duplicate quick add modals
- docs(ai): clarify llama.cpp endpoint support
- docs(mobile): document project reorder gestures
- feat(mobile): add project task reordering
- fix(focus): ignore non-focus tasks for sequential availability
- feat(desktop): add launch at startup setting
- refactor(mobile): extract InboxSuggestionList to eliminate duplicate chip UI ...