Switchbordswitchbord
ChangelogRSS

Release Notes

What's new in Switchbord — newest releases first.

v0.18.10

v0.18.10 — WhatsApp billing insights

Read release notes
v0.18.11

v0.18.11 — Meta Marketing API setup docs

Read release notes
v0.18.8

v0.18.8 — Insights: channels, conversation sources & Meta campaigns

Read release notes
v0.18.9

v0.18.9 — WhatsApp Business Messaging CAPI

Read release notes
v0.18.3

v0.18.3 — Inbox context stays put

Read release notes
v0.18.4

v0.18.4 — Webhook workflows dry-run bridge

Read release notes
v0.18.5

v0.18.5 — Draft with me status hardening

Read release notes
v0.18.6

v0.18.6 — Realtime listener self-heal & connection-pool hardening

Read release notes
v0.18.7

v0.18.7 — UDB travel context enrichment

Read release notes
v0.16.86

v0.16.86 — Client travel context in inbox & draft-with-me

Read release notes
v0.16.87

v0.16.87 — Travel context import tool

Read release notes
v0.18.1

v0.18.1 — Workflows landing surface

Read release notes
v0.18.2

v0.18.2 — Workflows data foundation

Read release notes
v0.16.82

v0.16.82 — Attribution RLS hardening and webhook reprocessing

Read release notes
v0.16.83

v0.16.83 — GB-Agent active inquiry context

Read release notes
v0.16.84

v0.16.84 — Meta label for link-only referrals

Read release notes
v0.16.85

v0.16.85 — Migration hygiene

Read release notes
v0.16.76

v0.16.76 — WhatsApp formatting and reaction picker

Read release notes
v0.16.70

v0.16.70

Renders inbound WhatsApp interactive button and list replies as structured inbox chips with realtime and cache coverage.

Read release notes
v0.16.71

v0.16.71

Prevents inbox 500s when filtering large conversation lists by labels or assignees.

Read release notes
v0.16.68

v0.16.68

Fixes missing mobile inbox translations that could trigger Italian /inbox hydration errors.

Read release notes
v0.16.59

v0.16.59

Inbox conversation list now scales past 250 with keyset pagination, search spans name + chat text + email + phone, and send-side bubbles are translucent emerald again.

Read release notes
v0.16.56

v0.16.56

Hardens outbound inbox bubbles so sent messages keep visible theme-token styling.

Read release notes
v0.16.57

v0.16.57

Restores Meta campaign attribution cards in virtualized inbox threads.

Read release notes
v0.16.58

v0.16.58

Hardens inbox thread hydration after message virtualization.

Read release notes
v0.16.52

v0.16.52

Memoizes inbox message bubbles to reduce row render fan-out.

Read release notes
v0.16.53

v0.16.53

Adds safe inbox timing instrumentation for long-frame diagnosis.

Read release notes
v0.16.54

v0.16.54

Virtualizes the desktop inbox message history.

Read release notes
v0.16.50

v0.16.50

Restores the inbox thread view by moving Vercel Analytics behind a client boundary.

Read release notes
v0.16.49

v0.16.49

Repairs Railway-hosted GB-Agent connector connection tests.

Read release notes
v0.16.46

v0.16.46

Adds per-campaign automation for negative WhatsApp button replies.

Read release notes
v0.16.47

v0.16.47

Improves inbox responsiveness on long message threads.

Read release notes
v0.16.48

v0.16.48

Defers Fingerprint identification until browser idle.

Read release notes
v0.16.40

v0.16.40

Adds the immutable template version foundation for future WhatsApp template performance analytics.

Read release notes
v0.16.41

v0.16.41

Improves inbox timeline scanning and restores image-header visibility for outbound WhatsApp templates.

Read release notes
v0.16.42

v0.16.42

Preserves Meta template lifecycle history and drift events against immutable template versions.

Read release notes
v0.16.43

v0.16.43

Attributes outbound template sends to immutable template versions.

