Repository navigation
Mixar 4.0.0
Mixar 4.0.0
This release rebases the client onto Blender 5.2.0 and ships Director (a new camera-directing mode), a redesigned Agent island, a liquid-glass UI system, and a substantially reworked Moodboard — the accumulated work since v3.4.5 (~720 commits, 2,000+ files).
Engine & Build
- Rebased the Mixar overlay onto upstream Blender 5.2.0 (from a 5.0-shaped base): C++ moved to
namespace blender, DNA lists toListBaseT<T>, allocation toMEM_new*, runtime operator pointer props toRNA_def_pointer_runtime, and animation access through the ID's channelbag (common/utils/animation.py) instead ofAction.fcurves. Dozens of follow-up porting passes fixed RNA structs, GHOST windowing, event state access, and namespace/link errors across the tree. - CUDA/OptiX is now a single
.envswitch (MIXAR_CUDA,MIXAR_CUDA_BINARIES,MIXAR_CUDA_ARCH), resolved once incmake/mixar_overrides.cmake; disabling it drops CUDA/OptiX/Cycles GPU kernels for CPU-only local dev builds. - Git worktrees now build without a full submodule checkout —
settings.shfalls back to the main checkout'supstream/read-only, withMIXAR_UPSTREAM_DIRas an override. - macOS: link-probes the SDK before falling back to the newest linker-accepted SDK (fixes
tapi error: malformed fileon machines with a leftover beta SDK); optional stable dev codesigning (MIXAR_DEV_SIGN_ID) so Keychain "Always Allow" survives rebuilds. - Windows: build/branch-switch hardening — restores upstream targets after a branch switch wipes overridden files, purges stale CUDA/PYTHON/SDK CMake cache entries when the pinned Blender version changes, and fixes MSIX manifest and MSBuild issues.
.githooks/{post-checkout,post-merge}(shared logic in.githooks/lib/sync_upstream_pin.sh) re-pinupstream/and its submodules after a checkout, merge, or pull.- Installer size reduction: dropped the bundled procedural material library (now backend-served) and stripped KIRI demo meshes; macOS packaging uses UDZO DMG compression.
- Network stack: process-wide OS trust store integration (
truststore) plus a per-user/machine-wide extra-CA-certificates drop folder; the virtual camera's local TLS server now uses CPython's ownSSLContextinstead of truststore's patched one. - Docs were split from a single monolithic guide into
CLAUDE.md(build model, shared rules) plus per-module contract documents, with a private docs map and a generated, byte-identicalAGENTS.md.
Director (new)
- New viewport mode for camera directing, built as a native C++ Cinema Mode surface (gate, popups, timeline) over Python-owned operators, plus two dedicated native modals: a Cinema walk (
view3d_director_walk.cc, WASDQE) and an aerial-map camera placement mode (view3d_director_place_camera.cc, entered withO). - Keyframing: Insert Keyframe on
I(notF), multi-select/move/delete of several keyframes at once, duplicate, per-keyframe interpolation, and a mode-aware rotation-continuity filter (core/rotation_curves.py) so beats never interpolate the long way round. - Auto Key watches every camera-move path (walk, nudge, drag, template styles) and reconciles cleanly with manual recording.
- Camera management: "My Cameras" card lists and follows the scene's live camera, supports rename-in-place, delete (which also removes its shots), and per-camera aspect ratio including a custom preset; added a 4K resolution tier.
- Speed slider retimes a shot; Dolly Zoom and other Template Styles key the lens; depth-of-field controls live in the output card.
- Virtual Camera: phone-as-camera hand-off from Cinema Mode, using a QR-paired browser control app served over self-signed HTTPS with a stdlib RFC 6455 WebSocket server; phone gyro/joysticks drive the camera, and the camera-POV viewport streams back.
- Export to Moodboard: a second, camera-first surface (topbar Render menu + Timeline/Dope Sheet View menus) renders Beauty/Clay/Depth guides from a plain natively keyframed camera without a Shot or Director session.
docs/modules/director.mdanddocs/modules/cinema-mode-ui.mdcover the operator/native split and the Cinema Mode component system.
Agent Bubble / Chat
- Redesigned floating Agent island: tabs for Agent, 3D, Image, Video, Gaussian Splat, Library, and Queue; animated Mixie-the-cat avatars; an elongated resting pill with hover expand/collapse and outside-click collapse.
- Checkpoints: per-turn snapshots with a native Checkpoints card replacing the old Blender menu/modal dialog; restore never writes the project without asking first, and a "Here-now" marker survives a restart.
- Desktop agent communication migrated from polling to WebSocket (
refactor(agent): migrate desktop communication to WebSocket), with reconnect-resume and a sharedcommon/agent_executionrequest pump for GUI and headless workers, including v3 fenced/journaled artifact commits. - Local full-history archive (
common/agent_history,agent_history_v1/v2) with sync over the agent socket, fetching image bytes over HTTP to keep sync frames small. - Voice: hold Option/Alt anywhere to dictate (
feat(voice): use left Option or Alt held alone instead of V), Unmute cloud dictation with native audio capture, and on-device handwriting recognition on macOS. - Scribble: unified viewport annotation and chat-ink mode — chat ink resolves to text, viewport ink resolves to marks, with a freeze/capture/resolve pipeline.
- Agent asset picker: a Library-style top-five grid replaces the transcript when the agent asks an asset question; tiles are drag-and-droppable into the viewport.
- Agent Panel: bottom-docked parallel-task cards with distinct animated cat avatars, trackpad/wheel scrolling, and a switchable live workspace scene viewer.
- Notifications unified into a single bottom-left toast system, aligned with parallel agent cards.
- BYOK/local models: AI Provider Settings moved to an HTTP catalog-style surface; a hosted agent model picker shared between the chat and island; zero-setup local
llama.cppruntime. - Background verification render via a held-open tool call; agent-enqueued generation outcomes are reported back to the backend job queue with a bounded retry budget.
Moodboard
- Canvas frames replace index-based grouping; node graph UX pass (arrange, clipboard, detach, framing) plus copy/paste of images, videos, and node graphs across separate Mixar instances.
- Character Sheet to 3D workflow template; Assemble Character node that bone-parents generated parts onto a rig; masked Character Parts generation node.
- Video Upscale tab and canvas node (FLUX Video Upscale); World Labs "Generate Splat" canvas node for Gaussian splats; per-model reference limits for the MiniMax H3 video tiers.
- Refine/Revert controls beside every generation prompt.
- Retired the standalone right sidebar in favor of the shared canvas/drawer UI; Zen Mode drawer gained persistent annotations, an erase tool, and open-media/text tools.
UI System
- New liquid-glass design kit (material, blur, painter) applied across the agent island, cards, popups, Cinema rows, topbar pills, and profile card; shared native components (
UI_mixar{,_types,_tokens}.hh,editors/interface/mixar/) so Python surfaces and C++ buttons share presentation. - Zen/Engine dual-mode workspace with a topbar mode slider, a Zen scene toolbar, and a guides-visibility toggle.
- Editor Type menu reorganized: the five texturing spaces (
MIXAR_LAYERS,MIXAR_PROPERTIES,MIXAR_ASSETS,BAKING,TEXTURE_SETS) are grouped under a Texturing heading; the standalone Mixie Chat editor is retired (legacy space ID 107 reserved and unregistered). - Interface now honors Blender's Interface ▸ Reduce Motion preference and native font-size preferences across Mixar chrome.
Onboarding
- Interactive founder-video tour: video cut into beats that drive real UI actions via semantic anchors, a synthetic cursor, and state-polled gates; replayable from Help ▸ Start Tour.
⚠️ Notes
- Blender base bumped to 5.2.0. Any local overlay work targeting the previous base needs re-porting: namespaces,
ListBaseT<T>,MEM_new*,RNA_def_pointer_runtime, and channelbag-based animation access are now required conventions (docs/blender-5.2-porting.md). - Desktop↔backend agent transport is now WebSocket-based, replacing the previous polling transport.
- The standalone Mixie Chat editor is retired; its implementation lives on as the shared backend for the Agent Bubble only. Legacy editor space ID 107 is reserved and unregistered.
- Moodboard's standalone right sidebar is retired in favor of the canvas/drawer-based UI.
- The installer no longer bundles the procedural material library or KIRI demo meshes — the material catalog is now backend-served, and only user-generated materials persist on disk.
- CUDA/OptiX build configuration is now controlled entirely through
.env(MIXAR_CUDA,MIXAR_CUDA_BINARIES,MIXAR_CUDA_ARCH) rather than ad hoc CMake flags.