-
v0.4.0 Stable
released this
2026-07-29 17:30:46 +02:00 | 29 commits to main since this releasev0.4.0 — device-local config + SP→MD write-back guard
Clears both remaining blockers from the third community-plugins review (super-productivity#9323); the listing was approved in principle.
Blocker 1 — configuration is now device-local
- The whole config moves to the background context's own
localStorage(keysync-md-multi-config), device-local by construction. It is no longer persisted throughpersistDataSynced, which SP synced across devices — the path that could delete tasks against a stale file-synced.mdon another device. - The config panel (iframe) now talks to the background over a
postMessagebridge (getConfig/saveConfig/getProjects); the background is the single writer. ThepersistedDataChangedhook and the 5 s config poll are gone. - A one-time startup migration seeds
localStoragefrom any pre-0.4.0 synced blob and then clears it (idempotent; kept for several releases).
Blocker 2 (Bug #44) — automatic SP→MD path no longer clobbers a fresh
.mdedithandleSpChangenow applies the same content-fingerprint guard as Sync Now: it bails while an import is pending and imports MD→SP first when the file has an unsynced edit (aborting on a parse error) before writing SP→MD.Minor fixes
- Bug #45: Recreate project now honors
mdToSp's parse-error result. - Bug #46: the
action-hook filter uses a normalized known-set match (fixes the "remove"/"move" over-match and the latent remote-apply hazard). - Removed dead
executeNodeScriptguards. - README EN/ES Sync Now direction / simultaneous-editing notes corrected.
Verified in vivo on SP (macOS): device-local config load/save, migration (
loadSyncedData()→null), bridge. 384/384 tests, tsc clean. Reproducible build (dist/plugin.jsbyte-identical internal↔public).Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
- The whole config moves to the background context's own