Releases: inkeep/open-knowledge
Release list
v0.34.0
Minor Changes
-
External link hover previews are now on by default. Previously they shipped off by default (opt-in). Hovering an external link in the editor now shows a preview card — site name, page title, description, favicon — fetched by your local server, which sends that link's URL to the destination site (one request per previewed link). Turn it off per machine in Settings → Link previews, which sets
linkPreviews.enabled: falsein project-local config. Unchanged: the SSRF guard still refuses to fetch private or internal hosts, no cookies or credentials are attached, results are cached locally, and any fetch failure falls back silently to the plain URL pill. Internal document-to-document previews were already always on and read entirely from the local index with no network request. Note: external previews are not yet available in the packaged desktop app; this default applies to the browser andok uisurfaces. -
Mermaid diagrams are now fully visually editable. The diagram renderer is powered by mermaid-wysiwyg: click any node, edge, participant, or message to select it and get an action popover right on the diagram (change node shape, edge type, colors, message arrows, participant types, duplicate, delete, and more), double-click any label to edit its text in place, drag between nodes to connect them, and drag sequence messages to reorder. Every gesture becomes a minimal edit to the underlying Mermaid source, so the code fence (or standalone .mmd doc) stays the source of truth and collaborative editing keeps working. Diagram styling, theming, and the pan/zoom controls are unchanged.
Patch Changes
-
Installing an update no longer lands you in the wrong window. When you relaunch to install the latest version with several project windows open, OpenKnowledge reopens all of them and now brings the window you were last working in back to the front, instead of whichever window happened to finish loading last.
-
Opening a shared branch in a worktree (and other git operations) no longer fails with a generic error when the repository uses git-lfs installed via Homebrew. The desktop app and its server now append well-known tool directories (Homebrew, MacPorts,
~/.local/bin, asdf/mise shims) to the PATH used for git commands, so helpers git spawns mid-operation — LFS filters, credential helpers, hooks — resolve even though macOS launches apps with a minimal PATH. When a required helper still can't be found, the error now names it ("Git needs git-lfs…") instead of a retry-blind generic message, and the underlying git error is recorded in the desktop log. -
Fix: opening a share link no longer offers to initialize a folder that is no longer a git checkout. If a project was moved or deleted outside OK, its recents entry could still be presented as the share target with a "this branch is checked out in " claim and an "Initialize it and open?" prompt, because the path still existed on disk. Share receive now requires a candidate to be a real git working tree at that exact path, so a stale entry falls through to the launcher's "Clone from GitHub" / "I already have it locally" choices instead. Stale entries also no longer suppress worktree enumeration, so a share whose branch is checked out in a linked worktree now opens that worktree directly rather than prompting to switch branches.
- @inkeep/open-knowledge@0.32.1-beta.0
- @inkeep/open-knowledge-core@0.32.1-beta.0
- @inkeep/open-knowledge-server@0.32.1-beta.0
-
Report a bug now records why the server last exited. When the background server process goes away, the desktop app writes the exit code and the reason it left (a clean shutdown, a crash, or an out-of-memory / OS kill) to
state/last-server-exit.jsonin the report bundle, next toserver.lock. Until now a bundle could only show that the server's port was "unreachable", which looks identical whether the server crashed or was shut down cleanly, so a "my app crashed" report could not be told apart from a routine stop. The new record captures the death even when the server was killed and had no chance to log anything itself. It holds only the exit code, the reason, the pid, and a timestamp, so it carries no document content or paths. -
Fix a stray backslash appearing at the end of lines after a hard break
A hard break (Shift+Enter) at the end of a paragraph serialized to a trailing
\in the markdown source, which users saw as an unexpected character at the end of a line. Worse, deleting it did not stick: the WYSIWYG fragment kept the break node, so the next sync re-emitted the\(a fragment/source round-trip that never settled, hidden from the invariant watchdog by parse-equivalence tolerance). A trailing hard break has no CommonMark meaning — a backslash form decays to a literal backslash on the next parse and a two-space form is stripped — so it is now dropped at serialize time. Mid-paragraph hard breaks, source-authored breaks, void<br>breaks, and literal backslashes in text are all unaffected and still round-trip byte-for-byte. -
Migrate the build, test, and CI toolchain from Bun to pnpm 10 and Vitest 4.
This is an internal toolchain migration with no runtime behavior change for the
published CLI: it still runs on Node (engines.node >= 24, shebang
#!/usr/bin/env node). The workspace is now a standard pnpm workspace
(pnpm-workspace.yaml+pnpm-lock.yaml), all five test tiers run under Vitest
via abun:testcompatibility shim and aBun.*facade, and every TypeScript
entry point runs through Node +tsx.bun.lock,bunfig.toml, and
.bun-versionare removed, and the public mirror ships pnpm.Bun-specific fences retired as part of the cutover:
findBunLockMetadataDriftand thebun.lockmetadata-drift guard (the pnpm
frozen-lockfile check supersedes it).check:bun-run-fallthrough(thebun runPATH-fallthrough guard) and its
test, along with therun-bun-if-available.shroot fan-out wrapper.bun-install-ci.sh, the retry/idle-timeout install wrapper that existed to
work around a Bun install-hang issue; pnpm's install path replaces it.- The
run-test-dom.sh--isolatemock-leak mitigation (the per-file
fresh-module-registry workaround for a Bunmock.modulein-place-patch leak);
the DOM tier is now a dedicated Vitest project withisolate: true.
Two small, required behavioral deltas ride along with the swap: `ok diagnose
v0.33.0-beta.9
Delta since previous beta (v0.33.0-beta.8) — 1 new changeset.
Minor Changes
- External link hover previews are now on by default. Previously they shipped off by default (opt-in). Hovering an external link in the editor now shows a preview card — site name, page title, description, favicon — fetched by your local server, which sends that link's URL to the destination site (one request per previewed link). Turn it off per machine in Settings → Link previews, which sets
linkPreviews.enabled: falsein project-local config. Unchanged: the SSRF guard still refuses to fetch private or internal hosts, no cookies or credentials are attached, results are cached locally, and any fetch failure falls back silently to the plain URL pill. Internal document-to-document previews were already always on and read entirely from the local index with no network request. Note: external previews are not yet available in the packaged desktop app; this default applies to the browser andok uisurfaces.
v0.33.0-beta.13
Delta since previous beta (v0.33.0-beta.12) — 1 new changeset.
Patch Changes
-
Migrate the build, test, and CI toolchain from Bun to pnpm 10 and Vitest 4.
This is an internal toolchain migration with no runtime behavior change for the
published CLI: it still runs on Node (engines.node >= 24, shebang
#!/usr/bin/env node). The workspace is now a standard pnpm workspace
(pnpm-workspace.yaml+pnpm-lock.yaml), all five test tiers run under Vitest
via abun:testcompatibility shim and aBun.*facade, and every TypeScript
entry point runs through Node +tsx.bun.lock,bunfig.toml, and
.bun-versionare removed, and the public mirror ships pnpm.Bun-specific fences retired as part of the cutover:
findBunLockMetadataDriftand thebun.lockmetadata-drift guard (the pnpm
frozen-lockfile check supersedes it).check:bun-run-fallthrough(thebun runPATH-fallthrough guard) and its
test, along with therun-bun-if-available.shroot fan-out wrapper.bun-install-ci.sh, the retry/idle-timeout install wrapper that existed to
work around a Bun install-hang issue; pnpm's install path replaces it.- The
run-test-dom.sh--isolatemock-leak mitigation (the per-file
fresh-module-registry workaround for a Bunmock.modulein-place-patch leak);
the DOM tier is now a dedicated Vitest project withisolate: true.
Two small, required behavioral deltas ride along with the swap: `ok diagnose
v0.33.0-beta.12
Delta since previous beta (v0.33.0-beta.11) — 1 new changeset.
Patch Changes
-
Fix a stray backslash appearing at the end of lines after a hard break
A hard break (Shift+Enter) at the end of a paragraph serialized to a trailing
\in the markdown source, which users saw as an unexpected character at the end of a line. Worse, deleting it did not stick: the WYSIWYG fragment kept the break node, so the next sync re-emitted the\(a fragment/source round-trip that never settled, hidden from the invariant watchdog by parse-equivalence tolerance). A trailing hard break has no CommonMark meaning — a backslash form decays to a literal backslash on the next parse and a two-space form is stripped — so it is now dropped at serialize time. Mid-paragraph hard breaks, source-authored breaks, void<br>breaks, and literal backslashes in text are all unaffected and still round-trip byte-for-byte.
v0.33.0-beta.11
Delta since previous beta (v0.33.0-beta.10) — 1 new changeset.
Minor Changes
- Mermaid diagrams are now fully visually editable. The diagram renderer is powered by mermaid-wysiwyg: click any node, edge, participant, or message to select it and get an action popover right on the diagram (change node shape, edge type, colors, message arrows, participant types, duplicate, delete, and more), double-click any label to edit its text in place, drag between nodes to connect them, and drag sequence messages to reorder. Every gesture becomes a minimal edit to the underlying Mermaid source, so the code fence (or standalone .mmd doc) stays the source of truth and collaborative editing keeps working. Diagram styling, theming, and the pan/zoom controls are unchanged.
v0.33.0-beta.10
Delta since previous beta (v0.33.0-beta.9) — 1 new changeset.
Patch Changes
- Report a bug now records why the server last exited. When the background server process goes away, the desktop app writes the exit code and the reason it left (a clean shutdown, a crash, or an out-of-memory / OS kill) to
state/last-server-exit.jsonin the report bundle, next toserver.lock. Until now a bundle could only show that the server's port was "unreachable", which looks identical whether the server crashed or was shut down cleanly, so a "my app crashed" report could not be told apart from a routine stop. The new record captures the death even when the server was killed and had no chance to log anything itself. It holds only the exit code, the reason, the pid, and a timestamp, so it carries no document content or paths.
v0.33.0-beta.8
Delta since previous beta (v0.33.0-beta.7) — 1 new changeset.
Patch Changes
- Fix: opening a share link no longer offers to initialize a folder that is no longer a git checkout. If a project was moved or deleted outside OK, its recents entry could still be presented as the share target with a "this branch is checked out in " claim and an "Initialize it and open?" prompt, because the path still existed on disk. Share receive now requires a candidate to be a real git working tree at that exact path, so a stale entry falls through to the launcher's "Clone from GitHub" / "I already have it locally" choices instead. Stale entries also no longer suppress worktree enumeration, so a share whose branch is checked out in a linked worktree now opens that worktree directly rather than prompting to switch branches.
- @inkeep/open-knowledge@0.32.1-beta.0
- @inkeep/open-knowledge-core@0.32.1-beta.0
- @inkeep/open-knowledge-server@0.32.1-beta.0
v0.33.0-beta.7
Delta since previous beta (v0.33.0-beta.6) — 1 new changeset.
Patch Changes
- Opening a shared branch in a worktree (and other git operations) no longer fails with a generic error when the repository uses git-lfs installed via Homebrew. The desktop app and its server now append well-known tool directories (Homebrew, MacPorts,
~/.local/bin, asdf/mise shims) to the PATH used for git commands, so helpers git spawns mid-operation — LFS filters, credential helpers, hooks — resolve even though macOS launches apps with a minimal PATH. When a required helper still can't be found, the error now names it ("Git needs git-lfs…") instead of a retry-blind generic message, and the underlying git error is recorded in the desktop log.
v0.33.0-beta.6
Delta since previous beta (v0.33.0-beta.5) — 1 new changeset.
Patch Changes
- Installing an update no longer lands you in the wrong window. When you relaunch to install the latest version with several project windows open, OpenKnowledge reopens all of them and now brings the window you were last working in back to the front, instead of whichever window happened to finish loading last.
v0.33.0-beta.5
Delta since previous beta (v0.33.0-beta.4) — 1 new changeset.
Patch Changes
- Show a read-only Properties panel when viewing a read-only skill file's markdown
(for example the built-inopen-knowledgeskill's SKILL.md). Previously the
frontmatter was stripped and hidden in the read-only viewer, so a managed skill's
name,description, and other metadata were invisible; the editable skill panel
already showed them. The read-only viewer now renders the same "Properties"
section above the body, in read-only mode.