Read release notes
v0.16.44

v0.16.44

Adds template version performance rollups and a Templates Performance surface.

Read release notes
v0.16.45

v0.16.45

Fixes blank outbound campaign bubbles for templates whose Meta body lives only in component JSON.

Read release notes
v0.16.39

v0.16.39

Reduces CSP report-only noise by aligning Nosecone with the app enforcement policy.

Read release notes
v0.16.38

v0.16.38

Improves billing setup UX with Stripe return banners and fresh-workspace defaults.

Read release notes
v0.16.30

v0.16.30

Adds the GB-Agent settings API and Settings → Integrations → GB-Agent admin UI.

Read release notes
v0.16.31

v0.16.31

Enforces GB-Agent workspace/mode/user access gates in the inbox trigger and draft review paths.

Read release notes
v0.16.32

v0.16.32

BORD-720 hardens canonical Meta phone-number identity routing with Option B constraints and sync guards.

Read release notes
v0.16.33

v0.16.33

Meta webhook redeliveries now treat duplicate process-webhook outbox jobs as idempotent success.

Read release notes
v0.16.34

v0.16.34

BORD-721 introduces additive idempotency_key compatibility for legacy dedupe-key tables.

Read release notes
v0.16.36

v0.16.36

BORD-722 adds event hot-path indexes and documents analytics/LLM coverage.

Read release notes
v0.16.37

v0.16.37

BORD-723 documents canonical soft-delete and archive semantics.

Read release notes
v0.16.12

v0.16.12

Adds the first generic connector contract layer for draft-only external agents such as gb-agent.

Read release notes
v0.16.14

v0.16.14

Persists draft-only connector run outcomes for external agents such as gb-agent.

Read release notes
v0.16.15

v0.16.15

Add validated phone and email format constraints for clean DB fields.

Read release notes
v0.16.16

v0.16.16

Adds workspace-scoped gb-agent connector settings and safe test connection support.

Read release notes
v0.16.17

v0.16.17

Constrain broadcast outbox status values at the database layer.

Read release notes
v0.16.18

v0.16.18

Adds the worker runtime for draft-only gb-agent connector calls.

Read release notes
v0.16.19

v0.16.19

Add targeted DB indexes for hot message, webhook, and responder-run paths.

Read release notes
v0.16.20

v0.16.20

Denormalize workspace scope onto campaign MM metrics.

Read release notes
v0.16.21

v0.16.21

Adds the inbox trigger route for draft-only gb-agent connector runs.

Read release notes
v0.16.22

v0.16.22

Moves the gb-agent enqueue release marker onto a fresh post-merge patch version.

Read release notes
v0.16.23

v0.16.23

Prevents app proxy auth checks from timing out unprotected API routes.

Read release notes
v0.16.24

v0.16.24

Defense-in-depth fixes for the Supabase pool incident — bounded auth timeouts and Meta retry-on-503 webhooks.

Read release notes
v0.16.25

v0.16.25

Bounded worker dispatch concurrency and thicker realtime payloads so two operators no longer double-answer the same chat.

Read release notes
v0.16.26

v0.16.26

gb-agent connector human_review drafts now render a review-only handoff preview card in the inbox, and Meta post referrals now surface as operator-visible Meta attribution.

Read release notes
v0.16.27

v0.16.27

conversation-label link rows now carry a direct workspace_id with parent-match constraints and trigger validation.

Read release notes
v0.16.28

v0.16.28

Adds a manual gb-agent inbox trigger that queues draft-only connector runs from a selected chat.

Read release notes
v0.16.29

v0.16.29

Adds the GB-Agent workspace settings and per-user access foundation without enabling the settings UI yet.

Read release notes
v0.16.09

v0.16.09

Add the live Supabase DB hardening discovery baseline.

Read release notes
v0.16.10

v0.16.10

Add the RLS and tenant-policy audit for the DB hardening sweep.

Read release notes
v0.16.11

v0.16.11

Keep selected inbox thread history loading independent from the cache kill switch.

