Skip to content

SoloMD v2.5 — Polish the writer's day

Choose a tag to compare

@github-actions github-actions released this 26 Apr 11:21
379f8df

✨ v2.5 — Polish the writer's day

Seven small features that don't make the press but keep daily users. Every one of them is a paper-cut a long-form writer (or a CJK writer) hits on a normal day, and that we now make go away.

⌘P — quick file switcher

VSCode-style fuzzy file picker. Type ⌘P, type a few letters of any filename, hit Enter. MRU first, then most-frequently-edited, then any other open tab. Path column truncates from the left so you always see the parent folder. PDF print is now ⌘⌥⇧P.

✍️ Word goals + writing stats

Drop goal: 1500 into a doc's YAML front matter — the status bar grows a progress pill (247 / 1500 words · 16%) that pulses green at 100 %. Click it for the writing-session popover with delta-since-opened / delta-since-saved / streak. Optional workspace-level "Today: 1,200 words across 3 docs" pill, off by default.

Goal unit is words (default), chars, or cjk — same word counter that powered the Chinese-character status bar since v1.

📄 PDF / print defaults

Settings → "PDF / print export". Choose page size (A4 / A5 / Letter / Legal / Custom mm), margin preset (Narrow 10mm / Normal 15mm / Wide 25mm / Custom), font + size, page-number footer, code-block theme. Per-document override via a pdf: block in YAML front matter (pdf: { pageSize: A4, margin: 25mm }).

Backwards compatible: if you've never opened the new section and your doc has no pdf: block, exports look exactly like v2.4.

🍅 Pomodoro / Zen focus session

Toolbar chevron next to the focus-mode button → Start 25 / 50 / 90 min focus, or a custom duration. ⌘⇧Z starts your last preset (25 min default). Status bar pill counts down (🍅 12:34), click to pause, right-click for menu. Optional auto-engage focus mode + auto-break + system notification on completion. Survives reload — count picks up where it left off.

🎨 Theme marketplace

A new "Browse community themes" button in Settings → Custom CSS opens a grid of curated .css themes. Click Install — the file lands in <config_dir>/themes/<id>.css, sets itself as the active Custom CSS, ready in two seconds. Four starter themes:

  • Amber Dark — warm amber on charcoal, late-night writing
  • Nord Light — Nord palette flipped to light
  • Pure Black OLED — true black, OLED-saver
  • Sepia — paper-like for reading mode

Public catalog at https://solomd.app/themes/. Manifest is plain JSON; submit a PR to add yours.

🇨🇳 CJK proofread

⌘⇧J (J for "句") opens a panel that flags six categories of common Chinese typography issues:

  • Half-width punctuation in CJK context (, ? ! : after Han → suggests ,?!:)
  • Latin quotes around Han text ("汉字""汉字")
  • 的 / 地 / 得 misuse (非常的精彩非常地精彩, conservative ~30-stem dictionary)
  • Doubled 的的, 了了, 是是
  • Missing space between CJK and Latin / digits (suggests U+202F narrow space)
  • Missing space between digit and unit (5GB硬盘5 GB 硬盘)

Click any row to jump to the offending text. Per-row Apply or Apply-all-of-this-severity. False-negative-favoured — we only flag when patterns are confident.

/ slash commands (community request #30)

Type / on a new line — Notion-style popup with 20 markdown blocks (H1/2/3, lists, todo, code, quote, divider, 3×3 table, math, mermaid, link, image, bold/italic/strikethrough/inline-code, frontmatter). ↑↓ to navigate, Enter to insert, Esc to dismiss. Suppressed inside code blocks. Toggle off in Settings if you don't like the keyboard interception.


📦 Downloads

Platform File
macOS (Universal, signed + notarized) SoloMD_2.5.0_universal.dmg
Windows SoloMD_2.5.0_x64-setup.exe / SoloMD_2.5.0_x64_en-US.msi / SoloMD_2.5.0_x64-portable.zip
Linux x64 .AppImage / .deb / .rpm
Linux arm64 .AppImage / .deb / .rpm
MCP server-only solomd-mcp-{mac-universal,linux-x64,linux-arm64}.tar.gz / -win-x64.zip
Browser clipper solomd-clipper-{chrome,firefox}.zip

17 artifacts total — same matrix as v2.4.2.


Engineering notes

  • Built in 7 parallel git-worktree agents (1 day total), single integration PR (#40).
  • Theme marketplace agent flagged a vestigial lib.rs::run() that doesn't reach the running app — the live entrypoint is runner.rs. Future Tauri commands need to land in both.
  • CJK proofread is regex-based (no LLM); covers Han Unified + Ext A/B-E + Compat blocks via a hand-rolled char-range checker.
  • Settings store now has 5 new top-level keys (showWritingStats / showWorkspaceDailyTotal / pdfDefaults / pomodoroShowControls / slashCommandsEnabled) — all backwards-compatible via clamping merge in load().

🤖 Generated with Claude Code