v0.51.0
Minor Changes
-
Remote enablement: the
server.*configuration keys now drive real behavior, and the server's ingress runs through one consolidated admission path.- Environment variables land per the ratified mapping:
PORT,OK_BIND(space-separated list),OK_PUBLIC_URL,OK_ALLOW_EXTERNAL,OK_OPEN_BROWSER,OK_IDLE_SHUTDOWN. Booleans accept1/0/true/false; a malformed value refuses to boot naming the variable. Precedence is flags > env > project-local > project > user config. server.bindis a real list: every configured address gets a listener on the same port.server.publicUrlfeeds Host/Origin validation and issued URLs.- The exposure consent interlock is enforced: a non-loopback bind without
server.allowExternalrefuses to boot with a one-line fix. A committedserver.publicUrlunder a loopback bind is inert metadata — it never blocks a teammate who clones a deploy repo and opens it locally; publicUrl's consent requirement surfaces at request time. Consent relaxes the loopback-peer check only — Host and Origin always validate against loopback names, the bind-address literals, and the configured public URL. Behind a reverse proxy or tunnel, forwarded headers are tolerated (never trusted) once consent andserver.publicUrlare set. .ok/local/config.yml(the per-machine layer) now participates in CLI config loading with per-key scope ownership, so a committedserver.allowExternal: truecan never arm exposure on another machine.- Starting an exposed server (
server.allowExternalon a non-loopback bind or with apublicUrl) prints an unmissable warning: there is no server-side authentication, so anyone who can reach it has full control including sync, publishing, GitHub credentials, and local operations — restrict access at the edge (Tailscale ACL, an authenticating reverse proxy, or a firewall). - The editor renders on plain-HTTP non-localhost origins (a tailnet or LAN IP, direct-IP access).
crypto.randomUUID()is a secure-context-only API and was throwing at module load on those origins, leaving a blank screen; identity generation now falls back tocrypto.getRandomValueswhenrandomUUIDis unavailable. ok start --idle-shutdown offno longer self-terminates on boot: an off flag now threads through to disable idle-shutdown identically to the exposed-bind derived default.
- Environment variables land per the ratified mapping:
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 |