Read release notes
v0.16.13

v0.16.13

Enforce tenant resolution for stored webhook events.

Read release notes
v0.16.06

v0.16.06

Operator-only campaign client context lands in the inbox bio pane — resort, target dates, gross price quoted, family, last reservations, and a host-validated Travio pratica link.

Read release notes
v0.16.07

v0.16.07

Harden the GB/Travio inbox context rollout to practice-ID links only, behind a server-side GB workspace gate.

Read release notes
v0.16.08

v0.16.08

Add an ID-only Travio practice-link importer for identity-expansion output.

Read release notes
v0.16.04

v0.16.04

Harden the public launch path with enforced secret scanning, fail-closed compatibility webhook auth, safer token handling, current repo metadata, and a Next.js advisory patch.

Read release notes
v0.16.05

v0.16.05

Require explicit shared-secret headers on legacy compatibility contact and journey-trigger routes before they can touch default workspace data.

Read release notes
v0.16.02

v0.16.02

Make inbox assignment feel instant and stable with additive toggle/unassign behavior, background roster refresh, and explicit remove-assignee intent wiring.

Read release notes
v0.16.03

v0.16.03

Polish the inbox assignment dropdown with i18n-backed status copy, persistent trigger feedback, explicit remove/undo affordances, and lower request chatter.

Read release notes
v0.15.67

v0.15.67

Keep the app inbox loading on older mobile Safari and iOS WebViews.

Read release notes
v0.15.68

v0.15.68

Make inbox assignment interactions instant with optimistic updates, coalescing, and inline feedback.

Read release notes
v0.16.01

v0.16.01

Start the native Android/iOS mobile MVP with an Expo skeleton, safe config diagnostics, and tested operator-inbox scaffolding.

Read release notes
v0.15.54

v0.15.54

Meta click-to-WhatsApp attribution becomes first-class in the inbox and insights.

Read release notes
v0.15.55

v0.15.55

Established WhatsApp workspaces can get back to the inbox even when historical onboarding completion state is stale.

Read release notes
v0.15.56

v0.15.56

Meta ad-to-WhatsApp inbound conversations keep their freeform reply window.

Read release notes
v0.15.57

v0.15.57

WhatsApp service-window badges and send eligibility honor future close timestamps even when the stored state is stale.

Read release notes
v0.15.58

v0.15.58

Inbox conversations can be flagged for review, highlighted in purple, and closed by assigned operators with a required internal note.

Read release notes
v0.15.59

v0.15.59

Campaign opt-out replies now preserve the friendly acknowledgement before archiving, and campaign launches can require rendered-body sanity checks.

Read release notes
v0.15.60

v0.15.60

Click-to-WhatsApp ad attribution is fully hardened — every CTWA conversation gets the meta label, a worker enriches the conversation with Meta Ads campaign/adset/ad/creative names, and an operator-only orange info card above the chat pane shows the full ad context.

Read release notes
v0.15.62

v0.15.62

Adversarial review fixes for the CTWA ad attribution rollout — Meta access tokens now travel in the Authorization header, Graph error classification is JSON-parsed, and CTWA image URLs are allowlisted against Meta's CDN at write and render time.

Read release notes
v0.15.64

v0.15.64

The orange CTWA ad attribution card no longer disappears after a conversation is read.

Read release notes
v0.15.66

v0.15.66

Tighten the CTWA attribution hot path — inbound-only enforcement and cheap gating for non-CTWA conversations.

Read release notes
v0.15.52

Flow-response cards and warmer Italian replies

The inbox now shows completed WhatsApp Flow answers as orange question/response cards and customer-response prompts steer drafts toward casual Italian WhatsApp copy.

Read release notes
v0.15.53

Meta usage monitoring and group conversation foundations

Settings now exposes Meta WhatsApp usage and estimated delivered-template costs, and the inbox adds the first Groups-only conversation filter for internal team group testing.

Read release notes
v0.15.47

