v0.12.26

THU-MAIC/OpenMAICv0.12.26Aug 31, 2026by DmitriyG228

Upgrading?

AI Summary

Focuses on improving Zoom functionality (speaker attribution, admission) and meeting reliability. It updates base images and fixes deployment probes and build issues.

Key Highlights

  • Per-participant speaker attribution in Zoom transcripts.
  • Better admission for Zoom meetings that previously refused the bot.
  • In-meeting popups are dismissed during the call.
  • Failed joins now have named, typed reasons instead of opaque 'failed' status.
  • Base image updated to Ubuntu Noble.

New Features

  • Per-participant speaker attribution.
  • Named failure reasons for meeting joins.
  • Text-only custom STT responses supported.
  • Voxtral / JSON-only transcription backends supported.
  • Fixed probe live-view listener re-sending logic.

Full Release Notes

## 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 `failed` with reason `zoom_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](https://github.com/Vexa-ai/vexa/issues/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 `text` no 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_NAME` is 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: `awscli` is 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](https://github.com/Vexa-ai/vexa/actions/runs/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.

Related Repositories