Skip to content

Mixar 4.0.0

Choose a tag to compare

@mixar-ci-bot mixar-ci-bot released this 24 Sep 17:36
· 626 commits to main since this release

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 to ListBaseT<T>, allocation to MEM_new*, runtime operator pointer props to RNA_def_pointer_runtime, and animation access through the ID's channelbag (common/utils/animation.py) instead of Action.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 .env switch (MIXAR_CUDA, MIXAR_CUDA_BINARIES, MIXAR_CUDA_ARCH), resolved once in cmake/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.sh falls back to the main checkout's upstream/ read-only, with MIXAR_UPSTREAM_DIR as an override.
  • macOS: link-probes the SDK before falling back to the newest linker-accepted SDK (fixes tapi error: malformed file on 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-pin upstream/ 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 own SSLContext instead 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-identical AGENTS.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 with O).
  • Keyframing: Insert Keyframe on I (not F), 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.md and docs/modules/cinema-mode-ui.md cover 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 shared common/agent_execution request 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.cpp runtime.
  • 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.