Skip to content

Changelog

All notable changes to manimvox are listed here. The format follows Keep a Changelog, and versions follow Semantic Versioning; before 1.0, a minor version may break the API.

Unreleased

Added

  • clip.play(start=, end=) plays part of a recording, at real speed by default: one part per narrated line.
  • Gallery: Install manimvox and make a video, a beginner's walkthrough made by Claude Code from one prompt with real terminal recordings, zooms and callouts; also on the docs' install and agent pages. Its project is in examples/gallery/install-tutorial.

Fixed

  • A zoom to a region at the picture's edge could leave the view a hair outside it (an offset of -1e-13), and a zoom out ended a hair short of the whole picture. Zooms now stay inside the picture and land exactly on their target.

0.4.0 - 2026-10-23

Added

  • Screenshots and screen recordings for demo videos: screenshot(path) and from_video(path) in manimvox.scenes, clip.zoom(x, y, w, h) and clip.zoom_out() inside the clip's own frame, and overlays placed by pixel: spotlight, callout, cursor with point and click, and window chrome. Capture stays with the agent's own tools (a browser tool, computer use); the animation skill says how to capture, save and cite them.

Fixed

  • A pron pattern written "\bword\b" in series.json is refused with a hint: JSON reads \b as a backspace, so the rule silently never matched (write "\\bword\\b"). A pattern that is not a valid regex is refused too.
  • A fresh install drew no images: Pillow 13, released after 0.3.0, refuses the blank canvas Manim 0.22 asks for, so every clip, chart, 3D model render and screenshot failed with ValueError: Invalid mode for data type. Pillow is capped below 13 until Manim fixes it. Found by an agent installing manimvox in a fresh environment.

0.3.0 - 2026-10-23

Added

  • Even loudness across voices: every narration line is levelled to loudness in series.json (−16 LUFS by default, ITU-R BS.1770), with true peaks kept under −1.5 dBTP. The UPI benchmark episode, rendered with Sarvam, Gnani, ElevenLabs and Kokoro, went from a 7.9 LU spread to 0.1. The line as the voice returned it stays cached, so changing the target never pays for synthesis again. null keeps each voice's own level.

Changed

  • Benchmarks: every cost is in US dollars. Rupee costs are converted at the mid-market rate on the day of the run, and ElevenLabs' credits at its cheapest commercial plan's rate.
  • README: the status line is gone. The alpha status is still in the PyPI classifiers and the roadmap.
  • Install with pip or uv: the README, docs and skills give both commands, and a missing extra's error names the installer manimvox came from (uv tool install --force in a uv tool environment, pip install otherwise).

0.2.0 - 2026-10-23

Added

  • Documentation site at laplacianai.github.io/manimvox, with a gallery of finished videos and a gallery of every block (python -m manimvox.blocks docs).
  • Gallery: Made by your agent, an introduction to manimvox, and Inside the heart, from a CT-derived heart; both made by Claude Code with manimvox, with their source projects in examples/gallery/.
  • ROADMAP.md, CONTRIBUTING.md, CODE_OF_CONDUCT.md, SECURITY.md, SUPPORT.md, and issue and pull request templates.
  • A docs extra for building the documentation site.
  • scripts/release.py: sets a new version in the package, every plugin manifest and the skills manifest, and dates the changelog.
  • Benchmarks of agent harnesses, models and voices, with the method, and the records and scripts in benchmarks/. The first run compares Sarvam AI, Gnani.ai and ElevenLabs on an episode made by Claude Code with Sonnet 5.5.
  • A leaderboard on each gallery example that has benchmark runs (Voice, Harness and Model tables), generated by benchmarks/leaderboard.py. Gallery: How UPI payments work, made by Claude Code with Sonnet 5.5 from one prompt.
  • Voices for Indian languages: Sarvam AI (sarvam:shubh, SARVAM_API_KEY) and Gnani.ai (gnani:Kaveri, GNANI_API_KEY), in the cloud extra. A voice can name its language, as in sarvam:anushka@hi-IN.
  • A manimvox logo (docs/assets/logo.svg), used by the README and as the docs site's logo and favicon. The README GIF is now the logo drawing itself, then four block demos, and a social preview card goes with it; scripts/brand/build.py rebuilds both.

Fixed

  • manimvox doctor: the Kokoro status line ended mid-sentence; it now names the command that downloads the models.
  • manimvox skills install: on Node.js older than 22.20, which the pinned skills CLI needs, it uses the built-in installer instead of letting npx crash.
  • Online voices send a manimvox/<version> User-Agent. Gnani.ai's firewall refused Python's default one.
  • ElevenLabs: a key restricted to speech (without voices_read) can render; the voice check is skipped, and a missing permission is named instead of being reported as a rejected key.

0.1.0 - 2026-10-23

The first release.

Added

  • Videos: one episode file in, a finished MP4 with subtitles out. manimvox new, draft, render, join, index and package. A theme per video from series.json, a music bed ducked under the narration, caption plates and cards.
  • Voices: eight engines behind one interface. Kokoro is the default, offline and keyless; Piper, macOS say, edge-tts, OpenAI, ElevenLabs, XTTS-v2 and F5-TTS are also supported.
  • Checks: text contrast, text off the stage or overlapping, silent narration lines, and contact sheets; every failed check exits non-zero.
  • Blocks: eleven ready-made scene components via manimvox add.
  • Clips from Pillow, Cairo, Matplotlib and Plotly.
  • 3D: Episode3D, the mesh-model block for glTF, OBJ and STL models, and from_model and from_pyvista for models, scans and simulations rendered with lighting.
  • For agents: eleven agent skills, the CLI as typed tools, adapters for eight Python agent frameworks, and plugin manifests for Claude Code, Codex, Cursor and Gemini CLI.
  • CI on Linux, macOS and Windows; releases published to PyPI with trusted publishing.