Patch Changes
-
Clicking a commented property value now opens its thread, the way clicking a commented passage in the body always has. The body gets that from the editor — the highlight is a decoration the editor can hit-test — while a property value is a plain form control with no decorations and no positions, so the same gesture had to be assembled from the caret offset a click sets.
Each comment now carries when it was last revised, so an edited comment reads as edited instead of showing its creation time.
The passage a comment is on now renders as a quote in the agent transcript. Sending a batch composes each comment as its document, the selected text as a blockquote, and the note itself — but the transcript printed sent messages verbatim, so that structure arrived as flat text with the
>markers showing and every line run together. Sent messages render as markdown now, so the passage reads as a quote under the file it came from and the note reads beneath it. -
Windows and Linux download buttons on the marketing and docs sites now open the download picker instead of assuming an architecture. The picker page's primary button explicitly labels the architecture its convenient default build assumes.
-
Hide OpenKnowledge's own built-in skills from the fullscreen graph, and add a control for the rest.
The link index treats skill bundles as graph nodes on purpose, but a global skill can never link to a document — the index registers it node-only and resolves its refs same-scope. OK force-installs two of its own bundles into every project, so every graph carried four nodes that were structurally incapable of connecting to anything in it.
Those bundles are now excluded from the fullscreen graph unless another skill links them directly by name. A new toggle beside the external-URL control governs your own skills, project and global, and shows them by default. The docked local graph is unchanged: it still shows every skill node, so a skill's own neighborhood stays inspectable there.
-
OpenKnowledge no longer creates agent integration folders for tools you do not have. Project setup, launch-time skill maintenance, store migration, import, starter-pack seeding and repair now write only into agent folders that already exist, and skip cleanly when none do. Creating a project pre-selects the agents detected on your machine rather than every agent OpenKnowledge knows about, and
.agentsis treated like any other agent folder instead of always being written. Explicit choices are still honored, including installing into.agentswhen you select it. -
Folder links now work like links. Clicking a wiki link or markdown link that targets an existing folder opens the folder view (the same destination the Links panel already used) instead of doing nothing, and the Problems tab no longer reports links to existing folders as dead — the link audit's existence oracles learned folders on both of its planes, and folder existence stays fresh as documents beneath a folder come and go. Links to folders that do not exist still report as dead links.
-
Opening a plain terminal no longer shows the "Claude Code (claude) isn't installed" banner. The docked terminal probed Claude readiness on every session, so a bare tab opened with Cmd+J, the Terminal menu's "New Terminal", or the dock's + nagged about claude (or about connecting OpenKnowledge tools) even though the user never picked a CLI. Readiness feedback is now scoped to launches that actually target the Claude CLI: those still surface the install and connect-tools banners, while plain tabs, "run this command" tabs, and reload-adopted tabs stay banner-free.
-
Bug reports about a document whose editor view keeps changing underneath you now carry enough evidence to diagnose it. Some documents contain a construct whose visual-editor view cannot be expressed back as the exact markdown behind it, and the bridge rebuilds that view on every save for as long as the document exists. The repair was already recorded, but not in a way that answered the two questions a report actually raises — how often it is happening, and what construct is causing it. Nothing about the repair itself changed; this is diagnostics only, and every field added is a number or a fixed label, never document text.
- Bridge divergence warnings now name the constructs that disagree — a bullet list against a paragraph, a table row against a heading, and what precedes them — instead of only a character offset. Previously the offending construct could not be identified without asking the reporter for their file, which is usually where the investigation stopped.
- A repair that rebuilds the editor view is recorded every time it runs. Recovery snapshots are deduplicated so one stuck document cannot crowd out everyone else's, which meant a document repairing itself hundreds of times looked identical to one that repaired once. The rebuild rate is now readable directly from a bug bundle, including the case where a document fails to serialize at all and no snapshot is taken.
- When the safety net at the merge boundary fires, its verdict is recorded: whether content went missing, was reordered, or was duplicated. Duplicated content reads to a user as text appearing rather than vanishing — the opposite complaint from the same underlying event — and that distinction previously survived only as an in-process counter that no bug report carried.
- Repair records now say whether the guard that protects un-propagated typing was able to run at all, separating "the guard could not evaluate this" from "the guard evaluated it and declined" — two different faults with two different fixes.
-
Back and Forward no longer pile up tabs. With preview tabs on, single-clicking through several files in the sidebar keeps the strip at one tab, but pressing Back then added a permanent tab for each earlier file, so a few presses turned one tab into a strip you had to close by hand. History navigation now reuses the same preview slot the sidebar click used, so going back through a run of previews leaves you with one tab, italic, on whichever file you landed on. With preview tabs turned off, Back and Forward behave exactly as before and open permanent tabs.
-
Uploaded filenames with non-ASCII characters are no longer mangled. Dragging a file named
café.pnginto a document stored it ascafé.png; a macOS screenshot, whose name contains a narrow no-break space before AM/PM, arrived asScreenshot ... 10.48.44â_AM.png. Non-Latin scripts fared worse still, with会議メモ.pdflosing nearly all of its characters. The multipart parser was reading the filename as Latin-1, while browsers and every other conformant client send it as UTF-8, so each multi-byte character was split into one garbled character per byte before anything else in the upload path could see it. Both upload endpoints are affected, asset uploads and skill imports alike.Files uploaded before this release keep their mangled names. The original name was never recorded anywhere, so there is nothing to restore them from, and the mangling is not reliably reversible. Links and images still resolve, because the stored name and the reference in your document have always matched each other. Renaming the file fixes the display.
One narrow tradeoff: a client that genuinely sends a Latin-1 filename, rather than the UTF-8 that browsers and standard HTTP tooling send, will now have the non-ASCII characters in that name read as unrecognized. An asset upload stores them as underscores; a skill import, which does not run the same name cleanup, keeps them as the standard replacement character. There is no signal on the wire that would let the server tell the two cases apart, and UTF-8 is what browsers and every standard client send.
-
In-app agents no longer die with an unreadable error when the Node.js or uv on your machine is broken.
OK checked that
npx/uvxexisted before launching an agent, but not that it could actually run — so an interpreter that was installed yet fatally broken (on macOS, most often a Homebrewnodewhoseicu4clibrary was upgraded out from under it) launched an agent that aborted before it could say hello. All you saw wasinitialize failed: ACP connection closed, with nothing to act on. OK now checks that the interpreter runs, and a broken one gets the same offer a missing one already got: OK downloads and uses its own private copy of Node.js or uv, with your consent. If you decline, the message now says the interpreter is installed but failing rather than claiming it isn't installed.Agent failures also reach the server log now, so a bug report carries them. The last thing a dying agent wrote to its error output — the linker error, the stack trace — was previously visible only in the chat panel, which meant a diagnostic bundle filed for an agent crash contained no evidence of it. An agent that exits unexpectedly mid-session is logged too.
-
Signing in to an agent now reads as a sign-in rather than an error. When a thread is waiting on authentication, the agent's mark and name take the pane with the ways in stacked beneath, one leading and the rest as alternatives, instead of an amber alert card with a row of equally loud buttons.
Device-code flows now show their code. An agent signing in has no session yet, so the code and confirmation URL it prints are the only place that information exists, and OK was discarding them; the browser would ask the user to confirm a code their device never displayed. The code now appears while the sign-in runs, one tap to copy, with the confirmation page linked below it.
A sign-in in flight has a status of its own. It used to report
installing, so clicking a method replaced the prompt with "Starting the agent" while the agent was in fact waiting on the user, and the sign-in options vanished mid-flow.A completed sign-in the running agent cannot see now relaunches the agent instead of asking again. An agent that reads its credentials at startup will still refuse a session even after
authenticatesucceeds, and the fix has always been to restart it, which is what Retry did. OK now takes that step itself.Startup failures no longer pile up on a working thread. Each failed attempt left a card behind, so a thread that eventually signed in opened on a stack of warnings about a sign-in the user had already completed. A launch that succeeds retires the failures it took to get there; failures inside a live session still stand.
Release body unavailable for: v0.54.0-beta.3 — see the per-beta releases for those changes.
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 |