v0.12.26
Zoom
- Per-participant speaker attribution (#1018, @jbschooley). Zoom transcripts are named per participant with a self-correcting vote, replacing the mixed-lane guess. Maintainer hardening on top: the deaf-capture guard restored on the per-track branch, typed observations on the Zoom lane, and the page-side name resolver extracted into a tested module with a Speaker A/B fallback and a self-exclusion backstop.
- Better admission (@jbschooley). Browser-signal hardening lets the bot into Zoom meetings that previously refused it.
- In-meeting popups are dismissed during the call (@jbschooley) — the mic advisory, the AI-Companion notice and the hardware-acceleration toast no longer sit over the meeting or the recording.
Known limit — the Zoom bot joins as a web client, so not every Zoom meeting can be recorded. Some Zoom accounts and meetings block automated browser clients outright; the bot is refused at the door there, ends as
failedwith reasonzoom_requires_rtms, and no transcript is produced. This is a platform policy on the host's side, not a fault in the bot — those meetings need Zoom's Realtime Media Streams path, which this release does not ship (#706). Meetings that do admit a web client are unaffected.
Meetings
- Join failures name themselves (#1075). A failed join now records a typed reason, the stage it failed at, whether the cause was ours or the platform's, and how long it took — instead of one opaque
failed. Visible on the meeting record and through the API. - Text-only custom STT responses reach the transcript (#1148). OpenAI-compatible endpoints that return only
textno longer have their output discarded for missing timestamps. - Voxtral / JSON-only transcription backends (#1342, @Cantfirmed).
Deployment
- Noble base image for the bot, lite and full (#1011, @jbschooley).
DEFAULT_BOT_NAMEis honoured without rebuilding the terminal (#1258).
Fixed
- The probe's live-view listener re-sends its subscribe until acked (#1354) — it raced meeting-row creation and a refused subscribe was permanent.
- The full bot image builds again on the new base:
awscliis no longer in the noble archive, so AWS CLI v2 installs from the vendor package.
Images: vexaai/vexa-lite:v0.12.26 and the compose set (v012-runtime, v012-meeting-api, v012-gateway, v012-admin-api, v012-agent-api, v012-agent-worker, v012-mcp, v012-terminal, vexa-bot), published from the reviewed candidate packet releases/v0.12.26/candidate-images.json and validated by run 33421145816.
In production: this release is what vexa.ai runs, pinned as channel entry 0.12.23-estate-20260829-seq12 on 2026-08-31 and re-verified against the cluster after the pin.