Conversation handoff links

Operators can copy a direct inbox conversation link from the actions menu and share it with teammates in the same workspace.

Read release notes
v0.15.48

Futura qualification Flow routing

Futura campaign replies can now route positive WhatsApp button taps into a qualification Flow, with visible-title fallbacks and a per-campaign kill switch.

Read release notes
v0.15.50

Inbox Flow response bubbles

Operators can see completed WhatsApp Flow submissions as structured temporary bubbles in the inbox.

Read release notes
v0.15.51

Safer Flow response bubble backfill

WhatsApp Flow response bubbles now use centralized redaction and QA completions created before deploy can render in the inbox.

Read release notes
v0.15.36

Realtime deploy notifications in the inbox

Operators now receive an in-app toast and persistent banner when a new Switchbord build goes live, so nobody stays stuck on a stale bundle after a release.

Read release notes
v0.15.39

Audio transcription re-landed + outbox hardening

Voice-message transcription is back, with the underlying ESM fix that caused the v0.15.38 rollback. Worker outbox now self-heals from crashed leases and no longer starves operator sends behind webhook backlogs.

Read release notes
v0.15.27

Hardened draft review and idempotency

Campaign responder drafts are now concurrency-safe, with DB-level unique indexes, claim-safe accept, and canonical reject.

Read release notes
v0.15.28

Journey handoff nodes now escalate to human operators

Journey handoff nodes set needs_human on the conversation and guard the AI auto-reply path.

Read release notes
v0.15.29

Deterministic Futura campaign reply classifier

Pure classifier resolves opt-out, nurture, and booking signals before LLM invocation.

Read release notes
v0.15.30

Futura campaign responder AI executor

LLM execution layer for Futura campaign replies — schema-validated, draft-only, opt-out short-circuit.

Read release notes
v0.15.31

Manual Futura campaign responder pilot runner

Operator CLI script for running the Futura draft responder pilot — dry-run by default, workspace-scoped, audit-logged.

Read release notes
v0.15.32

Campaign read metrics from WhatsApp read receipts

Campaign performance read rates now reflect outbound WhatsApp provider read receipts instead of inbound replies.

Read release notes
v0.15.33

AI draft metadata in inbox review card

Route badge, intent, confidence, qualification signals, and reject-with-reason now visible in the draft review card.

Read release notes
v0.15.34

Outbox channel propagation release

Release-train bump after channel ID propagation across automation jobs.

Read release notes
v0.15.35

Template WABA ownership validation

Template-send paths now validate that selected channels belong to the WABA that owns the template.

Read release notes
v0.15.19

Inbox/auth/operator UX polish

Inbox background, auth completion, desktop notifications, assignment picker, internal notes, and nav polish.

Read release notes
v0.15.20

Notification opt-in and inbox visual polish

Makes Chrome desktop notification permission explicit in the inbox, records local browser consent, and tightens chat/sidebar visual polish.

Read release notes
v0.15.21

Notification preferences, diagnostics, and test coverage

Server-syncs sound and visual notification preferences, adds a diagnostics panel to user settings, and ships 31 new tests for the browser notification layer.

Read release notes
v0.15.24

Italian translation push

Translates 258 previously untranslated strings in the Italian locale file across all operator app surfaces.

Read release notes
v0.15.25

Release bump to v0.15.25

Version bump following Italian translation push and notification stack improvements.

Read release notes
v0.15.26

Inbox conversation filters

Adds server-backed inbox filtering by conversation labels and assigned operators.

Read release notes
v0.14.14

Supabase Auth Email via Resend

Routes Supabase Auth email through Resend, adds branded TokenHash templates, and preserves App Router auth redirects.

Read release notes
v0.15.1

Inbox selected-thread hydration patch

Ensures selected inbox conversations hydrate their full thread after the optimized list payload returns only the latest message preview.

Read release notes
v0.15.10

v0.15.10 — Transactional webhook integration docs

