shape_xy.ui_joystick modal operator) where releasing the mouse button (Left-Click Release) would allow the click event to pass through into the 3D Viewport. This previously caused unintended object selections or 3D cursor movements in Blender while interacting with the HUD.joy_x/joy_y on the timeline caused the HUD handle to animate correctly but the shape keys themselves did not deform. Root cause was a silent failure in the frame_change_post handler due to two issues:(scene, depsgraph) into frame_change_post callbacks. The old single-argument (scene) signature caused Blender to silently discard the call, so update_shapes() was never invoked during timeline playback/scrubbing.sk.value entries, a view_layer.update() call is now performed to force the dependency graph to propagate the changes and redraw mesh geometry. Without this, values were written in memory but the viewport mesh never reflected them.@bpy.app.handlers.persistent decorator to frame_handler so it survives .blend file loads. Previously the handler was silently unregistered whenever a new file was opened mid-session.bgl module in favor of pure gpu module calls.pip, falls back to --user installation if permission is denied, and reports detailed STDOUT error logs directly to the Blender Info Log and System Console instead of a generic exit status 1.try...except blocks within the draw loop to help catch and isolate rendering failures natively within the UI.blender_manifest.toml to support the new Extensions architecture.opencv and mediapipe).shape_xy_groups settings.support URL field for issue trackinggpu, blf){"x": 0.5, "y": 0.2}) and multi-group format ({"Object_Group": {"x": 0.5, "y": 0.2}})Auto-Mirror Mappings: Added a [Mirror Mappings] button. Symmetrical mapping creation is now automated! If your shape keys use .L, .R, _L, or _R suffixes, clicking this button generates the opposite side mappings with flipped X-axis logic in one click.
Animation Baking Tool: Added [Bake Animation to Shape Keys] for game developers! You can now animate with the joystick control, then click Bake to automatically transfer the timeline motion directly into raw Shape Key values for easy FBX/GLTF exporting to Unity, Unreal, or Godot.
JSON Import & Export: Complete setup portability. Added [Export JSON] and [Import JSON] buttons to allow users to save and load their Custom Group configurations (Mappings, Targets, Radius, Blend Modes) to external files, enabling effortless re-use across different character models.
Global Animation Presets: Presets are now stored at the Scene level rather than per-group. A single preset can now store and recall the coordinates of every object and group in the scene.
Keyframing Operator: Added a dedicated [Key] button to the Global Presets list, allowing users to apply a preset and immediately insert keyframes for all associated shape keys with a single click.
UI Enhancements: Redesigned the main side panel for cleaner organization, consolidated Preset Action buttons (Set, Call, Key), and added "Move Up/Down" buttons to reorder Groups and Presets.
Native Look HUD: The Axis UI HUD has been redesigned with a native look and feel, matching Blender's default UI theme and panel aesthetics.
Graphical Clipping: Implemented Scissor/Clipping for the HUD. Radius circles and target points are now rendered only within the joystick board boundaries, preventing overlap with buttons and panels.
Context Tooltips: Added detailed operator descriptions to all buttons. Hover over any tool to see a tooltip explanation of its function.
Handle Keyframing & Auto-Keying: Joystick Joy X and Joy Y properties are now keyframeable. Pressing the [I] shortcut while hovering over the 2D HUD will instantly insert keyframes for the active handle. Full support for Blender's native "Auto Keying" feature is also included; dragging the handle automatically generates keyframes on the timeline.
Custom External Drivers: The Handle X and Handle Y values are now exposed as "Driveable" fields on the side panel. Users can simply right-click to "Add Driver" to easily link the X/Y coordinates to Bones, Empties, or custom properties.
HUD Interaction Polish: Added looping behavior to the HUD group selector, improved error handling to prevent silent UI crashing, and introduced a Reset All function.
Global Animation Presets: Presets are now stored at the Scene level rather than per-group. A single preset can now store and recall the coordinates of every object and group in the scene.
Keyframing Operator: Added a dedicated [Key] button to the Global Presets list, allowing users to apply a preset and immediately insert keyframes for all associated shape keys with a single click.
UI Enhancements: Redesigned the main side panel for cleaner organization, consolidated Preset Action buttons (Set, Call, Key), and added "Move Up/Down" buttons to reorder Groups and Presets.
HUD Interaction Polish: Added looping behavior to the HUD group selector, improved error handling to prevent silent UI crashing, and introduced a Reset All function.
Blender 4.2+ Compatibility: Restructured the package with a blender_manifest.toml file to support Blender's official extension platform requirements.