Releases: inkeep/open-knowledge
v0.20.0-beta.4
Delta since previous beta (v0.20.0-beta.3) — 2 new changesets.
Patch Changes
-
Clarify the skills import prompt. The one-time banner now states what Import actually does: it moves the editor-dir skills into
.ok/skillsand replaces the.claude,.codex, etc. copies with symlinks back to it, so the knowledge base is the single place to edit them and every editor stays in sync. It also flags the consequences a user needs before clicking: if those folders are committed to git the change should be reviewed, and symlinks can behave differently on some editors and on Windows. -
Stop two ways agents get derailed around the skill surface.
-
The
skillsMCP tool now short-circuits OpenKnowledge's own built-in skills instead of 404-ing. An agent told to "load the open-knowledge skill" would callskills({ name: "open-knowledge" }), hit a bareSkill not found., and fall back to cat-ing the bundled SKILL.md. The built-ins (open-knowledge,open-knowledge-discovery,open-knowledge-write-skill) are runtime agent skills projected into editor host dirs, never KB content skills, so a READ aimed at one now returns a teaching error explaining it is already in the agent's loaded skill list and is not fetched through this tool. User-authoredopen-knowledge-pack-*skills are unaffected, and the tool description states the boundary up front. -
The project SKILL.md escape hatch now tells agents that their initial tool list is not exhaustive: some clients (notably Codex) defer MCP tools behind a lazy
tool_searchstep, somcp__open-knowledge__*is absent until discovered. Absence from the visible list means "not discovered yet," not "not registered" — agents must run tool discovery before invoking the native-tools escape hatch.
-
v0.20.0-beta.3
Delta since previous beta (v0.20.0-beta.2) — 1 new changeset.
Patch Changes
- Docked terminal: an Open in terminal launch no longer prints a raw
command not found. The launch gate now writes the<bin> '<prompt>'command only when a PATH probe confirms the CLI is present. On a flakyunknownprobe it re-probes once; anot-foundverdict, a still-unknownre-probe, or an IPC-level probe failure all suppress the write and surface the existing missing-CLI banner instead. This applies to Codex / Cursor / OpenCode (viacliPreflight) and to Claude (gated on the freshclaudePreflightrecheck it already runs). The trade-off is a rare false-negative — an installed CLI whose probe flakes twice won't auto-launch — in exchange for a guaranteed-clean terminal.- @inkeep/open-knowledge-core@0.19.3-beta.0
- @inkeep/open-knowledge-server@0.19.3-beta.0
v0.20.0-beta.2
Delta since previous beta (v0.20.0-beta.1) — 1 new changeset.
Patch Changes
- Fix a bug where the same file could open in two tabs at once. Clicking a sidebar file that is already open in another tab now focuses that existing tab instead of opening a duplicate — including when a blank "New Tab" placeholder is the active tab (the active placeholder is consumed). The same focus-in-place behavior applies to folder and asset tabs. Tabs restored from a saved session that already contain two views of one file are left untouched.
- @inkeep/open-knowledge-core@0.19.3-beta.0
- @inkeep/open-knowledge-server@0.19.3-beta.0
v0.20.0-beta.1
Delta since previous beta (v0.20.0-beta.0) — 1 new changeset.
Patch Changes
- Fix Open Knowledge Desktop offering to set up a project inside a subfolder of a linked git worktree. Picking a subdirectory (for example
public/open-knowledge) inside agit worktree addcheckout misclassified it as a worktree root and showed "Setup Open Knowledge in this folder" in place, scaffolding.ok/in the subfolder instead of promoting to the git root. Subfolders of a linked worktree now correctly fall through to git-root promotion; only the worktree root itself is treated as a standalone project.
v0.20.0-beta.0
Delta since previous beta (v0.19.3-beta.0) — 12 new changesets.
Patch Changes
- Rename the
ok install-skillCLI command to a deliberately hidden, unadvertisedok cowork. The old name implied an automatic install it never performed — it builds theopenknowledge.skillbundle and opens the Claude Desktop App for a manual upload (the only path to the separate Skills list Claude Chat & Cowork read, whichok init's editor wiring can't reach). The command is now registered hidden (absent fromok --help), andok initno longer pushes a hint toward it — it is a power-user escape hatch discovered pull-only via the Open Knowledge skill. The underlying bundle build and thePOST /api/install-skillroute are unchanged.
v0.19.3-beta.0
Delta since previous beta (v0.19.2-beta.1) — 1 new changeset.
Patch Changes
-
Fix Git auto-sync when server-spawned Git needs the user's home directory, SSH agent, or credential-helper environment to reach a remote. This most visibly affected Windows repositories using SSH remotes, where
ok syncand editor sync could fail with "Could not read from remote repository" while the samegit fetchorgit pushworked in a terminal.Because preserving the home directory also lets server-spawned Git read the user's global config, OK now pins
commit.gpgsign=falseandcore.autocrlf=falsefor its own Git commands only (via-c, leaving the user's own Git untouched): the first prevents the unattended sync commit from aborting when a global signing config can't prompt for a passphrase, and the second keeps line-ending conversion from churning content against OK's byte-exact round-trip.
v0.19.2
0.19.2
Stable promotion of beta v0.19.2-beta.1.
Aggregated changes since previous stable:
0.19.2-beta.0
Patch Changes
- The "Ask AI" composer's terminal CLI rows now use the same labels as the empty-state Create composer: the bare brand name as the visible label ("Claude", "Codex", "Cursor", "OpenCode") with " CLI" as the accessible name, instead of a visible "(CLI)" suffix. Combined with the brand icons, the two agent pickers now render identical Terminal sections. The accessible name still distinguishes a Terminal row from a same-named Desktop row (and now satisfies WCAG 2.5.3, since the accessible name contains the visible label).
- @inkeep/open-knowledge-core@0.19.2-beta.0
- @inkeep/open-knowledge-server@0.19.2-beta.0
0.19.2-beta.1
Patch Changes
-
Hide the seeded
opencode.jsonagent config from the file treeOpenKnowledge seeds
opencode.jsonat the project root so OpenCode's MCP wiring works. Unlike the other agent configs (.mcp.json,.cursor/,.codex/), OpenCode's config filename is fixed and not dot-prefixed, so the dot-prefix "hidden file" convention skipped it and it surfaced as a normal file. A newHIDDEN_CONFIG_BASENAMESallowlist, consumed byisHiddenDocName, now classifies it as hidden everywhere the dotfile configs already are: the sidebar (behind the Show hidden files toggle), search ranking, and agent egress.
v0.19.2-beta.1
Delta since previous beta (v0.19.2-beta.0) — 1 new changeset.
Patch Changes
-
Hide the seeded
opencode.jsonagent config from the file treeOpenKnowledge seeds
opencode.jsonat the project root so OpenCode's MCP wiring works. Unlike the other agent configs (.mcp.json,.cursor/,.codex/), OpenCode's config filename is fixed and not dot-prefixed, so the dot-prefix "hidden file" convention skipped it and it surfaced as a normal file. A newHIDDEN_CONFIG_BASENAMESallowlist, consumed byisHiddenDocName, now classifies it as hidden everywhere the dotfile configs already are: the sidebar (behind the Show hidden files toggle), search ranking, and agent egress.
v0.19.2-beta.0
Delta since previous beta (v0.19.1-beta.11) — 1 new changeset.
Patch Changes
- The "Ask AI" composer's terminal CLI rows now use the same labels as the empty-state Create composer: the bare brand name as the visible label ("Claude", "Codex", "Cursor", "OpenCode") with " CLI" as the accessible name, instead of a visible "(CLI)" suffix. Combined with the brand icons, the two agent pickers now render identical Terminal sections. The accessible name still distinguishes a Terminal row from a same-named Desktop row (and now satisfies WCAG 2.5.3, since the accessible name contains the visible label).
- @inkeep/open-knowledge-core@0.19.2-beta.0
- @inkeep/open-knowledge-server@0.19.2-beta.0
v0.19.1
0.19.1
Stable promotion of beta v0.19.1-beta.11.
Aggregated changes since previous stable:
0.19.1-beta.0
Patch Changes
-
Fix markdown serializer boundary-whitespace defects on the WYSIWYG-to-source path. An insignificant trailing space or tab at a block edge now serializes to a literal character instead of a visible
 /	character reference, so source mode no longer shows the escape where a space was typed (a leading tab, or a leading run of four or more spaces, still encodes, since it would otherwise trigger an indented code block on re-parse and turn the paragraph into a code block). Strikethrough (~~) and highlight (==) marks authored with boundary whitespace now char-ref-encode that whitespace so the mark survives re-parse instead of silently dropping. Emphasis and strong already behaved correctly and are unchanged. -
Fix: JSON files now render with syntax highlighting in the read-only code viewer. The extension-to-language table mapped
jsoncto the JSON grammar but omitted plainjson, so opening a.jsonfile (for exampleconfig.json,package.json, or.mcp.json) resolved to no language and CodeMirror fell back to unhighlighted plaintext. Adding thejsonentry routes these files to the JSON grammar that was already available. The media-kind dispatch is unaffected —.jsonalready resolved as a text asset through the sidebar text set, which is checked before the code-language set. -
Launching Claude Code from the docked terminal ("Open in Claude") no longer shows the one-time "New MCP server found in this project" trust prompt for Open Knowledge's own MCP server. The pre-approval applies only to OK's own server: a foreign or modified
open-knowledgeentry in a shared or cloned project still shows Claude Code's trust prompt, and the check runs per launch so it reflects the project's current state. Codex and Cursor launches are unchanged.
0.19.1-beta.1
Patch Changes
-
Fix the fullscreen graph overlay's header on macOS desktop. The "GRAPH" title row now vertically aligns with the window's traffic lights: the overlay is
fixed inset-0so it starts at the raw window top, 8px above where the normal editor chrome row sits (insideSidebarInset'sm-2), so its header reproduces that 8px inset and matches the chrome row's height — landing the title on the same midline the traffic lights are tuned to. The header continues to reserve the traffic-light footprint so the title never overlaps the buttons.Window dragging works again in fullscreen graph mode, and the Explore/Orphans/Hubs tabs are reliably clickable. The overlay paints over the editor's
-webkit-app-region: dragchrome; previously those drag regions showed through and silently converted clicks on the mode tabs into window drags. The header is now scoped like the editor header — the header row is the drag region and the controls cluster opts back out withno-drag— so the window stays draggable by the header while the tabs and buttons receive clicks.- @inkeep/open-knowledge-core@0.19.1-beta.0
- @inkeep/open-knowledge-server@0.19.1-beta.0
0.19.1-beta.2
Patch Changes
-
Rename the product brand from "Open Knowledge" to "OpenKnowledge" (one word) across the desktop app, CLI output, MCP/skill copy, and docs.
The macOS app, its helper bundle, the DMG artifact, and the userData directory are renamed. A one-time, identity-verified migration runs on the first launch of a renamed build: it relocates an existing user's app state (recent projects, window restore, auto-update cache) from
~/Library/Application Support/Open Knowledge/to.../OpenKnowledge/, but only after verifying the legacy directory is ours (itsstate.jsonparses as our schema), so another vendor's identically-named directory is never touched. It copies, verifies, then removes the legacy directory; any failure degrades to a clean first run.Technical identifiers are unchanged: the npm package
@inkeep/open-knowledge, the macOS appIdcom.inkeep.open-knowledge, theopenknowledge://deep-link scheme, theopenknowledge.aidomain, and theopen-knowledgeMCP server name. "Open Knowledge Format" (Google's external standard) is also preserved.
0.19.1-beta.3
Patch Changes
- Fix jumpy, inconsistent mouse-wheel scrolling inside full-screen terminal apps that capture the mouse (the
claudeTUI,vim,less,top). In mouse-tracking mode xterm.js forwards one mouse-wheel report per OS wheel event with no accumulation, so the high-frequency event stream from trackpad momentum and free-spin/fast-scroll wheels floods the app — scrolling that lurches and can run away ("rocket scroll"). The terminal now accumulates fractional rows of travel and emits one wheel report per whole row of distance crossed, so scroll tracks the actual distance moved regardless of how many events deliver it: gentle drags and fast flicks over the same distance scroll the same amount, with no dead zone and a per-event clamp that absorbs momentum spikes. Normal scrollback (no mouse-capturing app) additionally gets smooth scrolling. Desktop only.
0.19.1-beta.4
Patch Changes
- External URL nodes in the graph now open in your default OS browser on the desktop app, instead of a new in-app Open Knowledge window. Clicking an external node (or its "Open link" button in the graph side panel) routes through the desktop bridge's
openExternal, so the link lands in your system browser the same way external links already open elsewhere in the editor. On the web build the behavior is unchanged (a new browser tab). Previously these three graph call sites used a rawwindow.open, which Electron turns into a new BrowserWindow rather than handing off to the OS.- @inkeep/open-knowledge-core@0.19.1-beta.0
- @inkeep/open-knowledge-server@0.19.1-beta.0
0.19.1-beta.5
Patch Changes
-
Add OpenCode as a supported agent.
ok init— and the desktop first-launch consent dialog plus the create-project dialog — now writes anopen-knowledgeMCP server entry toopencode.json(project-local, and~/.config/opencode/opencode.jsonfor a global install), using OpenCode'smcpconfig shape and the same resilient launcher every other editor gets. OpenCode reads the Open Knowledge skill from the shared.agents/skills/directory it already scans, so no extra skill copy is written.OpenCode is also wired into the Ask AI composer and Open-in-Agent menus as a terminal CLI: it appears as "OpenCode (CLI)" in the Terminal section and launches
opencode '<prompt>'in the docked terminal. (It's terminal-only — no URL scheme — so it's deliberately absent from the GUI deep-link Desktop section.)Adds an OpenCode integration page and brand logo to the docs site.
-
Lists now follow GFM-style delete and creation behavior. Backspace on the empty line left after exiting a list (or on an empty nested item) merges back into the list instead of spawning a stray empty bullet or toggling the bullet on and off. Typing an ordered marker like
1.directly below a bullet list now starts a real numbered list rather than being absorbed into the bullet list as an empty item.The unified
listnode (one node type for bullet and ordered, distinguished by theorderedattr) had two mismatches: the list keymap was bound to the upstreambulletList/orderedListwrapper names instead oflist, so its Backspace/Delete handling never fired; and the list-creation input rules joined any adjacent list of the same node type regardless of kind. Both are now pointed at this schema.
0.19.1-beta.6
Patch Changes
- Fix the bottom "Ask AI" composer dropping the typed instruction when launching a Terminal CLI. A composer dispatch carries its instruction (and
@-mentions / selection) ininput.compose, but the docked-terminal launcher only checked the top-levelinput.instructionthe toolbar popover uses — so every composer-typed message fell through to the bare "load OK, then stop" prompt and the agent never saw what the user asked. The terminal launcher now routes compose-scope dispatches through the same prompt assembler as the deep-link handoff, so the instruction threads through to the launched CLI exactly as it does to a Claude/Codex/Cursor deep link.- @inkeep/open-knowledge-core@0.19.1-beta.0
- @inkeep/open-knowledge-server@0.19.1-beta.0
0.19.1-beta.7
Patch Changes
- Tune embedded-terminal wheel scrolling to feel closer to a native terminal (e.g. Ghostty). The smooth mouse-tracking scroll added previously was correct but sluggish: macOS bakes velocity acceleration into wheel deltas, and the per-event clamp was clipping the accelerated fast-flick range. The mouse-mode accumulator now uses a modest base sensitivity with a higher per-event cap so OS acceleration carries through — fast flicks travel far while slow drags stay gentle — and normal scrollback gets a faster per-notch travel. Desktop only.
0.19.1-beta.8
Patch Changes
- Task-list checkboxes now stay clickable when an editor transitions from read-only to editable. The list-item NodeView set the checkbox's
disabledstate once at creation fromeditor.isEditable, but asetEditable()flip updates the view's editable flag without a document change, so ProseMirror never re-renders the NodeView and the staledisabledwas never cleared. A checkbox created while the editor was read-only (for example, content loaded before the editor goes live) stayed permanently uncheckable. The NodeView now keepsdisabledin sync with editability via the editor'supdateevent (whichsetEditable()emits) and on every NodeView update.
0.19.1-beta.9
Patch Changes
- Add
bun run --filter=@inkeep/open-knowledge-desktop instancesto launch multiple isolated desktop instances in parallel from the packaged app. Each<name>=<project>gets its own--user-data-dir(own single-instance lock + storage), opens its project, and is launched detached via...