v0.42.4
v0.42.4
Migration / breaking
- No shared database schema change; the fence stays at 84.
ck-mcgains the memory-mirror health surface (below) and achangefeed_headread; no store migration. The module half of the #444 fix lands with the nextck-mcbuild.- Developer floor: the repository declares Bun ≥ 1.4.0 (
engines.bun). Every gate script refuses with one line below it;test:serialstays available on older Bun.
doctor drain-authority honors subc.connection_file (#443)
Three CLI sites built the subc transport without the configured connection file and fell back to the platform default, so the designated escape hatch out of rust mode failed whenever the daemon publishes elsewhere, with a message blaming the daemon. All three now thread the loaded config's subc.connection_file, the transport constructor no longer accepts a missing argument, and the platform default lives behind one explicit accessor so a future call site cannot drift to it silently. Thanks to @iceteaSA.
Rust-mode memory mirror could freeze mid-corpus with ctx_memory refusing (#444)
A memory written on the module side that advanced the changefeed without changing the host's projection left the host believing its mirror was caught up, so no later pass pulled again and ctx_memory refused reads and writes while health reported ok. Transform responses now carry the module's memory feed head and the host keys its projection on it; the transform page size is 1,000 (20,000 feed rows per pass under the same page cap); a caught-up mirror performs no pull on stable passes. Under module authority, reads route to the module instead of presenting a partial host mirror as complete. The frozen state is visible: ck health magic-context, session.status and /ctx-status report the feed head, host cursor, cursor age and pending rows, with MC-M01 for a stalled cursor and MC-M02 for a durable host/module authority mismatch, replacing the "retry in a moment" copy for a state that does not clear on its own. doctor drain-authority clears the project's mirror rows on the way back to TypeScript. Thanks to @iceteaSA.
dropped_tokens telemetry no longer tokenizes the whole message array (#448)
On every cache-busting pass the plugin serialized and tokenized the entire transformed message array twice to compute a diagnostics-only token delta — 46–77 seconds of blocked host on a 10 MB array. The number is now the sum of the persisted per-tag token counts for the tags actually reduced in the pass (a skeletonized tool call counts its removed output; a full removal counts output, input and reasoning; a partial text rewrite counts its removed characters at the tokenizer's fallback rate). No whole-array serialization remains on that path; the served array is byte-identical before and after. Thanks to @null-axiom for the direct measurements.
Pi doctor: embedding runtime probes and duplicate-load detection (PR #414, #445, #446)
Doctor's embedding-runtime probe now picks the best result across every registered candidate (native over WASM over broken), lists every broken candidate with its path and reason when none works, and treats a local checkout of the plugin as a second loaded identity in the duplicate-load check (Pi loads a local path and the npm package as distinct identities). Doctor's own registration check and --force repair recognize a local checkout too, so a dev-path install is no longer "repaired" into a second npm registration. Thanks to @qsgy-edge for three rounds on the probe. On Bun 1.3.x, bun test --parallel fails with a Database initialization error (a Bun module-graph defect, not an import cycle) and build:v2 trips a third-party instanceof Error check; the Bun floor above and a tolerant entry test cover both. Thanks to @iceteaSA.
Dashboard v0.16.0
Released separately: protected_tokens replaces the retired protected_tags control, the Sidekick section is gone, sessions resolve OpenCode's store by install channel, OMP sessions keep their project, and the log viewer reads both log grammars.