Changelog
π’ Smarter AI π’
AI Voice+
Last updated: 02-19-2026
All notable changes to this project will be documented in this file.
Versioning: Calendar-based (vYYYY.MM.DD). Each month collects dated entries; at month-end they form that month's release.
v2026.02.19 -- February 2026
Added
2026-02-19 -- Hybrid SSO (OIDC):
sso-authorizeandsso-callbackedge functions for organization-level OIDC identity provider integration; admin SSOSettings UI with provider management; login domain detection with automatic SSO redirect banner2026-02-19 -- SSO Gamified Setup Guide: interactive 5-step How to Use dialog in SSOSettings with XP tracking, progress bar, localStorage persistence, and confetti celebration on completion
Security
2026-02-19 -- SSO Security Hardening: HMAC-SHA256 signed
stateparameter with 10-minute TTL (CSRF protection);redirect_urivalidation against allowed origins whitelist; domain format regex validation; scalable user lookup via profiles table instead oflistUsers(); defense-in-depth organization re-derivation from email domain in callback; existing user org linkage on SSO login;UNIQUEpartial index onorganizations.sso_domainto prevent domain collisions
Tests
2026-02-19 -- Added
SSOSettings.test.tsx(20 tests): card rendering, form inputs, How to Use dialog, 5-step guide display, XP counter, progress bar, step completion toggle, localStorage persistence, pro tip, advanced section, loading state2026-02-19 -- Enhanced
useConfetti.test.ts(4β8 tests): added multiple trigger-complete cycles, idempotent trigger, idempotent complete, useCallback memoization stability2026-02-19 -- Total: 815 tests across 90 frontend + 6 edge function test files
v2026.02.18 -- February 2026
Fixed
2026-02-18 -- Top-Up Checkout Amount Mismatch: cart displayed combined one-time + recurring total but Stripe checkout only charged one-time items; unified all items through a single Stripe checkout session (subscription mode when recurring items present); all
topup_purchasesnow created aspendinguntil Stripe confirmation2026-02-18 -- Top-Up Premature Activation: recurring top-ups were being applied to account immediately before payment; removed superadmin bypass that skipped Stripe for recurring items; all top-ups now require completed Stripe checkout
2026-02-18 -- Billing Card Cents Display: top-up purchase amounts in Settings β Billing were shown in raw cents instead of formatted dollars; added
/100conversion withtoFixed(2)
Added
2026-02-18 -- BYOK Provider Expansion: added 18 AI providers (50+ models) to AgentOne workspace Create and Edit dialogs β Google, OpenAI, Anthropic, Meta Llama, Mistral, DeepSeek, Requesty.ai, OpenRouter, Hugging Face, Ollama, Cohere, Groq, Perplexity, Together AI, Fireworks AI, xAI, AWS Bedrock, Azure OpenAI; grouped
<optgroup>selectors in Create dialog, labeled sections in Edit dialog2026-02-18 -- 37-Language Expansion: added 15 new languages (Bengali, Thai, Vietnamese, Indonesian, Ukrainian, Czech, Romanian, Hungarian, Greek, Malay, Tamil, Filipino, Croatian, Bulgarian, Slovak) across AI Voice Agents, Convo+, and AgentOne; updated
voice-config.tswith native names, BCP-47 codes, and localized greetings; synceduseTextToSpeech.tsLANG_MAP; updated Convo+ workspace create/edit dialogs, chat interface, and progress dashboard LANG_LABELS2026-02-18 -- Landing Page Language Sync: updated FeaturesSection, ConvoLanding, FAQSection, and HowItWorksVisuals to reflect "37+ languages" with complete language chips
2026-02-18 -- DashboardConvo LANG_LABELS: synced to full 37-language set matching other Convo+ components
2026-02-18 -- PayPal Payouts API:
paypal-payoutedge function for real-money affiliate payouts via PayPal Payouts API; synchronous status update (no webhooks needed); "Pay Now" button sends funds and marks paid on success2026-02-18 -- Affiliate Dashboard Confetti: first-login confetti celebration with
canvas-confetti; welcome banner auto-dismisses after 8s; tracked vialocalStorageper affiliate ID2026-02-18 -- Affiliates Menu Item: "Affiliates Earn 30%!" link added to sidebar More popover and mobile BottomNav More sheet; opens
/affiliatesin new tab with gradient highlight2026-02-18 -- Mobile PWA Admin Layout: added
safe-area-inset-toppadding to sticky mobile header for iPhone notch/Dynamic Island clearance; increased nav tab touch targets to 40px min-height with larger text and icons
Tests
2026-02-18 -- Updated
CreateWorkspaceDialog.test.tsx(+2 tests): BYOK grouped providers rendering (18 providers visible), optgroup count validation2026-02-18 -- Added
voice-config.test.ts(29 tests): SUPPORTED_LANGUAGES count (37), uniqueness, original + new language coverage, property completeness; ELEVENLABS_VOICES count (18), uniqueness, gender balance, recommended voices; DEFAULT_GREETINGS coverage for all 37 languages with placeholder validation; getLanguageByCode lookups; getVoiceById lookups; getRecommendedVoice gender filtering; getDefaultVoiceId validity; getVoicesByGender filtering; getDefaultGreeting substitution + fallbacks; migrateOldVoiceId legacy migrations2026-02-18 -- Added
BottomNav.test.tsx(8 tests): 5 nav items rendering, More sheet opening, Affiliates link with new-tab attributes, Data Chat button, Docs link, active route highlighting, all more menu items2026-02-18 -- Added
DashboardSidebar.test.tsx(9 tests): primary nav items, More button, overflow items in popover, Affiliates link with new-tab attributes, Docs link, Settings, Data Chat button, active route highlighting2026-02-18 -- Added
AffiliateDashboard.test.tsx(8 tests): redirect without token, dashboard data rendering, stats cards, first-login confetti trigger (localStorage flag), no confetti on subsequent logins, referral link copy button, approved status badge, empty referrals message2026-02-18 -- Added
useAdminAccess.test.ts(7 tests): loading state, unauthenticated block, allowed access, denied access, edge function error, server error, device fingerprint transmission2026-02-18 -- Updated
AdminRoute.test.tsx(3β5 tests): addeduseAdminAccessmock; split loading into staff-loading and access-loading; added blocked-access 404 masking test2026-02-18 -- Total: 791 tests across 89 frontend + 6 edge function test files
Tests
2026-02-18 -- Updated
CreateWorkspaceDialog.test.tsx(+2 tests): BYOK grouped providers rendering (18 providers visible), optgroup count validation2026-02-18 -- Added
voice-config.test.ts(29 tests): SUPPORTED_LANGUAGES count (37), uniqueness, original + new language coverage, property completeness; ELEVENLABS_VOICES count (18), uniqueness, gender balance, recommended voices; DEFAULT_GREETINGS coverage for all 37 languages with placeholder validation; getLanguageByCode lookups; getVoiceById lookups; getRecommendedVoice gender filtering; getDefaultVoiceId validity; getVoicesByGender filtering; getDefaultGreeting substitution + fallbacks; migrateOldVoiceId legacy migrations2026-02-18 -- Added
BottomNav.test.tsx(8 tests): 5 nav items rendering, More sheet opening, Affiliates link with new-tab attributes, Data Chat button, Docs link, active route highlighting, all more menu items2026-02-18 -- Added
DashboardSidebar.test.tsx(9 tests): primary nav items, More button, overflow items in popover, Affiliates link with new-tab attributes, Docs link, Settings, Data Chat button, active route highlighting2026-02-18 -- Added
AffiliateDashboard.test.tsx(8 tests): redirect without token, dashboard data rendering, stats cards, first-login confetti trigger (localStorage flag), no confetti on subsequent logins, referral link copy button, approved status badge, empty referrals message2026-02-18 -- Total: 782 tests across 88 frontend + 6 edge function test files
v2026.02.17 -- February 2026
Fixed
2026-02-17 -- Newsletter Popup Readability: replaced wall-of-text inline expansion with formatted Dialog popup;
formatNewsletterContentengine converts raw text into structured HTML with headings, bullet lists, paragraphs, and video embeds; prose typography classes for consistent reading experience2026-02-17 -- Mobile More Drawer: added Blog and Newsletter buttons to BottomNav "More" drawer for mobile accessibility
2026-02-17 -- Site Stats Input Visibility: added
text-foregroundto Site Name and Domain inputs so typed text is visible on dark backgrounds2026-02-17 -- Site Stats Button Visibility: added explicit
text-foreground border-borderto outline buttons (Copy Script, Refresh, date range selectors) for dark theme contrast
Added
2026-02-17 -- Superadmin "How to Use This Dashboard" guide: colorful 16-section dialog accessible from Overview quick-action bar, covering all admin modules with gradient icons, category badges, and βK tip
Tests
2026-02-17 -- Updated
AgentSkills.test.tsx(9 tests, +1 new): "See Flow" button for A2A diagram2026-02-17 -- Total: 714 tests across 83 frontend + 6 edge function test files
v2026.02.16 -- February 2026
Added
2026-02-16 -- AI Content Generate Structured Output:
ai-content-generateedge function returns structured JSON (title, excerpt, category, tags, content) via tool calling;AdminBlogandAdminNewsletterauto-fill all fields and embed cover images as Markdown2026-02-16 -- Affiliate Landing Section: new
AffiliateSectioncomponent above FAQs on landing page with "Earn 30% Commission" messaging, benefit cards, and signup CTA; content editable via Superadmin Site Config2026-02-16 -- Affiliate Site Config Editor: new "Affiliate Section (Landing Page)" accordion in LandingSectionEditor with headline, description, and button text fields; backed by 3 new
site_configcolumns2026-02-16 -- Secure Affiliate Dashboard: new
affiliate-dashboard-dataedge function for server-side affiliate data access; token stored insessionStorageinstead of URL2026-02-16 -- Error Boundary: global
ErrorBoundarycomponent wrapping App.tsx catches render crashes with branded fallback UI2026-02-16 -- Branded 404 Page: redesigned
NotFound.tsxwith theme-consistent styling and navigation links2026-02-16 -- Newsletter Subscription Price in Dollars:
newsletter_subscription_price_centscolumn renamed tonewsletter_subscription_price(numeric, dollars) insite_config; Admin UI andnewsletter-checkoutedge function updated to read/write dollar values directly2026-02-16 -- Scheduled Auto-Publish System: new
scheduled-publishedge function withpg_cronjob running every minute to auto-publish scheduled blog posts and auto-send scheduled newsletters at theirpublished_at/scheduled_attimes2026-02-16 -- Affiliate Page Text Customization: superadmins can edit headings, subtitles, and commission text for affiliate login, registration, and dashboard pages via Site Config; new
affiliate_login_heading,affiliate_register_title,affiliate_register_commission_text,affiliate_dashboard_welcomecolumns insite_config2026-02-16 -- Affiliate Page Branding: affiliate login and registration pages now display site logo and include the standard DashboardFooter
2026-02-16 -- Viral Content Studio: AI-powered viral video script generator with duration picker (10s/30s/60s/2min/5min), elite scriptwriting prompt, and auto-editor flow
Fixed
2026-02-16 -- Top-Up Checkout 100x Overcharge Bug:
topup-checkoutedge function was multiplyingprice_centsby 100 again (Stripe expects cents, DB already stores cents); removed the extra* 100multiplication for both recurring and one-time items2026-02-16 -- Top-Up Duplicate Insert: removed duplicate
topup_purchasesinsert call intopup-checkoutedge function2026-02-16 -- Affiliate "Mark Paid" Button Visibility: updated button styling from invisible
variant="outline"totext-foreground border-foreground/30for readable contrast on dark backgrounds2026-02-16 -- Navbar Sign In / Dashboard Button Spacing: added
ml-2margin to CTA button container; addedisLoadingguard to prevent flashing between states during auth resolution2026-02-16 -- Viral Content Studio Visibility: fixed dark-theme contrast issues on labels, inputs, selects, and buttons
Security
2026-02-16 -- RLS Hardening:
affiliates,affiliate_referrals,affiliate_payoutsSELECT policies set toUSING (false)β data accessed via edge function only;newsletter_edition_purchasesINSERT restricted to service role2026-02-16 --
site_config_publicview updated to include affiliate section columns
Tests
2026-02-16 -- Fixed
CustomScriptInjector.test.tsx(8 tests, was 9): removed 2 obsolete mobile-gating tests, added 1 all-viewports injection test (scripts now inject on all viewports)2026-02-16 -- Added
scheduled-publish/index.test.ts(2 tests): 200 response with success payload, CORS OPTIONS handling2026-02-16 -- Fixed
AgentAppsDropdown.test.tsx: updated test to match component behavior (always renders Apps+ button)2026-02-16 -- Refactored
NotificationBell.test.tsx(9 tests): variant-based filtering (user/admin), dismiss mutations, admin styling, realtime context-matching2026-02-16 -- Total: 713 tests across 82 frontend + 6 edge function test files
v2026.02.15 -- February 2026
Added
2026-02-15 -- Analytics Consolidation: deleted redundant DashboardAnalytics page; removed Analytics tab from superadmin panel; AI Usage card merged into Overview section
2026-02-15 -- Superadmin Overview Enhancements: Quick Action buttons, System Health card, New Signups widget, Top Performing Organizations leaderboard, Platform Growth sparklines
2026-02-15 -- Announcement Gradient Backgrounds: 7 beautiful gradient presets (Ocean Blue, Sunset, Purple Haze, Emerald, Rose Gold, Midnight, Default) selectable when creating/editing announcements; gradients render on toast notifications and feature badges
2026-02-15 -- Poll Announcements: new "Poll" category in announcements with 4 interactive vote types (5 Stars, Sentiment Faces, Thumbs Up/Down, NPS 1β10); poll type picker UI, validation, and Poll badge on announcement list items
2026-02-15 -- Webhook Delivery Logs:
webhook_delivery_logstable with collapsible delivery history per webhook showing status codes and timing2026-02-15 -- Audit Log System:
audit_logstable with Activity Log tab in Settings; filterable by action type with scrollable timeline2026-02-15 -- Bulk Actions on Calls: select-all checkbox, per-call checkboxes, floating "Export Selected" bar
2026-02-15 -- Bulk Actions on Clients: select-all header checkbox, per-row checkboxes, floating action bar with Export and Delete (with confirmation dialog)
2026-02-15 -- UNIQUEFEATURES.md: roadmap of 14 innovative future features
2026-02-15 -- Avatar Upload Fix: added storage RLS policies allowing authenticated users to upload/update their own avatar in the
avatars/{uid}/path2026-02-15 -- Recurring Top-ups Architecture: non-minute top-ups (agents, users, phone numbers, storage) now become recurring monthly subscription add-ons; minutes remain one-time. New
recurring_topupstable,billing_modecolumn ontopup_packages,cancel-recurring-topupedge function, and "Monthly Add-ons" section in Billing with per-item cancel buttons2026-02-15 -- GDPR Approval Branded Email: superadmin approval of data export requests now sends a branded notification email from
AI Voice+ <[email protected]>to the requesting user with download instructions and 7-day expiry notice
Fixed
2026-02-15 -- Guided Tour +Add Visibility: tour card now positions below header/nav targets instead of to the right, with upward-pointing arrow; target element gets
pointer-events: autoand elevated z-index so it remains visible and clickable through the overlay2026-02-15 -- AgentOne Chat Mobile Responsiveness: header uses flex-wrap with icon-only buttons on mobile; sidebar becomes full-width overlay on small screens; input area has compact spacing
2026-02-15 -- Rewards "Apply to Subscription" Feedback: clicking with insufficient points now shows a destructive toast explaining the minimum required instead of silently doing nothing
2026-02-15 -- GDPR Data Export Trigger Fix:
trg_notify_admin_gdprno longer references non-existentrequester_emailcolumn; now looks up email fromauth.usersviauser_id2026-02-15 -- Mobile Change Plan Dialog: added
max-h-[85vh] overflow-y-autoto the upgrade dialog so plans are scrollable and selectable on mobile devices2026-02-15 -- Top-Up Dialog Billing Mode Labels: packages now display "monthly" or "one-time" badges with per-month pricing suffix for recurring items
2026-02-15 -- Quick Add Shortcuts: added "Resources" (β Settings > Billing) and "MCP Server" (β Settings > Integrations) items to the + Add dropdown in the dashboard header
2026-02-15 -- Guided Tour Quick Add Step: new first tour step highlighting the + Add button with description of all available shortcuts; tour now dynamically elevates header or sidebar containers for proper visibility
2026-02-15 -- Mobile Settings Responsiveness: all Settings tab detail pages made responsive for mobile PWA view β card headers, list items, and button rows now stack vertically on small screens using
flex-colβsm:flex-rowpattern across DashboardSettings, APIKeyManagement, MCPServersIntegration, ICalSyncIntegration, TeamMembersList, and BillingCard; TabsList now horizontally scrollable2026-02-15 -- Business Settings Mobile Fix: BusinessHoursEditor day rows stack vertically with mobile/desktop switch toggles; ServicesEditor uses single-column grid on mobile; address fields use responsive grid breakpoint
2026-02-15 -- Mobile Data Chat: "Data Chat" button added to BottomNav "More" drawer with gradient styling matching desktop sidebar
2026-02-15 -- Agent Apps Menu Reorder: move up/down arrow buttons on each app item in Superadmin β Site Config β Agent Apps Menu for drag-free reordering
2026-02-15 -- Transferred Calls Page: dedicated
/dashboard/transferred-callspage with search, CSV export, and S3 archival; sidebar "More" menu entry; clickable Transferred card on dashboard2026-02-15 -- E-Sig Document Editor: "View Doc" button opens full-screen monospace editor for raw document content; new
contentcolumn onesig_documents2026-02-15 -- Client Portal Fix:
get_portal_invoice_dataSECURITY DEFINER function bypasses RLS for unauthenticated portal visitors; portal buttons hidden for draft invoices2026-02-15 -- Competitors Page Visibility Fix: added
text-foregroundclasses to buttons, tabs, and badges in AdminCompetition for dark-mode visibility2026-02-15 -- Mobile Nav Reorder: BottomNav reordered to Home β Calls β More β AgentOne β Settings; More button now centered
2026-02-15 -- Mobile Logo: app logo added to mobile top bar linking to landing page
2026-02-15 -- Custom Script Desktop-Only: CustomScriptInjector now only injects widgets on desktop (β₯768px); scripts are removed on mobile viewports
2026-02-15 -- Dashboard Card Links: AgentOne "Workspaces" card links to
/dashboard/agentone/workspaces; Convo+ "Spaces" card links to/dashboard/convo/spaces
Security
2026-02-15 -- Sensitive data exposure fix: all client-side reads of
organization_settingsswitched toorganization_settings_safeview (excludesvapi_api_key,google_calendar_refresh_token);agent_one_workspacesbase table SELECT policy restricted to org admins only (general reads useagent_one_workspaces_safeview)2026-02-15 -- CRM Contact Form hardening: added IP rate limiting (5/15min), server-side input sanitization (HTML stripping, control char removal, length limits), hCaptcha verification, email format validation, and masked error messages to
crm-contact-formedge function2026-02-15 -- Contact page hCaptcha: added HCaptchaWidget to the public Contact form (client + server verification) alongside existing honeypot
2026-02-15 -- HCaptcha Runtime Fetch: updated HCaptcha component to fetch site key at runtime from
hcaptcha-sitekeyedge function when build-time env var is unavailable; consolidated duplicate HCaptcha components into singleHCaptchaRuntime.tsx
Fixed
2026-02-15 -- Settings tabs mobile overflow: card headers with side-by-side title + buttons now stack vertically on mobile
2026-02-15 -- Business Hours Editor: fixed day rows overflowing on mobile (fixed-width inputs replaced with flex-grow)
2026-02-15 -- Services Editor: fixed 2-column grid forcing cramped layout on mobile
2026-02-15 -- Competitors page: outline buttons and tab triggers invisible on dark admin background
2026-02-15 -- Client Portal: "Invoice not found" error due to RLS blocking unauthenticated portal token queries
2026-02-15 -- Footer gap: excessive empty space above footer on all pages fixed with
mt-autoon DashboardFooter2026-02-15 -- Convo+ chat: top navigation bar hidden on mobile fixed by adjusting chat container height
Tests
2026-02-15 -- Updated
QuickAddDropdown.test.tsx(10 tests, +3 new): Resources navigation to billing, MCP Server navigation to integrations, data-tour attribute on trigger button2026-02-15 -- Updated
GuidedTour.test.tsx(3 tests, updated): first step now verifies "Quick Add" title, step count updated from 12 to 132026-02-15 -- Added
BusinessSettings.test.tsx(6 tests): loading state, accordion sections, form fields, save indicator, timezone, responsive address grid2026-02-15 -- Added
BusinessHoursEditor.test.tsx(5 tests): 7-day rendering, closed state, time inputs, switch toggles, responsive layout classes2026-02-15 -- Added
ServicesEditor.test.tsx(6 tests): empty state, service items, labels, add interaction, delete buttons, responsive grid2026-02-15 -- Updated
AgentAppsMenuEditor.test.tsx(10 tests, +3 new): move up, move down, boundary disable guards2026-02-15 -- Updated GuidedTour "More Features" description to include Transferred Calls and BAA | e-Sig Docs
2026-02-15 -- Updated
CustomScriptInjector.test.tsx(9 tests, +2 new): mobile gating, desktop-to-mobile cleanup2026-02-15 -- Updated
ConvoDashboardMetrics.test.tsx(3 tests): added BrowserRouter wrapper for Link component, clickable Spaces link test2026-02-15 -- Updated
Contact.test.tsx(10 tests): updated mock fromHCaptchatoHCaptchaRuntime2026-02-15 -- Updated
validations.test.ts(27 tests, +10 new): contactFormSchema validation β valid data, missing name, invalid email, short message, name/message length limits, optional phone/company, phone/company length limits2026-02-15 -- Added
HCaptchaRuntime.test.tsx(5 tests): runtime sitekey fetch, captcha rendering, onNotConfigured callbacks, loading state, error handling2026-02-15 -- Fixed
AnalyticsSavingsCards.test.tsx(7 tests): added BrowserRouter wrapper for Link component2026-02-15 -- Updated
DashboardClimateSaved.test.tsx(11 tests, +2 new): Climate Impact & Carbon Cash learning section, link to rewards page2026-02-15 -- Updated
DashboardRewards.test.tsx(7 tests, +2 new): How Rewards & Climate Connect learning section, link to climate dashboard2026-02-15 -- Added
AdminAnnouncements.test.tsx(11 tests): heading, add button, create dialog, category select, poll type picker visibility, poll badge on list items, active/inactive badges, empty state, title/message fields2026-02-15 -- Total: 715 tests across 83 frontend + 5 edge function test files
v2026.02.14 -- February 2026
Added
2026-02-14 -- Comprehensive Notification System: 17 database triggers across 12 tables generate real-time notifications for both user and superadmin dashboards. Two helper functions (
notify_org_members,notify_admin_staff) insert notifications for all org members or all admin staff respectively. NotificationBell updated with Sonner toast on realtime INSERT, individual green "Mark Read" button per notification, extended Lucide icon map (13 types), and glowing red dot unread indicator. Bell added to Admin panel mobile and desktop headers.crm-contact-formedge function now callsnotify_admin_staffRPC on new leads.2026-02-14 -- CRM Contact Form Edge Function: created dedicated
crm-contact-formedge function for inserting contact page submissions directly intocrm_contactsas leads (previously incorrectly routed toauth-signupwhich had no handler)2026-02-14 -- CRM Expansion: 8 new CRM sub-tabs (Forecast, Segments, Campaigns, Tickets, Automations, Quotes, Projects, Integrations) with full CRUD, plus RBAC staff permission gating on Admin sidebar
2026-02-14 -- Security Hardening: expanded injection patterns (10 total), PII patterns (5 total incl. email/phone/UK NINO), blocked voice phrases, fail-closed moderation and rate limiting, output moderation for convo-chat, injection audit logging, MCP server race condition fix (per-request context), chat-with-data full safety pipeline, error masking across 8 edge functions, S3 key decryption via RPC, HTML escaping in email templates, admin-ai-insights input validation
2026-02-14 -- Documentation: created BiasProtections.md, Guardrails.md, AgentVerifier.md
2026-02-14 -- Superadmin Command Palette: search split into "App Items" and "Superadmin Items" (20 admin tabs) with onAdminTab callback for tab switching without page reloads
2026-02-14 -- AgentOne Chat TTS: green Volume2/VolumeX button in chat input bar, per-message speak buttons on assistant messages, auto-speak on new responses via browser Speech Synthesis API
2026-02-14 -- Larger prompt inputs: replaced
<Input>with auto-resizing<textarea>in AgentOne workspace and Convo+ chat interfaces (Enter sends, Shift+Enter newline)2026-02-14 -- Quick Add (+) deep linking: all 5 items now navigate with
?action=createquery param; target pages auto-open creation dialogs after data loads usingpendingCreatepattern to avoid race conditions
Fixed
2026-02-14 -- CRM Contact Form: fixed contact page submissions not reaching
crm_contactstable β created dedicatedcrm-contact-formedge function (was incorrectly callingauth-signupwhich ignored thecrm_contact_from_formaction)2026-02-14 -- AdminRoute test: updated mock from deprecated
useSystemAdmintouseAdminStaffhook after RBAC refactor2026-02-14 -- Command Palette search: fixed AgentOne navigation path (
/dashboard/agent-oneβ/dashboard/agentone), Climate Saved path (/dashboard/climate-savedβ/dashboard/climate), removed AI Assistant Settings and AI Settings from search items
Tests
2026-02-14 -- Added
Contact.test.tsx(9 tests): form rendering, validation errors, contact_requests insert, crm-contact-form edge function invocation, thank you screen, honeypot field2026-02-14 -- Fixed
AdminRoute.test.tsx(3 tests): updated to mockuseAdminStaffinstead of removeduseSystemAdmin2026-02-14 -- Added
CommandPalette.test.tsx(10 tests): Cmd+K open, Navigation vs App Items heading, Superadmin Items visibility, admin tab items, onAdminTab callback2026-02-14 -- Updated
QuickAddDropdown.test.tsx(7 tests, +5 new): navigation paths with ?action=create for all 5 items (calendar, agents, convo, agentone, clients)2026-02-14 -- Fixed
DashboardClients.test.tsx: added MemoryRouter wrapper (required after useSearchParams addition)2026-02-14 -- Updated
CommandPalette.test.tsx(11 tests, +1 new): AI Assistant Settings removal verification2026-02-14 -- Updated
NotificationBell.test.tsx(12 tests, rewritten): Lucide icons instead of emojis, individual Mark Read buttons, red dot indicator, realtime Sonner toast firing, mark read mutation2026-02-14 -- Total: 659 tests across 78 frontend + 5 edge function test files
2026-02-14 -- Guided Tour: reordered steps to match updated sidebar layout (Dashboard β Calendar β AI Voice Agents β Convo+ β AgentOne β All Calls β Climate Saved β Apps+ β More β Docs β Settings β Tour), removed standalone Analytics step (now 12 steps); fixed duplicate badges in README
v2026.02.13 -- February 2026
Added
2026-02-13 -- Top Up Extra Resources: redesigned TopUpDialog with multi-item cart (quantity steppers, cart summary, proceed to checkout),
topup-checkoutedge function updated to accept array of items with multiple Stripe line items, top-up purchases displayed on Billing page2026-02-13 -- Top Up DB columns:
topup_agents,topup_phone_numbers,topup_users,topup_storage_gbon subscriptions table; Dashboard and ResourceUsageCards now sum base plan + top-up values for all 5 resource types2026-02-13 -- Convo+ Dashboard Metrics: 6 metric cards (Spaces, Messages, Tokens Used, Total XP, Words Learned, Learners) matching AgentOne dashboard pattern
2026-02-13 -- Quick Add (+) dropdown in dashboard header with shortcuts: New Appointment, Create Agent, Convo Space, AgentOne Space, Client
2026-02-13 -- BillingCard "Top Up" button renamed to "Top Up Extra Resources"
2026-02-13 -- Convo+ safety hardening: 10-layer security pipeline matching AgentOne β IP rate limiting (30/15min), input validation, sanitization, prompt injection scanning, content moderation via AI gateway, PII redaction on input and output, safety preamble, per-org daily quota (100 msgs/day) via
convo_usagetable, audit logging toai_usage_logs, org membership verification2026-02-13 -- Guided Tour updated to 13 steps: added Climate Saved step with Leaf icon; updated More Features description to highlight Rewards/Carbon Cash
2026-02-13 -- App name badge in sidebar now links to landing page (/) instead of /dashboard
2026-02-13 -- Full PWA support: installable app with service worker, offline caching, manifest, PWA icons, and
/installpage with platform-specific instructions2026-02-13 -- ImpactRewardsCards: reusable COβ Saved and Carbon Cash cards added to Overview and Analytics dashboards with live data from call_logs and rewards_balances
2026-02-13 -- Climate Saved dashboard now pulls actual call duration data from call_logs table (was only using subscription/rewards data)
2026-02-13 -- Hero section desktop layout: increased container padding for better breathing room at lg+ breakpoints
2026-02-13 -- Climate Saved dashboard: environmental impact metrics (COβ, trees, energy, car miles) with transparent "How It's Calculated" accordion showing formulas and EPA/IEA sources
2026-02-13 -- Admin Webhooks: CRUD for webhook endpoints with event selection, test ping, and active/inactive toggle (superadmin only)
2026-02-13 -- Bulk Discount Code generation: batch-create up to 100 codes with CSV download
2026-02-13 -- Bulk Discount Codes UX overhaul: batch summary rows with
...dropdown for View Codes and Export CSV2026-02-13 -- Admin Data Archival: automatic S3/Supabase storage archival for bulk-generated discount code CSVs with IDrive E2 fallback
2026-02-13 -- Agent save-before-test: disabled test call button for unsaved agents with "Save Agent" prompt
2026-02-13 -- Confetti celebrations on first login (with
has_seen_welcomeprofile flag)2026-02-13 -- Rewards "How It Works" accordion explaining earning rates, milestones, and redemption rules
2026-02-13 -- "How to Use" instructional accordions added to AI Voice Agents, Convo+, and AgentOne pages
2026-02-13 -- Superadmin unlimited access fix: DashboardAgents now uses
useSubscriptionGuardwith β badge for superadmins2026-02-13 -- Dashboard consolidated: merged Analytics charts, tally cards (Clients, Appointments, Calls, Consents, Top-Ups), and resource usage cards (Minutes, Users, Storage) into main Dashboard; Analytics route redirects to
/dashboard; sidebar prefix-match highlighting fix for Convo+/AgentOne sub-routes2026-02-13 -- Data Chat expanded: 12 user + 12 admin suggested questions covering patterns, conversion, churn risk, MRR growth, peak hours, and more
Fixed
2026-02-13 -- 2FA issuer branding: authenticator apps now display "AI Voice+" instead of the default domain name when enrolling TOTP factors
2026-02-13 -- MFA login "missing sub claim" error: fixed race condition where stale-session cleanup in AuthProvider could sign out a freshly authenticated user before MFA challenge completed; added
staleCheckCancelledflag and session-alive guard beforemfa.challenge()
Security
2026-02-13 -- Webhook secrets now encrypted at rest via
encrypt_webhook_secret_trigger(defense in depth, matching org settings pattern)2026-02-13 -- Script security hardened: eval() and new Function() now always blocked even with trusted URLs; CustomScriptInjector uses DOMParser instead of innerHTML; regex lastIndex state reset prevents false negatives
Tests
2026-02-13 -- Added
HeroSection.test.tsx(4 tests): headline, CTA buttons, trust indicators, trusted-by badge2026-02-13 -- Added
Install.test.tsx(3 tests): title, benefit cards, instructions section2026-02-13 -- Added
ImpactRewardsCards.test.tsx(4 tests): CO2 card, rewards card, loading skeletons, detail page links2026-02-13 -- Added
ConfettiOverlay.test.tsx(5 tests): render states, pointer-events-none, onComplete callback, cleanup2026-02-13 -- Added
useConfetti.test.ts(4 tests): API shape, initial state, activate, deactivate2026-02-13 -- Added
DashboardClimateSaved.test.tsx(9 tests): title, metrics, milestone, accordion formulas2026-02-13 -- Added
TopUpDialog.test.tsx(4 tests): dialog title, description, empty state, closed state2026-02-13 -- Added
ConvoDashboardMetrics.test.tsx(3 tests): skeleton loaders, null orgId handling2026-02-13 -- Added
QuickAddDropdown.test.tsx(2 tests): render Add button, 5 menu items on click2026-02-13 -- Added
GuidedTour.test.tsx(3 tests): step count, Climate Saved inclusion, step dots2026-02-13 -- Added
convo-chat/safety.test.ts(6 tests): UUID validation, message length, injection detection, sanitization, PII redaction, field validation2026-02-13 -- Added
AdminWebhooks.test.tsx(8 tests): title, buttons, URL display, event badges, empty state2026-02-13 -- Added
AdminDiscountCodes.test.tsx(8 tests): title, buttons, code display, active badge, empty state, batch summary, dropdown2026-02-13 -- Added
admin-data-archive.test.ts(5 tests): S3 archival, Supabase fallback, MIME types, folder paths2026-02-13 -- Updated
script-security.test.ts(+1 test): eval/Function never-downgrade with trusted URLs2026-02-13 -- Updated
useAuth.test.tsx(12 tests, +3 new): MFA factor detection, MFA skip for unverified factors, stale session cleanup on mount; updated mock to includegetUserandmfa.listFactors2026-02-13 -- Total: 642 tests across 86 frontend + 5 edge function test files
v2026.02.12 -- February 2026
Added
2026-02-12 -- Dashboard sidebar reordered: Dashboard β Calendar β AI Voice Agents β Convo+ β AgentOne β All Calls β Analytics
2026-02-12 -- AgentOne Dashboard: replaced marketing splash page with a metrics-driven dashboard at
/dashboard/agentone/dashboardfeaturing 6 metric cards (workspaces, runs, messages, tokens, memories, tools), 30-day usage trend chart (messages/tokens toggle), recent runs feed with workspace name and status, top 6 workspace grid with quick-create action. AgentOne landing page restored as the entry point2026-02-12 -- Convo+ landing page "Go to Workspaces" button now navigates directly to the Progress Tracking dashboard tab
2026-02-12 -- Convo+ language support expanded to 22+ languages (added NL-BE, ES-MX, TR, HI, TH, EL) across landing page, workspace create and edit dialogs
Fixed
2026-02-12 -- 2FA banner "Set Up 2FA" button now correctly navigates to Settings β Security tab (was going to Profile tab due to query param mismatch)
Changed
2026-02-12 -- Renamed sidebar "Agent Apps" dropdown label to "Apps+"
2026-02-12 -- Renamed sidebar "Docs" link label to "Docs | ...more"
2026-02-12 -- Convo+ TTS switched from ElevenLabs API to browser-native Speech Synthesis API (zero cost, smart voice selection preferring Neural/Enhanced voices, language-matched via BCP-47). ElevenLabs remains active for voice agents only
Tests
2026-02-12 -- Added
TwoFactorBanner.test.tsx(3 tests): render, security tab navigation, dismiss2026-02-12 -- Updated
AgentAppsDropdown.test.tsxto match new "Apps+" label2026-02-12 -- Added
DashboardConsents.test.tsx(8 tests): title, metrics, search, empty state2026-02-12 -- Added
DashboardClients.test.tsx(11 tests): title, metrics, buttons, empty state, export disabled2026-02-12 -- Added
AgentEditorForm.test.tsx(10 tests): cards, validation, cancel handler, create button2026-02-12 -- Added
useTextToSpeech.test.ts(17 tests): API shape, speak/stop, cooldown, truncation, locale mapping, voice selection (cloud/neural preference, language matching), cleanup2026-02-12 -- Added
AgentOneDashboardMetrics.test.tsx(3 tests): skeleton loaders, metric labels, zero values2026-02-12 -- Added
AgentOneDashboardUsageChart.test.tsx(3 tests): title, toggle buttons, empty state2026-02-12 -- Added
AgentOneDashboardRecentRuns.test.tsx(2 tests): title, empty state2026-02-12 -- Added
DashboardConvo.test.tsx(5 tests): title, tabs, default tab, progress tab via URL param, description
v2026.02.11 -- February 2026
Added
2026-02-11 -- Role Permissions Matrix in Settings β Team: collapsible table showing what each role (Viewer, Manager, Admin) can access per feature, with highlighted column for selected role
2026-02-11 -- Renamed "Editor" role to "Manager" across invite dialog and member detail sheet to match database enum
Changed
2026-02-11 -- Viewer role no longer implies transcript access; transcripts require Manager or above
2026-02-11 -- Improved role descriptions in invite dialog and member sheet with specific feature callouts
v2026.02.11 -- February 2026 (Baseline RC)
Everything shipped up to this date, consolidated as the initial baseline release.
Added
BYOK Routing + Safety Guardrails for AgentOne: Complete security and BYOK implementation for the
agent-one-chatedge functionBYOK Provider Routing: Workspaces with a custom API key now route requests directly to OpenAI or Google Gemini APIs based on model prefix, with provider error normalization (429/401/402/502)
Encrypted BYOK Key Storage:
byok_api_keycolumn onagent_one_workspaceswithencrypt_workspace_byok_triggerfor PGP encryption at restget_decrypted_workspace_key: Security definer function (service_role only) for server-side key decryptionIP Rate Limiting: 30 messages per 15 minutes per IP via shared
rate-limit.tsutilityInput Validation: 10K character cap, UUID format checks, null byte/control character stripping
Prompt Injection Defense: 6 regex patterns detect and safely wrap injection attempts
Content Moderation: AI-powered input screening via Lovable AI gateway (gemini-2.5-flash-lite), always uses platform key
System Prompt Hardening: Non-negotiable safety preamble prepended to every conversation
PII Redaction: Real-time streaming output scan for credit card numbers and SSNs, replaced with
[REDACTED]Per-Org Daily Quotas:
agent_one_usagetable withincrement_agent_one_usageRPC for atomic 100 msgs/day trackingAudit Logging: Every request logged to
ai_usage_logswith user, org, feature, model, and token countFrontend BYOK Wiring:
DashboardAgentOne.tsxcreateMutationnow storesbyok_api_keyand setsai_provider = "byok"Client-side Safety Utilities:
src/lib/agent-one-safety.tsmirrors server guardrails for pre-validation
AgentOne Workspaces: Full agentic AI workspace system with multimodal streaming chat, persistent memory, and MCP data integration
5 new database tables:
agent_one_workspaces,agent_one_runs,agent_one_messages,agent_one_memory,agent_one_toolswith org-level RLS3 edge functions:
agent-one-chat(streaming AI with live org data tools),agent-one-workspace(lifecycle),agent-one-memory(CRUD)Gemini 3 Flash (Free) as default model; BYOK mode for custom API keys and models (GPT-5, Claude, etc.)
Workspace listing page (
/dashboard/agentone) with create dialog, search, status managementWorkspace detail page (
/dashboard/agentone/:workspaceId) with streaming chat, 6-tab sidebar (Runs, Memory, Tools, Docs, Files, MCP), quick-action buttonsMCP Data Integration: Chat can query live call logs, clients, appointments, and agents; results rendered as interactive cards
MCP Data Panel: Sidebar tab showing connected MCP servers with one-click context injection
Drag-and-drop document upload supporting PDF, TXT, MD, CSV, JSON, and images (PNG/JPG/WEBP)
Artifact viewer auto-extracts code blocks and structured data from assistant messages into browsable gallery
Custom tools panel with CRUD for prompt templates, code snippets, and workflows
Memory viewer with type filtering (fact/instruction/preference/context)
Folder-level S3 storage isolation (
agent-one/workspace-{id}/) with Supabase Storage fallbackSidebar and BottomNav updated with "AgentOne" menu item
Call Recording Consent System: Opt-in per-agent consent flow that asks callers for recording consent at the start of every call
call_consentstable with org-level RLS and append-only policies for regular usersrequire_consenttoggle onai_agentstable (default: off)recordConsentVapi tool injected into assistant when enabledSystem prompt dynamically prepends consent script when active
Consent Log dashboard page (
/dashboard/consents) with date, caller, agent, and status filtering
Identity Verification System: Opt-in per-agent caller verification before sensitive actions
identity_verificationstable tracking verification attempts, methods, and outcomesrequire_identity_verificationtoggle andidentity_verification_methods(PIN, DOB, Account Number) onai_agentsverifyIdentityVapi tool with encrypted PIN lookup viadecrypt_sensitive()System prompt dynamically injects verification instructions when active
Client Records Management: Centralized client database with CRM-like capabilities
client_recordstable with encrypted security PINs viaencrypt_client_pin_triggerAuto-upsert from
bookAppointmentVapi webhook (creates/updates client on every booking)Full CRUD dashboard page (
/dashboard/clients) with search, status filters, add/edit dialogs, and CSV export
Agent Editor Enhancements: New toggles in Agent Editor for "Require Recording Consent" and "Require Identity Verification" with method selection checkboxes
Navigation Updates: Added Consent Log and Clients items to sidebar and guided tour
User Profile Button in Header: Moved Sign Out from sidebar to a profile avatar dropdown in the top-right header bar
Shows "Welcome, {first name}" with avatar image next to the notification bell
Popover menu with Profile Settings, All Settings, and Sign Out links
Appointment indicator (teal dot) on avatar when there are appointments today
Missed calls indicator (red dot) on avatar when there are missed calls today
Team Members Limit per Plan: New
users_limitcolumn onplanstableConfigurable in Admin β Plans edit form
Displayed on landing page pricing cards (e.g. "5 Team Members")
Synced to Stripe product metadata via
stripe-sync-productsedge functionTeam tab in Settings shows usage counter (e.g. "2/5") and disables invite when at limit
Storage Quota Management: Per-plan storage limits for call transcripts and MCP data with automatic enforcement
storage_limit_gbcolumn onplanstable β configurable per plan via Admin β Plansstorage_used_bytesandstorage_limit_gbcolumns onsubscriptionsfor per-org trackingincrement_storage_used()DB function validates quota before allowing S3 uploads (returnsallowed: falsewhen full)get_storage_usage()DB function returns usage stats for UI displayupload-to-s3edge function now checks quota and returns HTTP 413 when storage is fullStorageUsageCardcomponent in Settings with progress bar, warning/full badges, and contextual alertsUpgradeBannerextended with storage warning (β₯90%) and storage full (100%) bannersuseSubscriptionGuardextended withstorageUsedBytes,storageLimitGb,storagePercent,storageWarning,storageFullAdmin Plans table includes editable Storage (GB) field
Landing page pricing cards now display storage allocation per plan
Superadmin bypass for all storage restrictions
Stripe Live Mode Fix: Cleared test-mode Stripe product/price IDs to allow fresh sync with live keys
Superadmin Subscriptions Management Page: Comprehensive subscription & transaction oversight for platform operators
Search, filter by status/plan, and view detailed subscription info
CSV export of all subscription data
MRR, active/trialing/canceled counts, and total credit summary cards
Interactive Admin Metric Cards: All top-level dashboard metric cards now navigate to their respective management tabs (Organizations, Users, Analytics, Subscriptions)
Call Volume Chart Improvements: Dual-metric grouped bar chart showing both call count and call minutes per day with legend
Subscription Distribution Chart Fix: Tooltip text now uses themed foreground colors for readability in dark mode
Call Outcomes Chart Clarification: Added subtitle and help text explaining outcome categories
Stripe Live Keys: Updated Stripe integration to use live publishable and secret keys
Call Duration Increased to 7 Minutes: AI voice calls now have a 7-minute (420s) hard limit, up from 4 minutes, with a 6-minute warning prompt
Agent-to-Agent (A2A) Collaboration: Multi-agent handoff system with transfer rules, shared session context, and agent skills
agent_transfer_rulestable for defining keyword/intent-based routing between agentsagent_sessionstable for tracking shared context during call handoffsagent_skillstable for tagging agents with capabilities and proficiency levelsTransfer Rules UI in Agent Editor for managing handoff conditions
Agent Skills UI with 7-level proficiency dropdown (Novice β Master) and primary skill marking
A2A workflow explainer added to Agent Skills section
Vapi webhook integration for
transferToAgenttool and session managementSystem prompt injection of transfer rules into Vapi assistant configuration
Default AI Moderation: Documentation updated to reference our default AI Gateway for content moderation instead of OpenAI Moderation API
MCP Server for AI Assistants: Public MCP (Model Context Protocol) server enabling users to interact with their account from Claude Desktop, Cursor, Windsurf, and other MCP-compatible AI tools
9 tools:
list_calls,get_call_detail,list_appointments,create_appointment,cancel_appointment,get_analytics,list_agents,update_agent,get_rewards_balanceAPI key authentication with SHA-256 hashed storage β raw keys never persisted
Self-service API key management in Settings β Integrations tab
api_keystable with RLS,validate_api_key+touch_api_key_usageDB functionsmcp-serveredge function usingmcp-lite+ Hono withStreamableHttpTransportConnection instructions and MCP server URL displayed in the UI
Cloud Storage Offloading to IDrive E2 (S3): New
uploadToCloudStorageutility andupload-to-s3edge function route uploads to S3-compatible storage with automatic Supabase fallbackCall recordings persisted from Vapi to E2 on call completion
GDPR data exports stored in E2
gdpr-exports/folderOrganization logos, user avatars, and store product images uploaded via E2
Graceful fallback to Supabase
site-assetsbucket when no S3 bucket is configured
Appointment Reminder & Auto-Dial System: Multi-stage automated reminder pipeline with pg_cron scheduling
appointment-remindersedge function processes 24h, 2h, 15min email reminders and auto-dial at appointment timeVAPI outbound calls to clients with appointment context and agent greeting
Automatic creation of missing reminders for upcoming appointments
appointment_reminderstable tracks status (pending/sent/failed/skipped) per reminder
In-App Notification System: Real-time dashboard alerts for organization admins
NotificationBellcomponent with Supabase Realtime subscriptionsUnread count badge, mark-all-read, and click-to-navigate
Type-specific emoji icons (π€ agent, β° reminder, π auto-dial)
in_app_notificationstable with RLS policies
Voice AI Webhook Reminder Integration: Auto-creates reminder records and agent-assigned notifications when appointments are booked via voice agent
Automatic Appointment Confirmation Emails: Clients now receive a professional confirmation email automatically when an appointment is booked β both via the AI voice agent (VAPI webhook) and through the manual Calendar UI
New
appointment-confirmationemail type insend-emailedge function with branded HTML templateVoice AI webhook
bookAppointmenttool now acceptsemailparameter and auto-sends confirmationManual calendar bookings auto-send confirmation when client email is provided
All emails sent from
AI Voice+ <[email protected]>confirmation_sent_attimestamp updated on successful send
Built-in Calendar System: Full appointment management in Dashboard β Calendar
Create, edit, and cancel appointments with date picker and 30-minute time slots (8:00β21:30)
Real-time conflict detection prevents double-booking
Agent integration β assign AI Voice Agents to appointments; agent-booked slots show "AI Booked" badge
Email confirmations sent to clients via
send-emailedge function with "Sent β" trackingCalendar provider toggle: choose Built-in Calendar or Google Calendar per organization
Visual indicators on calendar dates that have appointments
Social Links Expansion: Added YouTube and UpScrolled URL fields to Superadmin β Site Config β Social Links and landing page footer
Guided Tour Expansion: Added Calendar, Rewards, and Store steps to the interactive guided tour
Carbon Cash Rewards System: Full rewards program where users earn points per minute of AI agent call time, with milestone bonuses, monthly caps, and redemption for subscription credits or store merchandise
Merch Store: Complete e-commerce system with product categories, variants (size/color/SKU), inventory management, shipping rates, and checkout via Stripe, Carbon Cash points, or mixed payments
Top-Up Packages: One-time resource purchases (extra minutes, agents, phone numbers) via Stripe checkout without changing subscription plan
Edge Functions:
rewards-credit,rewards-redeem,store-checkout,topup-checkoutfor backend processingStripe Webhook Extensions: Handles
topupandstorepayment metadata for fulfillmentVAPI Webhook Integration: Auto-credits Carbon Cash rewards after each call ends
Superadmin Profile Page: Full profile management page in the admin panel with avatar upload, personal info (auto-saved), address, password change dialog, 2FA setup/disable with QR code, and session information
Admin Trial Lifecycle Info Panel: Rich informational card on the Plans page showing the full trial timeline (signup β warning β expiry β upgrade), enforcement points (agent limits, VAPI webhook guard, minutes exhaustion), superadmin bypass, and cron job details
Dashboard Guided Tour: Interactive wizard with speech bubbles that walks new users through every dashboard section. Auto-triggers on first login and can be re-launched via Guided Tour button in the sidebar
Trial Expiration & Subscription Guardrails: Complete post-trial enforcement system
useSubscriptionGuardhook tracks subscription status, trial expiry, minutes usage, and agent limitsUpgrade Banner: Contextual warnings for trial expiring (β€3 days), trial expired, minutes exhausted, or subscription canceled
Upgrade Wall: Full read-only lockout when trial expires β only Settings and GDPR pages remain accessible
Superadmin Bypass: System admins are never locked out of any functionality
Agent Limit Enforcement: Redirects to settings when agent creation exceeds plan limit
VAPI Webhook Guard: Blocks incoming calls for expired trials, canceled subscriptions, or exhausted minutes (server-side enforcement)
Trial Expiration Cron: Daily edge function (
trial-expiration-cron) auto-cancels expired trials, deactivates agents, and sends emailsTrial Emails via Resend: 3-day warning email + expiration notification sent to org owners/admins
Sign In / Sign Up Page Customization: All text on the Sign In and Sign Up pages is now editable from Superadmin β Site Config β Landing Page Edits
AI Agents Limit per Plan: Plans now include
agents_limitfield in the edit form, Stripe product metadata, and landing page pricing featuresUser Announcements Page: New
/dashboard/announcementsroute where users can view all announcements from superadmins with accordion-style list, read/unread badges, and filteringAdmin Back to App Button: Moved "Back to App" navigation from sidebar footer to desktop header
Browser Calls Dashboard: New
/dashboard/browser-callspage with advanced filtering, search, transcript viewing, and batch CSV/TXT export capabilitiesS3/MinIO Integration: Admin can configure S3-compatible storage (MinIO) for call transcripts with test connection functionality
AI Agent Learning Section: New collapsible accordion in agent editor with capability documentation and instruction templates
27 Industry-Specific Templates: Pre-built AI agent templates for Medical, Dental, Pharmacy, Optometry, Mental Health, Pediatric, Salon, Spa, Med Spa, Restaurant, Hotel, Legal, Accounting, Real Estate, Insurance, Automotive, Fitness, Veterinary, Photography, Travel, Education, Dry Cleaning, Moving, HVAC/Plumbing, Electrical, Landscaping, and General Contractor
Call Guardrails: 4-minute call limit with 3-minute warning prompt for trial users
5-Minute Call Limit Plan: Documented graceful call termination strategy with Vapi maxDurationSeconds, 4-minute warnings, and plan-based limits
Multi-Agent (A2A) Collaboration Roadmap: Complete architecture for agent-to-agent handoffs with shared context, transfer rules, and orchestration
Abuse Protection System Plan: Multi-layer security including real-time content moderation, blocked caller lists, rate limiting, and safety incident tracking
Plan Discount Percentage: New
annual_discount_percentfield for dynamic "Save X%" badges on landing pageDiscount Code Restrictions: Plans can now specify which discount codes are allowed via
allowed_discount_codesarrayMultiple AI Voice Agents: New
ai_agentstable,/dashboard/agentspage, agent limit per planMissed Calls Page: New
/dashboard/missed-callsroute with filtered view and CSV exportCall Transcript Popup:
TranscriptModalcomponent for viewing call transcripts from call cardsAnalytics Savings Cards: Missed Calls, Transferred Calls, and Est. Savings calculations on Analytics page
Sidebar Navigation Updates: AI Voice Agents, Docs | ...more, Data Privacy reordering, mobile bottom nav
Comprehensive Timezone Support: 100+ IANA timezones grouped by region with GMT offsets
MCP Servers Integration: MCP server management UI in Settings β Integrations with add/view/remove
Branded Password Reset Emails: Custom
request-password-resetedge function using admin.generateLink with branded templatesPassword Reset Flow:
/forgot-passwordand/reset-passwordpages with hCaptcha and strength validationTrusted URLs for Custom Scripts: Domain-based trust list for bypassing security warnings on known-safe scripts
Testimonials Management: Admin CRUD for customer testimonials with publish/feature toggles, database-connected landing page
Agent Apps Menu: Admin-configurable external app links dropdown in dashboard sidebar
Comprehensive Deployment Documentation: Deploy guides for Netlify, Vercel, VPS, and Windows Server
GDPR Compliance System: User data export requests, admin approval workflow, automated JSON generation, signed download URLs
FAQ Management for Superadmins: Create, edit, delete, publish/unpublish FAQs with category organization
Organization Self-Deletion: Org admins can permanently delete their organization with cascading cleanup
Custom Scripts Management: Third-party JS widgets in Admin Site Config with security validation
Demo Abuse Prevention: hCaptcha gating, IP rate limiting (3/hour), global daily cap (100), audio duration limits
Changed
Languages Section on Landing Page: Expanded from 8 emoji flags to all 22 supported language codes displayed as clean monospace text
Guided Tour: Added Consent Log and Clients steps (now 18 steps total)
Agent Skills Proficiency: Replaced 0-100% slider with 7-level discrete dropdown (Novice 15 β Master 100)
Agent Skills Label: Renamed to "Agent Skills (Agent-to-Agent, aka A2A)" for clarity
Built-in Guardrails: Updated call limit wording from 4 minutes to 7 minutes with 6-minute warning
Contact Support Button: Now opens external support portal in a new tab instead of opening contact dialog
Custom Scripts Now Work for All Users: Updated CustomScriptInjector to use public config instead of admin-only config
Rebranded to AI Voice+: Updated app name across all branding, emails, meta tags, LICENSE, README, and edge functions
Fixed
create-vapi-assistant Boot Error: Fixed duplicate
const settingsdeclaration causing boot failureAgent Dropdown Always Visible: Agent dropdown in appointment form now always shown with helpful message when no agents exist
Select Value Fix: Resolved Radix Select empty-value crash by using
"none"sentinel valueDashboard Metrics: "Calls Today" and "Average Duration" now correctly include browser calls
Call Tallying: Increased call fetch limit from 50 to 100 and fixed date filtering
FAQ disconnect: Admin panel and landing page now fetch from same database source
Site config exposure: Sensitive fields no longer exposed to non-admin authenticated users
Agent Apps Menu visibility: Fixed
site_config_publicview blocking non-admin usersEmail sending failures: Updated invalid RESEND_API_KEY; emails now send successfully
Security
Encryption at Rest for Sensitive Tokens: Google Calendar refresh tokens and Vapi API keys encrypted using PGP symmetric encryption via
pgcryptoGDPR Download Expiration Enforcement: Server-side cleanup of expired data exports
increment_minutes_used Protection: Function restricted to service_role only with input validation
search-phone-numbers Authentication: Added JWT verification and is_org_admin RPC check
Plan-Based Discount Controls: Stripe checkout validates discount codes against plan's allowed list
Invitation token protection: Blocked SELECT on raw
invitations; admins useinvitations_safeviewAppointments privacy:
created_bycolumn with scoped RLSProfiles table protection: Users can only view their own profile
Site config protection:
site_config_publicview for safe public accessRow-Level Security (RLS) on all tables
Webhook validation with timestamp verification
hCaptcha bot protection
Secure secret management
Email verification flow using PKCE
Tests
agent-one-safety.test.ts: 30 tests for sanitization, injection scanning, PII redaction, UUID validation, and message length limits
agent-one-chat/safety.test.ts: 5 Deno edge function tests for CORS, auth, workspace_id validation, UUID format, and oversized message rejection
DashboardAgentOne.test.tsx: Enhanced from 3 to 5 tests
CreateWorkspaceDialog.test.tsx: Enhanced from 4 to 7 tests
StorageUsageCard.test.tsx: 8 tests for storage card rendering, usage display, warning/full states
UpgradeBanner.test.tsx: 13 tests total including 4 storage-related tests
cloud-storage.test.ts: 7 tests for S3 upload, Supabase fallback, error handling
NotificationBell.test.tsx: 9 tests for notification bell rendering
appointment-reminders/index.test.ts: 3 Deno tests for edge function invocation
DashboardRewards.test.tsx: 5 tests for rewards page
DashboardStore.test.tsx: 7 tests for store page
TopUpDialog.test.tsx: 4 tests for top-up dialog
AdminRewards.test.tsx: 7 tests for admin rewards configuration
AdminTopUpPackages.test.tsx: 5 tests for admin top-up packages
AgentTemplates.test.tsx: 8 tests for template rendering
AnalyticsSavingsCards.test.tsx: 7 tests for savings calculation
AIAgentLearningSection.test.tsx: 7 tests for learning section
AdminS3Buckets.test.tsx: 7 tests for S3 bucket configuration
DashboardBrowserCalls.test.tsx: 5 tests for browser calls page
MCPServersIntegration.test.tsx: 14 tests for MCP servers
send-email tests: 9 tests
request-password-reset tests: 7 tests
ForgotPassword.test.tsx: 10 tests
ResetPassword.test.tsx: 12 tests
script-security.test.ts: 35 tests for script security
CustomScriptsEditor.test.tsx: 18 tests for scripts editor
AdminTestimonials.test.tsx: 6 tests for testimonials
AgentAppsMenuEditor.test.tsx: 7 tests for agent apps editor
AgentAppsDropdown.test.tsx: 5 tests for agent apps dropdown
AdminGDPRRequests.test.tsx: 11 tests for admin GDPR
DashboardGDPR.test.tsx: 9 tests for user GDPR
AdminFAQs.test.tsx: 10 tests for FAQ management
DeleteOrganization.test.tsx: 5 tests for org deletion
315+ tests across 33+ files total
Performance
Code Splitting: Lazy loading for all non-critical routes
Vendor Chunk Splitting: React, UI, and Chart libraries in separate cacheable chunks
Resource Hints: DNS prefetch for Supabase and Google Fonts
Font Optimization: Non-blocking Google Fonts loading
Image Optimization: Explicit dimensions on logo to prevent CLS
Build Target: ES2020 reducing legacy polyfills
Documentation
TESTS.md: Comprehensive test inventory documenting all 333 tests across 35 files
README.md: Updated test coverage section with full category breakdown
CONTRIBUTING.md: Contributor guidelines
FEATURES.md: Full feature documentation
Infrastructure
Multi-tenant architecture with organization-based data isolation
User authentication with email verification
Role-based access control (Owner, Admin, Manager, Viewer)
System admin roles (Super Admin, Support)
Features (Platform Capabilities)
Voice & Calls
AI voice assistangs aka agents
Phone number provisioning and management
Voice synthesis with 22+ language support
Call recording and transcript storage
Real-time call status monitoring
Dashboard
Live call monitoring and analytics
Call history with searchable transcripts
AI-generated insights panel
Setup checklist for new users
Activity stream
Business Management
Business hours configuration with timezone support
Services management with duration and pricing
Custom AI greeting and personality settings
Google Calendar integration for appointments
Team & Collaboration
Team member invitations with email notifications
Role-based permissions per organization
Admin impersonation for support
Billing & Subscriptions
Stripe integration for payments
Configurable pricing plans from admin panel
Usage-based minute tracking
Discount code system
Customer portal access
Admin Panel
Platform-wide metrics (users, orgs, MRR)
Call volume and outcome charts
User and organization management
Plan configuration with Stripe sync
Site branding configuration
Email settings management
AI-powered contact reply system
Discount code management
FAQ management
GDPR request management
Landing Page
Responsive hero section
Features showcase
Dynamic pricing from database
FAQ section
Contact form with hCaptcha protection
Social proof bar
v1.0.0 -- 2026-02-06
Added
Initial release of AI Voice Receptionist SaaS Template
Complete multi-tenant platform ready for white-label deployment
Full documentation in README.md
v0.79.0 -- 2025-12-31
v0.0.0 -- 2024-01-01
Last updated