v0.31.0
Reworked web app, audit analytics, and the Chat UI removal
Knowns v0.31.0 is a minor release that rebuilds the web app on shared page components, adds audit analytics with rotated-segment coverage, and removes the embedded OpenCode Chat UI. The graph now renders through Sigma, /kanban is folded into a unified Tasks page, and the runtime monitor gets its own page.
This release also fixes four crashes and races that had been hiding behind failing tests: a duplicated task detail sheet, a graph page that died without WebGL, a config page that intermittently crashed on a hook-order violation, and an unbounded runtime daemon rescan.
Added
- Configurable Task ID prefixes: Task IDs can now carry a project-specific prefix.
- Audit Analytics API:
GET /api/audit/analyticsreturns daily buckets, per-tool aggregates and retained-window coverage, so the charts can tell "no activity" apart from "history rotated away". Rotated audit segments are read too, not just the live file. - Runtime Page: A dedicated
/runtimepage replaces the docked runtime monitor panel, with error and refresh state exposed. - Grouped Sidebar: Navigation is grouped into sections, with connection status and the theme toggle moved into the sidebar.
- Baseline Regeneration Path: A manual
workflow_dispatchinput regenerates the pinned retrieval baselines inside CI's pinned runtime, which is the only environment where those numbers are reproducible.
Changed
- Unified Page Shell: Docs, memory, decision, tasks and graph pages were rebuilt on shared
FeatureHeaderand preview components, and moved ontoPageShelland design tokens. - Sigma Graph: The knowledge graph renders through Sigma with a constellation layout. Memory sources are linked into the graph, matching how decisions already treat theirs.
- Typography: Self-hosted Geist replaces the previous font loading.
- Faster Init:
knowns initis quicker and the setup wizard rendering is fixed. - Faster Memory Review: Building the review inbox no longer runs a live semantic search per candidate entry, which took minutes across a few hundred memories. Full semantic duplicate detection still runs on
memory createand review resolve.
Fixed
- Duplicate Task Detail: Opening a Task from the board rendered the whole detail sheet twice, so mentions, timer controls and labels each resolved to two DOM nodes.
- Graph Without WebGL: The graph page crashed into a blank error boundary when the browser refused a WebGL context. It now explains the likely causes and leaves the rest of the page usable.
- Config Page Crash:
/configintermittently died with React error #310 because seven hooks sat below an early return. - Runtime Daemon Rescan: Dead letters counted as pending work so idle shutdown never fired, the project registry kept every store root ever registered, and retained dead letters were unbounded.
- Doc History Drift: Doc history stays aligned with the files on disk.
- CLI Escape Sequences: Literal
\nand\tin flag values are no longer rewritten. - Test Data Race: Removed a race on
os.Argsbetween test setup and the daemon goroutine.
Breaking Changes
- The embedded OpenCode Chat UI is removed. The chat frontend, the
internal/agents/opencoderuntime, its server proxy, WebSocket and SSE forwarder, and the/api/chatsendpoints are all gone. TheenableChatUI,opencodeServerandopencodeModelssettings no longer exist and are ignored if left inconfig.json. Knowns now requires theopencodebinary inPATHbefore writing runtime hooks, like every other runtime. OpenCode as an AI agent platform is untouched:OPENCODE.md,opencode.json, MCP config, skills and theplatformssetting all still work. knowns initno longer generatesKNOWNS.md.knowns doctordropped--online. Network checks always run./kanbanis folded into the Tasks page, pinned to the board view. Existing/kanbanand/kanban/<id>links keep working.
Contributors
Included pull request: #141
Full Changelog: v0.30.0...v0.31.0