Skip to content

Changelog

Version 2.6.14 (2026-10-06)

  • Added support for MuJoCo 3.15.0
  • Added cg_x, cg_y, and cg_z to Inertial, and x, y, and z to Pos
  • The time column is now tagged with the scalar transform_type, like the other built-in signals
  • Added missing return type annotations across the package, so get_logger now returns a logging.Logger instead of an unknown type
  • Breaking: read_column_metadata() is now MojoDataFrame.read_column_metadata()
  • Security patches

Version 2.6.13 (2026-09-30)

  • Added support for MuJoCo 3.14.0
    • Added the ipc flag to <option><flag>
  • reloaded's workdir/stochas directory is now cleared before each reload's regeneration - it previously only overwrote files for the distributions that still existed, so a dropped distribution category/type, or a reload producing no distributions at all, could leave stale CSV tables or a stale dists.json behind

Version 2.6.12 (2026-09-29)

  • EqualityBase.set_active() now updates the tracked active field, not just the live mjData.eq_active - it previously went stale after a runtime toggle, so saving the model back to XML wrote the wrong value
  • Added Light.set_active()/enable()/disable()/is_active(), matching the existing pattern on EqualityBase
  • Fixed Dojo requiring pydantic-ai (the sensai extra) to start at all; SensAI is now an optional feature that disables itself with a warning when it isn't installed
  • Added Body.rt_qvel(): the free joint's raw mjData.qvel slice, for the cases where MuJoCo's own (lin, ang) / mixed-frame convention is wanted instead of rt_spatial_vel's
  • Added a "What's Changed" button to the Dojo footer showing the installed version, with a modal listing the live changelog, a pulsing badge when a newer release is available, and a setting to auto-open it on updates

