diff --git a/.changeset/harness-mcp-config-write-safety.md b/.changeset/harness-mcp-config-write-safety.md deleted file mode 100644 index 0600676fe..000000000 --- a/.changeset/harness-mcp-config-write-safety.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@inkeep/open-knowledge": minor ---- - -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 ()` 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. diff --git a/.changeset/pre.json b/.changeset/pre.json index d9a2d9b94..3f24f3924 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -2,14 +2,15 @@ "mode": "pre", "tag": "beta", "initialVersions": { - "@inkeep/open-knowledge-docs": "0.0.5", - "@inkeep/open-knowledge-app": "0.20.1", - "@inkeep/open-knowledge": "0.20.1", - "@inkeep/open-knowledge-core": "0.20.1", - "@inkeep/open-knowledge-desktop": "0.20.1", - "@inkeep/md-conformance": "0.0.13", + "@inkeep/open-knowledge-docs": "0.0.6", + "@inkeep/open-knowledge-app": "0.21.0", + "@inkeep/open-knowledge": "0.21.0", + "@inkeep/open-knowledge-core": "0.21.0", + "@inkeep/open-knowledge-desktop": "0.21.0", + "@inkeep/md-conformance": "0.0.14", + "@inkeep/open-knowledge-native-config": "0.0.0", "@inkeep/open-knowledge-plugin": "0.3.1", - "@inkeep/open-knowledge-server": "0.20.1" + "@inkeep/open-knowledge-server": "0.21.0" }, "changesets": [] } diff --git a/.changeset/share-button-root-fallback.md b/.changeset/share-button-root-fallback.md deleted file mode 100644 index 5d47af31f..000000000 --- a/.changeset/share-button-root-fallback.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -"@inkeep/open-knowledge-app": patch ---- - -Make sharing reachable from more places. - -Keep the editor-header Share button usable when nothing is open or selected. Previously the trigger was disabled whenever there was no active doc and no selected folder (a freshly opened project, or after deselecting everything), leaving no way to grab a link to the project as a whole. The genuinely-empty editor now defaults to sharing the content root via the folder-scope share's empty-string root sentinel, so Share is no longer a dead control just because nothing is focused. Non-shareable surfaces — asset previews, skill-bundle files, missing docs, and managed skill/template tabs — still keep the trigger disabled, since those have a target or synthetic doc name and never fall through to the root default. - -Add a Share item to the file-tree right-click menu. It appears for folders and docs (never assets) and only when the project has a GitHub remote, reusing the same share-link path as the header button — folder rows share the folder, doc rows share the doc, and the link is copied to the clipboard with a confirmation toast. - -Make the project-root context menu reachable. Right-clicking the project-root header row (the project name at the top of the sidebar) previously did nothing — it was suppressed as an interactive control. It now opens the existing project-scoped menu, which gains a Share item that shares the content root (and shows alongside New file/folder, Reveal, Copy path, etc.). Root Share is likewise gated on a GitHub remote. diff --git a/.changeset/soft-attachments-travel.md b/.changeset/soft-attachments-travel.md deleted file mode 100644 index 294820f43..000000000 --- a/.changeset/soft-attachments-travel.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@inkeep/open-knowledge": minor ---- - -Add a project setting for attachment upload placement, including Settings controls and upload routing for content-root and current-folder attachment directories. diff --git a/.changeset/unify-doc-existence-oracle.md b/.changeset/unify-doc-existence-oracle.md deleted file mode 100644 index c2b24f51f..000000000 --- a/.changeset/unify-doc-existence-oracle.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@inkeep/open-knowledge-server": patch -"@inkeep/open-knowledge": patch ---- - -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. diff --git a/bun.lock b/bun.lock index 74e233433..fe87f942d 100644 --- a/bun.lock +++ b/bun.lock @@ -19,7 +19,7 @@ }, "docs": { "name": "@inkeep/open-knowledge-docs", - "version": "0.0.5", + "version": "0.0.6", "dependencies": { "@codemirror/commands": "^6.10.3", "@codemirror/lang-markdown": "^6.5.0", @@ -72,7 +72,7 @@ }, "packages/app": { "name": "@inkeep/open-knowledge-app", - "version": "0.20.1", + "version": "0.21.0", "dependencies": { "@codemirror/autocomplete": "^6.20.1", "@codemirror/commands": "^6.10.3", @@ -216,7 +216,7 @@ }, "packages/cli": { "name": "@inkeep/open-knowledge", - "version": "0.20.1", + "version": "0.21.0", "bin": { "open-knowledge": "dist/cli.mjs", "ok": "dist/cli.mjs", @@ -260,7 +260,7 @@ }, "packages/core": { "name": "@inkeep/open-knowledge-core", - "version": "0.20.1", + "version": "0.21.0", "dependencies": { "@handlewithcare/remark-prosemirror": "0.1.5", "@opentelemetry/api": "^1.9.0", @@ -336,7 +336,7 @@ }, "packages/desktop": { "name": "@inkeep/open-knowledge-desktop", - "version": "0.20.1", + "version": "0.21.0", "dependencies": { "@inkeep/open-knowledge": "workspace:*", "@inkeep/open-knowledge-core": "workspace:*", @@ -378,7 +378,7 @@ }, "packages/server": { "name": "@inkeep/open-knowledge-server", - "version": "0.20.1", + "version": "0.21.0", "dependencies": { "@hocuspocus/server": "4.0.0-rc.1", "@inkeep/open-knowledge-core": "workspace:*", diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index a88a0cda9..3e1155a07 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,5 +1,11 @@ # @inkeep/open-knowledge-docs +## 0.0.6 + +### Patch Changes + +- @inkeep/open-knowledge-core@0.21.0 + ## 0.0.5 ### Patch Changes diff --git a/docs/package.json b/docs/package.json index 84f63a619..6952a7be0 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,6 +1,6 @@ { "name": "@inkeep/open-knowledge-docs", - "version": "0.0.5", + "version": "0.0.6", "license": "GPL-3.0-or-later", "private": true, "packageManager": "bun@1.3.13", diff --git a/packages/app/package.json b/packages/app/package.json index 6e4dd9980..a3f2a14fd 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "@inkeep/open-knowledge-app", - "version": "0.20.1", + "version": "0.21.0", "license": "GPL-3.0-or-later", "private": true, "type": "module", diff --git a/packages/cli/package.json b/packages/cli/package.json index 0e1132ffa..78ec5442d 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@inkeep/open-knowledge", - "version": "0.20.1", + "version": "0.21.0", "license": "GPL-3.0-or-later", "private": false, "type": "module", diff --git a/packages/core/package.json b/packages/core/package.json index a6c44f8e1..7fa792943 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@inkeep/open-knowledge-core", - "version": "0.20.1", + "version": "0.21.0", "license": "GPL-3.0-or-later", "private": true, "type": "module", diff --git a/packages/desktop/package.json b/packages/desktop/package.json index 0ac49d53d..e1803681f 100644 --- a/packages/desktop/package.json +++ b/packages/desktop/package.json @@ -1,7 +1,7 @@ { "name": "@inkeep/open-knowledge-desktop", "productName": "OpenKnowledge", - "version": "0.20.1", + "version": "0.21.0", "license": "GPL-3.0-or-later", "private": true, "type": "module", diff --git a/packages/server/assets/skills/discovery/SKILL.md b/packages/server/assets/skills/discovery/SKILL.md index 65b891c7a..d2cd6c6ec 100644 --- a/packages/server/assets/skills/discovery/SKILL.md +++ b/packages/server/assets/skills/discovery/SKILL.md @@ -3,7 +3,7 @@ name: open-knowledge-discovery description: "Read when the user asks what OpenKnowledge is, wants to install it on a repository, wants to share an OpenKnowledge project with collaborators, or asks how `ok init` / `ok cowork` / OK Desktop set up a project. Do NOT load to perform OpenKnowledge reads/writes — the runtime guidance for editing markdown inside an initialized OK project ships as a separate project-local skill at `.claude/skills/open-knowledge/` whenever `ok init` runs. If the user appears to be editing markdown inside a `.ok/` project and this is the only OK skill loaded, advise them to re-run `ok init` to install the project-local skill." compatibility: "Any agent host — no MCP server required. Pure discovery + install guidance." metadata: - version: "0.20.1" + version: "0.21.0" author: "Inkeep" repository: "https://github.com/inkeep/open-knowledge" --- diff --git a/packages/server/assets/skills/project/SKILL.md b/packages/server/assets/skills/project/SKILL.md index c06ada956..d77cb5c72 100644 --- a/packages/server/assets/skills/project/SKILL.md +++ b/packages/server/assets/skills/project/SKILL.md @@ -3,7 +3,7 @@ name: open-knowledge description: "Authoritative agent-runtime contract for working inside an OpenKnowledge project — a markdown-CRDT knowledge base exposed over MCP. Use whenever reading, listing, searching, or editing any `.md` or `.mdx` file in the project, and before any `mcp__open-knowledge__*` tool call (`exec`, `search`, `write`, `edit`, and the rest). Installed by `ok init`, so its presence means this is an OpenKnowledge project and it governs every markdown file here. Covers the read/write tool surface, grounding and linking rules, folder/template conventions, the live browser preview, and the rule that OK's MCP tools — never native file tools — handle in-scope markdown." compatibility: "Claude Code, Claude Desktop, Claude Cowork, Claude.ai web. Requires OpenKnowledge MCP server + code execution." metadata: - version: "0.20.1" + version: "0.21.0" author: "Inkeep" repository: "https://github.com/inkeep/open-knowledge" --- diff --git a/packages/server/assets/skills/write-skill/SKILL.md b/packages/server/assets/skills/write-skill/SKILL.md index 81456a5a8..df9f0de14 100644 --- a/packages/server/assets/skills/write-skill/SKILL.md +++ b/packages/server/assets/skills/write-skill/SKILL.md @@ -3,7 +3,7 @@ name: open-knowledge-write-skill description: "Use when the user wants to create, author, write, or design a new Agent Skill (a SKILL.md) — for OpenKnowledge or for their editors — including requests like 'help me write a skill', 'make a skill that…', 'turn this workflow into a skill', or improving an existing skill's triggering and discipline. Also use when capturing reusable agent guidance that should live as an installable skill rather than a one-off prompt. Covers choosing scope (project vs global), the SKILL.md frontmatter contract, progressive-disclosure structure, evaluating the skill, and installing it into the user's editors." compatibility: "OpenKnowledge project recommended (uses the `write` / `edit` / `install` MCP verbs). Authoring + validation are pure file ops; live preview + eval want a running server (`ok start`)." metadata: - version: "0.20.1" + version: "0.21.0" author: "Inkeep" repository: "https://github.com/inkeep/open-knowledge" --- diff --git a/packages/server/package.json b/packages/server/package.json index 07e5178d4..f380eac6c 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,6 +1,6 @@ { "name": "@inkeep/open-knowledge-server", - "version": "0.20.1", + "version": "0.21.0", "license": "GPL-3.0-or-later", "private": true, "type": "module",