v0.26.0
Released Jul 7, 2026. Part of the OpenKnowledge changelog.
Minor Changes
- New projects can now start from a starter pack right on the first-run launcher. When you open OpenKnowledge with no recent projects, the launcher leads with the starter packs (Knowledge base, Software lifecycle, Codebase wiki, and more) so a brand-new project opens already scaffolded with folders and templates instead of a blank editor. Picking a pack flows into the create dialog with the pack pre-selected; you still name the project and choose where it lives, then the editor opens populated. Prefer to start differently? Open a folder, clone from GitHub, or start a blank project from the same screen. Returning users (anyone with recent projects) see the launcher exactly as before.
Patch Changes
Fix copying from the editor dropping line breaks when you paste into other apps.
Soft line breaks — the everyday single-newline wraps inside a paragraph, blockquote, or list item — used to be copied as a bare newline whose rendering relied on the editor's own styling. Gmail and other rich-text destinations strip that styling, so the lines merged into one on paste. They now copy as real line breaks that survive everywhere. Copying a partial selection that contained a
<br>line break used to fail silently and paste as raw markdown source (pipes, dashes, and literal<br>text); those breaks now come through as proper line breaks too.Multi-line table cells also copy correctly to spreadsheets: a cell with an in-cell line break is exported as a quoted field so Excel and Google Sheets keep both lines in one cell instead of merging them or splitting the row.
Checked items in a task list now keep their checked state when copied, so a ticked checkbox no longer pastes as unticked in apps that preserve checkboxes.
Reworked the first-launch "Connect your AI tools to OpenKnowledge" consent dialog. The description copy is now plain-language instead of listing internal implementation details, undetected editors show a "How to set up" link to their integration docs, and the shell-PATH rc-file detail moved into an info tooltip.
Fix duplicate servers per project during teardown/restart windows. Previously a server released its
server.lockseconds before its process actually exited (and, after an idle shutdown, sometimes never exited at all), so restart flows — desktop relaunch, auto-update, MCP auto-start — could spawn a second server alongside a still-live predecessor, losing in-app threads and splitting writes from the preview. The lock now stays owned (markeddraining) until the process truly exits; spawners wait out a draining predecessor instead of racing it; the desktop waits for process death rather than lock disappearance before respawning; and idle shutdown now exits the process explicitly, logging any leaked handles that previously produced immortal zombie servers. Lock identity also moved from the OS hostname (which macOS renames on network changes) to a stable per-machine ID at~/.ok/machine-id— a hostname rename no longer lets a new server silently steal a live server's lock; ambiguous cases now fail closed with a clear "already running" error. When the desktop can't open a project because a conflicting server holds its lock, the error dialog now offers "Stop Server & Retry" to resolve it in one click.Fixed the desktop in-app terminal failing on every open with "The terminal stopped unexpectedly." in v0.25.0 (Restart Terminal included). Moving node-pty to optionalDependencies had stopped electron-vite from externalizing it, so the packaged pty host bundled node-pty's loader and could no longer reach the native binding. node-pty is now explicitly externalized in the main-process build, and a packaging guard test pins the seam.
Opening a workspace that contains same-stem
.mdand.mdxfiles, such asfoo.mdandfoo.mdx, no longer blanks or wedges the app. Show All now lists both files, URLs keep the extension when needed, both siblings open and edit independently, and sidebar actions like share, handoff, rename, delete, and duplicate target the selected sibling instead of collapsing to the extensionless stem.Correct user-facing copy that described behavior that doesn't exist, and finish the Personal CRM rename in seeded content:
- The OKF pack's seeded skill no longer claims an "OKF export" normalizes
[[wiki-link]]shorthand to standard links — no export feature exists; OpenKnowledge accepts the shorthand as a native superset and preserves it byte-for-byte. - The
entity-vaultpack's seeded skill now titles itself Personal CRM (GBrain-compatible), matching the starter-pack picker and theok seedoutput. Applies to newly seeded projects; an existing project's skill is user-owned and left untouched. ok seed --helpno longer promises a--rootprompt on a TTY — omitting--rootscaffolds at the project root (only the apply confirmation prompts).- The template dialog's filename hint no longer says the filename "can't be changed later" (local templates are renamable from the edit dialog), and the description placeholder says "under the title", matching the field it sits beside.
- The OKF pack's seeded skill no longer claims an "OKF export" normalizes
Fix search snippets splitting an emoji across the truncation boundary, which left a lone UTF-16 surrogate in the JSON-RPC response and caused strict MCP clients (Rust / pydantic parsers) to reject it as invalid UTF-8. Snippets are now well-formed before serialization.