-
v0.2.1 Stable
released this
2026-07-08 16:48:50 +02:00 | 3 commits to main since this releasesync.md Multi v0.2.1
Builds on the v0.2.0 stable release with the two remaining plugin features.
New
@done(YYYY-MM-DD HH:mm)annotation. Completing a task writes a local-time@donestamp to its Markdown line (from SP's completion time); reopening removes it. Active tasks stay tag-less. Idempotent across syncs. On read, the parser keeps the SP title clean (strips@done/@todo/@doing) and accepts@done,@done(date)and@done(date time). An imported@done(date)is preserved on round-trips.- Opt-in
.mdcleanup when deleting a binding. The delete confirmation now offers Delete binding (leave the file) or Delete + clean file (also strip the hidden<!--…-->sync markers so the file is left neutral), plus Cancel.
Fixed
- No-ID task lines carrying a status tag now match their SP task correctly (no duplicate task appended).
- An existing
@done(date)in the file is no longer collapsed/lost on write-back.
Verified on SP v18.13.1 (macOS M2). 328 tests passing.
Downloads
-
Source code (ZIP)
2 downloads
-
Source code (TAR.GZ)
1 download
-
released this
2026-07-07 11:08:07 +02:00 | 14 commits to main since this releasesync.md Multi v0.2.0 — first stable release
A Super Productivity plugin that syncs multiple SP projects with independent Markdown files, bidirectionally. An extended version of Johannes Millan's
sync.md(single-project); coexists with the original.Highlights
- Multi-project, bidirectional sync — each SP project bound to its own
.mdfile; one independent watcher/session per binding. - In-place, byte-preserving write-back — SP→MD only touches checkbox lines; section headers, notes and blank lines are kept verbatim (tabs/spaces indentation preserved).
@todo/@doing/@donestatus tags, parent–child subtasks, task-move-between-projects detection.- Missing-resource handling — if a binding's
.mdfile or its SP project goes missing, a dialog lets you Recreate / Delete binding / Ignore, so a binding never runs broken (a deleted project never wipes your.md). - Config panel — per-binding last-synced time, smooth scroll + flash when editing, theme-independent buttons; inline file browser.
- Robust lifecycle —
onReadygate,onUnloadteardown (no zombie timers on reinstall), serialized config writes.
Compatibility
- Verified on Super Productivity 18.13.1 (macOS, Apple Silicon) and ≤ 18.9.1. Avoid 18.10.0–18.12.x (those block
nodeExecutionfor external plugins). On 18.13.1 you'll get a one-time consent dialog — click Allow. - Desktop only (needs file access).
Install
Super Productivity → Settings → Plugins → Install Plugin from ZIP → select
sync-md-multi-v0.2.0.zip.304 tests passing.
Downloads
-
Source code (ZIP)
3 downloads
-
Source code (TAR.GZ)
1 download
- Multi-project, bidirectional sync — each SP project bound to its own
-
v0.1.5 Stable
released this
2026-07-07 10:58:22 +02:00 | 16 commits to main since this releasesync.md Multi v0.1.5
Builds on v0.1.4's missing-resource handling (dialogs when a binding's
.mdfile or SP project goes missing) +onUnloadteardown.New
- Ignore button in the deleted-project dialog — dismiss and fix it yourself (create a project and re-point the binding in the config panel); it re-prompts on the next sync if still missing.
- Config panel — last-synced time shown per binding ("just now" / "N min ago" / date+time, or "Never synced").
Improved (config panel)
- Editing a binding now smooth-scrolls the form into view and flashes it, so it's obvious where the change happens.
- Fixed blue button scheme, independent of the active SP project/theme color (Delete stays red; file-browser buttons stay neutral).
Verified on SP v18.13.1 (macOS M2). 304 tests passing.
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
-
v0.1.4 Stable
released this
2026-07-07 09:15:34 +02:00 | 21 commits to main since this releasesync.md Multi v0.1.4
Missing-resource handling + robustness on SP 18.13.1.
New
- Missing
.mdfile dialog: when a sync finds a binding's Markdown file gone, you are prompted (Recreate from SP / Delete binding / Ignore) instead of silently recreating or erroring. A new binding still creates its file silently. - Deleted SP project dialog: when a bound project no longer exists, you are prompted to Recreate it in SP (under its original name) or Delete the binding. The
.mdis never touched, and a deleted project can never wipe it. lastSyncedAttracked per binding; last-known project title captured for the dialog and recreation.
Fixed
onUnloadteardown: reinstalling/reloading the plugin no longer leaves zombie timers (config poll + file watchers) running — the cause of runaway duplicate projects.- Recreate flow hardened: stale task-id stripping on reimport, serialized config writes, per-binding dialog guard + cooldown, and waiting for a recreated project to be visible before importing.
Verified on SP v18.13.1 (macOS M2). 304 tests passing.
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
3 downloads
- Missing
-
v0.1.3 Stable
released this
2026-07-06 10:45:28 +02:00 | 30 commits to main since this releaseRelease v0.1.3 — Super Productivity 18.13.1 support.
Highlights
- Works on SP ≥ 18.13.1 again. SP re-opened
nodeExecutionfor externally-loaded plugins behind a one-time native consent dialog (SP PR #8576/#8600/#8708). The plugin is no longer limited to 18.9.1D — install the ZIP, click Allow once on first launch, and file read/write/sync work. - Fix (#18): startup initial-sync race on 18.13.1. With multiple bindings, the last binding failed on startup with a recoverable "Initial sync failed" snack. Initial syncs now run sequentially (one binding at a time) and the plugin waits for
plugin.onReady()before starting. Verified on macOS M2.
Install via Super Productivity → Plugins → Install from ZIP.
Downloads
-
Source code (ZIP)
3 downloads
-
Source code (TAR.GZ)
5 downloads
- Works on SP ≥ 18.13.1 again. SP re-opened
-
v0.1.2 Stable
released this
2026-06-22 18:07:29 +02:00 | 63 commits to main since this releaseRelease v0.1.2.
Fixes
- SP subtasks were written to the Markdown file as a flat, unindented list when added under a parent already present in the file. They are now inserted indented directly under their parent, reusing the file's actual indent unit (tab or spaces). (Forgejo #12)
Improvements
- Config panel footer now shows the plugin version and a link to the Git repository (version injected at build time from the manifest).
- Removed verbose debug logging that flooded the dev console (kept error/warning logs and meaningful events).
- Stabilized a flaky memory benchmark test.
Also confirmed fixed
- Moving a task between projects is detected and synced to both files (Forgejo #11; mechanism from the earlier task-move fix, verified on SP 18.9.1D).
All Forgejo issues (#11–#14) are now closed. Tests: 278/278.
Install via Super Productivity → Plugins → Install from ZIP.
Downloads
-
Source code (ZIP)
2 downloads
-
Source code (TAR.GZ)
2 downloads
-
v0.1.1 Pre-release
released this
2026-06-22 16:13:37 +02:00 | 66 commits to main since this releasePre-release of sync.md Multi v0.1.1.
Fixes
- Bug #29: creating/editing a binding now triggers sync without an app restart on macOS. Root cause was the plugin-data hook being registered as
persistedDataUpdate; SP 18.9.1D's valid name ispersistedDataChanged, so the hook never fired. Renamed in background, iframe and manifest, and reordered startup so the hook + 5s poll are wired up before the non-critical project-cache refresh.
Changes
- Header/menu icon changed to
arrows_up_down_circle. - Documentation corrected: SP 18.9.1D already uses
persistedDataChangedandnodeExecutionworks.
Note: marked as pre-release — post-beta features (deleted-project warning,
@completedannotation) are still pending for the final 0.1.1/0.1.x line.Install via Super Productivity → Plugins → Install from ZIP.
Downloads
-
Source code (ZIP)
2 downloads
-
Source code (TAR.GZ)
3 downloads
- Bug #29: creating/editing a binding now triggers sync without an app restart on macOS. Root cause was the plugin-data hook being registered as
-
v0.1.0 Pre-release
released this
2026-06-22 15:33:34 +02:00 | 68 commits to main since this releaseFirst tagged release of sync.md Multi.
Highlights since v0.0.6
- Fix: the "Sync Now" header button now renders on macOS (registration-timing race; #14).
- Change: header/menu icon switched from
synctodifferenceso it no longer looks identical to SP's native sync icon.
Known issue: creating a new binding on macOS may not trigger the initial sync until an app restart. A fix is in progress for v0.1.1.
Install via Super Productivity → Plugins → Install from ZIP.
Downloads
-
Source code (ZIP)
4 downloads
-
Source code (TAR.GZ)
3 downloads
-
v0.0.7 Pre-release
released this
2026-05-29 16:07:30 +02:00 | 75 commits to main since this releaseRelease v0.0.7 of sync-md-multi
v0.0.7 — Empty file safety fix, drag & drop removal & background cleanup
Bug fixes
- Linking an existing empty file no longer deletes SP tasks. Previously, if a binding was created pointing to a file that existed but contained no task lines (empty file, whitespace only, or Markdown content without checkboxes), the initial sync would treat it as "file with zero tasks" and delete everything from SP. The file is now treated the same as a non-existent file: SP tasks are written to it. Only files that contain at least one checkbox line (
- [ ]/- [x]) are treated as the source of truth on initial sync.
Removed
- Drag & drop has been removed from the UI. After instrumenting the plugin with diagnostic logging, it was confirmed that SP captures drag events at the Electron window level before they reach the sandboxed plugin iframe —
dragenter,dragoveranddropnever fire in the plugin's JavaScript context. The feature cannot be implemented from within the plugin. The hint text on the file path field has been updated to point users to the Browse… button instead.
Internal improvements
checkForConfigChanges()no longer callsrefreshProjectsCache()after a binding change — SP's project list is unaffected by binding operations, and the UI dropdown re-filters directly from the in-memory config.- Removed the 60-second periodic project cache refresh interval — redundant now that the UI calls
getAllProjects()directly from the iframe on every panel open.
Downloads
-
Source code (ZIP)
2 downloads
-
Source code (TAR.GZ)
4 downloads
- Linking an existing empty file no longer deletes SP tasks. Previously, if a binding was created pointing to a file that existed but contained no task lines (empty file, whitespace only, or Markdown content without checkboxes), the initial sync would treat it as "file with zero tasks" and delete everything from SP. The file is now treated the same as a non-existent file: SP tasks are written to it. Only files that contain at least one checkbox line (
-
v0.0.6 Pre-release
released this
2026-05-28 15:56:13 +02:00 | 78 commits to main since this releaseRelease v0.0.6 of sync-md-multi
v0.0.6 — Binding lifecycle fixes & project dropdown improvements
Bug fixes
- Creating a binding no longer requires an app restart. The background now detects config changes reliably: a 200 ms delay was added to the
persistedDataUpdatehandler to avoid a race condition where the hook fired before SP had committed the new data to storage. A 5-second polling interval was also added as a fallback, so any change the hook may have missed is picked up within seconds. - Deleting a binding stops sync immediately, without requiring a restart.
- Newly created SP projects now appear in the binding dropdown without restarting the app. The project list is loaded directly from
PluginAPI.getAllProjects()on every panel open (same approach as the originalsync.mdplugin), with automatic retries if SP hasn't finished loading the project state into the iframe yet. A background 60-second refresh and apersistedDataUpdatelistener in the iframe provide additional layers of freshness.
Improvements
- The project dropdown only shows projects that don't already have a binding, making it impossible to accidentally assign two bindings to the same project.
- Edit mode is handled correctly: when editing an existing binding, its project is included in the dropdown even though it's already bound.
- A ↺ Refresh button was added next to the project dropdown for an immediate manual refresh of the project list.
Known limitation
Drag & drop of
.mdfiles onto the file path field is not yet supported — SP intercepts drag events before they reach the plugin iframe. Use the Browse… button as the alternative.Downloads
-
Source code (ZIP)
2 downloads
-
Source code (TAR.GZ)
4 downloads
- Creating a binding no longer requires an app restart. The background now detects config changes reliably: a 200 ms delay was added to the