Search...Search plugins and themes...
⌘K
Sign in
  • Get started
  • Download
  • Pricing
  • Enterprise
  • Account
  • Obsidian
  • Overview
  • Sync
  • Publish
  • Canvas
  • Mobile
  • Web Clipper
  • CLI
  • Learn
  • Help
  • Developers
  • Changelog
  • About
  • Roadmap
  • Blog
  • Resources
  • System status
  • License overview
  • Terms of service
  • Privacy policy
  • Security
  • Community
  • Plugins
  • Themes
  • Discord
  • Forum / 中文论坛
  • Merch store
  • Brand guidelines
Follow us
DiscordTwitterBlueskyThreadsMastodonYouTubeGitHub
© 2026 Obsidian

ZotFlow Enhancement Pack

Xianpi DuanXianpi Duan464 downloads

Provides optional offline resources for ZotFlow reading features.

Add to Obsidian
  • Overview
  • Scorecard
  • Updates4

ZotFlow Enhancement Pack is an optional companion plugin that supplies the large, offline resources required by ZotFlow reading features such as Structured Document Text generation.

The resource binaries are not tracked in Git. npm run build downloads the exact Document Worker archive pinned by document-worker.lock.json, verifies the downloaded archive, and appends the gzip/base64 data to the released main.js as a marked comment trailer. The trailer includes a self-describing JSON resource directory and a fixed 112-byte v2 footer. The executable entry only tells users the Pack can remain disabled; it contains no resource API or resource index.

Development

npm install
npm run build

Downloaded archives and extracted resources are stored under .cache/ and are ignored by Git.

To synchronize from a ZotFlow checkout without changing the Pack version:

npm run sync:document-worker -- \
  --zotflow-lock ../document-worker.lock.json \
  --zotflow-commit local \
  --bump none

In CI, ZotFlow sends a document-worker-updated repository dispatch event. The Pack workflow downloads the lock from that exact ZotFlow commit, updates the Pack dev branch when necessary, creates the next stable patch commit and tag, verifies a clean build, and creates a Draft Release. Publish that release before merging the exact stable tag into Pack master.

Document Worker/resource changes are eligible for the automatic patch bump. Only the current offline protocol is accepted. Unsupported contracts stop the workflow. sync compares resource paths, sizes and existing content digests, plus SDT output versions, against the source lock. Manual workflow refs are resolved to an immutable ZotFlow commit before downloading the lock.

Beta releases

dev is the only long-lived development branch. master contains only published stable Pack versions. To preview or publish a manual Pack beta from a clean, synchronized dev branch:

npm run beta:next -- patch
npm run beta -- patch

The publish command calculates the next x.y.z-beta.N, creates an annotated tag, and pushes only the tag. The beta workflow writes prerelease versions only inside its runner and publishes a non-draft prerelease.

ZotFlow beta releases also dispatch their exact compatibility contract to this repository. If Pack master or an existing Pack beta is compatible, the request is a no-op. Otherwise automation commits only the new resource lock to Pack dev, creates the next beta patch tag with the same helper, and dispatches the tag release workflow. No beta version commit or persistent beta branch is created.

Runtime contract

Install the Pack and keep it disabled. ZotFlow reads the installed main.js through the vault adapter when an SDT resource is first needed. It never enables or executes the Pack plugin to access its resources.

ZotFlow validates the v2 directory and exact Document Worker compatibility, snapshots the compressed component, and decompresses requested resources in a service inside its existing ZotFlow Worker, exposed through its existing Comlink bridge. Document Worker consumers read the cached Blobs locally; the main thread creates URLs only for consumers that need them. ZotFlow releases resources after their consumers end. Updates never replace resources inside an existing Worker session. There are no runtime downloads and no global registry.

The Pack version (currently 2.0.0) is separate from protocol 2.0 and the generated document's SDT pack/schema versions. The Pack and ZotFlow are developed and released against this single resource contract.

Build and release verification

npm run build prepares pinned inputs, builds the offline container, then runs verify:pack and test:protocol. All selected resources are read back from the final main.js and checked against the lock before provenance attestation or Draft Release creation. Stable tags create Draft Releases; beta tags create non-draft prereleases.

Only ZIP downloads/cache reads and final resource verification scan binary contents for integrity. Extracted cache preparation checks file existence and size; packaging checks size. The single postbuild verification hashes each decoded resource against its pinned digest. A same-size damaged cache therefore fails final verification; regenerate the affected extracted cache before rebuilding. Watch builds verify each output themselves.

The protocol uses three digest types: archive SHA-256 (build only), per-resource SHA-256, and directory SHA-256 (also the runtime generation ID). It has no lock-file or resource-list digest. ZotFlow compares resource metadata directly with its pinned list and verifies each requested resource once, without a second CRC32 pass. With eight resources, a cached production build computes 10 SHA-256 digests (excluding tests); initial runtime use of all resources computes nine.

The startup probe helper is a development experiment. Its generated probe files intentionally contain filler, not a valid resource package, and must not be published as release artifacts.

HealthExcellent
ReviewSatisfactory
About
Supply large offline resources required by ZotFlow reading features such as Structured Document Text by embedding gzip/base64 assets into the plugin build. Expose a runtime API at window.__zotflowEnhancementPackV1 that delivers compatibility metadata and embedded payloads with no runtime downloads.
DataIntegrationsDevelopers
Details
Current version
2.1.0
Last updated
3 weeks ago
Created
Last month
Updates
4 releases
Downloads
464
Compatible with
Obsidian 1.0.0+
Platforms
Desktop, Mobile
License
0BSD
Report bugRequest featureReport plugin
Sponsor
Buy Me a Coffee
Author
Xianpi DuanXianpi Duanduanxianpi
GitHubduanxianpi
  1. Community
  2. Plugins
  3. Data
  4. ZotFlow Enhancement Pack

Related plugins

BRAT

Easily install a beta version of a plugin for testing.

Local REST API with MCP

Unlock your automation needs by interacting with your notes over a secure REST API.

Terminal

Integrate consoles, shells, and terminals.

Sync Engine

The extensible vault synchronization engine: Fast · Free · Reliable. Supports WebDAV, S3, and Google Drive.

Backlink Cache

Store backlink cache to speed up `app.metadataCache.getBacklinksForFile`.

Oura Ring

Import Oura Ring data into a note.

Claudian

Embeds Claude Code/Codex and other local Agents as AI collaborators in your vault.

Self-hosted LiveSync

Sync vaults securely to self-hosted servers or WEBRTC.

LanguageTool Integration

Advanced grammar and spell checking, powered by LanguageTool.

Fast Note Sync

Real-time sync of your vaults across server, mobile, and web; shareable with anyone; supports REST and MCP integrations to build your personal AI knowledge base.