Adds API reference and integration guides for transactional template sends, receipt links, PDF receipts, and inbound webhook dry-run rollout.

Read release notes
v0.15.12

v0.15.12 — Canonical inbox conversation tags

Fixes inbox label state leakage, hydrates conversations from normalized label tables, adds server-side label filters, and lets campaigns tag conversations explicitly.

Read release notes
v0.15.14

Inbox realtime hardening release train

Aligns the release train baseline for scoped WhatsApp realtime inbox hardening.

Read release notes
v0.15.15

Inbox realtime performance patch

Ships scoped WhatsApp webhook broadcasts and immediate operator inbox realtime materialization.

Read release notes
v0.15.16

Inbox private realtime delivery hotfix

Restores live inbox message materialization by aligning server broadcasts with private Supabase Realtime channels.

Read release notes
v0.15.17

Inbox realtime pipeline consolidation

Eliminates message-disappearance race conditions and simplifies the realtime transport to a single broadcast path with Dexie cache enabled by default.

Read release notes
v0.15.2

Transactional Template API and Webhooks

Adds utility-first transactional template sends, receipt templates, and the inbound webhook configurator foundation.

Read release notes
v0.15.5

v0.15.5 — HMAC-only inbound webhook authentication

Read release notes
v0.15.8

v0.15.8 — Guided webhook mapping builder

Adds a guided Settings builder for inbound transactional webhooks, including Utility template requirements, sample-payload preview, and safe mapping validation.

Read release notes
v0.14.6

Inbox Local Cache Foundation

Adds the first foundation for cached-first inbox history: architecture plan, message delta API, and browser-safe local cache primitives.

Read release notes
v0.14.7

Sidebar-09 Navigation Refresh

Operator sidebar now follows the sidebar-09 navigation pattern with in-rail search, collapsible filtering behavior, and localized empty/search states.

Read release notes
v0.14.9

Draft-Only Campaign Responder Foundation

Adds structured responder output, campaign inbound attribution, and a draft-only finalizer for operator-reviewed campaign replies.

Read release notes
v0.13.1

Inbox Long-Thread Refresh Fix

Selected inbox conversations now refresh by id instead of filtering the first inbox page, preserving full message history for long threads.

Read release notes
v0.14.1

Worker outbox latency hotfix

Restores the Railway worker's low-latency outbox path after operator sends queued behind webhook-status bursts.

Read release notes
v0.14.2

MSN-Style Inbox Pop-Up Notifications

Eligible inbound WhatsApp messages can now show an old-school bottom-right pop-up when Switchbord is minimized or in another tab.

Read release notes
v0.14.3

Explicit Assignment Intent Safety

Conversation assignment updates now require explicit assign or unassign intent so ambiguous payloads cannot clear ownership.

Read release notes
v0.12.2

Internationalization Runtime Hardening

Locale runtime wiring for marketing, Languine coverage for web bundles, app locale allowlist fixes, and a documented docs-localization workflow.

Read release notes
v0.12.1

Futura Campaigns v1 & Launch Readiness

Futura campaign release: typed segmentation, recipient materialization, personalized template dispatch, safe launch flow, reconciliation, and runbook/compliance artifacts.

Read release notes
v0.10.0

Alpha UX Polish & Agent Drafts

Alpha UX polish release: inbound agent drafts, first-run onboarding, inbox density, design tokens, and landing-page presentation improvements.

Read release notes
v0.11.0

Builder, Journey Editor & Public Changelog

Builder release: template renderer/builder, graphical journey editor, command palette, public changelog route, footer expansion, docs strip, and GitHub social proof.

Read release notes
v0.9.0

Webhook Operations & Audit Hardening

Webhook and operations release: account alerts, audit visibility, multi-tenant verification fixes, and channel validation repairs.

Read release notes
v0.8.0

Security & Multi-tenancy Foundation

Security and workspace-scoping release: auth guardrails, workspace threading, PII redaction, GDPR retention, asset storage, and v25 Meta API alignment.

Read release notes