> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mascot.bot/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

> Product updates, new features, and improvements

<Update label="2026-04-22" tags={["feature"]}>
  ## Ship your agent on your own domain

  Attach a subdomain or apex to any hosted agent, then set a per-agent page title, description, OG preview, and favicon so shared links look like yours — not ours.

  <Frame>
    <img src="https://mintcdn.com/mascotbot/av_ES_RN5FV4WxBS/images/changelog/ship-your-agent-on-your-own-domain.png?fit=max&auto=format&n=av_ES_RN5FV4WxBS&q=85&s=d47b896efc0419a94a8b65d3ad38ff57" alt="A cream editorial card titled &#x22;Bring your own domain&#x22; floating on a warm off-white canvas with faint concentric rings radiating behind — the card holds a globe icon pill at the top, the headline, a short subtitle, a labeled &#x22;Your domain&#x22; input with an https:// prefix and the placeholder chat.yourcompany.com, and a dark &#x22;Attach domain&#x22; button at the bottom" width="2752" height="1536" data-path="images/changelog/ship-your-agent-on-your-own-domain.png" />
  </Frame>

  * Custom domain attach via the Vercel Domains API — paste the hostname, copy one DNS record, we auto-poll and verify the moment propagation lands.
  * Per-agent SEO: `<title>`, description, OG image, favicon — with a live Slack / Twitter / browser-tab preview right next to the inputs.
  * Works for both standalone and widget-hosted agents, subdomain or apex.

  [Try it →](https://app.mascot.bot/agents)
</Update>

<Update label="2026-04-22" tags={["feature"]}>
  ## A lipsync playground against real voice streams

  The new [`/lipsync-test`](https://www.mascot.bot/lipsync-test) tool lets you upload any Rive mascot, wire a Gemini Live session or plug in your own ElevenLabs agent, and dial every SDK knob — critical-viseme holds, min intervals, transition speeds — while the mascot responds in real time.

  <Frame>
    <img src="https://mintcdn.com/mascotbot/PYniT9gv9aDz6K0d/images/changelog/lipsync-test.png?fit=max&auto=format&n=PYniT9gv9aDz6K0d&q=85&s=ff5f01c4a921b2e6c6ea4403821f26c1" alt="The /lipsync-test page rendered as a tilted editorial product shot on a warm cream canvas with a subtle dot grid — a friendly cartoon blue cat mascot sits centered on a sandy beach under a blue sky, flanked on the right by a vertical stack of cream settings panels for Rive File, Display Settings, Voice Provider (Gemini Live / ElevenLabs), Voice, Lip Sync Model, and Lip Sync Settings" width="2752" height="1536" data-path="images/changelog/lipsync-test.png" />
  </Frame>

  * Switch providers on the fly: **Gemini Live** (preset) or paste your own ElevenLabs API key + agent ID — credentials stay in your browser.
  * Every `NaturalLipSyncConfig` field is a live slider; changes apply mid-call without resetting playback.
  * Chip selector for the critical viseme set (r, l, f/v, p/b/m by default; toggle any of 21 to taste).
  * Replay captured responses against tweaked settings to A/B feel without re-speaking.
  * Upload any `.riv` file to test your own mascot; HD-zoom + pan the canvas to inspect mouth shapes.

  [Try it →](https://www.mascot.bot/lipsync-test)
</Update>

<Update label="2026-04-22" tags={["feature"]}>
  ## Tune your mascot's lipsync mid-call, without reset

  Mascotbot SDK `0.2.0` adds critical-viseme holds, a configurable critical set, and a live-update pipeline — every phoneme knob now takes effect on the next viseme chunk, mid-call, without breaking the stream.

  <Frame>
    <img src="https://mintcdn.com/mascotbot/PYniT9gv9aDz6K0d/images/changelog/sdk-0-2-0.png?fit=max&auto=format&n=PYniT9gv9aDz6K0d&q=85&s=f44d48a05372bb12d3796df2ba7e778e" alt="A two-column release-card composition on a dark canvas — left, a real cream-colored Lip Sync Settings panel with the Natural Lip Sync toggle on, the Natural Lip Sync preset active, and five orange-tracked sliders for Min Viseme Interval, Merge Window, Key Viseme Preference, Similarity Threshold, and Critical Viseme Min Duration; right, a huge metallic-white wordmark reading SDK 0.2.0 on two lines" width="2752" height="1536" data-path="images/changelog/sdk-0-2-0.png" />
  </Frame>

  * `criticalVisemeMinDuration` holds u/o/r/l/f/v/p/b/m phonemes long enough to register, dropping any non-critical viseme that would interrupt the hold window.
  * `criticalVisemeIds` exposes the critical set — drop vowels, add sibilants, whatever fits your character. Exports `DEFAULT_CRITICAL_VISEME_IDS` for consumers to derive custom lists.
  * `desktopTransitionSpeed` / `mobileTransitionSpeed` replace the misleadingly-named `*Duration` fields (old names kept as deprecated aliases). Default bumped from `11` → `22` for snappier blends.
  * Config edits now flow through the active `MascotPlayback` in place; slider tweaks and preset changes don't tear down the stream.
  * Rive runtime bumped to `@rive-app/react-webgl2@4.28.1` / `@rive-app/webgl2@2.37.2` — latest upstream fixes and perf work on the WebGL2 renderer.
  * Perf tuning validated on [`/lipsync-test`](https://www.mascot.bot/lipsync-test): memoized side panels, ref-based viewport pan/zoom, identity short-circuit on per-chunk config sync, NoiseOverlay visibility gate.

  [Download →](https://app.mascot.bot/sdk-access)
</Update>

<Update label="2026-04-18" tags={["Feature"]}>
  ## Clone a persistent voice AI agent for React and deploy in 30 minutes

  The new `react-website-demo` template is a Next.js 16 starter with an ElevenLabs voice widget that survives every page navigation — no re-init, no lost context — plus a companion tutorial that walks through the Context + Router pattern behind it.

  <Frame>
    <img src="https://mintcdn.com/mascotbot/SzulqNliAzpt7MVX/images/changelog/voice-ai-react-template.png?fit=max&auto=format&n=SzulqNliAzpt7MVX&q=85&s=f3baa57616f6b42db7f426a1bd935a4a" alt="Two layered windows on a dark canvas — behind, a VS Code–style editor showing the react-website-demo template's VoiceProvider.tsx with its tab strip, sidebar file tree, and status bar; in front, a Safari-style browser window rendering the live MovingCo &#x22;Moving Made Simple&#x22; page with the voice-chat mascot in the bottom-right — code and live preview side-by-side" width="2752" height="1536" data-path="images/changelog/voice-ai-react-template.png" />
  </Frame>

  * **Persistent across every route** — voice session lives in a React Context singleton, so conversations don't die when users click to a new page
  * **Three client tools wired out of the box** — the agent reads/writes your form, routes between pages, and triggers CTAs
  * **Full stack** — Next.js 16, React 19, TypeScript, ElevenLabs Conversational AI 0.5, MascotBot SDK 0.1.9
  * **\<300ms voice latency · 30–45 min setup** — clone, set three env vars, one-click deploy to Vercel
  * **Companion tutorial** walks through the Context + Router pattern so you can adapt it to any React app

  [Read more →](https://templates.mascot.bot/voice-ai-agent-react-tutorial)
</Update>

<Update label="2026-04-18" tags={["Feature"]}>
  ## Drop a voice avatar onto any website with one line of HTML

  Design your widget visually in the dashboard — size, paddings, mobile overrides, custom button label — then paste a single `<script>` tag to ship it. Resize or restyle anytime; the live widget updates instantly without re-pasting the embed.

  <Frame>
    <img src="https://mintcdn.com/mascotbot/SzulqNliAzpt7MVX/images/changelog/widget-hosting-launch.png?fit=max&auto=format&n=SzulqNliAzpt7MVX&q=85&s=5ed6fdd508dbb4277efa68ec2a181a92" alt="Live widget hosting demo on mascot.bot — embedded mascot with Voice Chat button on a mock customer site" width="2752" height="1536" data-path="images/changelog/widget-hosting-launch.png" />
  </Frame>

  * Visual builder with live desktop + mobile previews — drag sliders or type exact pixel values
  * Optional mobile-specific size + paddings with a configurable breakpoint
  * Bring your own Rive mascot or pick from the preset library
  * Pick any provider under the hood — ElevenLabs, Gemini Live, or OpenAI Realtime
  * Custom idle-state label on the Voice Chat button, plus an optional first-load reveal animation
  * Embed script auto-syncs from saved settings — no re-paste required after a redesign

  [Read more →](https://app.mascot.bot/agents/new)
</Update>

<Update label="2026-04-15" tags={["Feature"]}>
  ## More hours per dollar on every tier, with new Growth and Scale plans

  Pro now includes 150 hours of lipsync at the same \$149/month (2× the old allowance), Business drops overage rates by 75%, and two brand-new tiers (Growth \$499, Scale \$999) cover production workloads up to 5,000 hours per month. Existing subscribers are grandfathered on their current pricing.

  * **Starter** — \$49/mo · 20 h · \$2.99/h overage (unchanged)
  * **Pro** — \$149/mo · **150 h** (was 75 h) · **\$0.90/h** overage (was \$2.48/h)
  * **Business** — \$299/mo · 600 h · \$0.60/h overage
  * **Growth (new)** — \$499/mo · 1,500 h · \$0.45/h overage
  * **Scale (new)** — \$999/mo · 5,000 h · \$0.25/h overage
  * Yearly plans still get 20% off
  * Existing customers stay on their current pricing indefinitely — no migration

  [Read more →](https://app.mascot.bot/subscription)
</Update>

<Update label="2026-03-10" tags={["Feature"]}>
  ## Host voice agents on Gemini Live or OpenAI Realtime, not just ElevenLabs

  Pick your preferred real-time model when creating a hosted agent — ElevenLabs, Gemini Live, or OpenAI Realtime — and get the same lip-sync, gestures, and public share link across all three.

  <Frame>
    <img src="https://mintcdn.com/mascotbot/YR1GXcGIJtsuB4P0/images/changelog/multi-provider-agents.jpg?fit=max&auto=format&n=YR1GXcGIJtsuB4P0&q=85&s=979bb05743757d52ac4c47c2e13c2792" alt="Provider selector showing ElevenLabs, Gemini Live, and OpenAI Realtime cards in the agent creation wizard" width="2752" height="1536" data-path="images/changelog/multi-provider-agents.jpg" />
  </Frame>

  * Provider selector in the agent creation wizard; each agent is locked to one provider for its lifetime
  * **Gemini Live** — 30 Google voices, custom system instructions, configurable model, optional initial greeting
  * **OpenAI Realtime** — 10 voices (marin, cedar, alloy, …), `gpt-realtime` model, tunable voice-activity detection
  * **Video input** — Gemini agents accept live camera frames for vision-aware conversations
  * API keys stay encrypted server-side (AES-256-GCM); clients only ever see 9-minute ephemeral tokens
  * Works in both the standalone share link and the embeddable widget

  [Try it →](https://app.mascot.bot/agents/new)
</Update>
