Skip to content

Releases

Publy for Obsidian 0.8.7

Choose a tag to compare

@turlamai turlamai released this 08 Nov 04:04
c0a3573

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 on node_modules/ or fonts/ 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 / unknown results, 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 --json with 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.json and styles.css from this release.
  • Side-load: unpack publy-obsidian-0.8.7.zip into <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

Choose a tag to compare

@turlamai turlamai released this 13 Oct 06:45

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

Choose a tag to compare

@turlamai turlamai released this 13 Oct 03:10

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

Choose a tag to compare

@turlamai turlamai released this 13 Oct 02:35

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

Choose a tag to compare

@turlamai turlamai released this 13 Oct 01:56

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

Choose a tag to compare

@turlamai turlamai released this 13 Oct 00:42

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

Choose a tag to compare

@turlamai turlamai released this 13 Oct 00:42

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

Choose a tag to compare

@turlamai turlamai released this 12 Oct 16:38

The plugin finally looks like the product it powers.

Design system

  • First real styles.css layer: 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

Choose a tag to compare

@turlamai turlamai released this 12 Oct 15:18

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.3
  • publy --help renders 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

Choose a tag to compare

@turlamai turlamai released this 12 Oct 14:58

⚠️ Superseded by 1.0.3: the bin in this release is a silent no-op under npm 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 with ATTACHMENT_MISSING "a". Now greedy, with regression tests.
  • Fresh clone builds again (#3) — @publy/shared / @publy/core declare @types/node; pnpm install && pnpm -r build works from a clean checkout.
  • CLI surfaces failures (#4) — publish --json includes rendering warnings (silent image misses are visible to agents), config set media_dirs accepts 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