Patch Changes
-
Blank lines at the very top or bottom of a document now stay in sync between the visual editor and markdown source in both directions. Previously they only propagated when added in the visual editor: blank lines typed in source mode (or arriving from disk or an agent) never appeared in any collaborator's visual editor, deleting them in source mode left phantom blank paragraphs behind, and deleting them in the visual editor never reached the file. On frontmatter-bearing documents, blank lines added above the first paragraph now survive too, with the separator line below the frontmatter kept intact. This also fixes a lock-up where a document whose two representations disagreed about an edge blank line would silently stop showing source-mode edits in the visual editor and revert visual-editor deletions.
-
A project-wide Fix all now keeps running when you switch away from the Problems tab. Previously the sweep lived inside the Problems panel and ended the moment that panel stopped being rendered, so clicking over to Timeline or Comments mid-sweep left the project partially fixed with nothing to say that anything had stopped, or why. The sweep now belongs to the operation rather than to the panel: it runs to completion in the background, any panel you open mid-sweep picks up its progress, and it reports how it ended — finished, stopped, or failed — wherever you happen to be looking. Completion is now announced too, so a long sweep you walked away from tells you when it is done.
-
The Mermaid and HTML code-preview edit modals now show the live render on the left and the source editor on the right, matching how the reader mentally locates their edit — outcome first, mechanism next. On stacked (mobile-width) viewports the source editor stays on top so the surface the user came to edit is what they land on, and the body scrolls if the two panes exceed the dialog height.
-
Ctrl+` now toggles the bottom dock, matching the chord VS Code and Zed both use for the terminal. It is literal Control on every platform (not Cmd on macOS, which the OS reserves for window cycling), it works from inside a focused terminal so you can dismiss the dock without reaching for the mouse, and it appears alongside ⌘J in Settings → Hotkeys. It shares ⌘J's handler, so with text selected in the editor it stages that passage into the terminal rather than toggling.
⌘J is unchanged, but its command is renamed from "Show/Hide Terminal" to "Show/Hide Bottom Dock" in the View menu and the ⌘K palette — it toggles the dock, and the dock is where the terminal lives. Searching the palette for "terminal", "show terminal", or "hide terminal" still finds it.
-
Agents that run through
npxoruvxnow start on machines where Node or Python tooling is managed by nvm or fnm, instead of offering to download a copy of Node the user already has. A desktop app opened from the Dock or Finder inherits a minimalPATH, and a version manager like nvm has no fixed directory to add to it — the active Node lives under a versioned path that only a shell function puts onPATH. When a command can't be found, OK now asks your login shell what itsPATHis and tries once more before offering to download a managed runtime. The same fallback also rescues custom agents installed in shell-configured locations. The probe runs at most once per session, only after a launch has already failed, and never overrides aPATHthat an agent's own configuration set. -
Internal test diagnostics: when the check that an
ok mcpserver exits after its launching host dies fails on CI, it now reports the server's parent pid and captured stderr instead of a bare assertion. The parent pid is what separates the two ways that check can fail — the process never being reparented at all, versus being reparented and then not finishing shutdown — which previously could not be told apart from the failure output. No change to how OK runs. -
Relaunching with several projects open no longer drags you back to OpenKnowledge over and over. Restoring a multi-window session used to reveal each window with a focusing show, and on macOS that pulls the whole app forward, so a restore of seven projects (which materializes over several seconds while each project's server starts) would background whatever you had switched to once per window, then take focus one final time at the end. Now the app comes forward once, as it always did, and from then on stays out of your way: if you switch to something else while the rest of the session is still loading, the remaining windows open quietly behind you and the app does not pull you back. The window you were last working in is still the one waiting for you when you return.
-
Broken images keep their "Image failed to load" pill, without side effects on copy or on anything else that reads the document. The failed
<img>now stays mounted (hidden) behind the pill, so copying a selection with a broken relative-path image emits the markdown source-fallback block again instead of silently dropping the image, the pill's own text no longer pastes into other apps as if it were document content, and a broken-but-portable web image pastes as a normal<img>whose URL may still resolve at the destination. Error detection now trusts the image's error event alone, so a successfully loaded dimensionless resource (an SVG sized only by CSS) is no longer misreported as broken, and screen readers always hear the failure notice with the image's alt text or source.
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 |