v0.7.0
What can be built now without Meta: Muse Code's skills, MCP servers, hooks
and worktrees from the panel, conversations exported, a rewind that finds an
edit that moved, an accessibility gate on every screen, / as in Claude
Code, and a log that tells a session's story.
Added
-
MCP servers… and Hooks… (palette and Command Palette, CLI
backend):- The MCP view lists what Muse Code will load from its settings: each
server's transport, where it points, whether it is required, and the
names (never the values) of its environment variables and headers. - A remote server can be signed in to or out of through
muse mcp login
orlogoutin a terminal. - It warns out loud about the two settings mistakes that make Muse Code
load no server at all. - The hooks view shows the project's, your own and managed hooks and
opens each file. - Both views are read-only; the extension never edits Muse Code's
settings.
- The MCP view lists what Muse Code will load from its settings: each
-
New worktree… starts a branch in a folder beside the repository and
opens it in a new window. Remove a worktree… deletes another
worktree's folder (the branch stays), and asks a second time before
discarding uncommitted changes. -
Manage skills… (palette and Command Palette, CLI backend): a
checklist of every skill Muse Code knows, built-in, yours, the project's
and plugins'; unchecking one turns it off throughmuse skills disable.
Muse Code reads skill changes when it starts, so the change ends with an
offer to restart it, and the conversation continues on the next message. -
Import skills…: shows what
muse skills importwould copy from
Claude Code or Codex into your Muse skills folder, imports it once you
confirm, and reports what was imported, skipped or failed. -
"Continue a Claude Code session" and "Continue a Codex session" in the
palette's Context group, where the session offers Muse Code's
resume-claudeandresume-codexskills. -
/exportand Muse Spark: Export Conversation save the conversation as
Markdown (messages, thinking, tool calls with their arguments and visible
output) where you choose, on both backends; on the CLI backend Export
session log… saves Muse Code's own JSON record of the session through
muse export. An export waits for a running reply to finish, and a
conversation too long for Muse Code to replay is pointed to the session
log instead of being written as an empty file. -
Delete in the History dialog archives the highlighted conversation, or
restores an archived one, while the search box is empty. -
An accessibility gate: every screen of the panel's test harness is checked
with axe-core against WCAG 2.2 AA in VS Code's four default themes, with
colours read from a real VS Code, and any violation fails the build.
Security
- On the Model API backend a write under
.muse/asks in every mode but
Bypass, like.gitand.vscode:.muse/hooks.jsonnames commands Muse
Code runs outside its sandbox and approvals, so an agent on the key could
otherwise have planted one without asking. Muse Code itself already asks
before writing it (checked live with 1.3.0).
Fixed
- A Model API reply whose stream sends nothing for five minutes ends, saying
so, instead of holding the turn until Stop. - The file tools refuse a file over 10 MiB before loading it, rather than
holding any file whole. - Opened tool-output documents are limited to 32 million characters
together, as well as 20. - An image that cannot be read says so in the banner.
- A rewind whose file cannot be read (a permission problem) says why,
instead of "no longer matches". - A Muse Code install that cannot be read is named in the log, instead of
looking like no install at all. - Accessibility (WCAG 2.2 AA):
- Diff line numbers, a failed tool's reason and the detail line of a
selected menu row now meet 4.5:1 contrast in every default theme. A
failure keeps its red as a bar beside the reason. - The palette's and History's lists can be scrolled from the keyboard:
each is a Tab stop, the dialog stays open while the focus is in it,
and Escape works from there. - Screen readers no longer meet buttons nested inside list rows. The
effort row is set with Left and Right, and History rows archive with
Delete; the dots and the × remain for the mouse. - Question answers have 24 px rows, so each radio or checkbox is easy to
hit, and each effort dot in the Modes menu is a 24 px target.
- Diff line numbers, a failed tool's reason and the detail line of a
- Rewind code to here no longer skips an edit just because you added or
removed lines above it since. The edit's own lines, matched exactly, are
found where they moved to when they appear in exactly one place. An edit
whose lines you changed, or whose lines appear more than once, is still
refused with the reason, never guessed at. - A path with a typographic apostrophe, such as
C:\Users\O’Brien, no
longer breaks the Windows job helper's PowerShell scripts. PowerShell
reads ‘ ’ ‚ ‛ as quote characters, and only the plain'was being
escaped. - The terminals the extension opens (sign-in, Open in Terminal, MCP
sign-in) single-quote the CLI's path and every argument for the shell
they run, so nothing in them is expanded. - On macOS, dictation from the panel asks for speech recognition and the
microphone as the helper itself (muse-dictate, with its own usage
descriptions) instead of as Visual Studio Code, which declares no
speech-recognition purpose and so was refused without being asked
(microsoft/vscode#307364). The grants cover the helper alone; an update
that changes the helper asks again.
Changed
- The log tells the whole story (Muse Spark: Show Logs):
- Failures: every failure the panel or a popup showed, and any that
failed unseen, with a stack where there is one. That covers panel
actions, commands, background restarts and errors inside the panel
itself. The panel reports its errors at most ten a minute. - Sessions and turns: each session started, resumed or forked, with
its id. Each turn with its result, duration and time to first output. - Also: approvals (the tool and the answer), sign-in changes, the
backend in use, and why the backends restarted. - At Trace level: each Muse Code command's and Model API request's
time. - Never logged: prompt text, file contents, dictated words and model
output. An invalid setting now warns once, not on every read.
- Failures: every failure the panel or a popup showed, and any that
- Faster when replies stream: streamed text reaches the panel at most once
a frame, and the panel stops saving its state every second while a reply
streams (it saves when the turn ends). - Smaller:
- The Model API's git facts are gathered in parallel.
- The editor selection is read once it settles, not on every arrow key.
- Tool output previews are cut at 2,000 characters as well as 12 lines.
- The diagnostics server starts when a session first needs it.
/in the prompt works as in Claude Code. A/on an empty prompt
stays in the box and shows the palette above it, and the box keeps the
keyboard: Up and Down,EnterandEscwork the palette. Type a letter
more and the palette gives way to a list of slash commands narrowed as you
type, names that start with your letters first.Enterruns a command,
or completes a skill so you can add its arguments;Tabcompletes the
name. New names in that list:/model,/resume,/permissions,
/config, and/mcpand/hookson the CLI backend. The/button
still opens the palette with its own filter box.- The Agent map and the header's agents pill show running and finished
agents in the panel's blue, as a running tool's dot is, instead of green. - The Marketplace publish runs in a
marketplaceenvironment that only
version tags can use, holding the publishing token; no other workflow
run can read it.