-
released this
2026-09-17 10:34:39 +02:00 | 6 commits to main since this releaseCosmetic follow-up to v0.4.5.
When a synced Super Productivity project is deleted, the plugin shows a short heads-up and then opens the Recreate / Delete / Ignore dialog. That heads-up was styled as an error; it is now an informational notice — deleting a project is something you did on purpose, and the choice itself is made in the dialog that follows.
No change to how synchronisation, detection or the dialog behave.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
v0.4.5 Stable
released this
2026-09-17 08:59:20 +02:00 | 8 commits to main since this releaseFixes
Bug #48 — the "SP project deleted" dialog now appears on its own. Previously it only showed up after a manual Sync Now. A project deletion reaches the plugin through exactly one channel — the generic
actionhook's[Task Shared] deleteProject— so that action is now matched ahead of the structural-task filter and routed straight to the project-existence check. Because Super Productivity dismisses a modal opened while it navigates away from the deleted project, the plugin first shows a short snack (project "<title>" was deleted — opening options…) and opens the dialog 2 s later, once the UI has settled. Verified in vivo on SP 18.16 (macOS).Bug #49 — importing a
.mdwith foreign sync markers no longer drops subtasks. Binding a copied Markdown file, or one whose project had been recreated, to a new or empty project imported only the root tasks: every subtask silently disappeared, because a subtask referenced its parent by an id that does not exist in the target project. Subtasks are now linked to the parent being created alongside them.Improvements
"Delete + clean file" in the deleted-project dialog. When the Markdown file survives, the dialog now offers to remove the binding and strip the hidden
<!--taskId-->markers, leaving the file neutral — the same option the config panel already had for deleting a binding.Documentation
The READMEs (EN/ES) now document that Markdown nesting maps two levels only, matching Super Productivity's single level of subtasks: deeper task lines degrade to notes on the nearest subtask rather than becoming tasks of their own.
423/423 tests across 48 suites,
tscclean.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
v0.4.2 Stable
released this
2026-09-15 19:01:35 +02:00 | 12 commits to main since this releasesync.md Multi v0.4.2
Fixed — Bug #47: parent/child changes in SP now sync to the Markdown file
Changing a task's nesting in Super Productivity is now correctly written to the
.mdfile and no longer reverted on the next sync. This covers, in both directions and via the menu or drag-and-drop:- Promoting a subtask to a top-level task (moved out of its parent's group).
- Demoting a top-level task into another task's subtask group (now also auto-syncs).
- Reordering subtasks within a group — the new order is written to the file.
- Relocated subtasks land at the drop position within the target group, and their notes and
@done(date time)annotation travel with them.
Known limitation
Top-level (root) ordering is not reflected: a promoted task is appended at the end of the file, and reordering root tasks among themselves is not written back. This is stable (converges in one sync) and planned for a later release.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v0.4.1 Stable
released this
2026-09-11 12:41:25 +02:00 | 19 commits to main since this releasev0.4.1 — Improvement C1
Improvement C1 — conditional blank separator when appending new tasks.
The SP→MD write-back no longer inserts a spurious blank line when new tasks
are appended to a file that already ends in a task line; the list stays
compact. A trailing note / section header / free-form text still gets the
separator. Cosmetic, low-risk (mergeSpIntoExistingFile,sp-to-md.ts).Also carries a small Troubleshooting doc wording fix (H2) already applied
to the READMEs.387/387 tests, tsc clean. Verified in SP (macOS).
Install: Super Productivity → Settings → Plugins → Install Plugin from ZIP.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
Source code (ZIP)
-
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
-
v0.3.3 Stable
released this
2026-07-28 16:37:06 +02:00 | 32 commits to main since this releaseSelf-update notifier now checks on every app startup (plus a 24 h interval while the app stays open), instead of being throttled by a persisted 24 h timestamp.
Previously the notifier persisted
_lastUpdateCheckand skipped the startup check when less than 24 h had elapsed, so a plugin updated between launches kept reporting a stale "latest" version until the window expired. NowmaybeCheckForUpdatealways hits the Codeberg release feed on startup;_lastUpdateCheckis informational only.- 374/374 tests, tsc clean.
- No behavior change to sync itself.
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
-
v0.3.2 Stable
released this
2026-07-28 16:16:05 +02:00 | 35 commits to main since this releasesync.md Multi v0.3.2 — self-update notifier
The plugin now checks once a day whether a newer release is available on Codeberg and, if so, surfaces it in three ways:
- a notification (snack) when Super Productivity starts (once per launch),
- an upgrade button in the header that opens the release page,
- an "update available" marker in the config-panel footer.
Installing an update stays a manual ZIP install (SP has no self-reinstall API).
Also: the config-panel repository link now points to Codeberg. Robustness: a failed check (e.g. before the
nodeExecutionconsent is granted) does not consume the daily throttle, so it retries on the next start.Verified on SP 18.16 (macOS). 374 tests, tsc clean.
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
-
v0.3.1 Stable
released this
2026-07-28 13:12:02 +02:00 | 37 commits to main since this releaseFixes points 2-4 of the super-productivity#9323 second review:
- Abort import on parse errors — a half-typed line no longer lets reconciliation delete a real SP task, and the SP→MD write-back no longer rewrites the old title back into the file.
- Canonicalize file targets — two bindings that resolve to the same file (via ./ .. // aliases) are rejected, closing a two-sessions-on-one-file corruption path.
- Content fingerprint instead of mtime — Sync Now picks its direction from a content hash, so an edit with an equal/older timestamp is no longer overwritten.
Also: adding a subtask now auto-syncs (
[Task] Add SubTasknever reached the task hooks; handled via a filteredactionhook).Verified on SP 18.16.0D (macOS, Apple Silicon). 363 tests, tsc clean.
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
-
v0.3.0 Stable
released this
2026-07-27 16:05:02 +02:00 | 44 commits to main since this releaseFix release addressing the review of the community-plugins listing PR (super-productivity#9323).
Fixes
- Config UI — HTML injection (XSS/RCE) fixed. Project titles and file paths shown in the config panel were being inserted via
innerHTML. They are now built withtextContent+addEventListener, so no dynamic value is ever parsed as markup. Added a UI regression test that feeds HTML-shaped names and asserts nothing executes. - Sync Now no longer overwrites a just-made Markdown edit. Sync Now now imports Markdown → SP first whenever the file changed since the last sync (so a fresh edit is never clobbered), then writes SP → Markdown back. If the file is unchanged, it writes back first as before. Regression test added.
- Deleting a parent no longer removes a promoted child. When a parent task was removed from Markdown and its child un-indented to root, the parent's delete and the child's re-parenting were sent in the same batch, and SP's reducer cascaded the delete onto the child. Deletes now run in a separate batch, after the re-parenting update commits. Regression test models the cascading reducer.
Notes
- Also: on import, a task's note now ends at the first blank line (prose after a blank line is loose document content, not part of the note).
- Verified on SP 18.13.1–18.15 (macOS).
tscclean, 336/336 tests.
Install: Super Productivity → Settings → Plugins → Install Plugin from ZIP →
sync-md-multi-v0.3.0.zip.Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
- Config UI — HTML injection (XSS/RCE) fixed. Project titles and file paths shown in the config panel were being inserted via
-
v0.2.2 Stable
released this
2026-07-24 17:14:26 +02:00 | 55 commits to main since this releaseMaintenance release.
- New subtasks written to Markdown now default to 4-space indentation when the file has no existing indent unit to match (previously 2 spaces).
- Repository/author metadata updated; the plugin is now also published publicly on Codeberg.
Verified on SuperProductivity 18.13.1–18.15 (macOS). 328/328 tests, tsc clean.
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download