Skip to content

v1.2.7

Latest

Choose a tag to compare

@github-actions github-actions released this 03 Sep 07:57
· 6 commits to main since this release

Mindwtr 1.2.7

Highlights

  • Android builds now support 16 KB memory pages, restoring Google Play release compatibility on current Android devices.
  • Background sync is configurable on phones and now completes reliably when Android starts, suspends, or resumes the app.
  • WebDAV, Dropbox, File Sync, and self-hosted sync do less work when nothing changed while retaining conditional-write and encryption safeguards.
  • Mobile WebDAV sync no longer mistakes its reservation file for data.json, and sync setup recovers cleanly from already-missing attachments.
  • Attachment transfer and recovery are more reliable across Android storage layouts, WebDAV servers without strong ETags, Dropbox, and self-hosted sync.
  • Projects gain their own start date; desktop Timeline shows project spans, and project/task menus make organization and deletion easier.
  • Calendar, reminder, sync-status, Dropbox sign-in, encryption-unlock, diagnostics, and localization fixes make everyday behavior clearer and more dependable.
Full change list (grouped by area)

Sync, Encryption & Performance

  • Saving or selecting a complete sync backend now runs verification and activates it immediately on desktop and mobile. The settings screen keeps the last saved backend visible while work is in progress instead of briefly showing Off or stale fields.
  • Desktop verification waits for an active cycle and retries when a concurrent local edit changes the candidate data, instead of abandoning a backend switch.
  • Mobile WebDAV now resolves the remote mutation-fence artifact correctly. In 1.2.6 it could read, reject, or overwrite data.json as the fence on servers that ignored conditional writes.
  • WebDAV and Dropbox local-only syncs skip the initial remote download when the recorded strong version still matches, then use a conditional write and fall back to a full cycle if another device won the race.
  • Local-only uploads no longer reshape an already-normalized library. On a 7,000-task desktop library this removes roughly 78–115 ms from each affected cycle.
  • Idle and no-op cycles reuse snapshots, compare fingerprints, skip redundant database writes, normalization, attachment reconciliation, store refreshes, and remote reservations.
  • Sync reservations now start only when a remote mutation is needed. A device renews an active reservation and peers can safely reclaim one that has stopped renewing, reducing a dead-device stall from five minutes to about one.
  • Scheduled background sync can be set per phone to Off, 15 minutes, one hour, or six hours for WebDAV, Dropbox, iCloud, and self-hosted sync. Foreground and edit-triggered sync are unchanged.
  • Android background jobs now finish network replies without suspended JavaScript timers, abandon genuinely stuck work at a bounded deadline, keep the worker that woke the app, and retain an in-progress worker when the app opens.
  • A request interrupted while Android freezes the app is treated as a dropped connection and retried instead of surfacing a misleading hour-late timeout.
  • Android automatic sync backs off according to the previous cycle's cost, and idle reminder, widget, and calendar refresh work is reduced for better battery use on large libraries.
  • A new device reads a sync location before uploading attachments, preventing plaintext attachment uploads beside an encrypted document.
  • Encryption locks are scoped to the location that produced them. Switching to a plain or empty location, or unlocking after encrypted data was removed, clears stale state safely.
  • WebDAV without a usable strong ETag can use the established plaintext compatibility write when encryption is off. Encrypted sync continues to fail closed.
  • Debug logs and Diagnostics now provide a redacted, structured encryption trail, sync interruption reasons, activation proof, current status publication, reservation activity, and release-specific verification markers without logging secrets.
  • “Last sync,” conflict count, and sync history now update after every completed mobile cycle, even when no other settings state changed.
  • Wrong-passphrase messages now appear beside the mobile passphrase field instead of below the bottom of the screen.

Attachments & Data Safety

  • Android attachment installation falls back from a refused hard link to an exclusive copy with the same no-replace and durability guarantees, fixing setup failures on affected storage layouts. The app log positively records a successful fallback for field verification.
  • Android attachment uploads now include the option required by the native file-system module, fixing rejected uploads and attachment-proof failures.
  • Missing referenced attachments no longer prevent a fresh device or restored desktop from activating a valid sync location; locally or remotely available copies are still verified before activation.
  • Attachment presence checks run once per day per sync location, or immediately for new, missing, failed, or relocated files. Idle cycles no longer issue one request per attachment.
  • Dropbox and self-hosted sync can restore an attachment deleted from the server when another device still has it. The self-hosted attachment endpoint now supports HEAD checks.
  • Desktop WebDAV can remove remote attachment files from servers without strong ETags and no longer repeats an undeletable cleanup failure forever.
  • Desktop attachment cleanup logs include a sanitized error and treat an already-absent local file as success. WebDAV presence checks no longer fill logs with harmless stream-close errors.
  • Mobile explains when a linked desktop file belongs to another device or cannot be opened, instead of silently doing nothing.

Projects, Tasks & Planning

  • Projects can carry an optional start date next to their due date on desktop and mobile.
  • Existing desktop databases are upgraded before any sync backend writes project start dates, preventing older installations from failing with a missing projects.startDate column.
  • Desktop Timeline draws a project span above its tasks, derives a useful boundary when only one project date is set, and opens the project when its label is selected.
  • Mobile project actions add Delete beside Duplicate and Archive, using the existing confirmation and leaving the project's tasks safely unassigned in Trash.
  • Desktop task row menus add Project… so a task can be assigned, moved, or removed from a project without opening the editor; removing it also clears its section.

Calendar, Capture & Notifications

  • Android device-calendar all-day events use calendar-date boundaries, fixing events that appeared one day too long or shifted across days by the local time zone.
  • Android loads device-calendar events that overlap the visible range, including multi-day events crossing a week or month boundary.
  • Repeated fixed capture links such as mindwtr://capture open the capture sheet every time in the same app session.
  • Android 12 and later now warn when exact-alarm permission is unavailable and provide an Allow action from Notification and Pomodoro settings; alarms are rebuilt after permission is granted.

Desktop & Platform Reliability

  • Dropbox sign-in hands browser and external-link launches off without waiting for the handler process to exit, and ignores stale callback state while continuing to wait for the current authorization.
  • Windows Store diagnostics show the actual package-redirection path where the log exists.
  • The macOS direct-download package is assembled from the finished app and the release checks that its widget is present, fixing the missing widget in the 1.2.6 DMG.
  • Release APKs and bundles now fail CI if any 64-bit native library lacks 16 KB page alignment.

Settings & Localization

  • Sync settings link directly to the encryption guide on desktop and mobile.
  • Settings search no longer offers the desktop-only Timeline feature on phones.
  • German text received broad spelling and wording improvements, including dynamic Focus-limit text and consistent review terminology.