OpenVoiceUI v2026.7.15
OpenVoiceUI v2026.7.15
First release since v2026.6.9 (5 weeks). ~150 commits. Tag: v2026.7.15 @ 0ca279b.
Draft — publish after deployment verification.
Highlights: a security-hardening pass (incl. today's F-5/F-6/F-7 fixes), a real Hume Octave
voice provider, the full Suno stems + voice-cloning suite, the per-tenant Canvas Styles
design system, a rebuilt admin panel, and the desktop/canvas overhaul.
🔒 Security
- F-5 — upload stored XSS (#382):
/uploads/now serves non-media (html/svg/js) as
text/plainattachments withnosniff+ a locked CSP, so user/agent uploads can never
execute in-origin and steal the Clerk session. - F-6 — OAuth callback CSRF (#382): OAuth
statenow carries a single-use,
server-persisted, 10-min-TTL nonce, verified on callback before the code exchange. - F-7 — auth fail-open (#382): when
CANVAS_REQUIRE_AUTH=truebut Clerk is
unconfigured, the app now fails closed for the whole surface (was: admin-only), so a
broken key mount can't serve the app unauthenticated. - Phase-0 hardening: exact public allowlist, Deepgram-token gate, admin WS-proxy lockdown,
canvas lock guards; server-side admin authz +/api/pluginslockdown + CSRF origin guard;
admin/vault carve-out from theX-Agent-Keybypass; client-visible system-string leaks
neutralized to neutral codes. - Dependency security bumps: pillow ≥12.3.0 (#369), websockets 16.1 (#365),
docker ≥7.2.0 (#364), pypdf ≥6.14.2 (#363), flask-cors 6.0.5 (#339).
🎙️ Voice & TTS
- Real Hume Octave provider (#381) — acting-direction TTS + designed custom voices.
- xAI Grok Realtime adapter (additive, opt-in voice provider).
- Greeting overhaul (#371–#373): persona profiles get a fresh, angle-rotated greeting
every wake (no canned line), with spoken-length safety caps; Kyle character restored on
tts-v4; profile-configurable bit style + preserved ellipses (#379/#380). - Graceful silence: pure
NO_REPLY/ANNOUNCE_SKIP/REPLY_SKIPtreated as a system
response, not an empty-final apology (#370); busy-session bare-final now queues instead of
poisoning the session. - Latency + reliability: provider singletons + transitive fallback + hung-provider
skip-ahead; double-TTS guard on short replies; continuous-STT startup fix (#367);
per-turn track-list caching.
🎵 Suno
- Full suite: advanced stem-split,
generate-persona, voice-cloning flow, file-upload, and
|voicetag routing through the popup/player/notify flow (#374–#377); models bumped to
V5_5. - Durability: never lose task ids (merge-preserve +
suno-task-log.jsonl), stem self-heal,
stem_resultfetch+persist — a paid result can never be lost (#378).
🎨 Canvas & Desktop
- Canvas Styles — per-tenant design-system picker (flagship + ~15 Fable-authored
presets, clone/customize), style-aware serve injection, per-turn style directive + page
lint, authoring playbook. - Desktop/canvas overhaul: nested Start Menu flyouts, real recent-pages, recycle bin that
actually archives, global cross-tenant icon library (reuse-before-generate) + 192px
thumbnails, wallpaper resize-safety, Mike-approved icon-grid layout (stamp bumped so the
fleet re-seeds). - Character Stage plugin v1.1.0 — multi-character lip-sync to any audio.
🛠️ Admin
- Rebuilt admin panel (WO-1.x–5.x): Service Catalog + framework-generic config, Voice
TTS/STT + Wake tabs with a live fallback-chain editor, sessions viewer, update/rollback
panel, health matrix, marketplace surfaces.
🔌 Gateway, Subagents & Infra
- Subagent completion loop: orphan continuation + proactive push with durable host-visible
receipts; supervised persistent-WS reader (auto-reconnect after gateway blips). - Gateway identifies as
openvoiceui/backend(no transport-label leak); transcripts record
which gateway (openclaw/hermes) handled each turn; uploads ledger with full URLs. - Books/usage instrumentation: provider-call receipts (Resemble/Deepgram/Groq/Suno/fal/HF/
Gemini/Supertonic) to the ledger for JamFlow Watch.
Deploy: jambot/openvoiceui:latest rebuilt from 0ca279b and rolled to the tenant fleet
(openclaw/voice sessions preserved; per-tenant health gate).