1.0.0-beta.38
published 18 October 2026
- Added Qwen (/logins qwen or DASHSCOPE_API_KEY): connects with a QwenCloud key (Token Plan or pay-as-you-go) or an Alibaba Cloud Model Studio key (pay-as-you-go, Token Plan or Coding Plan); a key is checked on its own endpoint before it is stored, a plan key lists the plan's models with Qwen3.8 Max first and an Auto row that lets the plan pick, and the bare word qwen runs Qwen3.8 Max
- Added MiniMax (/logins minimax or MINIMAX_API_KEY): runs M-series text models with per-model thinking controls; M Plan usage windows show in /usage
- Added Together AI (/logins together or TOGETHER_API_KEY) and Cohere (/logins cohere or COHERE_API_KEY): Together AI runs open-weights chat models with session affinity; Cohere runs Command, North and Aya models with structured JSON output
- Added Groq (/logins groq), Cerebras (/logins cerebras) and Fireworks AI (/logins fireworks): each runs live text models under its family prefix with reasoning controls and observed rate limits in /usage
- Added named custom endpoints (compatProvider.<name> in settings): each sets its own base URL, key command, models and dialect, and serves models as compat/<name>/<id>
- Added model facts in settings (models.<id>): state context window, output cap, prices, efforts and thinking budget for any model id or as family defaults
- Added credentials.keyCommands.<family> in settings: supply API keys from shell commands across every provider family under a timeout and process-level cache
- Added ordered backup engines (engine.backups) and disabled providers (engine.disabledProviders): a turn hops to the next backup when the active engine is overloaded or unreachable; disabled providers hide from /model while keeping stored keys
- Added mercury auth login|list|status|logout|mint and mercury models: sign in, list families, check state or sign out from the command line, and print reachable models
- Added mercury lsp list, mercury lsp install <server>, /lsp status and /lsp restart: inspect, install and restart language servers from the command line or the composer; the catalogue adds PowerShell, Haskell, OCaml, Scala, Nix, Dart, Gleam, Prisma, Clojure, Julia, Kotlin, Phpactor and Expert servers and dart, kotlin and elixir debuggers
- Added mercury sessions delete <id> and /browse: delete one saved session after confirmation; /browse opens the file browser in every layout
- Added linux-arm64 and windows-arm64 release archives and the MercuryCLI.MercuryCLI WinGet manifest generator
- Added --max-time <time> on mercury run: ends the run at the next step boundary once the deadline passes without cutting a call in flight
- Added archive, SQLite and document lanes to Read: opens .zip, .tar, .tar.gz, .tgz, .sqlite, .db, .docx, .xlsx, .pptx, .odt, .ods, .odp, .epub and .rtf; takes negative tail offsets, multi-range reads, tree-sitter outlines and image crop boxes
- Added archive-entry and SQLite-row writes and syntax checks to Write and Edit, and literal: true to Grep: updates zip entries and keyed SQLite rows through <container>:<target> grammar; checks JSON, YAML and TOML syntax when no language server covers the file; Grep with literal: true matches exact text without regex escaping
- Added action: "tree" to Computer: reads the frontmost application's accessibility tree on macOS under per-application approval
- Added pseudo-terminal mode (pty: true) to Service: runs interactive commands in a 120×40 pseudo-terminal with write, submit and eof input modes
- Added shell.filterOutput in settings: collapses progress-bar redraws and folds identical lines while keeping raw output in a named file
- Added keyless developer-host APIs to WebFetch: reads GitHub, npm, PyPI, crates.io, arXiv and Stack Overflow through public APIs before falling back to HTML fetch
- Added five safety floors: refuses writes to credential stores unless an exact path rule grants them; refuses agent reads of Mercury's own stored credentials; refuses cloud-metadata addresses in WebFetch and Browser; protects Mercury's running binary and daemon against writes, deletes and kills; asks approval before writing project instruction files or reading .env files
- Changed provider key entry to live in /logins alone, with missions running on the session's model and the provider-slots check reported under AUTH on /health
- Changed /logins nous to support browser device-code sign-in alongside pasting a Nous Portal API key
- Changed compaction: a normal compaction sends the conversation unshaped so the prompt cache stays warm; a three-rung ladder pre-fits the input when a conversation exceeds the summariser's limit, retries with thinking off if the provider returns an empty summary, and falls back to Mercury's own records with the cause named
- Changed turn execution: read-only tool calls start as soon as their block settles in the streaming reply; Write, Edit and NotebookEdit to non-overlapping paths run in parallel; output token caps fit the remaining window before every request; a tool call cut off at the limit is re-asked with double the output room
- Changed local models whose server reports no native tool support to take tools through the system prompt as JSON and return parsed <tool_call> blocks; ResumeCrewmate accepts optional model and effort overrides
- Changed Browser to launch Chrome with a persistent per-origin profile, standard flags and human-pace interaction, and to state on back when a page came from the browser's cache
- Changed startup memory: source-linked required records ride outside the allowance, remaining candidates rank by score within a scaled character budget, and a prompt-matched fact that does not fit rides as a compact pointer
- Fixed sign-in and wrong-key handling across OpenAI, xAI, Gemini, OpenRouter, MiniMax and Z.AI: a wrong key is refused before storing with the service's own words; mercury auth list, mercury auth status and /logins read one refusal record and print the same status and reconnect hint
- Fixed opening a crewmate's view in /zen and compact layouts: pressing ↵ on a crewmate row enters the crewmate's view and swaps the identity band to the crewmate's card; ↓ on the empty composer's last line moves focus to the bottom work strip in every compact layout
- Fixed Windows mercury lsp install, PowerShell piped prompts and the Windows brush shell engine: resolves .cmd and .bat shims through PATHEXT; a prompt piped into mercury run - from PowerShell forwards through the shim; brush resolves relative executables after cd and runs .sh scripts in an isolated subshell
- Fixed the chat view after /compact and after a mid-stream retry: re-anchors at the newest compaction boundary and paints every kept-tail row; withdrawn partial text is dropped from the tail projection; a dialog command during cold startup no longer restores its text into the composer
- Fixed paused chats and paused crewmates: typing into a paused chat opens the pause gate; a message to a paused crewmate wakes that crewmate alone; a held completion report wakes the idle session at the nudge deadline
- Fixed popup and board scrolling at small terminal sizes: every popup brings the full selected element into view on open, on arrow keys, after a resize and when a late row lands above the selection
- Fixed Edit and Write LSP diagnostics: attach only the diagnostics introduced by the change, remapping pre-existing ones across line shifts
- Fixed Edit escaped whitespace and line endings: matches old_string when the model double-escaped a newline, tab or carriage return and the unescaped text is unique; preserves per-line CRLF and LF endings across replaced regions
- Fixed LspRead first-call startup and LspRename in config-less JavaScript projects: the first workspaceSymbol call starts the workspace's language server automatically; LspRename indexes an implicit project rooted at the nearest package.json folder
- Fixed late terminal query replies and slow --format rows readers: late OSC and DCS replies are held until their terminator; mercury run --format rows waits for a slow piped reader and exits 1 on a broken pipe
- Fixed crewmate shell working directories and session-record lock contention: each crewmate's shell starts in its own folder on every call; concurrent daemon workers serialize updates under a holder-stamped lock that reclaims dead PIDs
- Fixed per-model rate-limit windows on /usage, Gemini API-key default model selection, denied crewmate types, per-project error logs, health transcript probes, memory draft contradiction checks and unittest no-match runs: /usage displays a per-model window closed by HTTP 429 and clears it once its reset passes; a Gemini API-key home defaults to the newest listed generation; a blocked crewmate type stays listed with its refusal reason; error logs roll at midnight capped at 8 MiB; /health probes the live session's transcript file; Retain refuses a changed count against a pending draft; Test with unittest reports a non-matching selector as no-match with zero counts