TL;DR
v3.5 ditches the hand-rolled slideshow engine and switches to full reveal.js, picks up @beihai23's image / export fixes, and refreshes the Typora compare page against Typora 1.13. Plus the v3.1.x outline-keyboard-jump that snuck in earlier this week is in here officially.
Upgrade is automatic via
solomd.app/api/stats— your existing v3.0.x / v3.1.0 install will see the "update available" banner within 24h. Orbrew upgrade --cask solomdon Mac.
Slideshow → reveal.js (the big one)
The previous slideshow split markdown by \n---\n, rendered each slide via v-html, and that was it. It worked but couldn't handle backgrounds, fragments, transitions, vertical sub-slides, or speaker notes — every new ask was another patch on a private engine.
v3.5 replaces it with reveal.js v6 (~140 KB minified). Markdown still goes through SoloMD's pipeline (markdown-it + KaTeX + Mermaid 11.14 + highlight.js) so existing in-doc features keep working — reveal handles only layout / transitions / backgrounds / navigation.
New input syntax
---
slide-bg: ./assets/cover.jpg
---
# 默认背景
---
<!-- bg: ./assets/section.jpg -->
<!-- bg-size: cover -->
# 这张用 cover 图
---
<!-- bg: linear-gradient(135deg,#ff9f40,#ffd166) -->
# CSS 渐变背景
---
## 横向第一张
--
### 这是上面那张的纵向子页(vertical sub-slide)
--
### 第二个纵向子页Recognised directives
| Directive | What it does |
|---|---|
<!-- bg: ./image.jpg -->
| Slide background image |
<!-- bg: #ff9f40 -->
| Solid color |
<!-- bg: linear-gradient(...) -->
| CSS gradient / any background value |
<!-- bg-size: cover | contain -->
| Sizing override |
<!-- bg-position: center -->
| Position override |
<!-- bg-opacity: 0.6 -->
| Background opacity |
--- still splits horizontally; new -- splits vertically (down arrow advances).
Keyboard
Reveal handles arrows / space / pgup / pgdown / Home / End natively. SoloMD-specific shortcuts: F fullscreen · ? help overlay · Esc exit.
Image preview & export pipeline (PR #45 by @beihai23)
Local images in deeply-nested folders weren't rendering on Windows (Issue #46). The fix splits image-path resolution into a single image-resolve.ts lib that:
- Normalizes
\//slashes (Windows asset URLs misroute when mixed) - Resolves
./and../segments before encoding - Routes through Tauri's
convertFileSrcforasset://URLs
Preview, PDF export, DOCX export, and PNG image-export all go through the same path now. While merging, also added the missing read_binary_file Rust command the PR forgot to ship — async + spawn_blocking matching the v3.0.x audit posture.
<table> rows in MarkdownHelp.vue also now wrap in <tbody> (HTML valid, kills a Vue hydration warning).
Closes #46.
Outline keyboard jump (carried forward from v3.1.x)
Letter labels per heading; press the letter to jump. g<digits><Enter> to jump to a specific line. Skipped while focus is on the editor / inputs so ordinary typing isn't intercepted. Same letter-skip-g rule as Vimium.
vs Typora compare page refreshed (en + zh)
/compare/vs-typora and /zh/compare/vs-typora updated for SoloMD v3.5 vs Typora 1.13 — Typora has been polishing math (MathJax v4) and diagrams (Mermaid 11.13 + Venn / Ishikawa), but hasn't entered AI / sync / version-history / MCP / agent territory at all.
Self-test before release
- 111 cargo desktop tests + 9 mcp-server cargo tests pass
- vue-tsc clean
- Astro web build: 51 pages, 0 errors
- Local
.appboot smoke test: notarized, stapled, signs OK - All 4 CI jobs green (Linux x64 + Linux arm64 + Windows + web-clipper)
Live UI test of the slideshow was blocked by a macOS keychain auth dialog during dev launch, so the reveal.js init was verified by structural inspection rather than DOM walk. The init code is mechanical and the markdown rendering path is unchanged from v3.1; if a slide doesn't render the way you expect, please open an issue with the source markdown.
Downloads
Same matrix as v3.1.0 — Mac universal dmg (notarized), Windows setup.exe + msi + portable.zip, Linux deb / AppImage / rpm × x64 + arm64, plus the standalone solomd-mcp archive for each platform and the browser clipper extensions.
# macOS
brew install --cask zhitongblog/solomd/solomd
# or curl -fsSL https://solomd.app/install.sh | bash
# Windows
irm https://solomd.app/install.ps1 | iexWhat's still on the runway
- Issue #44 (live edit image / table inline render) — deferred to v3.6, that's a CodeMirror block-decoration extension, not a slideshow item
- Issue #43 (Win font rendering regression) — waiting on screenshot + system info from reporter
- iPad / MAS resubmission — pending ASC review status check from the maintainer
Thanks @beihai23 for the export PR and the prompt that surfaced #46. 🙏