Repository navigation
Releases
Publy for Obsidian 0.8.7
Publy previews Markdown notes and delivers them to a WeChat Official Account draft box. Draft delivery is not public posting or mass-send.
Highlights since 0.8.3
- Three-file install closure. Cards, TeX, fonts and WASM now ship inside
main.js; the official install no longer depends onnode_modules/orfonts/sidecars. The three-file simulated gate passes offline on Linux, Windows and macOS. - Editor-independent Markdown. Markdown is the input: nested media paths, covers, Obsidian embeds and explicit article / image-and-caption / card selection share one pipeline.
- Draft recovery. A lost response is never treated as failure: same request identity, explicit
confirmed/unknownresults, scheduled jobs that do not auto-resend ambiguous attempts, and an operator reconciliation path backed by a read-only WeChat draft-box check. - Themes. Content-only versioned bundles with scoped CSS validation, SHA-256 pinning and optional Ed25519 signatures (
--trusted-key). Installed themes appear in settings. - Agent CLI. Every advertised command supports
--jsonwith declared usage, prerequisites and approval requirements; config/account mutations never echo credentials. - Safety. Preview HTML sanitization, clipboard/embed preflight, credential redaction, fail-closed recovery state and a type-checked plugin build.
Install / upgrade
- Community directory style (three files): use
main.js,manifest.jsonandstyles.cssfrom this release. - Side-load: unpack
publy-obsidian-0.8.7.zipinto<vault>/.obsidian/plugins/publy/and enable the plugin.
Requires Obsidian desktop 1.5.0 or newer (isDesktopOnly: true).
Honest boundaries
- Local preview and rich-text copy need no account. Draft delivery needs your own configured Publy server and WeChat credentials.
- Hosted subscription sales are not open; there is no purchase link.
- Publy is not yet confirmed as an Obsidian Community Directory listing; directory-install acceptance remains tracked in issues #12 and #14.
- This release ships the three-file candidate that passed the synthetic offline gate; real clean-vault directory acceptance is still being verified.
SHA-256 checksums for every asset are attached in SHA256SUMS.txt.
Publy for Obsidian 0.8.3
One ribbon per plugin — the eye icon introduced in 0.8.2 is gone.
The Obsidian-convention answer to high-frequency preview is not a second button: the zero-interaction path is the auto-preview on note open setting (the panel is workspace state — it follows note switches and edits, and survives restarts), and Preview current note remains a command you can bind a hotkey to in Settings → Hotkeys. The setting description now says so.
Upgrade: replace main.js + manifest.json + versions.json + styles.css, or reinstall from the zip.
Publy for Obsidian 0.8.2
Preview is the high-frequency action — it now costs at most one click:
- New eye ribbon icon: one click opens the in-app WeChat preview (the send ribbon remains the publish shortcut)
- Auto-preview on note open (off by default, toggle in settings): every note you open renders its preview by itself — zero interaction
- Unchanged: with the preview panel open, switching notes and editing already re-render automatically (~0.9s debounce)
Upgrade: replace main.js + manifest.json + versions.json + styles.css, or reinstall from the zip.
Publy for Obsidian 0.8.1
Community-directory readiness: the cover picker's local-image button no longer uses electron.remote (banned by Obsidian's review rules) — it now uses a plain <input type="file"> picker with content-addressed keys; behavior is unchanged. Adds the plugin author URL and the community submission kit (docs/obsidian-submission.md).
Upgrade: replace main.js + manifest.json + versions.json + styles.css, or reinstall from the zip.
Publy for Obsidian 0.8.0
The cover dialog now covers every article — including ones without images.
What changed
Before: an article with no body images silently fell back to a server-generated title card. You were never asked, and never got to use a cover you preferred.
Now every article without an explicit cover: frontmatter gets the picker:
- The auto title card renders for real — the dialog shows the exact card the server would generate (your title, the product's warm-oat palette, 2.35:1), not a style approximation. Confirm it with one click, or…
- Pick an image from this computer — a file dialog adds any local image as a candidate; local picks ride the publish payload like body images
- Your choice is remembered per note — including local files (validated by existence, so moved or deleted files fall back gracefully instead of failing the publish)
The card preview works offline: the title-card renderer moved onto the plugin's own wasm rendering seam with the bundled CJK fonts.
Upgrade: replace main.js + manifest.json + versions.json + styles.css in .obsidian/plugins/publy/, or reinstall from the zip.
Publy for Obsidian 0.7.0
Math formulas, same as the CLI's 1.0.4: $E=mc^2$ inline and $$…$$ display TeX render to crisp WeChat-safe PNGs (mathjax SVG @2x via resvg), riding the regular attachment pipeline. The mathjax runtime subtree (6.9MB) ships inside the plugin package — formulas render fully offline, no extra setup.
Preview behavior: formulas appear as images in the in-app panel exactly as they will in the article. Malformed TeX degrades to the raw expression with a warning.
Upgrade: replace main.js + manifest.json + versions.json + styles.css in .obsidian/plugins/publy/, or reinstall from the zip.
@turinglambdaai/publy 1.0.4
Math formulas. $E=mc^2$ inline and $$…$$ display TeX now render through mathjax-full: SVG with glyph outlines baked in, rasterized @2x via resvg, and shipped through the regular attachment pipeline — formulas survive the WeChat editor's <style> stripping because they arrive as plain images, deduped per unique formula so repeats upload once.
Malformed TeX degrades to the raw expression in code style with a warning, never breaks the publish. Verified: 33 core tests (3 new), all green.
Also in this round: server terms of service and privacy policy, plus a hosted-service quickstart in the guide.
Upgrade: npm i -g @turinglambdaai/publy@1.0.4
Publy for Obsidian 0.6.0
The plugin finally looks like the product it powers.
Design system
- First real
styles.csslayer: one WeChat-green accent token on top of Obsidian's native CSS variables — the plugin now follows your light/dark theme properly, with ghost buttons, hover states and 0.15s transitions throughout - Replaces 30+ scattered inline styles
Interaction
- Publish state machine — the primary button spins while publishing, and the preview panel shows a colored result strip (green in your drafts / amber scheduled / red failure) with the account, cover source and elapsed time; auto-fades after 6s
- Mobile width preview — a 390px/700px switch in the toolbar; most WeChat readers are on phones, now what you proof is what they see
- Theme quick-switch — all 10 themes in the toolbar, re-renders instantly
- Lucide icons on every control; empty state with a proper icon card
Detail polish
- History panel is now a timeline with status-colored nodes (green published / red failed / amber scheduled)
- Cover picker: hover lift, green selection ring, and 2.35:1 crop thumbnails — you see the post-crop result, not the raw image
- Account switcher restyled as a hover list
Install: download main.js, manifest.json, styles.css into .obsidian/plugins/publy/ (or use the zip). Fonts and the wasm renderer ship inside the package — zero network needed after install.
@turinglambdaai/publy 1.0.3
Critical fix: the publy bin was a silent no-op for every npm i -g install — 1.0.0 and 1.0.1 are deprecated.
What was wrong
npm installs global bins as a symlink, while the CLI's entry guard compared import.meta.url (the real path) against process.argv[1] (the symlink). They never matched, so the CLI exited 0 with no output. Both published versions were unusable as global installs.
The fix
Resolve argv[1] through fs.realpathSync before the comparison (f72db8e).
Verification
npm i -g @turinglambdaai/publy→publy --version→1.0.3publy --helprenders normally
Note: 1.0.2 was consumed by the registry's staged-publish flow and never became visible.
Install / upgrade: npm i -g @turinglambdaai/publy
@turinglambdaai/publy 1.0.1
⚠️ Superseded by 1.0.3: the bin in this release is a silent no-op undernpm i -g(symlink entry-guard bug). Use 1.0.3+.
First npm release of the CLI after the diagnostics round. npm version ↔ commit mapping starts here: tag npm-v1.0.1 = 4bae4cd (main).
Fixes since the 1.0.0 tarball
- Attachment refs no longer truncated (#2) — a lazy quantifier in the
attachment://extraction regex cut every filename to one character, so articles with body images failed withATTACHMENT_MISSING "a". Now greedy, with regression tests. - Fresh clone builds again (#3) —
@publy/shared/@publy/coredeclare@types/node;pnpm install && pnpm -r buildworks from a clean checkout. - CLI surfaces failures (#4) —
publish --jsonincludes renderingwarnings(silent image misses are visible to agents),config set media_dirsaccepts comma-separated dirs, and network errors report the real cause (ECONNREFUSED/ TLS / bad port) instead of a generic hint.
CI now runs build+test on ubuntu and windows for every push and PR.
Install: npm i -g @turinglambdaai/publy