v0.55.2
Released Aug 15, 2026.
Patch Changes
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.