• v0.2.1 2ba3b4855e

    v0.2.1 Stable

    fpindado released this 2026-07-08 16:48:50 +02:00 | 3 commits to main since this release

    sync.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 @done stamp 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 .md cleanup 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
  • v0.2.0 5e62cc8a1e

    fpindado released this 2026-07-07 11:08:07 +02:00 | 14 commits to main since this release

    sync.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 .md file; 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 / @done status tags, parent–child subtasks, task-move-between-projects detection.
    • Missing-resource handling — if a binding's .md file 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 lifecycleonReady gate, onUnload teardown (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 nodeExecution for 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
  • v0.1.5 2bae6a5e34

    v0.1.5 Stable

    fpindado released this 2026-07-07 10:58:22 +02:00 | 16 commits to main since this release

    sync.md Multi v0.1.5

    Builds on v0.1.4's missing-resource handling (dialogs when a binding's .md file or SP project goes missing) + onUnload teardown.

    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
  • v0.1.4 827d753893

    v0.1.4 Stable

    fpindado released this 2026-07-07 09:15:34 +02:00 | 21 commits to main since this release

    sync.md Multi v0.1.4

    Missing-resource handling + robustness on SP 18.13.1.

    New

    • Missing .md file 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 .md is never touched, and a deleted project can never wipe it.
    • lastSyncedAt tracked per binding; last-known project title captured for the dialog and recreation.

    Fixed

    • onUnload teardown: 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
  • v0.1.3 a683b4ea31

    v0.1.3 Stable

    fpindado released this 2026-07-06 10:45:28 +02:00 | 30 commits to main since this release

    Release v0.1.3 — Super Productivity 18.13.1 support.

    Highlights

    • Works on SP ≥ 18.13.1 again. SP re-opened nodeExecution for 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
  • v0.1.2 ff63d1de94

    v0.1.2 Stable

    fpindado released this 2026-06-22 18:07:29 +02:00 | 63 commits to main since this release

    Release 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
  • v0.1.1 1cc22ae436

    v0.1.1 Pre-release

    fpindado released this 2026-06-22 16:13:37 +02:00 | 66 commits to main since this release

    Pre-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 is persistedDataChanged, 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 persistedDataChanged and nodeExecution works.

    Note: marked as pre-release — post-beta features (deleted-project warning, @completed annotation) are still pending for the final 0.1.1/0.1.x line.

    Install via Super Productivity → Plugins → Install from ZIP.

    Downloads
  • v0.1.0 5a4682fb69

    v0.1.0 Pre-release

    fpindado released this 2026-06-22 15:33:34 +02:00 | 68 commits to main since this release

    First 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 sync to difference so 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
  • v0.0.7 f6e1e14c0c

    v0.0.7 Pre-release

    fpindado released this 2026-05-29 16:07:30 +02:00 | 75 commits to main since this release

    Release 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, dragover and drop never 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 calls refreshProjectsCache() 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
  • v0.0.6 87e43ed520

    v0.0.6 Pre-release

    fpindado released this 2026-05-28 15:56:13 +02:00 | 78 commits to main since this release

    Release 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 persistedDataUpdate handler 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 original sync.md plugin), with automatic retries if SP hasn't finished loading the project state into the iframe yet. A background 60-second refresh and a persistedDataUpdate listener 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 .md files 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