Skip to content

v0.3.0 Release Notes

Companion Guide

GeminiVRM v0.3.0 release header

Status: Release docs for v0.3.0
GitHub release: Sunwood-ai-labs/GeminiVRM v0.3.0
Compare basis: v0.2.0..v0.3.0
Scope: This note covers the Gemini 3.1 realtime alignment, the new streaming podcast relay path, podcast relay benchmarking, accessibility polish, and tooling updates shipped after v0.2.0.

Highlights

  • Character chat and podcast mode now default to gemini-3.1-flash-live-preview, send chat turns through the Gemini Live realtime text path, and surface the exact request error instead of silently falling back to older preview models.
  • v0.3.0 introduces the streaming podcast relay path: GeminiVRM now prewarms the next speaker's Gemini Live session, streams the live audio handoff into that prepared session, and records per-turn first-audio and playback timing in the debug log.
  • GeminiVRM now ships a reproducible podcast relay benchmark workflow with a dedicated Playwright relay E2E, a repeatable benchmark runner, bilingual chart generation, and tracked JSON/CSV history under docs/public/benchmarks.
  • The checked-in benchmark snapshot shows the streaming relay path averaging 1.22s to first audio and 2.30s of handoff silence versus 10.91s and 11.91s for batch mode on the tracked three-topic, six-turn run set, which means first audio arrives about 8.94x faster (88.9% lower latency) and handoff silence is about 5.18x shorter (80.7% lower latency).
  • Message labels, settings radio groups, and browser speech-recognition typing were tightened for better accessibility while the repository moved to the flat ESLint runner and the current dependency stack.

Runtime And Benchmarking

  • Settings now explicitly calls out the gemini-3.1-flash-live-preview requirement and the absence of automatic model fallback.
  • The streaming podcast relay work landed in commit 7a5a1c9 on 2026-03-31 JST, and its prepared-session stabilization followed in 6e2f181 on 2026-04-01 JST.
  • If that prepared streaming relay fails, the app now stops on that exact Gemini Live error instead of hiding it behind transcript continuation or an older-model retry.
  • Benchmark raw artifacts default to the system temp directory so watched repository writes do not trigger next dev reloads during longer Playwright runs.
  • npm run bench:podcast:topic -- <topic-file> is available for UTF-8 topic files, and E2E_BENCH_MODES=streaming / batch can isolate a single relay path.

Tooling And Docs

  • scripts/e2e-podcast-relay.mjs, scripts/benchmark-podcast-relay.mjs, scripts/build-podcast-benchmark-report.mjs, and scripts/verify-podcast-benchmark-layout.mjs now cover relay verification, measurement, chart generation, and SVG layout checks.
  • The benchmark report is now published in both locales, with stable SVG/PNG assets plus podcast-benchmark-overview.json, podcast-benchmark-history.json, and podcast-benchmark-history.csv committed under docs/public/benchmarks.
  • The repo now runs ESLint through eslint.config.mjs and scripts/run-eslint.mjs, and the dependency/tooling updates include Tailwind CSS 4.2.2, TypeScript 6.0.2, @google/genai 1.48.0, @types/node 25.5.0, and actions/configure-pages@v6.
  • README and docs entry points were truth-synced so the latest release note, companion guide, and benchmark workflow are easy to find from both English and Japanese surfaces.

Known Constraints

  • The app no longer auto-falls back to older Gemini Live preview models; invalid 3.1 requests must be fixed at the active runtime path.
  • Podcast mode is still turn-based. It does not overlap both hosts speaking at once.
  • The checked-in benchmark report still carries one AGI run mean from preserved console logs because the earliest artifact folder was overwritten before the temp-dir safeguard landed.
  • The YouTube relay remains inbound-only and does not post Gemini replies back into YouTube chat.

Validation

  • npm run lint
  • npm run build
  • npm run docs:build
  • $env:BASE_PATH='/GeminiVRM'; npm run build:pages
  • npm run e2e:smoke
  • npm run e2e:podcast
  • node scripts/verify-podcast-benchmark-layout.mjs --input docs/public/benchmarks/podcast-benchmark-en.svg
  • node scripts/verify-podcast-benchmark-layout.mjs --input docs/public/benchmarks/podcast-benchmark-ja.svg
  • powershell -ExecutionPolicy Bypass -File D:\Prj\gh-release-notes-skill\scripts\verify-svg-assets.ps1 -RepoPath . -Path public/favicon.svg,docs/public/releases/release-header-v0.3.0.svg
  • npm run verify:release-header-layout -- --input docs/public/releases/release-header-v0.3.0.svg
  • powershell -ExecutionPolicy Bypass -File D:\Prj\gh-release-notes-skill\scripts\verify-release-qa-inventory.ps1 -RepoPath . -Tag v0.3.0