From dd6ba8a047bd4295fbd7294b871935a2e2d98d53 Mon Sep 17 00:00:00 2001 From: "inkeep-internal-ci[bot]" <259778081+inkeep-internal-ci[bot]@users.noreply.github.com> Date: Thu, 23 Jul 2026 13:56:39 +0000 Subject: [PATCH] main reset: post-stable v0.38.0 (#2863) GitOrigin-RevId: 606c9dc5f4c4601576f797970e9daee09311d6e2 --- .changeset/agent-session-idle-lru-eviction.md | 5 ----- .changeset/agent-write-batch-endpoint.md | 5 ----- .changeset/desktop-windows-linux-port.md | 10 ---------- .changeset/error-log-raw-err-convention.md | 5 ----- .changeset/in-app-feedback-form.md | 5 ----- .changeset/incremental-search-corpus.md | 5 ----- .changeset/parse-pool-offload.md | 5 ----- .changeset/pre.json | 14 +++++++------- .changeset/watcher-ring-lifecycle-breadcrumbs.md | 5 ----- docs/CHANGELOG.md | 6 ++++++ docs/package.json | 2 +- packages/app/package.json | 2 +- packages/cli/package.json | 2 +- packages/core/package.json | 2 +- packages/desktop/package.json | 2 +- packages/server/assets/skills/discovery/SKILL.md | 2 +- packages/server/assets/skills/project/SKILL.md | 2 +- packages/server/assets/skills/write-skill/SKILL.md | 2 +- packages/server/package.json | 2 +- 19 files changed, 22 insertions(+), 61 deletions(-) delete mode 100644 .changeset/agent-session-idle-lru-eviction.md delete mode 100644 .changeset/agent-write-batch-endpoint.md delete mode 100644 .changeset/desktop-windows-linux-port.md delete mode 100644 .changeset/error-log-raw-err-convention.md delete mode 100644 .changeset/in-app-feedback-form.md delete mode 100644 .changeset/incremental-search-corpus.md delete mode 100644 .changeset/parse-pool-offload.md delete mode 100644 .changeset/watcher-ring-lifecycle-breadcrumbs.md diff --git a/.changeset/agent-session-idle-lru-eviction.md b/.changeset/agent-session-idle-lru-eviction.md deleted file mode 100644 index bb760279..00000000 --- a/.changeset/agent-session-idle-lru-eviction.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@inkeep/open-knowledge": patch ---- - -Agent write bursts across many documents no longer stall with "server busy" (503) once 256 documents have been touched. At the session cap the server now evicts the least-recently-used idle agent session — flushing its document to disk first — so large bursts stream through a bounded working set. Sessions used within the last few seconds are never evicted, and a 503 is still returned only when every session is genuinely in use. Undo history for an evicted session ends with it (same as a disconnect); a later write on that document starts a fresh session under the same agent identity, so edit attribution is unaffected. New diagnostics: an `ok.sessions.evictions_total` OpenTelemetry counter and an `agentSessionEvictions` counter on `GET /api/metrics/reconciliation`. diff --git a/.changeset/agent-write-batch-endpoint.md b/.changeset/agent-write-batch-endpoint.md deleted file mode 100644 index 3ad36d9e..00000000 --- a/.changeset/agent-write-batch-endpoint.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@inkeep/open-knowledge": patch ---- - -Add `POST /api/agent-write-batch`: apply up to 100 document writes in one HTTP call. Each entry uses the same write semantics as `POST /api/agent-write-md` (create or update, append/prepend/replace, per-entry summary, `.mdx` extension on create) and every entry is attributed to the calling agent. Outcomes are per-entry — a reserved doc name, merge conflict, or disk failure fails only that entry while its siblings land — and the response reports per-entry results with broken-link validation that resolves links between documents written in the same batch. The batch amortizes what N single calls pay N times: one round-trip, one presence/focus update, one admitted-doc-set scan for link validation, and one coalesced shadow-repo commit. The per-document mermaid render validation and lint advisories stay on the single-write endpoint. diff --git a/.changeset/desktop-windows-linux-port.md b/.changeset/desktop-windows-linux-port.md deleted file mode 100644 index 3a9f8723..00000000 --- a/.changeset/desktop-windows-linux-port.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -"@inkeep/open-knowledge": minor ---- - -The OpenKnowledge desktop app can now be built for Windows and Linux. This first slice makes the app buildable and full-featured on both platforms — installers are not published yet (they'll appear on the releases page after internal QA): - -- Windows: one-click per-user NSIS installers (x64 + arm64) that put the bundled `ok` CLI on your PATH and register `openknowledge://` links. Linux: AppImage and deb packages (x64 + arm64); the deb installs `/usr/bin/ok` and registers links system-wide, while AppImages self-register a link handler each time they run. -- Windows and Linux windows get proper chrome: a frameless titlebar with native window controls and an in-app menu bar (File / Edit / View / Window / Help) that mirrors the macOS menus. -- Everything the Mac app wires up on your machine now works on Windows and Linux too: MCP entries for your editors (Claude, Cursor, Codex, and friends), Agent Skills, and `ok` launching the desktop app when installed. -- The built-in terminal stays macOS-only for now; its buttons and settings are hidden on other platforms instead of failing. diff --git a/.changeset/error-log-raw-err-convention.md b/.changeset/error-log-raw-err-convention.md deleted file mode 100644 index 8cdf2b40..00000000 --- a/.changeset/error-log-raw-err-convention.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@inkeep/open-knowledge": patch ---- - -Error and warn log lines across the server, CLI, and desktop main process now attach the raw error under the `err` key, so on-disk JSONL logs (what bug-report bundles collect) carry the full name/message/stack instead of a pre-stringified message with no stack. API error log lines additionally carry the request's `x-request-id` for correlation with the access log and client reports, the MCP stdio logger serializes Error values instead of flattening them to `{}`, and the desktop root logger gained explicit `err` serializers. No wire-shape changes. diff --git a/.changeset/in-app-feedback-form.md b/.changeset/in-app-feedback-form.md deleted file mode 100644 index 48427677..00000000 --- a/.changeset/in-app-feedback-form.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@inkeep/open-knowledge": minor ---- - -Add an in-app feedback form. A new "Send feedback" action in the Resources menu opens a short form to rate OpenKnowledge (good / not great), pick what got in the way, add a message, attach up to three screenshots, and optionally share an email for follow-up. Submissions file a ticket to the OpenKnowledge team's feedback intake. diff --git a/.changeset/incremental-search-corpus.md b/.changeset/incremental-search-corpus.md deleted file mode 100644 index 9af5d4a1..00000000 --- a/.changeset/incremental-search-corpus.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@inkeep/open-knowledge": patch ---- - -Workspace search now maintains its full-text index incrementally. Previously any file change invalidated the whole search corpus and the next search rebuilt the entire index from scratch on the server's event loop — on a large workspace, a write burst with interleaved searches meant repeated full re-indexing. The server now diffs the document set against the live index and applies per-document insert/update/remove, so one write re-indexes one document. A from-scratch rebuild remains as the cold-start path and as an automatic fallback whenever the incremental patch cannot be proven consistent. diff --git a/.changeset/parse-pool-offload.md b/.changeset/parse-pool-offload.md deleted file mode 100644 index d535f313..00000000 --- a/.changeset/parse-pool-offload.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@inkeep/open-knowledge": patch ---- - -Agent writes no longer block the server on large-document markdown parsing. The parse that turns a written document's markdown into editor structure now runs on a bounded worker-thread pool for documents past 8KB, so a big write (or rollback, edit, frontmatter patch) no longer freezes every other in-flight agent tool call while it parses — the event-loop stall for a concurrent 1MB write drops from roughly 2 seconds to roughly half a second, and small-write latency under load matches idle latency. Small documents keep the faster inline path, output is byte-identical either way, and any worker failure transparently falls back to the previous inline behavior. diff --git a/.changeset/pre.json b/.changeset/pre.json index 4ba4589d..7c1d2125 100644 --- a/.changeset/pre.json +++ b/.changeset/pre.json @@ -2,15 +2,15 @@ "mode": "pre", "tag": "beta", "initialVersions": { - "@inkeep/open-knowledge-docs": "0.0.35", - "@inkeep/open-knowledge-app": "0.37.3", - "@inkeep/open-knowledge": "0.37.3", - "@inkeep/open-knowledge-core": "0.37.3", - "@inkeep/open-knowledge-desktop": "0.37.3", - "@inkeep/md-conformance": "0.0.43", + "@inkeep/open-knowledge-docs": "0.0.36", + "@inkeep/open-knowledge-app": "0.38.0", + "@inkeep/open-knowledge": "0.38.0", + "@inkeep/open-knowledge-core": "0.38.0", + "@inkeep/open-knowledge-desktop": "0.38.0", + "@inkeep/md-conformance": "0.0.44", "@inkeep/open-knowledge-native-config": "0.0.0", "@inkeep/open-knowledge-plugin": "0.3.1", - "@inkeep/open-knowledge-server": "0.37.3" + "@inkeep/open-knowledge-server": "0.38.0" }, "changesets": [] } diff --git a/.changeset/watcher-ring-lifecycle-breadcrumbs.md b/.changeset/watcher-ring-lifecycle-breadcrumbs.md deleted file mode 100644 index 1a4d4826..00000000 --- a/.changeset/watcher-ring-lifecycle-breadcrumbs.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@inkeep/open-knowledge": patch ---- - -Bug-report bundles now capture watcher decisions and lifecycle breadcrumbs. The file watcher keeps a bounded in-memory ring of its last 256 decisions — dispatched events, self-write skips, and drops with a bounded reason (symlink escape, filter exclusion, unreadable/raced file, reserved doc, stat failure) — served by a new loopback-only `GET /api/metrics/watcher-recent` endpoint and staged into the full diagnose bundle as `state/watcher-recent.jsonl` (one decision per line, paths pre-normalized; doc names anonymized by the existing `--redact` pass). Drops also increment an `ok.file_watcher.drops` counter and roll up into a periodic drop-count summary log line, so "my file didn't sync" is diagnosable from a bundle. Near-silent critical subsystems gained debug-level lifecycle breadcrumbs keyed on doc/agent/session: agent-session create/join/close/undo/write transitions, bridge-watchdog tolerance/path-B/split-brain firings plus a content-free diff summary (lengths and first-divergence offset, never document bytes) on every emitted invariant violation, and the client provider pool's reconnect/recycle path (recycle timers, mismatch buffer capture, IDB clears, replay fallbacks) via structured console breadcrumbs the log forwarder ships to the server log. The pino file sink now admits debug records by default (`OK_FILE_LEVEL` overrides; terminals keep the base level) so bundles capture the breadcrumbs without extra terminal noise. diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 0d9734ad..b5e72fd0 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -1,5 +1,11 @@ # @inkeep/open-knowledge-docs +## 0.0.36 + +### Patch Changes + +- @inkeep/open-knowledge-core@0.38.0 + ## 0.0.35 ### Patch Changes diff --git a/docs/package.json b/docs/package.json index 979f2d27..4d61b15b 100644 --- a/docs/package.json +++ b/docs/package.json @@ -1,6 +1,6 @@ { "name": "@inkeep/open-knowledge-docs", - "version": "0.0.35", + "version": "0.0.36", "license": "GPL-3.0-or-later", "private": true, "packageManager": "pnpm@10.33.0", diff --git a/packages/app/package.json b/packages/app/package.json index 3ea5bdaf..15c1a49f 100644 --- a/packages/app/package.json +++ b/packages/app/package.json @@ -1,6 +1,6 @@ { "name": "@inkeep/open-knowledge-app", - "version": "0.37.3", + "version": "0.38.0", "license": "GPL-3.0-or-later", "private": true, "type": "module", diff --git a/packages/cli/package.json b/packages/cli/package.json index 29b320fd..fb061b4e 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,6 @@ { "name": "@inkeep/open-knowledge", - "version": "0.37.3", + "version": "0.38.0", "license": "GPL-3.0-or-later", "private": false, "type": "module", diff --git a/packages/core/package.json b/packages/core/package.json index 7c036e33..921c0226 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { "name": "@inkeep/open-knowledge-core", - "version": "0.37.3", + "version": "0.38.0", "license": "GPL-3.0-or-later", "private": true, "type": "module", diff --git a/packages/desktop/package.json b/packages/desktop/package.json index 652f0448..c4360513 100644 --- a/packages/desktop/package.json +++ b/packages/desktop/package.json @@ -1,7 +1,7 @@ { "name": "@inkeep/open-knowledge-desktop", "productName": "OpenKnowledge", - "version": "0.37.3", + "version": "0.38.0", "license": "GPL-3.0-or-later", "homepage": "https://openknowledge.ai", "author": { diff --git a/packages/server/assets/skills/discovery/SKILL.md b/packages/server/assets/skills/discovery/SKILL.md index 730ced6f..5ec3a6bb 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.37.3" + version: "0.38.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 f9c1392e..67e4e627 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, editing, or linting any `.md` or `.mdx` file in the project, and before any `mcp__open-knowledge__*` tool call (`exec`, `search`, `write`, `edit`, `lint`, 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.37.3" + version: "0.38.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 1dce6986..c25af624 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.37.3" + version: "0.38.0" author: "Inkeep" repository: "https://github.com/inkeep/open-knowledge" --- diff --git a/packages/server/package.json b/packages/server/package.json index 9432ca38..7735b58d 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,6 +1,6 @@ { "name": "@inkeep/open-knowledge-server", - "version": "0.37.3", + "version": "0.38.0", "license": "GPL-3.0-or-later", "private": true, "type": "module",