Changelog
Everything we've shipped, in order
Every change that reached production, newest first — including the fixes we'd rather not have needed. No "various improvements," no marketing spin on a bug fix.
September 2026
- Fixed
Uploaded logos and avatars failing to load cross-origin
A workspace logo or avatar could fail to render on a customer's own domain, blocked by a cross-origin resource policy header the browser checks before CORS is ever consulted. Fixed, and the logo upload field is now a single row with inline upload and remove actions.
- New
Send email through your own provider
The platform can now send email — invites, sign-up confirmations, anything a flow needs — through Console, SMTP or Resend. Configured per workspace the same way payment is: platform default first, then your own credential, stored encrypted. Left unconfigured, it logs instead of breaking whatever tried to send.
- Improved
Editable plan limits from the operator console
Seats, workspaces and knowledge base article limits can now be adjusted for a single workspace from the operator console, on top of the plan's own numbers, without editing the checked-in catalog.
- Fixed
Billing sync rate limit, checkout confirmation, duplicate customers
The billing sync rate limit is now keyed per workspace instead of per shared IP, so a busy office or an automatic post-purchase check no longer locks out the manual retry button. Checkout confirmation no longer abandons the poll under a dev-mode double mount, and a duplicate billing customer ID now surfaces as a clear error instead of a bare 500 that retries a webhook forever.
- New
7-day free trial on every plan
New workspaces now start with a 7-day trial with full features, instead of a capped free tier.
- New
White-labelled widget branding
Workspaces on Trial, Team, Growth or Scale can turn off the "powered by" badge and set their own brand name in the widget header, so a visitor sees your product rather than ours.
- Improved
Translation skips the model when it isn't needed
Two-way translation no longer calls the model when a reply is already in the visitor's language, and renaming a person's profile now stays consistent across every workspace they belong to.
- New
One sign-in, every workspace
An account is no longer tied to a single workspace. One sign-in now reaches every workspace you hold a seat in, with a switcher to move between them — two on Team, more on Growth and Scale — and members can be invited by link.
- New
Two-way conversation translation
An agent can write in their own language while the visitor reads it in theirs, and read an incoming message back in their own on demand. The conversation remembers which language it's in, so a handover to another agent keeps it.
- New
MCP server: connect Claude or ChatGPT to your knowledge base
Point Claude, ChatGPT or any MCP client at your workspace with an API key, and it can read the questions your bot couldn't answer, search your existing articles, and write new ones — closing knowledge gaps without opening the dashboard. Eleven tools over Streamable HTTP, nothing to install.
- New
AI-assisted reply cleanup for agents
"Tidy up" beside Send fixes an agent's spelling and grammar without changing what they said — it won't add a greeting, soften a refusal, or translate. One click undoes it and restores the draft exactly.
- New
Real-time notification when a chat is handed to you
An agent is now told the moment a conversation is assigned to them, with a one-click button to open it, instead of finding out by noticing their list changed.
- Improved
Separate languages for reading and replying
Reading a message in your own language and replying in the visitor's used to share one setting, so agents were flipping it before and after every message. They're independent now: replying defaults to the visitor's language, reading defaults to yours.
- Fixed
Assignee picker: clipped menu, stuck busy state, stale roster
The assignee menu could be invisibly clipped by a parent element's overflow rule, a lost realtime acknowledgement could leave the picker permanently disabled until reload, and the staff list shown when assigning wasn't refreshed after a new teammate joined. All three are fixed.
- New
Session history
A searchable list of every visitor session — where they came from, what they viewed, how long they stayed, and whether it became a conversation — where previously a session was unreachable the moment it ended.
- Improved
Staying signed in for the week your session allows
The dashboard now actually spends its refresh token: a session used to expire after fifteen minutes even though a week of validity was sitting unused.
- Improved
Formatted replies in the widget and dashboard
Assistant and agent replies now render their Markdown — bold text, links, lists — instead of showing literal asterisks and bare URLs. Hand-written and sandboxed rather than built on a parsing library, since both the assistant's output and an agent's typing are untrusted input.
- Improved
The assistant no longer decides a visitor needs a human
A keyword, a weak answer, or two low-confidence turns used to queue a visitor for a person automatically, without them asking. The assistant now always says when it can't answer and keeps "Talk to a human" on screen — the choice stays the visitor's. Every visit also starts a clean conversation rather than reopening whatever thread was last open.
- New
The widget says hello, once
On desktop, the widget now opens itself once per visit with the pre-chat form on screen, instead of waiting to be noticed. Closing it keeps it closed for the rest of the visit; a new visit gets one more hello.
- New
Hide the widget from the loader API
A host page can now hide and re-show the widget programmatically — built for a checkout page, where a floating panel over the pay button was the problem.
- Improved
Dashboard first load cut from 5.8MB to 170KB
Fixed an icon library shipping in full rather than tree-shaken, hashed assets served without a cache header, and a proxy layer that wasn't compressing responses. Same dashboard, 34x less to download.
- New
Overview analytics page
Conversations per day with the assistant's share, open conversations by mode, visitor countries, hour-of-day activity, and a live indicator for visitors actually on the site right now.
- New
Integrations page and domain allowlist
Install steps for seven site builders and five frameworks, and a way to allow a domain to embed the widget from the dashboard — closing a real gap where the widget would load on a customer's site and simply refuse to start.
- Improved
Knowledge base search and widget settings redesign
The knowledge base admin gained search across titles and body, collection filters, and a flag on any article that indexed to zero passages — otherwise the assistant silently can't see content that's plainly there.
- New
Country flags, sidebar and visitor panel redesign
Conversation lists now show a visitor's country resolved from their IP, the sidebar groups queues with icons instead of a flat list, and the visitor panel splits into Visitor info and Pages visited tabs.
- Fixed
Notification sounds firing when they shouldn't
The waiting alarm no longer rings for a conversation an agent already has open, and stops re-triggering just because the queue shrank when a colleague picked someone up. A conversation the assistant is handling stays silent, and visitors can now cancel a request for a person and carry on with the assistant instead.
