Workspace roles, workflow pickers, and updater fixes
Workspaces ship with proper owner/admin/member roles, workflows get typeahead pickers for channels and specialists, and the updater stops getting stuck.
Workspaces now have first-class roles. You sign in as owner, admin, or member, and settings, billing, and member management all respect that distinction. Workflows pick up name-based pickers for channels and specialists, the updater stops stalling on releases, and chat history stays put across navigation and streaming.
Auth and workspaces
Workspaces ship with end-to-end role support. The app knows whether you are an owner, admin, or member in every workspace, and settings, billing actions, and the workspace switcher all stay in sync. Members are no longer silently promoted to owner after settings load, and attempts to escalate a role through the members API — including self-promotion — are blocked.
Sessions also survive update restarts more gracefully. If your session is still valid, you stay signed in across an update instead of getting kicked back to the login screen.
Workflows
The visual workflow editor now lets you pick channels and specialists by name. Channel fields show a typeahead populated from your workspace channels, and specialist invoke and assignee fields offer a searchable specialist picker that stores the canonical selection while preserving manual or template input. Saving a workflow no longer fails with a missing-field error, and saves are confirmed end-to-end with retries so a workflow you save actually sticks.
Chat
Chat history stops jumping under your fingers. Rendered messages now come from a single source of truth, channel aliases resolve to the same conversation everywhere, and reactions, deletes, and thread status updates flow through the same path so messages no longer get lost or duplicated mid-stream. Display names for participants and mentions follow a consistent precedence (name, then email, then user ID), and far-apart messages no longer collapse into the same group thanks to a five-minute grouping window. The “no specialists are connected” notice now actually appears when no specialist is online to receive your message.
OpenRouter routing also resolves correctly. Sign-in and local-token credential edge cases are fixed, model mapping is restored during chat completion routing, and OpenRouter is now a fully recognized provider so you can route through it without falling back unexpectedly.
Settings
Settings cleans up several rough edges. The settings dialog now closes properly when you navigate away, owner and admin checks in Integrations resolve correctly when membership data is incomplete (with safe handling to prevent unknown roles from being granted elevated access), and the unused “Find a connection” section is gone from Connections. Billing settings now scope to the active workspace, and a hotfix on 0.2.1.1 unblocks billing requests that were being incorrectly rejected.
Enterprise and discounted plans are now supported through invite codes. Invite codes are customer-facing identifiers for non-standard plans — discounted variants or enterprise tiers — and the active plan, variant, and any applied invite code are surfaced in billing settings.
Security and capabilities
Permissions for embedded surfaces are tightened. The browser, browser-specialist bridge, VSCode, and mini-apps each have scoped permission lists so panels do not have more access than they should. A bug where pop-out browser panels were missing the permissions they needed is fixed, and DevTools works in the embedded VSCode panel.
The billing return after upgrade also works more reliably. Stripe checkout now bounces back to the app cleanly — matching the OAuth sign-in flow — instead of occasionally landing on a non-resolvable URL.
Polish and fixes
The updater indicator no longer goes silent after a release. The updater notification now appears reliably, including before you sign in, and once an update is installed that state is no longer overwritten by a late re-emit.