Professional Desktop Environment for Creating Mathematical Animations
A powerful, feature-rich desktop application for creating stunning mathematical animations using Manim Community Edition. Built with Python, PyWebView, and modern web technologies.
- Monaco Editor (VS Code's editor) with full Python syntax highlighting
- basedpyright IntelliSense β real-time type checking, completions, hover docs, and diagnostics
- Go-to-Definition (F12), Type Definition, and Find All References (Shift+F12) via LSP
- VS Code-quality signature help β live parameter hints for Python builtins and all Manim classes
- Static completions for all Manim classes, animations, mobjects, colors, and constants (instant, no LSP required)
- Scene Outline Panel β tree view of all classes and methods with click-to-navigate
- Editor Bookmarks (Ctrl+Shift+K) β bookmark lines for quick navigation
- Zen Mode (F11) β distraction-free fullscreen editing
- Drag-and-drop .py files onto the editor to open them
- Line numbers, code folding, and multiple cursors
- Customizable font size and themes
- Send your code with a natural language prompt for intelligent edits
- Claude Code (Beta) β structured stream-json integration, no API key needed
- OpenAI Codex CLI β full JSONL streaming with
codex exec --json - AI Agent Mode β autonomous generate β render β screenshot β review β fix loop
- Works with both Claude and Codex providers
- Visual QA review examines every frame for issues
- Auto-iterates until the animation looks correct
- Continuous Chat β multi-turn conversations with session memory (
--session-id/--resume) - Token-Optimized β AI reads files from disk instead of prompt embedding, session caching saves 70-80% on subsequent turns, screenshots downscaled to reduce image tokens
- Image upload β attach screenshots or reference images for the AI to understand your intent
- Web Search toggle β let the AI reference live web results while editing
- Model selector β pick from Claude Opus/Sonnet/Haiku, GPT-5.3 Codex, and more
- Side-by-side diff review β Accept or Reject changes with one click
- Inline autocomplete β ghost-text code completions powered by Claude Haiku
- Fix code errors directly from the diagnostics panel
- Premium glass-morphism UI with gradient buttons and slide-in panel
- Add
narrate("Your text here")anywhere in your Manim code - TTS audio is automatically generated and merged with the video on render or preview
- Auto-subtitles (CC) β WebVTT captions appear in the preview player
- Powered by Kokoro ONNX (82M params, ~310MB model, auto-downloaded on first use)
- Multiple voices β Heart, Bella, Nicole, Sarah, Adam, Michael, Emma, George
- Optional
narrate[kokoro]package available in the setup wizard
- Quick Preview (F6): Fast, low-quality preview (480p, 15fps) for rapid iteration
- Final Render (F5): High-quality output up to 8K resolution at 120fps
- GPU acceleration support (OpenGL renderer)
- Real-time progress tracking with live terminal output
- Render History β persistent log of all renders with replay, open, and delete
- Drag & drop file uploads
- Support for videos, images, fonts, audio, and subtitles
- Built-in asset preview with media player
- Organized asset library with file metadata
- Easy access to custom fonts and media files
- Install Python packages with one click
- Check for package updates
- Uninstall packages safely
- View installed packages and versions
- Auto-detection of missing required packages on startup
- No terminal commands needed
- Real Windows cmd.exe integration with xterm.js
- Auto-activated virtual environment
- Copy/paste support (Ctrl+Shift+C/V)
- Persistent session across renders
- Color-coded output for better readability
- Same EXE, dual mode β double-click for GUI, run from terminal for CLI
ManimStudio render scene.py --quality 1080p --width 1920 --height 1080 --fps 60β headless renderManimStudio validate scene.pyβ syntax check and scene class detectionManimStudio presetsβ list all quality presets with resolutionsManimStudio mcpβ start MCP server (stdio) for OpenAI Codex integration- Full resolution control β quality presets (120pβ8K) plus custom
--width/--heightoverride - MCP tools exposed:
render_manim_animation,check_render_status,validate_scene,list_quality_presets - Uses the same
manim_studio_defaultvenv as the GUI β no separate setup - Register in Codex: add
[mcp_servers.ManimStudio]to~/.codex/config.toml
- Auto-save backups: Never lose your work
- Unsaved changes warning: Prompted before opening a new file
- File recovery: Restore from auto-saved versions
- Auto-open output folder: Jump directly to saved renders
- Live preview: See your animation immediately after render
- Screenshot save: Save preview frames with a native Save As dialog
- Settings persistence: Your preferences are remembered
- Command Palette (Ctrl+Shift+P) β quick launcher for all actions
- Dark/Light theme toggle
- Manim Color Picker β visual palette of all Manim color constants with one-click insert
- Keyboard Shortcuts Modal (Ctrl+/) β searchable reference of all shortcuts
- Responsive design with DPI awareness
- Glassmorphic design elements
- Smooth animations and transitions
- Collapsible render controls sidebar
- Toast notifications for all actions
The main interface features a split view with Monaco code editor on the left and live preview on the right, with an integrated terminal at the bottom.
Browse, upload, and preview all your media files in one organized location with drag-and-drop support.
Install and manage Python packages through an intuitive visual interface without touching the command line.
- Windows 10/11 (64-bit)
- Python 3.8+ installed and in PATH
- 4GB RAM minimum (8GB recommended)
- 1GB free disk space
-
Download the latest release
Download from GitHub Releases -
Extract the archive
Extract to your preferred location -
Run the application
Double-click app.exe (or python app.py from source) -
First-time setup (automatic)
- Virtual environment creation
- Manim, manim-fonts, and basedpyright installation
- LaTeX detection and setup
- Assets folder initialization
# Clone the repository
git clone https://github.com/yu314-coder/manim_app.git
cd manim_app
# Install host dependencies
pip install pywebview
# Run the application
python app.py# Activate build environment
python -m venv venv_nuitka
venv_nuitka\Scripts\activate
# Install Nuitka
pip install nuitka
# Build executable
python build_nuitka.py
# Output will be in dist_nuitka/The same executable (or python app.py) works as both GUI and CLI:
# Headless render with quality preset
ManimStudio.exe render scene.py --quality 1080p --fps 60
# Render with custom resolution (overrides preset width/height)
ManimStudio.exe render scene.py --quality 720p --width 800 --height 600 --fps 24
# Render to a specific output directory
ManimStudio.exe render scene.py -q 4K -o C:\renders\my_video
# Validate code without rendering
ManimStudio.exe validate scene.py
# List all quality presets
ManimStudio.exe presets
# Start MCP server for Codex integration
ManimStudio.exe mcpFrom source, replace ManimStudio.exe with python app.py:
python app.py render scene.py --quality 720p --width 1280 --height 720
python app.py mcpRegister ManimStudio as an MCP server in ~/.codex/config.toml:
# If using the compiled EXE:
[mcp_servers.ManimStudio]
command = "C:\\path\\to\\ManimStudio.exe"
args = ["mcp"]
# If running from source:
[mcp_servers.ManimStudio]
command = "python"
args = ["C:\\path\\to\\app.py", "mcp"]Once registered, Codex can call these MCP tools:
| Tool | Description |
|---|---|
render_manim_animation |
Render Manim code with quality/width/height/fps/format controls |
check_render_status |
Check if a render output file exists |
validate_scene |
Syntax check + scene class name extraction |
list_quality_presets |
List all presets with their default resolutions |
-
Launch Manim Studio
- The app opens with a default scene template
-
Write Your Code
from manim import * class MyScene(Scene): def construct(self): circle = Circle() self.play(Create(circle)) self.wait()
-
Preview (F6)
- Click "Preview" or press F6
- Get a fast low-quality preview in seconds
-
Final Render (F5)
- Click "Render" or press F5
- Choose quality settings in the sidebar
- Save your high-quality video when complete
- Output folder opens automatically after saving
from manim import *
class NarratedScene(Scene):
def construct(self):
narrate("Let me show you a circle.")
circle = Circle(color=BLUE)
self.play(Create(circle))
narrate("Now let's transform it into a square.")
self.play(Transform(circle, Square(color=RED)))
self.wait()Press F6 or F5 β TTS audio is generated and merged with the video automatically. Subtitles appear in the preview player.
| Action | Shortcut |
|---|---|
| Render Animation | F5 |
| Quick Preview | F6 |
| Stop Render | Esc |
| Save File | Ctrl + S |
| New File | Ctrl + N |
| Open File | Ctrl + O |
| Command Palette | Ctrl + Shift + P |
| Keyboard Shortcuts | Ctrl + / |
| Zen Mode | F11 |
| Toggle Bookmark | Ctrl + Shift + K |
| AI Edit Panel | Ctrl + Shift + E |
| Go to Definition | F12 |
| Find All References | Shift + F12 |
| Screenshot Preview | Ctrl + Shift + S |
-
Upload Font
- Go to Assets tab
- Drag & drop your .ttf or .otf file
-
Use in Code
from manim import * class CustomFontExample(Scene): def construct(self): register_font("YourFont.ttf") text = Text("Hello!", font="YourFont") self.play(Write(text))
-
Upload Media
- Drag files to Assets tab dropzone
- Supported: MP4, PNG, JPG, SVG, GIF
-
Use in Animation
from manim import * class ImageExample(Scene): def construct(self): img = ImageMobject("myimage.png") self.play(FadeIn(img))
from manim import *
class AudioExample(Scene):
def construct(self):
self.add_sound("music.mp3")
circle = Circle()
self.play(Create(circle))Quality Presets (GUI, CLI --quality, and MCP quality param):
| Preset | Resolution | Default FPS | CLI Flag |
|---|---|---|---|
| 120p | 214Γ120 | 15 | -q 120p |
| 240p | 426Γ240 | 15 | -q 240p |
| 480p | 854Γ480 | 15 | -q 480p |
| 720p | 1280Γ720 | 30 | -q 720p |
| 1080p | 1920Γ1080 | 60 | -q 1080p |
| 1440p | 2560Γ1440 | 60 | -q 1440p |
| 4K | 3840Γ2160 | 60 | -q 4K |
| 8K | 7680Γ4320 | 60 | -q 8K |
Use --width / --height (CLI) or width / height (MCP) to override the preset resolution.
Output Formats:
- MP4 (H.264 video)
- MOV (QuickTime)
- GIF (Animated)
- PNG (Image sequence)
Toggle GPU rendering in the header toolbar:
- GPU: OFF = Cairo renderer (CPU, compatible)
- GPU: ON = OpenGL renderer (GPU, faster but may have quirks)
Access via Settings (βοΈ icon):
- Font size (12-20px)
- Default save location
- Auto-save after render
- Auto-open output folder
- Manim cache settings
manim_app/ # Source / EXE directory
βββ app.py # Main app (GUI + CLI dispatcher)
βββ cli.py # CLI & MCP server (headless render)
βββ ai_edit.py # AI Edit module (Claude + Codex)
βββ narration_addon.py # Kokoro TTS narration
βββ build_nuitka.py # Nuitka build script
βββ prompts/ # AI prompt templates (.md)
βββ web/ # Frontend (HTML/CSS/JS)
C:\Users\<you>\.manim_studio\ # User data directory
βββ assets\ # Your uploaded files (fonts, images, audio)
βββ lsp_workspace\ # basedpyright workspace (auto-managed)
βββ media\ # Manim cache and temp files
βββ render\ # High-quality render output (temporary)
βββ preview\ # Quick preview output (temporary)
βββ autosave\ # Auto-saved code backups
βββ venvs\
β βββ manim_studio_default\ # Python virtual environment (shared by GUI & CLI)
βββ settings.json # Your app preferences
Note: Render outputs are temporary. Use the "Save" button after rendering to save them permanently to your chosen location. The output folder will open automatically in Windows Explorer after saving.
Problem: Render shows errors in terminal
Solutions:
- Check syntax errors (red underlines in editor)
- Ensure all imported files exist in assets folder
- Try Preview (F6) first to catch errors quickly
- Check LaTeX status in System tab
- Review terminal output for specific error messages
Problem: Font doesn't appear in animation
Solutions:
- Ensure font file is uploaded to Assets folder
- Use
register_font("YourFont.ttf")before using it - Reference font by name without extension:
font="YourFont" - Check that font file is valid TrueType (.ttf) or OpenType (.otf)
Problem: LaTeX formulas fail to render
Solutions:
- Check LaTeX status indicator (header, right side)
- Install MiKTeX or TeX Live if not present
- Restart application after LaTeX installation
- Use raw strings for LaTeX:
r"$\frac{1}{2}$"
Problem: No type checking or smart completions from basedpyright
Solutions:
- Wait ~2 seconds after the editor loads β IntelliSense starts in the background
- Check that basedpyright is installed (Packages tab)
- If missing, the app will prompt you to install it on startup
- A "IntelliSense ready" toast appears when LSP is active
Problem: Cannot install Python packages
Solutions:
- Check terminal output for specific error
- Ensure package name is spelled correctly
- Try installing via terminal manually
- Check internet connection
- Some packages may require system dependencies
Problem: Preview panel shows no video after render
Solutions:
- Check that render completed successfully (terminal logs)
- Try refreshing Assets tab
- Ensure video file exists and is not corrupted
Contributions are welcome! Here's how you can help:
- Report Bugs: Open an issue with detailed reproduction steps
- Suggest Features: Describe your use case and proposed solution
- Submit Pull Requests: Fork, branch, code, test, and PR
- Improve Documentation: Fix typos, add examples, clarify instructions
# Clone and setup development environment
git clone https://github.com/yu314-coder/manim_app.git
cd manim_app
# Install host dependencies
pip install pywebview
# Run in development mode
python app.pyThis project is licensed under the MIT License - see the LICENSE file for details.
- Manim Community - The amazing animation engine
- Monaco Editor - VS Code's powerful editor
- basedpyright - Python language server for IntelliSense
- OpenAI Codex CLI - OpenAI's AI coding agent
- Kokoro ONNX - Fast TTS with Kokoro and ONNX Runtime
- PyWebView - Native Python desktop apps
- xterm.js - Terminal emulator for the web
- Font Awesome - Beautiful icons
- Documentation: Check the built-in Help modal (? icon)
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Manim Help: Manim Community Discord
- CLI & MCP Server: Headless render + Codex plugin via MCP tools
- Live Preview Mode: See animations update in real-time as you type
- Scene Browser: Visual navigation between multiple scenes
- Animation Templates: Pre-built scenes for common use cases
- Export Presets: Save and reuse render configurations
- macOS/Linux Support: Cross-platform compatibility
- Timeline Editor: Visual animation timeline
- OS: Windows 10 (64-bit)
- CPU: Dual-core 2.0 GHz
- RAM: 4GB
- Storage: 1GB free space
- Display: 1280Γ720
- OS: Windows 11 (64-bit)
- CPU: Quad-core 3.0 GHz
- RAM: 8GB+
- GPU: Dedicated graphics (for GPU rendering)
- Storage: 5GB free space (for cache)
- Display: 1920Γ1080 or higher
- Manim Community Docs
- 3Blue1Brown - Creator of Manim
- Theorem of Beethoven - Manim tutorials
- Manim Examples
If you find this project useful, please consider giving it a star on GitHub!
New features:
- β¨ F-09 Agent Memory β per-project
style.mdauto-injected as a system preamble on every AI edit/agent turn. Editable via the π§ brain icon in the AI Edit panel header. Heuristic detects user corrections (e.g. "no, use BLUE instead of RED") and proposes memory updates with one-click accept/dismiss. Prefix#ignore-styleon a single message to skip the preamble for that turn. - β¨ F-03 Visual Diff β pHashes every rendered frame, diffs against the baseline render, opens an A/B review modal when drift > 1%. Accept (promotes new baseline), Revert, Block per render. Keyboard shortcuts
J/Knext/prev flagged frame,Aaccept,Rrevert,Bblock. - β¨ Multi-scene combined render β files with 2+ Scene classes pop a picker. Tick checkboxes + "Render selected" runs ONE manim subprocess with all scene names as positional args, then ffmpeg
-f concat -c copystitches the outputs into one standalonecombined_*.mp4. - β¨ Scene picker modal β auto-shows when rendering/previewing a file with multiple Scene subclasses. Single-click a row to render just that scene; checkboxes + "Render selected" for batch; "Select all" button for one-click full-file render.
- β¨ CJK auto-template β files with Chinese / Japanese / Korean characters inside
MathTex(...)/Tex(...)get the xelatex +ctextemplate auto-injected. Works around Manim 0.20.1'stempconfig({})clearing_tex_templatebetween scenes by subclassingMathTex/Texto baketex_template=ctexinto every constructor. - β¨ Auto-discovery of AI models β Claude models auto-detected by scanning
~/.claude/projects/*/*.jsonlsession history; Codex models pulled from the authoritative~/.codex/models_cache.jsoncache (with full metadata: slug, display name, reasoning levels, speed tiers, visibility). New models that OpenAI / Anthropic ship surface in the dropdown automatically β no Manim Studio update required. Discovered models appear under a "Discovered" tier with an orange π magnifier icon to distinguish from hardcoded defaults. - β¨ Claude 4.7 family β Opus 4.7, Sonnet 4.7, Haiku 4.7 are now the default tier for edit / agent / autocomplete / review / complex tasks. 4.6 and 4.5 remain selectable under a "(previous)" suffix. Fallback chain: Opus 4.7 β Sonnet 4.7 β Haiku 4.7 β Haiku 4.5.
- β¨ AST-based scene detection β fixed the long-standing "only first scene detected" bug.
extract_scene_namenow uses Python'sastmodule to find every Scene subclass, handling tricky base-class shapes (typing.Generic[T], metaclass parents, mixed bases). Backward-compatible regex fallback for files in the middle of an edit. - β¨
list_scenesMCP tool β Codex can list every Scene-subclass class in a Manim file (name, line, parent) before invokingrender_manim_animation.
Bug fixes:
- π Multi-scene render no longer wipes preview folder between iterations. Was a per-scene loop that called
clear_preview_folder()between scenes; the previous scene's temp file got deleted before manim could read it. Now a single subprocess + ffmpeg concat. - π Agent waits for in-flight preview before firing its own. Was hanging forever when
quickPreview()got silently rejected byif (job.running) return. Now pollsjob.runningto clear (up to 5min) before triggering, plus a 10-min safety timeout that synthesisesrender_errorto break out of_ai_agent_waitcleanly. - π Preview-folder race condition fixed β double-clicking Preview rapidly wiped the in-flight previous render's temp
.py(FileNotFoundError: temp_preview_*.py not found).clear_preview_folder()now skips files modified in the last 60 seconds. - π LaTeX errors no longer truncated β error capture used to grab only 3 lines / 200 chars, hiding the actual root cause. Now scans up to 40 traceback lines, stops at the closing
ErrorType:line, returns up to 2000 chars to the UI, and dumps the full content to backend stdout. - π Memory modal no longer overlapped by preview video β Chromium's GPU video compositor painted over HTML regardless of z-index. Modal now sets
visibility:hiddenon the<video>element while open (full GPU-layer removal), plustransform: translateZ(0); isolation: isolateon the modal itself as defense-in-depth.
Removed from toolbar UI (backends remain on disk for future re-introduction):
- ποΈ F-08 AI Sketches button (the
sketch_*API methods are still available via pywebview) - ποΈ F-04 Inspector button + side dock
- ποΈ F-01 Timeline dock + toolbar button
- ποΈ F-12 Render Farm sidebar toggle + progress modal
- ποΈ Narration Voice & Speed sidebar selector (narration itself still works; localStorage-driven)
- β¨ CLI Mode β same EXE works as headless CLI:
ManimStudio render scene.py --quality 1080p --width 1920 --height 1080 --fps 60 - β¨ MCP Server for Codex β
ManimStudio mcpexposes render/validate/presets as MCP tools over stdio; register in~/.codex/config.tomland Codex can render Manim animations directly - β¨ Full Resolution Control β CLI and MCP support all quality presets (120pβ8K) plus custom
--width/--heightoverride - β¨ AI Agent Mode β autonomous loop: generate code β render β capture screenshots β visual review β auto-fix β repeat until correct
- β¨ Dual Agent Providers β AI Agent works with both Claude Code and OpenAI Codex CLI, using the same provider for edit and review
- β¨ Continuous Chat β multi-turn conversations with session memory; Claude uses
--session-id/--resumefor context persistence - β¨ Token Optimization β removed code embedding from all prompts (AI reads
scene.pyfrom disk), session caching saves 70-80% on repeated turns, screenshots downscaled to 960px for 4x fewer image tokens - β¨ Claude Agent Session Reuse β first edit uses
--session-id, subsequent edits use--resumeso Claude remembers what it already tried - β¨ Screenshot Downscaling β review frames auto-resized to 960px wide via Pillow (falls back gracefully if unavailable)
- β¨ Claude Review via File Read β Claude examines screenshot files from disk using its Read tool instead of base64 prompt embedding
- β¨ Assets Folder Access β AI workspaces get a junction/symlink to the assets folder; CLAUDE.md/AGENTS.md lists available asset files
- β¨ Inline Autocomplete β ghost-text code completions powered by Claude Haiku (fast, lightweight)
- β¨ New Chat Button β reset AI Edit session and start fresh without restarting the panel
- β¨ Persistent Chat History β AI chat sessions auto-saved to disk (
~/.manim_studio/chat_history/); browse, resume, or delete past sessions from the history dropdown - β¨ AI-Friendly GUI β
aria-label,data-testid,aria-liveattributes on all interactive elements; hidden app state indicator (#appStateIndicator) exposes render/AI/file state for computer-control agents (Claude Code Desktop, Codex) - β¨ Faster Startup β disk-cached dependency checks (1-hour TTL) skip subprocess calls on repeat launches; Python and LaTeX checks run in parallel threads;
shutil.which()fast path for LaTeX - β¨ Editor Skeleton UI β CSS shimmer placeholder shown while Monaco editor loads for improved perceived startup speed
- π Fixed Codex agent not working (cascading bugs: missing AGENTS.md, wrong CLI flags, no JSONL parsing)
- π Fixed Codex agent review using Claude instead of Codex β now each provider reviews with its own CLI
- π Fixed
--skip-git-repo-checkincorrectly added to Claude CLI calls (only valid for Codex) - π Fixed
--imageflag used for Claude CLI (doesn't exist) β Claude now reads image files via Read tool - π Fixed
--output-format stream-jsonrequiring--verboseflag for Claude agent edits - π Fixed agent loop not continuing when review found bugs (edit failures, unchanged code, review errors)
- π Fixed review nitpicking minor issues β now focuses on real visual bugs (overlap, off-screen, wrong text, goal mismatch)
- π Fixed agent sending only 5 sampled frames β now sends ALL captured frames to review
- π§ Unified all 3 MD templates (non-agent, Claude agent, Codex agent) with consistent Manim context and "ALWAYS read scene.py FIRST" rule
- π§ Instructions piped via stdin (
-pwithout arg) to avoid OS argument length limits - π§ Review prompt no longer embeds code β reviewer only needs screenshots + goal description
- π§ Agent edit failure counter prevents infinite loops (stops after 5 consecutive failures)
- π§ Build: console mode changed from
disabletoattachso the EXE works as both GUI and CLI - π§ Build: removed
--force-stdout-spec/--force-stderr-spec(they broke CLI/MCP stdio) - π Security: Shell injection fix β Codex CLI commands converted from
shell=Truestring interpolation to safe list-basedsubprocess.Popen(prevents model name / image path injection) - π Security: Path traversal fix β
upload_file_contentnow strips directory components withos.path.basename()(prevents writing files outside assets folder) - π Security: XSS fix in asset display β
displayAssets()now escapesfile.nameandfile.pathviaescapeHtml()before innerHTML insertion - π Security: XSS fix in package manager β PyPI search results and installed package list now escape all metadata (
pkg.name,pkg.version,pkg.summary, update warnings) before rendering
- β¨ Claude Code Integration (Beta) β AI Edit now supports Claude Code via
claude -p --output-format stream-json, no API key needed - β¨ Enhanced Streaming Output β tool actions (Write, Read, Bash) render as styled blocks with icons, code lines get line-number gutters
- β¨ AI Edit Beta Badge β panel and window mode show "(Beta)" to indicate active development
- β¨ Auto Narration (Kokoro TTS) β
narrate("text")calls generate TTS audio, auto-merged with video on render - β¨ Subtitles (CC) β narrated videos get auto-generated WebVTT subtitles in the preview player
- β¨ Kokoro model auto-download β ~310MB TTS model downloaded automatically on first use
- β¨
narratePyPI package β optionalnarrate[kokoro]for TTS support - β¨ Scene Outline Panel β tree view of classes/methods with click-to-navigate
- β¨ Command Palette (Ctrl+Shift+P), Shortcuts Modal (Ctrl+/), Zen Mode (F11), Bookmarks (Ctrl+Shift+K)
- β¨ Drag-and-drop .py files onto the editor to open them
- β¨ AI Edit Panel β Codex + Claude Code, image upload, web search, model selector
- β¨ Manim Color Picker, Go-to-Definition (F12), Find References (Shift+F12)
- β¨ Render History β persistent log with replay, open, and delete
- β¨ Screenshot Save β save preview frames with native Save As dialog
- π Fixed WebSearch permission prompts getting stuck on numbered menu format
- π Fixed bundled EXE 404 for ai-edit-window.html (absolute path fix)
- π Fixed version mismatch, video preview via HTTP, CLI detection, subprocess piping, ANSI stripping
- π§ Refactored Claude Code from PTY-based to stream-json (removed winpty dependency)
- π§ Replaced hardcoded
C:\Windowspaths with%SystemRoot% - π§ Added workspace instruction file (AGENTS.md) for reliable AI file editing
- β¨ basedpyright IntelliSense β real-time type checking, diagnostics, hover docs, and completions powered by a full LSP server
- β¨ VS Code-quality signature help β live parameter hints when typing
(or,for all Python builtins and Manim classes - β¨ Rich per-parameter documentation β typed labels, descriptions, default values, and code examples for 80+ functions
- β¨ Missing packages auto-detection β startup check notifies existing users of missing required packages with one-click install
- β¨ basedpyright added to required packages β automatically installed in new and existing environments
- π Fixed autosave messages incorrectly appearing in the terminal box
- π Added unsaved changes warning before opening a new file
- π Render status feedback ("Rendering...") shown immediately on render start
- π§ LSP workspace uses real on-disk directory so basedpyright resolves Manim imports correctly
- π§ Improved terminal polling rate for smoother output streaming
- β¨ Auto-open output folder after saving rendered files
- β¨ Improved render controls sidebar with chevron collapse icon
- π¨ Enhanced toast notifications with comprehensive logging
- π Fixed async button handler for folder opening
- π Improved DPI awareness and responsive scaling
- π Added comprehensive README documentation
- β¨ Added Package Manager with visual interface
- β¨ Drag & drop asset uploads
- π Fixed GPU toggle persistence
- π Fixed autosave recovery dialog
- π¨ Improved responsive scaling and DPI awareness
- β¨ Added auto-save with backup recovery
- β¨ Integrated xterm.js terminal
- π Fixed LaTeX detection
- π¨ Improved dark theme
- β¨ Initial public release
- π¨ Professional UI with Monaco Editor
- β‘ Dual render modes (Preview/Final)
- π Asset management system
Made with β€οΈ for the Manim Community