Skip to content

Releases

Version 0.3.0

Added

  • Bundle root folders: a vault can hold several independent bundles as sibling project folders instead of one bundle per vault; a misconfigured root is reported rather than silently producing an empty “clean” bundle.
  • Scaffold command targets the active note’s bundle, asking when several are configured and none is open.
  • Settings shortcut to install OKF Enforcer from the community-plugin browser.
  • Unit tests for bundle-resolution logic, extracted into plain Obsidian-free functions.
  • Golden-fixture bundle checks in npm run smoke-test against a frozen scaffolding template and this repo’s own .lokf/knowledge/.
  • This repo’s .lokf/knowledge/ bundle is now maintained by lokf-agent-skills installed at run time rather than committed.
  • README rewrite: trust-model framing shared with lokf-agent-skills, install section, repo layout, credits.
  • lint-and-docs.yaml: ShellCheck, actionlint, markdownlint, lychee link-checking, and codespell on every push/PR plus weekly.
  • .markdownlint-cli2.jsonc adopted from lokf-agent-skills, with MD024 scoped to siblings_only so Keep a Changelog headings pass.
  • .github/dependabot.yml: weekly updates for pinned action SHAs, npm devDependencies, and the .lokf/ sidecar’s Python toolchain.
  • AI_COVENANT.md, CODE_OF_CONDUCT.md (Contributor Covenant 2.1), and a PR template scope checkbox/checklist, all shared with lokf-agent-skills.

Changed

  • Scaffold command writes publisher.id as person/<slug> to agree with type: Person (was org/<slug>).
  • README/CONTRIBUTING clarify bundle-root defaults, PR-based release flow, and Node 20+ requirement.
  • Type-vocabulary lookups are cached instead of rebuilt per note.
  • Renamed knowledge-validate.yaml to knowledge-registrar.yaml, matching upstream lokf-agent-skills v0.12.0; cross-references updated across docs.
  • SECURITY.md now inventories every workflow and the librarian’s privilege split.
  • .markdownlint-cli2.jsonc disables MD060 (padded-header/bare-separator tables used throughout this repo).

Fixed

  • An unreadable note was silently dropped mid-scan yet still counted as “scanned”; now gets its own report row and separate count.
  • An unreadable root index.md no longer aborts an entire scan; scaffold command refuses to write when it can’t read the file first.
  • The knowledge-librarian’s prompt-building script executed part of its own prompt as shell commands due to an unescaped heredoc; re-scaffolded.
  • .lokf/knowledge/ drift: two concepts described a nonexistent command, one misattributed scan batching to the wrong file.
  • A stale, frontmatter-free planning doc under .lokf/knowledge/ crashed lokf validate for the whole bundle; removed.
  • LOFK -> LOKF transposition fixed in manifest.json, package.json, and community-plugin-entry.json.
  • A folder in Excluded folders written with a trailing/leading slash, whitespace, or ./ prefix silently excluded nothing; now normalized like Bundle root folders.
  • Base_iri authority check compared URL.host (includes :port) against the denylist, so a ported hostname bypassed it; now compares hostname.
  • A relation field written as a bare scalar instead of a list passed validation clean even though the schema requires an array; now warned.
  • type set to a number, boolean, list, or mapping produced no finding at all; a list/mapping now gets its own shape warning.
  • Validate active note went completely silent when run on an excluded or out-of-bundle note; now always produces a Notice.
  • The report panel’s “N clean” count undercounted by subtracting bundle-level findings that were never scanned files to begin with.
  • Various markdownlint fixes (MD060 tables, MD001 heading skip, MD032 spaced-dash-as-list-item).

Security

  • release.yml passes the pushed tag through the environment instead of interpolating it into a shell command, closing a script-injection path.
  • knowledge-librarian.yaml no longer runs a repository variable’s content as a shell command; runs a pinned wrapper script and fails if the agent writes outside .lokf/knowledge/.
  • knowledge-librarian.yaml split into two jobs so the agent and the write-scoped token never meet: refresh (read-only, third-party code) hands a patch artifact to publish (no agent code, holds write access). Ported from lokf-agent-skills v0.11.0.
  • knowledge-librarian.sh parses AGENT_CLI into a quoted argv array instead of expanding it unquoted, closing a shell-injection path (SC2086).
  • The scheduled librarian run is armed by a dedicated KNOWLEDGE_LIBRARIAN_ENABLED repository variable rather than inferred from AGENT_CLI being set.