v0.3.3
Sandbox Chat Specialists Settings Auth Other

Hybrid runtime, editable MCP servers, quieter chat

A new hybrid runtime routes tool calls between local and remote sandboxes, MCP server config is finally editable, and a stack of chat fixes cleans up notifications, errors, and routing.

This release introduces a hybrid runtime that routes specialist tool calls between your local workspace and a remote sandbox under one configuration, makes every MCP server reconfigurable from Settings, and clears a backlog of chat papercuts: missed direct-message notifications, phantom unreads, opaque specialist errors, and stray whitespace gaps in responses.

Hybrid local and remote sandbox runtime

Specialist tool calls — file reads, file writes, and command execution — can now run against your local workspace, a Docker container, or a remote sandbox, all under a single configuration. Reads prefer the remote workspace and fall back to local automatically; writes mirror to both sides so they stay in sync; commands run against the connected remote session.

Each chat channel has its own session controls. From the channel’s right sidebar you can choose a provider, create or refresh a session, end it, or switch the channel into strict remote mode. Binary files transfer cleanly end-to-end without corruption, and policy denials now surface as proper “not allowed” responses instead of generic failures.

Editable MCP server config

The MCP panel in Settings had a glaring gap: once a server was added, its name, command, arguments, environment, URL, and auth header were frozen, and the only way to change them was to delete and re-add the server — which broke any manual tools wired up against it. Each server card now has a gear icon that opens the same dialog you used to add it, pre-filled and ready to edit. Saving reconnects the server with the new configuration, and any manual tools you added are preserved.

Renames are checked against your other servers so you cannot collide on a name, and the gear is disabled for servers you do not own.

Chat notifications stop dropping DMs

Direct messages used to silently fail to notify recipients who were not actively viewing the conversation, leaving offline users with no signal until they navigated back — sometimes minutes later. Recipients who are offline or in a different conversation now reliably get an OS notification, sound, and unread badge in real time, and connected users still get exactly one notification rather than a duplicate.

A follow-up tightened the targeting so the sender does not get a phantom unread on a DM they just sent, and so users reconnecting do not receive false notifications for messages that arrived during the reconnect.

Specialist errors you can actually read

When a specialist failed mid-response, chat collapsed the underlying provider error into a generic “Something went wrong. Please try again.” Bedrock and other provider errors were unreadable. Failed specialist messages now show a friendly summary with the raw provider details available behind a copy action, and the same details are reachable from the message details menu. Streaming failures are also reported with workspace, channel, and message context, so follow-up does not require digging through logs.

Specialists in human-only channels stop chiming in

Channels with no specialist members no longer trigger specialist responses when humans are talking to each other. Empty channels still show the “No specialists are connected” notice as expected, and explicit @-mentions of a specialist still respond as before.

Worktree-aware specialist file reads

Specialists could not read files from projects with Use worktree enabled because their file lookups were not honoring the worktree’s root directory. Reads now resolve those roots correctly, and multi-root projects work as designed.

Bedrock models in pickers

If you had Bedrock credentials and the provider enabled, Bedrock chat models still did not appear in model pickers. Bedrock entries now show up locally as soon as the provider is enabled and credentials are present, and the model list refreshes when integration settings change — no restart required.

Inline workspace member invites

Workspace member invites used to live behind a placeholder in the Members settings tab plus a separate modal. The flow has been collapsed into the Members settings tab itself, and the desktop workspace menu now routes the invite action straight there.

Polish & fixes

  • Persisted user message avatars and deployment status cards survive an app restart again.
  • Auto-join no longer breaks on whitespace in identifiers; the first send succeeds without a join error.
  • Deep links fire exactly once instead of duplicating on startup.
  • The chat panel falls back to your last selected conversation when you open it without one specified, and embedded surfaces follow theme changes between light and dark.
  • Opening chat without a conversation no longer renders a blank panel, and legacy chat links continue to work and preserve their search parameters.
  • Older specialist drafts load again instead of failing with “Failed to load drafts”; new writes self-heal going forward.
  • Trailing newlines no longer create visible white gaps below specialist messages.
  • The Create Channel dialog submits on Enter from both the name and description fields, and blank descriptions stay optional.
  • Inline tool calls show a left-side chevron when there is something to expand, instead of a dot you had to hover to discover.
  • Windows users no longer hit a reserved-name collision during initial setup, and the Windows command-resolution workaround has been removed.
  • The workspace sidebar and window chrome now match the Figma spec in both light and dark modes.