v0.56.0
Minor Changes
-
Picking a starter pack while creating a new project now works the same way it does inside an open project. The create-project dialog shows the pack's full description, a live list of exactly which folders, files, and skills it will add, and a choice of where they go — the project root, or a subfolder you name. Before, the same pick gave you a one-line summary and no preview, and it quietly put a pack's contents in that pack's own default subfolder (so a knowledge base landed in
brain/rather than at the top level of your new project). The project root is now the default in both places, and you can switch packs from inside the dialog instead of cancelling out to start over. -
The OKF plugin now recommends its companion agent skill directly in Settings. You can review what the skill changes, install it explicitly into the current project, and open it afterward to edit its guidance or agent availability. Installation never overwrites a same-name project skill, and disabling OKF does not remove the skill.
-
Open a document in its own window (desktop). Right-click a document tab and choose "Open in New Window", run it from the command palette, or pick it from the Window menu to pop the current document out into a dedicated window you can park on another monitor.
- Edits sync live between the pop-out and the main window through the project's existing collaboration server, with no extra setup.
- Opening the same document again focuses the window you already have rather than stacking duplicates. Any number of pop-outs can coexist across and within projects.
- Following a wiki link navigates the pop-out in place and updates its title.
- A pop-out closes with its project's main window. If its document is deleted, it shows an explicit "document deleted" state with a close button rather than closing out from under you.
- Your pop-out layout comes back on relaunch, each window reattached to its project and restored to its own position.
Patch Changes
-
Clicking a commented passage, its margin icon, or a commented property value now shows that comment in the Comments panel on the right instead of floating a card over the document. The card used to be pinned to the text it was about, so it covered the paragraphs around the passage — the ones you need in order to judge the comment — and printed the comment twice, since the panel was showing it as well. The Comments tab now opens, scrolls to the comment, and highlights it, with the passage still marked in the document. Comments are also reachable in single-file (
ok <file>) sessions, which previously offered no Comments tab at all. -
server.bindis now a per-machine setting, so a committed bind can no longer break local runs for people who clone a shared project.Before this change, a project that committed
server.bind: 0.0.0.0(or::) to.ok/config.ymlso one machine could serve it remotely madeok startfail for every teammate who cloned the repo and ran it locally. The exposure interlock refused to boot because a non-loopback bind requires per-machineserver.allowExternalconsent, and consent is never committed.server.bindmoves fromprojectscope toproject-local, the same posture asserver.allowExternal. A bind committed to the shared.ok/config.ymlis now ignored, and named at startup with the fix, so local clones always bind loopback and boot. The machine that actually exposes the server sets the bind per-machine withOK_BIND,ok start --bind <address>, or.ok/local/config.yml.The exposure gate is unchanged: an explicit
OK_BINDor--bindto a non-loopback address without consent still refuses to start. -
Opening a standalone Markdown file or a share link while OpenKnowledge is fully closed no longer reopens your previous session's project windows alongside it. The cold launch now opens only the window the link resolves to, and does not start the servers for unrelated projects.
Those previous windows are not held back for a later launch either. The saved session is cleared on the launch that suppresses it, so your next ordinary launch opens your most recent project and the rest stay reachable from File → Recent project (loose files from File → Recent files). Launching from the Dock or the app icon still restores your full window set exactly as before.
-
Desktop apps you already have installed now show up in the agent pickers automatically. Claude, Codex, and Cursor were previously hidden until you opted each one in under Settings → Configure agents; OpenKnowledge now detects them per platform (LaunchServices on macOS, the registered protocol handler on Windows,
xdg-mimeon Linux) and lists them without any setup. The Settings toggles still win in both directions — turn one off to hide it, or turn on an app you haven't installed yet to get its download page.The section is now called "External apps" and each row reads "Claude Desktop" / "ChatGPT Desktop" / "Cursor Desktop" (the Codex desktop app is branded ChatGPT since OpenAI folded the two together), so it is no longer confusable with the same-named Terminal CLI row above it. When an external app is the selected target, the composer's button says "Open Claude Desktop" with an external-action arrow, since that click leaves OpenKnowledge; in-app agents and terminal CLIs now consistently read "Ask ".
-
Documents no longer open to "Connection dropped" after an update relaunch in projects that pin a server port. The server writes its lock file before it starts listening, and the port field in that lock is how everything else — the desktop app, the CLI's sync, audit and embeddings commands — decides the server is reachable. A project that set
server.porthad its configured port written into the lock immediately, so the desktop opened document windows against a port nothing was listening on yet and the editor gave up with a "Connection dropped" error you had to dismiss with Try again. Projects on an automatically assigned port were unaffected, which is why this looked intermittent. The lock now reports port 0 until the server is actually accepting connections, so windows open only once the server can serve them. -
ok startno longer dies without an error message when a project's path, or a folder inside it, is named in a non-Latin script. The server handed its ignore list to the file watcher's native matcher as glob patterns, and that matcher compiles each one to a C++ regular expression it evaluates against every path an event carries. The evaluation recurses once per byte of the path, so a long enough path exhausted the watcher thread's stack and killed the whole process — reported on Windows as exit code0xC0000409. Nothing surfaced in JavaScript, so there was no exception, no stack trace, and an empty error log; from the outside the server had simply vanished mid-startup, and every MCP write tool that needed it began failing withserver did not start within 5000ms.Because the recursion tracks bytes rather than characters, a Japanese, Chinese, Korean, Cyrillic, or Greek folder name reached the limit at roughly a third of the depth an ASCII one needed, which is why a knowledge base whose folders are named in the author's own language could not be served at all while an otherwise identical ASCII copy started fine. Renaming the folder to ASCII was the only workaround, and pointing an ASCII junction or symlink at it did not help.
The watcher now pre-filters on plain directory prefixes instead of globs, so no path ever reaches the native regular-expression engine.
.git,node_modules, and OK's own.ok/localand.ok/worktreesare still skipped before OK sees them, at every depth: the startup scan records each one it finds and hands the watcher that list, so a monorepo's per-packagenode_modulesstay outside the watch. That list is taken once, at startup, so a dependency tree installed into an open project while the server is running is no longer skipped before OK sees it — the events are still discarded, just a step later, until the next restart.This also fixes a quieter bug in the same place. An exclusion with no wildcard in it —
dist/,drafts/,coverage— was being handed to the watcher as a whole-subtree skip, which is broader than the rule you wrote: it also hid the templates atdrafts/.ok/templates/*.md, which OK otherwise treats as ordinary editable content. External edits to such a template now reach the editor, and so do edits under a folder you un-ignore while the server is running, which previously stayed invisible until restart. Both apply to the CLI's watcher; the desktop app uses the fallback watcher, which prunes excluded folders itself and is unaffected either way. -
OpenKnowledge Desktop on Windows now detects MSIX-installed agent apps — including Claude's current Windows distribution and the ChatGPT (Codex) Store app. MSIX packages register their
claude:///codex://link handler at install time but in a way Electron's protocol query can't see (it looks for a classic executable association, which MSIX never writes), so the "External apps" picker wrongly treated those apps as not installed even though the browser-mode picker on the same machine saw them. The desktop app now falls back to the same registry check the server uses, so both hosts agree.
Downloads
| Platform | Architecture | Download |
|---|---|---|
| macOS | Apple Silicon | OpenKnowledge-arm64.dmg |
| Windows | x64 | OpenKnowledge-Setup-x64.exe |
| Windows | arm64 | OpenKnowledge-Setup-arm64.exe |
| Debian / Ubuntu | x64 | OpenKnowledge-amd64.deb |
| Debian / Ubuntu | arm64 | OpenKnowledge-arm64.deb |
| Fedora / RHEL | x64 | OpenKnowledge-x86_64.rpm |
| Fedora / RHEL | arm64 | OpenKnowledge-aarch64.rpm |