OpenKnowledge

v0.21.0

Released Jun 30, 2026. Part of the OpenKnowledge changelog.

Minor Changes

  • Make MCP server registration non-destructive and format-preserving. ok init and the desktop reclaim sweeps now only ever add OpenKnowledge's own entry to a harness config: comments, formatting, key order, value types, and byte-level encoding (BOM, line endings, trailing newline) are preserved. A config that can't be parsed safely — invalid JSON/TOML, a duplicate server block, or an oversized file — is left byte-for-byte untouched and reported as left unchanged (<reason>) rather than being reset or rewritten. Codex config.toml is edited through a new napi-rs toml_edit addon so 64-bit integers and microsecond datetimes are no longer mis-flagged, and symlinked configs are written through to their real target instead of being replaced.
  • Add a project setting for attachment upload placement, including Settings controls and upload routing for content-root and current-folder attachment directories.

Patch Changes

  • Stop the file-watcher's indexing lag from making freshly-written docs look missing across link, title, and dead-link results. The file index the watcher maintains can lag an in-session write — or permanently drop the create event for a file written into a just-created subfolder — which made a brand-new doc render as a raw red-link name (instead of its title) and could flag a valid link to it as dead, until a server restart. Two complementary fixes close the gap: doc-existence now also trusts the link graph (updated in-process on every write), and the agent write/edit/frontmatter-patch handlers register the doc they just wrote into the file index immediately, mirroring page creation. Both paths honor content-scope exclusions, so a gitignore/okignore'd doc never leaks its title through these endpoints.

View v0.21.0 on GitHub