Skip to content

Releases: inkeep/open-knowledge

v0.20.0-beta.4

27 Jun 01:57
ed4a296

Choose a tag to compare

v0.20.0-beta.4 Pre-release
Pre-release

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/skills and 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 skills MCP tool now short-circuits OpenKnowledge's own built-in skills instead of 404-ing. An agent told to "load the open-knowledge skill" would call skills({ name: "open-knowledge" }), hit a bare Skill 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-authored open-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_search step, so mcp__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

27 Jun 01:34
983e449

Choose a tag to compare

v0.20.0-beta.3 Pre-release
Pre-release

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 flaky unknown probe it re-probes once; a not-found verdict, a still-unknown re-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 (via cliPreflight) and to Claude (gated on the fresh claudePreflight recheck 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

26 Jun 22:47
8590c57

Choose a tag to compare

v0.20.0-beta.2 Pre-release
Pre-release

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

26 Jun 22:27
df6dbd9

Choose a tag to compare

v0.20.0-beta.1 Pre-release
Pre-release

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 a git worktree add checkout 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

26 Jun 20:47
c7e1319

Choose a tag to compare

v0.20.0-beta.0 Pre-release
Pre-release

Delta since previous beta (v0.19.3-beta.0) — 12 new changesets.

Patch Changes

  • Rename the ok install-skill CLI command to a deliberately hidden, unadvertised ok cowork. The old name implied an automatic install it never performed — it builds the openknowledge.skill bundle and opens the Claude Desktop App for a manual upload (the only path to the separate Skills list Claude Chat & Cowork read, which ok init's editor wiring can't reach). The command is now registered hidden (absent from ok --help), and ok init no 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 the POST /api/install-skill route are unchanged.

v0.19.3-beta.0

26 Jun 18:03
952f877

Choose a tag to compare

v0.19.3-beta.0 Pre-release
Pre-release

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 sync and editor sync could fail with "Could not read from remote repository" while the same git fetch or git push worked in a terminal.

    Because preserving the home directory also lets server-spawned Git read the user's global config, OK now pins commit.gpgsign=false and core.autocrlf=false for 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

26 Jun 17:02
35c0ac7

Choose a tag to compare

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.json agent config from the file tree

    OpenKnowledge seeds opencode.json at 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 new HIDDEN_CONFIG_BASENAMES allowlist, consumed by isHiddenDocName, 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

26 Jun 10:47
35c0ac7

Choose a tag to compare

v0.19.2-beta.1 Pre-release
Pre-release

Delta since previous beta (v0.19.2-beta.0) — 1 new changeset.

Patch Changes

  • Hide the seeded opencode.json agent config from the file tree

    OpenKnowledge seeds opencode.json at 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 new HIDDEN_CONFIG_BASENAMES allowlist, consumed by isHiddenDocName, 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

26 Jun 06:43
901089a

Choose a tag to compare

v0.19.2-beta.0 Pre-release
Pre-release

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

26 Jun 06:20
e4fcb97

Choose a tag to compare

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 &#x20; / &#x9; 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 jsonc to the JSON grammar but omitted plain json, so opening a .json file (for example config.json, package.json, or .mcp.json) resolved to no language and CodeMirror fell back to unhighlighted plaintext. Adding the json entry routes these files to the JSON grammar that was already available. The media-kind dispatch is unaffected — .json already 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-knowledge entry 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-0 so it starts at the raw window top, 8px above where the normal editor chrome row sits (inside SidebarInset's m-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: drag chrome; 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 with no-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 (its state.json parses 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 appId com.inkeep.open-knowledge, the openknowledge:// deep-link scheme, the openknowledge.ai domain, and the open-knowledge MCP 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 claude TUI, 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 raw window.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 an open-knowledge MCP server entry to opencode.json (project-local, and ~/.config/opencode/opencode.json for a global install), using OpenCode's mcp config 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 list node (one node type for bullet and ordered, distinguished by the ordered attr) had two mismatches: the list keymap was bound to the upstream bulletList/orderedList wrapper names instead of list, 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) in input.compose, but the docked-terminal launcher only checked the top-level input.instruction the 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 disabled state once at creation from editor.isEditable, but a setEditable() flip updates the view's editable flag without a document change, so ProseMirror never re-renders the NodeView and the stale disabled was 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 keeps disabled in sync with editability via the editor's update event (which setEditable() emits) and on every NodeView update.

0.19.1-beta.9

Patch Changes

  • Add bun run --filter=@inkeep/open-knowledge-desktop instances to 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...
Read more