• v0.4.0 251adaf7f3

    v0.4.0 Stable

    fpindado released this 2026-07-29 17:30:46 +02:00 | 29 commits to main since this release

    v0.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 (key sync-md-multi-config), device-local by construction. It is no longer persisted through persistDataSynced, which SP synced across devices — the path that could delete tasks against a stale file-synced .md on another device.
    • The config panel (iframe) now talks to the background over a postMessage bridge (getConfig/saveConfig/getProjects); the background is the single writer. The persistedDataChanged hook and the 5 s config poll are gone.
    • A one-time startup migration seeds localStorage from 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 .md edit

    handleSpChange now 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 executeNodeScript guards.
    • 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.js byte-identical internal↔public).

    Downloads