v0.31.3
v0.31.3
Patch release: completes the TUI fix started in v0.31.2 and ships a batch of Pi parity fixes.
TUI sidebar now updates when installed from npm
v0.31.2 restored the OpenTUI runtime dependencies so the sidebar loads again, but a second issue remained: on OpenCode 1.17.14, plugins installed from npm are excluded from OpenTUI's Solid compile step, so the sidebar rendered once and never updated (token counts, compartments, and memories stuck at zero). Development checkouts were unaffected, which is why the problem only appeared in published installs.
The TUI is now precompiled at publish time and binds directly to the host's OpenTUI runtime, so the sidebar is fully live from npm installs. Older OpenCode versions and development checkouts keep working through an automatic fallback. The release pipeline now installs the packed artifact and verifies the compiled output before publishing, so this failure class is gated structurally.
Pi: todowrite gets real UX and a disable switch
Magic Context registers a todowrite tool on Pi (Pi has no built-in task list). It previously rendered raw JSON and could not be turned off, which clashed with community todo extensions. Now:
- A persistent todo overlay above the editor shows active tasks with status glyphs and counts while work is in flight, and hides itself when the list empties. It survives restarts.
- Tool calls render as compact status lines instead of JSON dumps, and a
/todoscommand lists tasks grouped by status. - New
todowrite.enabledconfig (defaulttrue): set tofalseif you use your own todo extension, and Magic Context registers neither the tool, the command, nor the overlay.todowrite.overlaycontrols just the widget.
Pi fixes
- Commands and tools now follow
/cd:/ctx-status,/ctx-dream,/ctx-wrapup,/ctx-embed, smart notes, and the rest resolve the active project's configuration at invocation time instead of using the project Pi was launched in. - Historian resilience now matches OpenCode: transient provider errors (rate limits, timeouts, 5xx) retry on the same model before moving down the fallback chain, and the live session model serves as a last-resort fallback after configured
fallback_models. - Historian failures now surface a notice in the session (previously they were only recorded internally), with the same wording and throttling as OpenCode.
/ctx-embed startreports progress during long embedding runs instead of appearing hung.- Fixed several cache-stability gaps: pending drops no longer land mid-historian-run, session switch-back no longer forces an immediate rebuild, and a stuck emergency-recovery flag now clears only after context usage genuinely drops.
/ctx-recomp --upgradenow points to/ctx-session-upgradeinstead of failing as invalid usage./ctx-statusshows the work metrics (new work tokens / total input) that OpenCode's sidebar already displays.
Other
ctx_searchnote anchors and smart-note attribution fixes on Pi.