Skip to content

v0.35.0

Choose a tag to compare

@inkeep-internal-ci inkeep-internal-ci released this 20 Jul 14:11

Minor Changes

  • The Cmd+K command palette now reaches the actions that used to live only in the native menu bar. You can search for and run Check for updates, New from template, New worktree, Switch worktree, Rename, Duplicate, Move to Trash, Reveal in Finder, Copy full path, Copy relative path, Close tab, the View toggles (sidebar, document panel, terminal, hidden files, .ok folders, only markdown files, skills section), Expand all, Collapse all, New Terminal, Kill Terminal, Set up OpenKnowledge integrations, Check spelling while typing, and OpenKnowledge on GitHub, all from Cmd+K.

    Toggle commands show their current state (for example the sidebar row reads "Hide sidebar" when the sidebar is open), and the commands that do not need the desktop shell now work in the web app too, not just Desktop. These rows appear once you start typing, so the palette's empty state stays lean.

    On macOS, "Check for updates" no longer appears twice. It shows once, in the App menu, matching where Settings lives.

Patch Changes

  • Long Ask-AI, Open-with-AI, and Create-with-agent instructions are no longer silently cut to ~1,400-2,200 characters when launched in the docked terminal. The terminal launch previously inherited the web deep-link's URL budget even though it feeds the agent CLI directly through the terminal; it now carries instructions up to ~100 KB, so a long typed prompt reaches Claude, Codex, Cursor, and the other agent CLIs in full. Web deep-link handoffs keep their intentional URL-size budget, and selections continue to travel losslessly on both paths.

  • The Problems panel gains two new lint actions. A "Fix all" button applies every auto-fixable problem at once — in the "This doc" tab it fixes the open document instantly (undoable, attributed to you), and in the "Project" tab it sweeps every fixable file and refreshes the audit, reporting any files it could not fix. On desktop, each problem row also offers "Ask AI": it composes a grounded fix prompt (document, rule, line, message, and the offending text) and types it into your running agent terminal for review — or launches Claude with it if no terminal is open. Deterministic fixes triggered from the UI are now attributed to you (the principal) rather than to an agent; fixes requested by agents over MCP keep agent attribution.

  • Feature: typing $$…$$ or $…$ in the WYSIWYG editor now autoconverts to
    an inline math atom on the closing delimiter (currency-safe; Ctrl+Z restores
    the raw literal). The inline-math edit popover closes on Enter, gains a Done
    button, and drops the caret right after the atom so typing continues inline.

  • Internal refactor of the Cmd+K command palette: the fixed command rows now render from a single command registry that also drives the palette/menu parity ratchets, replacing the per-command hand-wiring. No user-facing changes — the commands, their grouping, labels, shortcuts, and behavior are unchanged.

  • Opening a shared document by cloning from GitHub no longer requires the GitHub CLI (gh) to be installed. OpenKnowledge now authenticates the clone with the GitHub account you're already connected as, rather than delegating to gh or to whatever credential helper your machine's git config happens to point at. "Clone to a new folder" previously failed on a clean machine — or one with a leftover gh auth setup-git config after gh was removed — with gh: command not found and could not read Username; it now uses your connected account directly.

  • Typing or pasting a literal whitespace character reference such as   (space), 	 (tab), or   (non-breaking space) into the editor no longer silently turns it into the actual whitespace character. Previously these typed characters were stored unescaped, so on the next reopen or sync every reader saw an invisible space instead of the text you typed. They now survive edit, save, and reopen exactly as written. Spaces the editor itself preserves at bold/italic boundaries are unaffected, and existing files on disk keep their exact bytes.

  • Background shadow-repo garbage collection no longer races the write path. Previously, the maintenance gc (which packs and prunes the attribution journal's loose objects) could run concurrently with an in-flight auto-save commit; in the race window, git's object-directory cleanup could make the commit fail transiently (unable to create temporary file / failed to insert into database), logged as a per-writer shadow commit failure and dropping that flush's version-history entry until the next auto-save. Shadow mutations and the gc leg are now mutually exclusive: gc waits for in-flight commits to drain and briefly holds new ones until it finishes, so auto-saves can no longer fail because maintenance happened to run at the same time.

  • Pasting source at the end of a document no longer corrupts or loses content when the paste lands against a code fence or a JSX container's closing tag. A paste that glued onto a closing ```line used to reopen the fence to the end of the document; the editor's serializer then invented a closing fence the document never had, the collaboration bridge saw permanent divergence between the WYSIWYG and source views, and its repeated repair merges could drop lines from both — in multi-user sessions this surfaced as text vanishing for everyone. Documents that end in an unclosed code fence now round-trip byte-exactly (the fence stays unclosed until you type below it), and content pasted directly under a</Steps>-style container close is recognized as equivalent to its canonical blank-line-separated form instead of triggering endless repair cycles.

  • Trailing spaces or tabs at the end of a paragraph, heading, or table cell no longer round-trip through an unstable intermediate form. Typing a trailing space in the editor used to serialize the space byte, which the next parse silently discarded — an avoidable divergence between the WYSIWYG view and the stored source that cost an extra canonicalization cycle on every save/load. The serializer now strips insignificant line-final whitespace up front (the exact canonicalization the parser already applies to files on disk), so the first emission is a stable fixed point. Significant whitespace is untouched: boundary spaces inside bold/italic/strike/highlight still mint their &#x20; character references, mid-paragraph hard breaks of both markdown styles stay byte-exact, non-breaking spaces survive, and whitespace-only paragraphs keep their minted character reference. A new editor-construct fixed-point sweep now guards this whole class: every editor-constructible document shape must serialize to bytes that are their own re-parse fixed point, with an explicit fail-closed allowlist for documented benign canonicalizations.

  • Fixed a rare content-corruption bug where text written to a document while a collaborator's connection was catching up could split freshly-applied content in two. When a file changed on disk (or an agent rewrote a document) at the same time as an offline-typed edit from another client arrived, part of the new content could end up interleaved with the concurrent edit — observed as a line split in the middle with the other client's text in between. The sync bridge now applies changed content as whole lines in single contiguous runs, which makes this interleaving structurally impossible; unchanged lines still keep their edit history and attribution.