New
Long conversations keep going — Conversations that outgrow their context window now compact in place instead of degrading or stalling. Compaction is stored on the conversation rather than recomputed, the chat shows an inline status while it happens, and work already in flight survives it — so a deep research session or a big list build carries on where it was.
One-time schedules — A scheduled automation can now run once and switch itself off, instead of repeating on a cadence. Ask Swan for it in chat — "follow up on this the morning of the 3rd" — and it sets the schedule; after the run fires, the automation disables itself. No recurring automation to remember to turn off.
Improvements
Clearer LinkedIn credential errors — An expired or revoked LinkedIn connection now surfaces as a session error you can act on, instead of a generic failure buried in a run.
Failed HubSpot notes are reported — When a note can't be written to HubSpot, you're told, instead of it silently never arriving.
Reply threading holds — Email replies take their subject from the message being replied to, so threads stay intact.
No double-sends on retry — Email sends carry an idempotency key, so a retried send can't deliver twice.
Faster Desk — The executions view on the Desk loads noticeably quicker.
Fixes
A multi-channel step didn't say which channel failed — A step that failed on LinkedIn but sent fine over email collapsed into one ambiguous state, so you couldn't tell what had actually gone wrong without opening the execution log. The timeline now shows the outcome per channel.
Contacts who replied kept a stale status — A contact who replied and then finished a sequence held on to a leftover status reason that no longer applied.
Approving a contact on a deleted sequence threw an error — It now returns a clean not-found instead.
Chat links from another organization showed a confusing error — Opening one now says not-found rather than surfacing a conflict.
Filtering the Desk by a single day returned nothing — Picking one date produced an empty result because the filter wasn't normalized to a full day.
Switching organizations dropped you into the wrong chat — The last-opened-chat pointer carried across orgs. It's now scoped per organization and cleared on switch.
Email before/after filters returned the wrong mail — Date ranges weren't normalized, so filtered results didn't match the window you asked for.
Some LinkedIn post links were broken — Posts whose author had no public identifier produced a malformed URL.
HubSpot "has property" filters returned nothing — Filters checking whether a property exists were sending a value alongside the check, which invalidated them.
The Slack inbox stopped responding — When the stored thread was gone, Slack kept retrying it forever. Threads now recover and stale channels are cleared.
