• v0.4.6 e43dd6204d

    fpindado released this 2026-09-17 10:34:39 +02:00 | 6 commits to main since this release

    Cosmetic 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
  • v0.4.5 cb073da6cd

    v0.4.5 Stable

    fpindado released this 2026-09-17 08:59:20 +02:00 | 8 commits to main since this release

    Fixes

    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 action hook'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 .md with 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, tsc clean.

    Downloads
  • v0.4.2 57ad8f1bdc

    v0.4.2 Stable

    fpindado released this 2026-09-15 19:01:35 +02:00 | 12 commits to main since this release

    sync.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 .md file 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
  • v0.4.1 3fac55bd38

    v0.4.1 Stable

    fpindado released this 2026-09-11 12:41:25 +02:00 | 19 commits to main since this release

    v0.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
  • 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
  • v0.3.3 aae61b113e

    v0.3.3 Stable

    fpindado released this 2026-07-28 16:37:06 +02:00 | 32 commits to main since this release

    Self-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 _lastUpdateCheck and 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. Now maybeCheckForUpdate always hits the Codeberg release feed on startup; _lastUpdateCheck is informational only.

    • 374/374 tests, tsc clean.
    • No behavior change to sync itself.
    Downloads
  • v0.3.2 bc05b0c443

    v0.3.2 Stable

    fpindado released this 2026-07-28 16:16:05 +02:00 | 35 commits to main since this release

    sync.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 nodeExecution consent 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
  • v0.3.1 fbf9e64c5d

    v0.3.1 Stable

    fpindado released this 2026-07-28 13:12:02 +02:00 | 37 commits to main since this release

    Fixes 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 SubTask never reached the task hooks; handled via a filtered action hook).

    Verified on SP 18.16.0D (macOS, Apple Silicon). 363 tests, tsc clean.

    Downloads
  • v0.3.0 d9b36a4af7

    v0.3.0 Stable

    fpindado released this 2026-07-27 16:05:02 +02:00 | 44 commits to main since this release

    Fix 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 with textContent + 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). tsc clean, 336/336 tests.

    Install: Super Productivity → Settings → Plugins → Install Plugin from ZIP → sync-md-multi-v0.3.0.zip.

    Downloads
  • v0.2.2 470d60c618

    v0.2.2 Stable

    fpindado released this 2026-07-24 17:14:26 +02:00 | 55 commits to main since this release

    Maintenance 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