Skip to content

v0.7.0

Choose a tag to compare

@github-actions github-actions released this 25 Sep 01:35
· 736 commits to main since this release

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
      or logout in 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.
  • 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 through muse 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 import would 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-claude and resume-codex skills.

  • /export and 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 .git and .vscode: .muse/hooks.json names 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.
  • 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.
  • 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, Enter and Esc work 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. Enter runs a command,
    or completes a skill so you can add its arguments; Tab completes the
    name. New names in that list: /model, /resume, /permissions,
    /config, and /mcp and /hooks on 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 marketplace environment that only
    version tags can use, holding the publishing token; no other workflow
    run can read it.