Skip to content

Releases

Version 0.4.0

Added

  • OKF v0.2 base layer (checkOkfBaseLayer, on by default): checks the plain-OKF v0.2 rules LOKF subsumes (required type, Attested Computation shape, index.md/log.md structure, v0.1→v0.2 migration hints), so a bundle stays checkable without a separate OKF validator. Severity follows the spec (REQUIRED/MUST → error); a settings toggle can downgrade those to warnings mid-migration.
  • Look up a LOKF field (command): searchable reference of frontmatter fields, sourced from the schema’s own slot definitions so wording never forks.
  • Generate Obsidian affordances: three commands projecting LOKF facts into Obsidian conventions - #genre tags and ## Related wikilinks in a managed block, plus a diataxis.md Map of Content. Idempotent, marker-delimited.
  • Inline diagnostics: CodeMirror 6 extension underlines offending frontmatter values (wavy red/amber) with the finding on hover.
  • Jump-to-line from the report: finding rows are clickable, opening the note with the cursor on the offending key.
  • Key anchors on findings: new src/locator.ts maps a key path to its line/column in raw frontmatter (prerequisite for underlines/jump).
  • Incremental re-validation: editing a note re-checks just that note from the metadata cache instead of a full rescan.
  • Schema-derived vocabulary manifest (src/lokf-vocab.json, npm run build-vocab): default type/predicate/genre vocabulary now derives from the LOKF schema, adding Role and the full 15-value RelationType.
  • Concept graph + quick-switcher: in-memory index of each concept’s type/id/relations, plus “Find a concept” and “Find an orphan concept” commands.
  • Trust/lifecycle shape checks (OKF v0.2 §5): validates the shape of verified/generated, status, stale_after, sources - never their credibility depth. All warnings, on by default.
  • Frontmatter value autocomplete: EditorSuggest for type/genre/status/predicate values and relation targets.
  • Safe quick-fixes (command + vault-wide variant): applies deterministic corrections (missing base_iri terminator, type aliases, bare-string relations) in one undo step; never guesses owned values.
  • Promote body links to typed relations (command): guesses a typed relation for body links resolving to another concept, confirmed via a review dialog before writing.
  • Per-note opt-out: lokf: ignore frontmatter key silences a note while it stays a concept in the graph.
  • Disable on this device: device-local switch (never synced) that silences the plugin entirely on one device.
  • Per-rule severity escalation: settings list of rule ids whose warnings become errors; escalation only, never downgrades.
  • Report filter + finding navigation: filter box (sev:error, rule:lokf/2, ANDed, debounced) plus go-to-next/previous commands.
  • Report context menu, finding grouping, render caps: right-click actions, grouping by top-level key, and a 300-file/100-finding-per-file cap with a filter hint.
  • Ribbon icon to open the report; last scan is retained across reopens.
  • Read-only public API at app.plugins.plugins["ktl-registrar"].api: getReport(), validatePath(path), onValidated(cb).
  • Field aliasing (advanced, off by default): user=canonical pairs rename a vault’s own keys onto LOKF ones before validation.
  • Node-tested throughout: locator, vocabulary manifest, concept graph, §5 checks, autocomplete, safe fixes, body-link promotion, opt-out, severity escalation, report filter, grouping, and field aliasing all carry smoke-test coverage.

Changed

  • Severity icons in the report via setIcon instead of spelled-out words.
  • Keyboard-operable collapse/expand in the report (role="button", aria-expanded, Enter/Space, focus ring).
  • Aligned three rules with upstream LOKF PR #69: base_iri may end in #; the by actor check matches the schema’s exact pattern; http_method is no longer a recommended-field warning on a Service.
  • @codemirror/state/@codemirror/view moved to devDependencies (types only; external at runtime).
  • tsconfig.json enables resolveJsonModule for the bundled vocabulary manifest.