Releases: qiaopengjun5162/moonpub
Release list
v0.4.4
[0.4.4] - 2026-07-27
🚀 Features
- (obsidian-plugin) Add open settings button to homepage action card
- (obsidian-plugin) Surface open-settings button when setup is incomplete
🐛 Bug Fixes
- Remove hardcoded personal brand placeholders and make preview recipient configurable
📚 Documentation
- (first-run) Note open-settings shortcut on homepage
- (obsidian-plugin) Mention open-settings shortcut in homepage description
⚙️ Miscellaneous Tasks
- (release) Upload Obsidian plugin files as standalone release assets
- (release) Bump version to 0.4.4
v0.4.3
[0.4.3] - 2026-07-26
🚀 Features
- Add cookie-session push mode to bypass WeChat IP whitelist
- (test-yulan) Send phone preview via cookie backend; support --title/--to
- (ship) Add cover upload to cookie push (non-blocking)
- (ship) Download cover from frontmatter URL in cookie mode
- (obsidian-plugin) Persist preview recipient to .moonpub/preview_to
🐛 Bug Fixes
- (test-yulan) Make preview recipient optional via page auto-detect
- (test-yulan) Pass --to through dispatch; persist recipient to config
- (ship) Route push through cookie session when auth_method=cookie
- (footer) Add brand card and show group section without QR
- (footer) Always render QR code section when non-minimal
- (footer) Embed local QR code as base64 data URI; fix title nesting
- Cover and QR code display in cookie push mode
- (cookie) Use upload_mass_image for inline images so QR code gets a CDN URL
- (cookie) Force https for uploaded inline image URLs
- (footer) Add display:block to QR image for WeChat editor rendering
- (configure) Target draft by title instead of first-in-list
- (push) Upload inline QR images via upload_material; auto_configure targets draft by title
- (cookie) Warn when auto-publish is requested but unsupported
- (configure) Normalize whitespace when matching draft title
- (configure) Make WeChat backend settings actually persist
- (footer) Use table layout for brand card (WeChat strips flex)
- (footer) Suppress default table borders in brand card
- (configure) Trusted CDP click for picker confirms + leftover-dialog guard
- (configure) Poll settings after reload; warn on missing qrcode path
📚 Documentation
- (obsidian-plugin) Add BRAT install instructions and market checklist
⚙️ Miscellaneous Tasks
- (obsidian-plugin) Sync plugin version to 0.4.2
- (obsidian-plugin) Add empty styles.css for release packaging
- (release) Package obsidian plugin assets for BRAT
- (release) Bump version to 0.4.3
v0.4.3-beta.0 — Obsidian 插件 BRAT 预览
v0.4.2
[0.4.2] - 2026-07-13
🚀 Features
- Add capabilities command (#42)
- Add generic target commands (#44)
- Expose capability command templates (#45)
- Version capabilities schema (#46)
- Expose capability requirements (#47)
- Configurable AI provider, template insertion, and module cleanup (#51)
- Add Feishu Minutes intake (#54)
- Search feishu minutes intake (#55)
- Draft articles from inbox material (#56)
- Draft from feishu intake (#57)
- Preview drafted inbox articles (#58)
- Support non-interactive draft previews (#60)
- Suggest push command after drafting (#61)
- Support no-open preview command (#62)
- Suggest push after preview (#64)
- Add temporary browser profile mode (#68)
- Stabilize first-run publishing workflows (#70)
- Add richer article layout themes (#74)
- Add photo story layout blocks (#75)
- Add layout recipes command (#78)
- Add wechat automation health check (#79)
- Add wechat proxy debug logging (#81)
- Add compact links block (#82)
- Add daily report layout recipe (#83)
- Add collection opener layout recipe (#85)
- Add spoken note layout recipe (#86)
- Guide feishu drafts toward spoken note layout (#87)
- Add wechat layout audit command (#88)
- Add quiet life layout themes (#89)
- Add local doctor onboarding (#93)
- Add plugin setup fallback (#94)
- Add workflow registry discovery (#96)
- Show workflow registry in plugin homepage (#97)
- Add safe workflow actions to plugin homepage (#98)
- Add article workbench actions (#99)
- Add plugin layout audit action (#100)
- Add intake result layout audit action (#101)
- Open preview from layout audit modal (#102)
- Copy next commands from plugin workbenches (#103)
- Add local preflight quality gate (#114)
- Add plugin preflight gate (#115)
- Add release evidence status gate (#117)
- Summarize release evidence status (#118)
- Show evidence status in Obsidian homepage (#119)
- Add strict evidence status gate (#120)
- Add release check gate (#121)
- Show release gate in obsidian home (#122)
- Describe workflow user value (#124)
- Capture wechat release evidence (#127)
- Add obsidian ribbon homepage entry (#128)
- Add confirmed photo vision intake (#133)
🐛 Bug Fixes
- Move bundle on mark-published (#37)
- Cover uses config author; export falls back to body h1 for title
- Improve cover title fallback and refresh qrcode
- Exclude agent plans from pages build (#59)
- Support temporary profile during push automation (#73)
- Explain wechat profile lock failures (#80)
- Fail fast when headless wechat login expires (#90)
- Accept json flag after workflow commands (#116)
- Keep release smoke paths case-consistent (#134)
🚜 Refactor
- Split draft file helpers from app (#26)
- Move cover helpers into cover module (#27)
- Move ship orchestration into module (#28)
- Move init workflow into module (#29)
- Move ai commands into workflow module (#30)
- Extract article bundle core (#40)
- Add publish target core (#41)
- Add export target core (#43)
📚 Documentation
- Record v0.4.1 release smoke test (#22)
- Prepare v0.4.1 launch materials (#23)
- Record v0.4.1 launch demo assets (#24)
- Add launch screenshot and wechat regression checklists (#25)
- Record launch safe text assets (#31)
- Finalize v0.4.1 launch readiness (#32)
- Finalize launch article (#33)
- Add launch screenshot assets (#34)
- Finish launch article visuals (#35)
- Refresh release notes screenshots (#36)
- Add product roadmap (#38)
- Design plugin architecture (#39)
- Sync windows smoke guidance (#49)
- Sync current capabilities and release guidance
- Align release and qrcode guidance
- Sync progress with preview and ci status (#63)
- Sync first-run audit with plugin homepage (#71)
- Add first-run evidence runbook (#72)
- Add article layout recipes (#76)
- Sync project completion and release gate (#91)
- Record v0.4.2 release smoke (#92)
- Sync v0.4.2 ci gate (#95)
- Add wechat archive workflow design (#104)
- Map yichen skills references (#105)
- Refine wechat archive risk layers (#106)
- Refine wechat url markdown intake (#107)
- Map khoj knowledge assistant reference (#108)
- Refine yichen video content reference (#109)
- Map identity skill visual workflow reference (#110)
- Map handdrawn ppt visual reference (#111)
- Map astrbot readme onboarding reference (#112)
- Map horizon radar reference (#113)
- Record release gate consistency review (#123)
- Record wechat health precheck (#125)
- Record live wechat draft regression (#126)
- Align release evidence checklist (#130)
- Add safe first-run evidence screenshots (#131)
- Add photo opened evidence (#132)
🧪 Testing
⚙️ Miscellaneous Tasks
v0.4.1
MoonPub v0.4.1
MoonPub is a local publishing copilot for WeChat Official Accounts:
Markdown / Obsidian
-> local WeChat-style HTML preview
-> cover generation
-> WeChat draft creation through the official API
-> assisted backend configuration in local Chrome
-> optional Zola blog export
This release is Beta / early adopter ready. It is suitable for technical users who can configure WeChat Official Account credentials and are comfortable reviewing generated drafts before publishing.
MoonPub is not an unattended publishing bot. It does not bypass QR login, captcha, platform review, account permissions, or final human confirmation.
Install
macOS Apple Silicon:
curl -L https://github.com/qiaopengjun5162/moonpub/releases/download/v0.4.1/moonpub-macos-arm64.tar.gz | tar xz
sudo mv moonpub /usr/local/bin/
moonpub --versionmacOS x86_64:
curl -L https://github.com/qiaopengjun5162/moonpub/releases/download/v0.4.1/moonpub-macos-amd64.tar.gz | tar xz
sudo mv moonpub /usr/local/bin/
moonpub --versionLinux x86_64:
curl -L https://github.com/qiaopengjun5162/moonpub/releases/download/v0.4.1/moonpub-linux-amd64.tar.gz | tar xz
sudo mv moonpub /usr/local/bin/
moonpub --versionLinux ARM64:
curl -L https://github.com/qiaopengjun5162/moonpub/releases/download/v0.4.1/moonpub-linux-arm64.tar.gz | tar xz
sudo mv moonpub /usr/local/bin/
moonpub --versionWindows users can download moonpub-windows-amd64.zip, unzip moonpub.exe, and add it to PATH.
Cargo install is also supported:
cargo install --git https://github.com/qiaopengjun5162/moonpubHomebrew tap is not published yet.
Try Locally First
This path does not require WeChat credentials:
moonpub init
moonpub new "My First MoonPub Article"
moonpub render "Articles/drafts/My-First-MoonPub-Article.md"
moonpub preview "Articles/drafts/My-First-MoonPub-Article.md"
moonpub cover "Articles/drafts/My-First-MoonPub-Article.md" --style literary
moonpub check "Articles/drafts/My-First-MoonPub-Article.md"Use the exact path printed by moonpub new if your title contains spaces or non-ASCII characters.
Demo Screenshots
The README and launch article include screenshots generated from the v0.4.1 release binary without WeChat credentials:
- Rendered article preview:
docs/assets/launch/01-preview.png - Literary cover card:
docs/assets/launch/02-cover.png
For the full launch narrative, see docs/LAUNCH_ARTICLE_ZH.md.
Push To WeChat Drafts
After configuring credentials and IP allowlist:
export WECHAT_APPID=wx***
export WECHAT_SECRET=your_secret
moonpub login
moonpub push "Articles/drafts/article.md" --renderSuccessful draft creation moves the local article bundle to Articles/ready/. It is not marked as published until you manually confirm publication or run moonpub mark-published.
What Is Included
init,new,status,check- Markdown rendering to WeChat-friendly HTML and draft JSON
- Local preview and 10 built-in cover styles
- Official WeChat API draft create/update/delete/list
- Local image upload and replacement during push
- Assisted Chrome/CDP backend configuration for supported steps
- Zola blog export
- Optional DeepSeek-powered
write,expand,polish, andship --ai radartitle/trend helper commands
Verified
- GitHub release assets exist for macOS ARM64, macOS x86_64, Linux ARM64, Linux x86_64, and Windows x86_64.
- macOS ARM64 release binary passed sha256 verification.
- macOS ARM64 release binary passed
--help,--version, and a no-credential first-run smoke test:
init -> new -> render -> cover -> check
- Local preview and cover screenshots were generated from the release demo HTML with Chrome headless and committed under
docs/assets/launch/.
Known Limits
- Live WeChat regression still requires real credentials, IP allowlist, and QR-code login.
- Browser automation depends on WeChat's live backend UI and may soft-fail when WeChat changes DOM or wording.
- Collection selection, backend cover setting, and final publish button are not enabled as unattended actions.
- Real WeChat draft and
configure --headedscreenshots still require a live WeChat account environment; do not capture AppSecret, access tokens, phone numbers, or private account data.
Useful Docs
- Quick start:
docs/GETTING_STARTED.md - Full user guide:
docs/USER_GUIDE.md - Launch plan and progress:
docs/LAUNCH_PLAN_ZH.md - Real WeChat regression checklist:
docs/WECHAT_REGRESSION_CHECKLIST_ZH.md
v0.4.0 — AI 写作 + Obsidian 插件
[0.4.0] - 2026-06-17
🚀 Features
- Add Obsidian plugin MVP
- Auto-load .env and ~/.moonpub.env at startup
- Add 3 new cover styles — ink, sunset, forest
- Auto-download cover URL from frontmatter for thumb_media_id
- Use book cover image fitted to 900x500 instead of text cover
🐛 Bug Fixes
- Remove duplicate configure call in ship_article
- Align cover image to top to show book title
- Don't auto-fill digest — let WeChat extract from content
📚 Documentation
- Add GitHub Pages landing page
- Add Getting Started guide and landing page
- Update CLAUDE.md with AI features and dotenv
🎨 Styling
- Improve paragraph and blockquote formatting (md2wechat patterns)
🧪 Testing
- Add 10 CLI tests for new/expand/write/polish/ship commands
◀️ Revert
- Remove image-based cover, back to text covers only
v0.3.2
[0.3.2] - 2026-06-16
🚀 Features
- Configurable profile path + Docker support
- Pre-built binaries CI + Homebrew formula + slides + blog outline
- Add literary cover style (default) + fix empty thumb_media_id
- Frontmatter cover field — auto-upload local cover image
- Geek theme + ship auto-uploads cover as thumb_media_id
- Add Windows support — Chrome detection + release build
- Add moonpub new <title> command
- Add AI module with DeepSeek integration
- Add moonpub expand for reading notes → article
🐛 Bug Fixes
- Omit empty thumb_media_id in draft JSON (WeChat API now rejects empty)
- Always upload frontmatter cover regardless of body image count
- Add 120s timeout to wait_url to prevent infinite hang
- Track TOML section to correctly assign vault/blog root paths
- Adapt to WeChat editor UI changes (2026-06-14)
- Qrcode path, callout skip, per-article author/theme, config auto-discover
- Truncate digest to 120 chars (WeChat errcode=45004)
- Browser automation — CDP click to enter editor, title/author/theme improvements
- Click real checkbox input for WeChat agreement dialogs
- Target agreement checkbox inside label for WeChat dialogs
- Click the correct '创作来源' row in editor
- Click lbl_content_desc span inside 创作来源 row
- Select 创作来源 option after clicking 未添加, disable 合集
- 创作来源 use dedicated wrapper and contains-match option
- Rewrite 创作来源 step with radio value selector and label-based verification
- Restore configure step in ship_article, lost during refactor
🚜 Refactor
- Remove last production unwrap() in open_browser
- Thiserror AppError + anyhow CLI + cargo-audit CI
- Split lib.rs into modules and extract push logic
- Extract CDP helpers and markdown renderer into dedicated modules
- Remove unused cdp helpers and update README architecture
- Robustify WeChat editor automation helpers
- Rename vault→articles for better UX
- Rename ai→write, clarify humanize/polish
📚 Documentation
- Detailed installation guide — Cargo, Docker, .env, moonpub.toml
- Full E2E workflow guide + cover customization options
- Update cover section — frontmatter cover field, literary style
- Update CLAUDE.md with root-cause analysis and engineering lessons
- Record module split and circular dependency fix in CLAUDE.md
- Add project progress tracker
- Update PROGRESS.md after test additions
- Avoid hardcoding commit hash in PROGRESS.md
- Mark browser automation as verified and frozen
- Add session context for next conversation
- Mark 创作来源 as verified stable
- Add 创作来源 radio-value fix record to historical issues
- Sync all docs — ship, configure, architecture, 创作来源 status
- Update README download version to v0.3.2
- Add CODE_OF_CONDUCT.md (Contributor Covenant)
🧪 Testing
- Add targeted tests for cover upload logic and build_draft_json
- Add unit tests for core helper functions
- Add unit tests for markdown fence parsing and cdp js_str
⚙️ Miscellaneous Tasks
- Fix release workflow duplicate check + English README
- Add .vscode/ to gitignore
- Fix release workflow — macos-14 runner, linux-arm64, remove --locked
- Drop aarch64-apple-darwin, ring 0.17.14 panics on macOS ARM runners
- Add CODEOWNERS
- Rewrite release workflow with git-cliff + softprops/action-gh-release
- Use macos-latest for x86_64-apple-darwin
v0.3.1 — Headless CDP Automation
Headless Browser Automation
moonpub configure 静默无头运行,不弹浏览器窗口。
moonpub login # 首次扫码,保存 cookie
moonpub configure # headless 全自动,6/6 通过
moonpub configure --headed # 调试:打开浏览器 + 截图
moonpub test-zanshang --headed # 单独调试某步骤CLI 新增
configure [<steps>..] [--headed]step-test [--headed]test-zanshang [--headed]test-chuangzuo [--headed]test-yulan [--headed]
核心修复
- 留言
cdp_click_exact_last+ Escape 正确关闭对话框 - Cookie 持久化:
~/.config/moonpub/session.json - Step 内部不加
if headed包装,避免时序依赖被破坏
v0.3.0
What's Changed
- fix: cargo fmt + feat: ship command by @qiaopengjun5162 in #12
- feat: moonpub ship — one-command full pipeline by @qiaopengjun5162 in #13
- feat: add Warm, Serif, Gradient cover styles by @qiaopengjun5162 in #14
- feat: complete help text and wire theme into render by @qiaopengjun5162 in #15
- feat: auto-upload local images on push + complete docs by @qiaopengjun5162 in #16
- docs: complete README — theme, cover, radar suggest, image upload by @qiaopengjun5162 in #17
Full Changelog: v0.2.0...v0.3.0
v0.1.0
What's Changed
- docs: add README and CONTRIBUTING with PR-first workflow by @qiaopengjun5162 in #1
- feat: moonpub cover — HTML template cover generation by @qiaopengjun5162 in #2
- docs: update PROGRESS with latest features and architecture by @qiaopengjun5162 in #3
- test: add cover.rs tests by @qiaopengjun5162 in #4
- docs: README_zh + CI workflow by @qiaopengjun5162 in #5
- feat: cover --screenshot, release workflow, README_zh by @qiaopengjun5162 in #6
- chore: add project Justfile and update vault Justfile by @qiaopengjun5162 in #7
- chore: add MIT license by @qiaopengjun5162 in #8
New Contributors
- @qiaopengjun5162 made their first contribution in #1
Full Changelog: https://github.com/qiaopengjun5162/moonpub/commits/v0.1.0