Releases: cortexkit/magic-context
Release list
v0.30.4
v0.30.4
Patch release fixing two issues, one of them breaking historian and dreamer runs for many Pi users.
Pi: historian and dreamer can now use models from provider extensions
Pi subagents (historian, dreamer, sidekick, recomp) were spawned with extension discovery disabled. If your configured model came from a provider extension — Antigravity, Anthropic OAuth, or any other auth extension — every subagent run failed instantly with Model "..." not found, so the historian and dreamer never ran at all. Models defined in models.json were unaffected, which is why this only hit extension-based setups.
Subagent processes now load your extensions, so extension-provided models resolve the same way they do in your interactive session. What changed underneath:
- Recursion protection moved from disabling all extensions to a targeted guard: the full Magic Context extension detects it is inside a Magic Context subagent and stays inert there.
- Every subagent now runs under an explicit per-agent tool allow-list. Unknown agents get no tools at all. Extension tools you have installed cannot leak into a subagent that was not meant to use them.
- Dreamer code-reading tasks (memory mapping, verification, docs maintenance, primer investigation) now get AFT's read-only navigation tools on Pi when the AFT extension is installed, matching OpenCode.
Pi: retrospective and refresh-primers read sessions through the right API
The Pi dreamer's session readers probed an API that does not exist in pi-coding-agent (SessionManager.listSessions), so the retrospective task failed with Pi session APIs unavailable and refresh-primers silently fell back to closed-book seeds. Both providers now share one resolver using the real API (SessionManager.listAll + parseSessionEntries), with tests against the installed package so a future Pi API change fails in CI instead of degrading quietly.
OpenCode: the sidebar entry in tui.json is yours again
The plugin used to re-add its TUI sidebar entry to tui.json(c) on every OpenCode start. If you removed the sidebar deliberately, it came back on the next launch. The entry is now written only by the setup wizard and doctor — removing it from tui.jsonc disables the sidebar permanently.
v0.30.3
v0.30.3
A patch release fixing the Pi retrospective dream task, the /ctx-embed loop on oversized compartments, and adding a log-path override.
Fixes
-
Pi retrospective dream task no longer fails silently (#201). On Pi, the
retrospectivetask calledpi-coding-agentsession APIs that don't exist (SessionManager.listSessionsand a publicloadEntriesFromFile), so it threw "Pi session APIs unavailable" every run and reported "Skipped (no work)" — meaning Pi users got no retrospective learning at all. It now uses the correctSessionManager.listAlland reconstructs entries via the publicparseSessionEntries. Thanks to @kachook for the fix. -
/ctx-embedno longer stalls on oversized compartments (#206). When a single canonical line inside a compartment (for example a large file dump rendered into one message) was larger than the embedding model's context window, it was sent whole and the provider rejected it — so that compartment could never embed and/ctx-embedreported no progress. Oversized lines are now split down to the window budget before embedding, and empty inputs are coerced to a single space so one blank string can't fail the whole batch. Thanks to @randomvariable for the fix.
Additions
MAGIC_CONTEXT_LOG_PATHoverrides the diagnostic log location (#183). Set this environment variable to redirectmagic-context.logaway from the default temp-dir path — useful in Docker/CI where the temp dir is disposable, or to point the plugin and dashboard at a shared file. Blank is treated as unset. Both the plugin and the dashboard log tail honor it. Thanks to @kecsap for the feature.
Docs & internals
- Documented the
system_prompt_injectionandkeep_subagentsconfig keys, which were in the schema but missing from the configuration reference. - Removed the stale
compressorconfig stanza from the configuration docs (the LLM-compressor subsystem was replaced by the decay renderer; the schema already rejected the key, so IDEs flagged it) (#204). - Fixed a test-isolation mock leak so the memory test directory passes when run on its own.
v0.30.2
v0.30.2
A patch release fixing high idle CPU from the TUI sidebar.
Fixes
-
High idle CPU from the TUI sidebar (#200). The sidebar polled the plugin every 500ms over a localhost connection. Because the TUI and the plugin run in separate runtimes inside the same process, each poll opened a brand-new loopback connection, so an idle session kept burning CPU continuously (a few percent on fast machines, noticeably more on slower ones, and additive when other sidebar plugins were also installed). The sidebar now holds a single persistent WebSocket to the plugin and receives updates the instant they happen, instead of polling. Idle CPU drops back to baseline. Thanks to @null-axiom for the report and the cross-plugin cross-check that pointed at the shared mechanism.
As part of this, the plugin's detection of whether a TUI is connected is now based on the live connection itself rather than a recent-poll timeout, so server-initiated dialogs (
/ctx-status,/ctx-recomp, the upgrade prompt) route to the TUI reliably instead of depending on timing.
v0.30.1
v0.30.1
A patch release fixing local embeddings on OpenCode Desktop.
Fixes
- Local embeddings work on OpenCode Desktop (#195).
/ctx-embedfailed on the Desktop app withUnsupported device: "cpu". On Electron, Magic Context supplies its own WebAssembly ONNX runtime (to bypass a native-module load failure), but that made@huggingface/transformersskip its device registration, so every device selection threw. The embedding pipeline now selects the runtime explicitly on that path, and resolves the local WASM assets correctly instead of falling back to a remote URL. Local embeddings load and run on Desktop again. Thanks to @Treeed for the precise, source-grounded report.
v0.30.0
v0.30.0
Setup and doctor now recognize OpenCode Desktop installs that have no CLI, the TUI sidebar badge matches your theme again, and the doctor plugin-cache check is more reliable. Also a dependency refresh (newer OpenCode and Pi SDKs) and security updates.
Fixes
- Setup and doctor recognize OpenCode Desktop without a CLI (#196). Installing OpenCode only through the Desktop app leaves no
opencodebinary on PATH (its server runs inside Electron), so setup reported "OpenCode not found" and refused to continue, and model discovery came up empty. Setup and doctor now detect a Desktop-only install and continue with manual model entry instead of claiming OpenCode is absent. A stock CLI installed outside PATH (for example under a version manager) is also found and used for model discovery. Thanks to @Treeed for the report. - TUI sidebar badge color follows your theme again (#198). On dark themes the Magic Context badge rendered white text while sibling badges (such as AFT) rendered the theme's own background color, so the two looked inconsistent. The badge now uses the theme background like the others, with a safety fallback for transparent-background themes so the label can never disappear. Thanks to @null-axiom for the report.
doctorclears a stale plugin cache reliably (#199). The cache check compared the cached plugin against the CLI's own version rather than the plugin's latest published version, so a stale@latestcache could survive when run through an older cached CLI. It now compares against the plugin's npm-latest, clears the versionless cache root as well, and preserves the cache (rather than clearing it) when the version check is offline. Thanks to @coleleavitt for the fix.
Maintenance
- Refreshed dependencies and resolved several security advisories, including newer OpenCode (
@opencode-ai/plugin,@opencode-ai/sdk) and Pi (@earendil-works/pi-coding-agent,@earendil-works/pi-tui) SDKs.
Dashboard dashboard-v0.9.1
Dashboard v0.9.1
A patch release fixing model discovery for pnpm-installed OpenCode on Windows.
Fixes
- Finds a pnpm-installed OpenCode CLI on Windows (#149). pnpm places global binaries at
%LOCALAPPDATA%\pnpm\bin\opencode.cmd, which is not on the GUI process's PATH and was not in the set of locations the dashboard checks, so model dropdowns came up empty for pnpm users. That path (and the pnpm store location) is now included, so the dashboard discovers and queries a pnpm-installed OpenCode. Verified on Windows. Thanks to @nielpattin for the report and diagnosis.
Maintenance
- The updater manifest now pins download URLs to each release tag, so Desktop auto-update keeps working regardless of which package release is GitHub's "latest" (the earlier broken manifest was already corrected in place).
Dashboard dashboard-v0.9.0
Dashboard v0.9.0
Adds a browser mode so the dashboard works on Linux and WSL2 setups where the desktop window comes up blank, and recognizes OpenCode Desktop installs that have no CLI.
Features
- Browser mode (
--serve). On some Linux distributions and under WSL2 the desktop window opens blank (often withCould not create default EGL display) because the bundled WebView cannot start against the host's graphics stack. The same binary can now run as a local web server instead:magic-context-dashboard --serveprints a URL (with a one-time access token) that you open in your normal browser, bypassing the embedded WebView entirely. It binds127.0.0.1:9077by default;--serve <port>changes the port, and--host 0.0.0.0 --allow-remoteexposes it to other machines (off by default, behind an explicit flag, since the dashboard can read transcripts and edit config). See the dashboard docs.
Fixes
- Recognizes OpenCode Desktop installs without a CLI (#196). Installing OpenCode only through the Desktop app leaves no
opencodebinary to query, so model dropdowns came up empty with no explanation. The dashboard now detects a Desktop-only install and lets you type a model id manually, with a hint explaining why auto-population is unavailable. A stock CLI installed outside PATH is also found and used.
Maintenance
- Pre-release hardening:
--serveAPI responses are markedno-store, and Desktop detection has more robust path fallbacks when environment variables are unset.
v0.29.1
v0.29.1
A small patch release: fixes a multi-project Desktop warning, a tool-call edge case for GPT-family models, and simplifies an internal nudge path.
Fixes
- No more
MaxListenersExceededWarningon OpenCode Desktop with several projects open. Each plugin instance was registering its own process-exit listener; past Node's 10-listener default this logged a warning. All instances now share a single exit listener. ctx_notedefaults to read correctly for GPT-family models. Models that fill every optional parameter (sendingcontent: ""for a read) madectx_noteinfer a write and reject the empty content. It now infers write only on non-empty content.- Pi resolves OpenAI and Google models from a shared OpenCode/Pi config. OpenCode and Pi name a few providers differently (
openaivsopenai-codex,googlevsgoogle-antigravity); a model configured in one harness' form is now translated automatically so the same shared config works on both. Anthropic and other providers were already identical. - Dreamer "last run" time is accurate again (#194). After upgrading to Dreamer V2, the sidebar and
/ctx-statusshowed a frozen timestamp from the old V1 dream cycle even though V2 tasks were running nightly. They now read the most recent task run, so the displayed time tracks real execution. Thanks to @wjiuxing for the precise report.
Internal
- Channel 2 ceiling nudges now deliver through the in-process client OpenCode hands the plugin instead of a separate live-server client + reachability probe (the upstream duplicate-runner bug the workaround guarded against is fixed in OpenCode ≥ 1.17.7). As a side effect they also work on plain TUI now.
- Removed dead code and a circular import (
storage-db↔migrations) surfaced while dogfooding our code-health tooling.
Dashboard dashboard-v0.8.3
Dashboard v0.8.3
Fixes
- OpenCode model dropdowns no longer hide your configured providers. Model discovery briefly used
opencode --pure models, which skips external plugins and so omitted providers registered by auth plugins (e.g.anthropic,google). The pickers now use the fullopencode modelslist, restoring every provider you have set up. - Wider model pickers. The model selectors (and the "Add fallback model" dropdown in particular) were cramped and wrapped their options. They now fill the column.
- Cleaner Cache Diagnostics. Removed the combined "Show all" view: the page always focuses a single session's cache timeline instead of merging every session into one chart, which made the numbers confusing. A session is always selected; clicking a card focuses it.
Maintenance
- Updated the Tauri stack to the latest 2.x and refreshed dependencies, resolving several security advisories.
Dashboard dashboard-v0.8.2
Dashboard v0.8.2
New
- Primer candidates are now visible. The Primers page shows a read-only Candidates section beneath the promoted primers: standing questions the historian has recorded that have not yet recurred often enough to be promoted. Previously the page looked empty until a primer was promoted, even when candidates were accruing. The empty state now explains the recurrence requirement, so the page is self-describing.