✨ Become an AI-era PM — words → product → doAIPM.com
#MD SoloMD

v3.6 — Live-edit blocks, plus 5 polish fixes

v3.6 closes a live-edit gap that has been awkward since v2.3: standalone image lines and GFM tables now render in place, source returning the moment the cursor enters. Bundled with that: five polish fixes rolled in from rapid feedback after v3.5.5 — AI settings routing, PNG export sizing, an optional watermark, folder-picker memory, and a Mac toolbar overflow fix.

🔨 #44 — Live-edit blocks for images and tables

In live-edit view (the toolbar's pen-on-paper icon), markdown source is shown inline with formatting applied. Until v3.6, two block-level kinds didn't render in place: a line containing only ![alt](url) sat as raw source, and a GFM table block read as plain pipe-separated text.

v3.6 adds a new CodeMirror 6 block-decoration extension at app/src/lib/cm-live-blocks.ts:

Both widgets unmount the moment the cursor enters any line inside the matched block range. No view-mode switch needed — edit, see source; move on, see render. The decoration is rebuilt on doc change, selection change, or viewport scroll, so feedback feels instantaneous.

Why a strict whole-line match for images rather than inline? Because replacing inline images would split a paragraph in the middle of a sentence and break the natural reading flow of the source. Live-edit's whole point is to keep the source one cursor-move away — surprise inline collapses fight that.

✅ Five polish fixes

All small individually, but they were stacking up after v3.5.5:

  1. AI button → wrong settings location. Clicking the toolbar AI button when AI was disabled used to open the Settings panel on the default Basics tab — not where the AI toggle actually lives. The solomd:open-settings event now carries an optional detail.section, and AI entry points (toolbar + AI rewrite overlay) pass 'integrations' so users land directly on the AI block.
  2. Image export crop-to-content. Short notes used to export with empty space below them — html2canvas was capturing more than the rendered article's bounding box. Fix: pass explicit width / height / windowWidth / windowHeight from getBoundingClientRect() so the canvas matches the rendered DOM exactly.
  3. "Created with SoloMD" watermark — now a setting. Previously hardcoded as a footer on every PNG export. Reasonable default for a free MIT app, but it should be opt-out, not forced. New setting imageExportBranding (default ON) is toggleable in Settings → Export; when off, exports skip the footer + use tighter bottom padding so short notes don't carry phantom space.
  4. Folder picker remembers last workspace. useFiles.openFolder() now passes defaultPath: workspace.currentFolder to the Tauri folder dialog. Without it, the OS picker reopened at the system default each time, ignoring the workspace SoloMD already had loaded.
  5. Mac narrow-window toolbar overflow. When the window was narrow enough that the toolbar's natural width exceeded it, right-side buttons (AI / Sponsor / Settings) were silently clipped. .toolbar is now overflow-x: auto with a hidden scrollbar + flex-shrink: 0 on every child group; right-edge buttons stay reachable via two-finger swipe at any window width.

📥 Download

Download v3.6.0 →   All releases

Existing v3.0.x+ users see the in-app update prompt within 24h. On Mac, brew upgrade --cask solomd works too. CLI / MCP server are bumped to 3.6.0 in lockstep.

What's next — v3.7

iPad and Mac App Store resubmission gates are next on the list. Beyond that, v4 continues the agent-endpoint thrust (CLI + MCP + BYOK) — keep an eye on Discussions for direction.

Comments & feedback

Comments live on GitHub Discussions — sign in once with your GitHub account.

Comments load from GitHub Discussions. If you see this message instead, the maintainer has not finished the one-time giscus.app setup yet — see web/COMMUNITY-SETUP.md.

Open on GitHub Discussions →