Version 2.6.11 (2026-09-20)

  • Fixed the return type annotation of rotatable_columns (#96)
  • RotationFilter now raises on a missing quaternion column or a zero/NaN quaternion, instead of returning unrotated data or NaN (#93)
  • Added transform_type (point/vector/quaternion/scalar) metadata to built-in signals. scalar marks a frame-independent value, and a group tagged scalar is left untouched by change_frame() and is not offered for rotation in the Dojo (for example three independent angles named :x/:y/:z) (#94)
  • Added change_frame(), which translates positions, rotates vectors, and composes quaternions according to their transform_type (#92, #94)
  • Removed with_rotation in favor of change_frame, which rotated every vector-shaped column, including positions, without translating them (#92)
  • Dojo reference frames are now an orientation and an origin, chosen with two dropdowns, so positions are translated as well as rotated. Saved profiles using the old single-signal frame are no longer accepted (#92)
  • Added ColumnMetadata, a typed model for signal metadata. The metadata helpers now return it instead of dicts (combine them with |), while request(metadata=...) still accepts dicts
  • Added metadata fields (unit, dimension, quantity, transform type) to the Lab's Signal Out node
  • Added Column, a model of a telemetry column's name parts and metadata. A name part containing / or : now raises (#97)
  • Added PoseQuat.from_row(row, "Sites/A"), df.mojo.pose_at(), and df.mojo.pose_arrays() to read a pose from telemetry (#95)
  • Added df.mojo.select(*columns) and df.mojo.columns for selecting by Column (#97)
  • The typed selectors (select_body, ...) now match names literally and include an object's scalar channels (#97)
  • Breaking: SignalManager.post(value, column) and track(getter, column) now take a Column in place of category, subgroups, attr, and metadata. Build the Column once, since post runs every timestep (#97)
  • Added a Column Manifest export to the Mosaic export menu
  • Security patches

Version 2.6.10 (20206-09-11)

  • Added a new option for the rotation filter that will also perform a reference frame translation after the rotation
  • Added support for skipping the rotation entirely in the rotation filter, for a pure translation (leave the quaternion column unset and only set the origin column)
  • Added a standalone Translation filter (adds or subtracts another position column) for use outside the rotation filter, e.g. computing a displacement between two points; the rotation filter now uses the same math internally for its own translation option

Version 2.6.9 (2026-09-10)

  • Added support for MuJoCo 3.13.0
  • Fixed transitive dependency issue warned by Dependabot
  • Added changelog

Version 2.6.8 (2026-09-09)

  • Added a new example for the user guide based on my thesis research
  • Removed many obsolete dependencies
    • Fixed Dependabot warnings
  • Dojo Updates:
    • Added SensAI feature, which adds a chatbot to Dojo
      • This feature is still considered experimental
    • Added a system to allow multiple plots to be open at once via tabs, like in the Lab
    • Added a settings editor and upgraded folder-like elements to use a folder navigation system
    • Lots of style improvements and deep integration with tooltip helpers
    • Reworked Dojo to use a better color system (mainly helpful for development)
  • Settings Updates:
    • Updated to add lots of new CLI settings
    • Settings now allow for project-specific settings
    • Replaced the original Slurm overrides JSON file
    • Project settings now take priority over Global settings
  • Fixed asset bundling to use a folder structure, preventing files with the same name from being overwritten
    • Added an option to symlink instead of copy on POSIX systems
  • Fixes for reloaded recording telemetry
  • Updated the Frame class so it is actually useful
  • Significant improvement to cold start time

Version 2.6.7 (2026-08-26)

  • Partial compatibility with MuJoCo v3.12.0
    • Added Orientation and PID actuators
    • Removed VND texture support
    • Updated DCMotor definition
  • Updated defaults
  • Fixed mesh builtins
  • Updated developer MJCF schema checking tool to use the new schema published by MuJoCo developers
  • Typing fixes and missing attrs

Version 2.6.6 (2026-08-11)

  • Fixed Dependabot warnings
  • Fixed lost unit system

Version 2.6.3 (2026-07-26)

  • Added an option to quickly relaunch Reloaded in case the viewer crashes
  • Fixed a bug with face-to-face proximity not clipping to zero
  • Cached Tracer's per-segment LineConfig objects instead of rebuilding the whole trail on every render call
  • Added more flexibility to the Slurm submission script to allow users to define global and per-job overrides using settings and/or a JSON file
  • Fixes for macOS unit tests

Version 2.6.0 (2026-07-03)

  • Added requirements feature allowing for automatic run analysis to alert users to specification failures
    • Allows for latching to prevent re-evaluation when it doesn't matter
  • Added pinned trials option in Dojo
  • Moved rotation feature calculations from DataFrame to RotationFilter
  • Added downsampling, bulk unit conversions, and metadata display to Dojo
  • Added model unit system feature
    • Telemetry signals now have a metadata option to include extra information about each column
    • Includes info for dimensional analysis and automatic unit conversion
    • Dojo now shows units (if known) and automatically hints a unit conversion in the quick filter if it's known
  • Loads can now have their lengths and widths scaled independently for force and torque
  • Fixed a bug where reset_rng worked backwards

Version 2.5.7 (2026-06-26)

  • Model config name is no longer required. It will not be written by default.
  • Fixed a bug where the SignalManager buffer did not flush due to a Windows file lock
    • SignalManager now writes partial Parquet files (up to 8 MB/user defined)
    • When close() is called (such as when a runtime manager context closes), the partials are read back in and stitched together
  • Added Coulomb joint friction
  • Added new requests for actuators and joints
  • Renamed ActuatorLoad to ActuatorControl
  • MP4 and WebM videos are now streamed to disk rather than saved in the frame buffer, which saves memory
  • Ensured FFmpeg is installed for CI

Version 2.5.6 (2026-06-24)

  • Improved labeling for video recording
  • Updated test to use EGL mode for rendering during tests
  • Removed ballscrew. Added loads to __all__
  • Added missing __init__ imports

Version 2.4.5 (2026-06-23)

  • Added tracer mode so you can see how a site/traceable type moves through the sim
  • Now writing stochas folder in Reloaded too
  • Fixed a bug where a missing signal manager just raised an error
  • Added RuntimeManager and SignalManager context managers system
    • Updated docs to reflect this
  • Added actuator loads

Version 2.4.4 (2026-06-21)

  • Fixes for when named values are lists instead of single values
  • Added caching for proximities within a single timestep
  • Fixed a Windows bug where running dojo.sh prevented workdir cleanup on a rerun
  • Added a developer tool to periodically check the official XML reference documentation to compare against the mjcf module objects. Caught a bunch of errors right off the bat.
  • Added a check to warn the user if the video recorder requests a higher resolution than the offscreen renderer is configured for
  • Added additional checks to make sure XML attributes are always present. Fixed missing Joint and other classes missing attributes list

Version 2.4.3 (2026-06-16)

  • Added a distribution viewer to see where a given trial's named values fit within the distribution
    • Now reports the stochas distributions in the workdir along with the categorical tables for report generation
  • Fixed missing AnyDist

Version 2.4.1 (2026-06-14)

  • Added warning when proximity calculations are being discarded (potentially by accident, as the calculation is expensive)
  • Updates for Reloaded to allow early termination, printing Dojo, and better dark mode for viser
  • Inertial now has an option to avoid resetting the RNG
  • Slurm submission fixes and added throttle argument

Version 2.3.10 (2026-06-13)

  • Added plot resizing handle
  • Dojo no longer writes to the job status file
  • Added schema validation, better marker behavior, and better shape/note editing
  • Added new filters: First, Last, Sort, and Reverse
  • Fixed bugs where rotations didn't work
  • Added the rotation filter as an option in the signal Lab

Version 2.3.9 (2026-06-12)

  • Added JSON logging for each trial
  • Added logs section in trial viewer

Version 2.3.8 (2026-06-12)

  • Upgraded VideoRecorder to allow for different playback speeds, recording triggers, frame labels, and max frames
    • Now closes the MuJoCo Renderer when the RuntimeManager context manager closes
  • Updated images on the docs site. Added a new section to README
  • Added UUID to prevent Dojo from hanging on to old job status files
  • Prevented unpicklable parameters from being serialized when leaving multiprocessing
  • Fixed the select_attribute() method so that it actually selects attributes
  • Added a command to allow tracking a single float easily
  • Added triangle inequality check to Inertial

Version 2.3.7 (2026-06-09)

  • Bug fix for dynamically reloading imported packages
  • Added matrix rain and new logo print

Version 2.3.6 (2026-06-07)

  • Rewrote the Signal Lab's dirty-state and undo system to fix bugs where unsaved-change detection was wrong or stuck
  • Added new statistics filter (min, max, mean, etc.)
  • Updated Reloaded to work more like the regular runner to prevent drift

Version 2.3.5 (2026-06-03)

  • Added request options for contact forces
  • Added Pose Context to allow elements to be added anywhere in the kinematic tree. Now also supports friction forces/torques

Version 2.3.4 (2026-06-01)

  • Fixed paths for Windows

Version 2.3.3 (2026-05-31)

  • Converted to MjState for MjModel and MjData
  • Updated to use UserData class in loads instead of hodgepoged callable args
  • Added visualization configuration and fixed some load bugs

Version 2.3.2 (2026-05-30)

  • Added tabs to Lab so you can edit multiple labs at a time
  • Added ability to save a lab as a template to be used later as a single node
    • Allows complex filters to be reused in different scenarios and single units of complex groups to be tested more easily

Version 2.3.1 (2026-05-29)

  • Added settings that are saved to ~/.mujoco-mojo/settings.toml
  • Added an animation viewer to Dojo
    • Shows frame markers on plot
    • Includes playback speed options
  • Added trial status to trial viewer
  • Added watchfiles to enable auto-refreshing on file saves in Reloaded

Version 2.3.0 (2026-05-24)

  • Added a basic signal editor called Lab to Dojo
    • This new feature allows you to create custom signals after a run has completed
    • Uses a graph system to connect filters and signals together
    • Allows plotting of the new signal (note that these are in-memory only, not persisted to the DataFrame)
    • Includes auto-arrange and fit view
  • Can now integrate or differentiate with respect to a signal rather than just Riemann integration
  • Added option to apply filters to the X-axis
  • Added polar chart option in trial viewer
  • Added fullscreen button to all Dojo pages
  • Fixed DataFrame namespace so you can chain methods without losing type hints
  • Fixed double click, added Plotly notifications, improved shape editor with color selector, added better keyboard shortcuts, and improved profile saving (validation, session sharing, directories)

Version 2.2.3 (2026-05-20)

  • Added an init command to start fresh projects
  • Now renumbering trial numbers on a trial expansion
  • Updated docs to include an API reference

Version 2.2.2 (2026-05-19)

  • Added profile saving for configurations that users like and want to persist between sessions
  • Added a notification history and more toast messages
  • Unapplied changes are stored in a draft state
  • Refactored Dojo to use TypeScript, a semantic CSS design system, and template partials

Version 2.2.1 (2026-05-17)

  • Added the ability to create custom meshes using trimesh. Also added constructors for frustums and boxes

Version 2.2.0 (2026-05-10)

  • Significant performance improvement for SignalManager
    • Switched to a contiguous memory buffer for signal recording and cached column names to avoid string composition on every loop
    • Dropped support for Pydantic models in recording to increase speed
  • Added a new proximity system to determine minimum distance between geometries
    • Also supports concave hulls (not used for contacts)
  • Added support for proximity visualization in Reloaded
  • Fixes for thread safety

Version 2.1.1 (2026-05-02)

  • Added Hatch as a dev dependency
  • Added support for Python 3.14 and MuJoCo v3.8.0

Version 2.1.0 (2026-05-02)

  • Added a new DataFrame wrapper for supercharged data analysis
    • Works as a namespace with Polars, allowing for Mojo methods while avoiding having to cast back to a MojoFrame every time
  • Simplified MojoFrame so it includes the method to create a new instance from itself
  • Added a UnitFilter, which allows users to easily switch column units
  • Added Savitzky-Golay (savgol) filter

Version 2.0.4 (2026-05-01)

  • Completed the tennis racket theorem example
  • Refined nomenclature
  • Added a method to walk through bodies recursively
  • Fully renamed ResultManager to SignalManager to prevent confusion with RuntimeManager
  • Fixes to the rt_inertia_world method
  • Assets will only copy when changed

Version 2.0.3 (2026-04-29)

  • Added the ability to run a Reloaded session from a model config file
  • Handoff data is serialized using the new mojo.UserData class

Version 2.0.1 (2026-04-20)

  • Support for new stochas distributions

Version 2.0.0 (2026-04-19)

  • Added optimization toolkit
  • Added user guide and new arguments for optimizer
  • Additional stability for thread-safe operations
  • Added the ability to view optuna-dashboard inside Dojo

Version 1.7.6 (2026-04-17)

  • Added a method to create an orientation from a rotation object
  • Switched to using Parquet instead of DuckDB for signal outputs
  • Updated to match MuJoCo v3.7.0 and updated dependency
    • Added DCMotor to actuator class
    • Added support for DCMotor

Version 1.7.5 (2026-04-16)

  • Added resolution download options for plots
  • Built basic line editor dropdown

Version 1.7.4 (2026-04-13)

  • Added a chip to Dojo to indicate whether a live connection is present
  • Converted Mesh to a discriminated union type
  • Added new matrix types and improved the initial velocity setter

Version 1.7.2 (2026-04-12)

  • Added user guides on how to use MuJoCo Mojo to the docs
  • Fixed asset links to be relative instead of absolute

Version 1.7.1 (2026-04-11)

  • Added load arrows to the mjviser viewer
    • Note: They appear to be centered at the wrong location due to the world origin being misplaced.
  • Force and torque arrows now appear in the OpenGL viewer (same as when rendering a video)
  • Added playback speed options to Reloaded
    • Incorporated runtime into Reloaded. Users can now playback generation and runtime in the viewer
  • Added option to use MjViewer for the web viewer (in case X11 is unavailable)

Version 1.7.0 (2026-04-10)

  • Added mujoco-mojo reloaded, allowing you to run a script that automatically reloads a view of your model while you edit
  • Added ability to change the reference frame for valid quaternions in Dojo
  • Defaults to returning a quaternion instead of a full rotation matrix

Version 1.6.0 (2026-04-08)

  • Dojo updates:
    • Added password protection option for the site as well as an error page
    • Added polish to shapes by showing the active mode on the button, adding a cancel button, and adding a label option
  • Added toggle option for equalities to allow simple runtime modification
  • Added Geom output options

Version 1.5.0 (2026-04-05)

  • Added a shape and annotation configurer to Dojo
  • Improved formatting and highlighting of errors in JSON
  • Added undo/redo feature to Dojo trial viewer
  • Added unit tests
  • Static typing no longer requires as many np.asarray checks
  • Added coordinate system tools expanding both Pose and Orientations

Version 1.3.5 (2026-04-03)

  • Added a system for outputting simulation data
  • Added a new system for using custom forcing functions without needing to edit MuJoCo buffers
  • Added support for a new video recording feature
  • Added helper methods for generating custom inertia from random draws, addition, and subtraction
  • Added a method to set the initial velocity condition of bodies
  • Added a method to get the runtime center of mass of multiple bodies
  • Added a method to use defined cameras as "recorders" at runtime
  • New dashboard features:
    • Renamed dashboard to Dojo
    • Mosaic: Plot result data in an interactive viewer
    • Added ability to add filters or plot against many trials at once
    • Added buttons for easier customization
    • Uses a JSON format as the source of truth for simple saving and detailed editing
    • Plot views can be shared with other users via a web URL
    • Mobile support
    • Keyboard shortcuts for easier navigation
    • Confetti!
  • Updated to new stochas package
  • Theming updates to dashboard
  • Fixed logging on Windows
  • Dashboard performance improvements
  • Added color utilities
  • Added ability to submit jobs with Slurm

Version 1.1.0 (2026-03-03)

  • Added a basic dashboard to monitor job execution status
  • Updated CLI to use typer
  • Added a system to perform Monte Carlo studies with parallel execution support
  • Added a run summary file that can be used as a lightweight alternative to the dashboard
  • Added a method to decompose a mesh into multiple meshes, allowing non-convex volumes to be used
  • Fixed XML generation so tuples export correctly
  • Fixed resume functionality (previously the registry was overwritten with only finished runs, omitting runs lacking a status file)
  • Raised exceptions now include tracebacks
  • Fixed local time zone conversion differences between Windows and Linux handling
    • Dashboard and reports now use time zone abbreviations
  • Added option to run specific trial numbers
  • Added dependency asset handling via DepPath
    • Dependency assets now have an option to remap their location to a shared asset folder
    • Allows multiple trials to pull from the same dependency location to save storage space while keeping the workdir portable
  • Added mjtObj attribute to named classes
  • Fixed job status updating and querying

Version 1.0.0 (2026-02-04)

  • Initial release of mujoco-mojo with support for nearly the full MJCF definition
  • Generates XML files using Pydantic classes for type safety
  • Serialized XML is compact because default values are ignored (relying on MuJoCo default behavior)
  • Documented objects to describe how MuJoCo interprets them