Markdown to perfect Word in one click — Mermaid, Vega, drawio, canvas, Infographic, Graphviz, LaTeX (editable), code highlighting, local processing
TypeScript
1,896
715 commits
updated Sep 29, 2026
| Workflow | Trigger | Purpose |
|---|---|---|
ci.yml | push to main, pull requests, manual run | Unit/contract tests via npm run test:unit, installed-extension E2E via npm run test:e2e on Node.js + Playwright, plus the Chrome for Testing version matrix (chrome-matrix job) |
release.yml | push of a v<version> tag, manual run | Builds every platform and attaches the installers to the GitHub Release |
"version" in package.json and commit it on main.
Every build script copies that version into its own manifest
(chrome/manifest.json, edge/manifest.json, firefox/manifest.json,
obsidian/manifest.json, mobile/pubspec.yaml, and the VS Code
package.json), so the tag and the manifests cannot drift apart.git tag v5.4.0 && git push origin v5.4.0.
The tag must be v plus the package.json version, otherwise release.yml
stops in its prepare job before building anything.workflow_dispatch, with the
tag name as input) to rebuild a release — assets are overwritten with
gh release upload --clobber, so re-runs are safe.| Asset | Platform | Built by |
|---|---|---|
chrome-v<version>.zip | Chrome / Chromium | npm run build:chrome |
edge-v<version>.zip | Microsoft Edge | npm run build:edge |
firefox-v<version>.zip | Firefox | npm run build:firefox |
vscode-v<version>.vsix | VS Code / Open VSX | npm run build:vscode |
obsidian-v<version>.zip | Obsidian (bundle) | npm run build:obsidian |
main.js, manifest.json, styles.css | Obsidian (registry files) | npm run build:obsidian |
documd-cli-v<version>.tgz | HTML CLI (npm tarball) | npm run build:cli |
android-v<version>.apk / .aab | Mobile app | node mobile/build-app.js android |
Obsidian resolves plugin updates through releases/download/<version>/main.js
and reads the manifest from releases/latest/download/manifest.json, so it needs
a release whose tag is the bare version. Every stable release therefore also
publishes a small release tagged 5.4.0 holding only the three plugin files and
carrying the Latest marker; the v5.4.0 release is the main one (all platforms)
and is published explicitly without that marker.
Prerelease tags (v5.4.0-beta.1) skip the Obsidian release, so beta builds never
reach Obsidian users.
Both releases are created as drafts and published only after every build job succeeded, so a failed build never leaves an incomplete release visible.
Some platform builds only warn when a Slidev asset is absent and then ship
without Slidev support. release.yml builds those assets explicitly and asserts
them in the artifacts:
npm run build:vscode needs npm run build:slidev and
npx tsx slidev-shell/build-themes.ts to have run first.npm run build:obsidian reads dist/vscode/webview/slidev-shell-inline.html
and slidev-theme-bundles.json, so it needs a VS Code build first.npm run build:mobile needs dist/slidev-shell-vscode and dist/themes.Without secrets the APK is debug-signed (side-loadable, rejected by the Play
Store) and the AAB is skipped, matching what node mobile/build-app.js android
does locally. To produce Play Store artifacts, add these repository secrets:
ANDROID_KEYSTORE_BASE64 — base64 -i mobile/android/markdown_viewer.keystoreANDROID_KEYSTORE_PASSWORDANDROID_KEY_ALIAS (markdown_viewer)ANDROID_KEY_PASSWORDdocker run --rm -v "$PWD:/repo" --workdir /repo rhysd/actionlint:latest
142 followers · starred May 2026
4,438 followers · starred Dec 2025
1,062 followers · starred Jun 2026
607 followers · starred Apr 2026
Markdown to perfect Word in one click — Mermaid, Vega, drawio, canvas, Infographic, Graphviz, LaTeX (editable), code highlighting, local processing
TypeScript
1,896
715 commits
updated Sep 29, 2026
| Workflow | Trigger | Purpose |
|---|---|---|
ci.yml | push to main, pull requests, manual run | Unit/contract tests via npm run test:unit, installed-extension E2E via npm run test:e2e on Node.js + Playwright, plus the Chrome for Testing version matrix (chrome-matrix job) |
release.yml | push of a v<version> tag, manual run | Builds every platform and attaches the installers to the GitHub Release |
"version" in package.json and commit it on main.
Every build script copies that version into its own manifest
(chrome/manifest.json, edge/manifest.json, firefox/manifest.json,
obsidian/manifest.json, mobile/pubspec.yaml, and the VS Code
package.json), so the tag and the manifests cannot drift apart.git tag v5.4.0 && git push origin v5.4.0.
The tag must be v plus the package.json version, otherwise release.yml
stops in its prepare job before building anything.workflow_dispatch, with the
tag name as input) to rebuild a release — assets are overwritten with
gh release upload --clobber, so re-runs are safe.| Asset | Platform | Built by |
|---|---|---|
chrome-v<version>.zip | Chrome / Chromium | npm run build:chrome |
edge-v<version>.zip | Microsoft Edge | npm run build:edge |
firefox-v<version>.zip | Firefox | npm run build:firefox |
vscode-v<version>.vsix | VS Code / Open VSX | npm run build:vscode |
obsidian-v<version>.zip | Obsidian (bundle) | npm run build:obsidian |
main.js, manifest.json, styles.css | Obsidian (registry files) | npm run build:obsidian |
documd-cli-v<version>.tgz | HTML CLI (npm tarball) | npm run build:cli |
android-v<version>.apk / .aab | Mobile app | node mobile/build-app.js android |
Obsidian resolves plugin updates through releases/download/<version>/main.js
and reads the manifest from releases/latest/download/manifest.json, so it needs
a release whose tag is the bare version. Every stable release therefore also
publishes a small release tagged 5.4.0 holding only the three plugin files and
carrying the Latest marker; the v5.4.0 release is the main one (all platforms)
and is published explicitly without that marker.
Prerelease tags (v5.4.0-beta.1) skip the Obsidian release, so beta builds never
reach Obsidian users.
Both releases are created as drafts and published only after every build job succeeded, so a failed build never leaves an incomplete release visible.
Some platform builds only warn when a Slidev asset is absent and then ship
without Slidev support. release.yml builds those assets explicitly and asserts
them in the artifacts:
npm run build:vscode needs npm run build:slidev and
npx tsx slidev-shell/build-themes.ts to have run first.npm run build:obsidian reads dist/vscode/webview/slidev-shell-inline.html
and slidev-theme-bundles.json, so it needs a VS Code build first.npm run build:mobile needs dist/slidev-shell-vscode and dist/themes.Without secrets the APK is debug-signed (side-loadable, rejected by the Play
Store) and the AAB is skipped, matching what node mobile/build-app.js android
does locally. To produce Play Store artifacts, add these repository secrets:
ANDROID_KEYSTORE_BASE64 — base64 -i mobile/android/markdown_viewer.keystoreANDROID_KEYSTORE_PASSWORDANDROID_KEY_ALIAS (markdown_viewer)ANDROID_KEY_PASSWORDdocker run --rm -v "$PWD:/repo" --workdir /repo rhysd/actionlint:latest
142 followers · starred May 2026
4,438 followers · starred Dec 2025
1,062 followers · starred Jun 2026
607 followers · starred Apr 2026