# kdFlex 1.1.0 release

**URL:** <https://forum.karanadyn.com/t/kdflex-1-1-0-release/45>\
**Category:** Announcements\
**Created:** [February 24, 2026, 2:07am UTC](https://forum.karanadyn.com/t/kdflex-1-1-0-release/45 "2026-02-24T02:07:07Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![leake](https://forum.karanadyn.com/user_avatar/forum.karanadyn.com/leake/32/19_2.png) [@leake](https://forum.karanadyn.com/u/leake)\
**Post date:** [February 24, 2026, 2:07am UTC](https://forum.karanadyn.com/t/kdflex-1-1-0-release/45/1 "2026-02-24T02:07:07Z")

</div>

# kdFlex 1.1.0 Code Changes Summary

## API Changes

- Added optional argument to SubGraph::enabledConstraints() for filtering type of constraint list and removed the constraint specific methods to simplify the API. [docs](https://portal.karanadyn.com/docs/1.1.0/generated/python_api/Karana/Dynamics/index.html#Karana.Dynamics.SubGraph.enabledConstraints).
- `MultibodyDS` has been removed and `SubGraphDS` and `SubTreeDS` have been added. `SubGraphDS` has methods to go to and from a `Multibody`. This allows one to easily clone `SubGraph`s, e.g., to create two instances of a robotic arm. See [SubGraphDS](https://portal.karanadyn.com/docs/1.1.0/generated/python_api/Karana/Dynamics/SOADyn_types/index.html#Karana.Dynamics.SOADyn_types.SubGraphDS) for more details.
- `KCore.Base` names with “/” in them are no longer allowed. These conflict with internal classes like `FilesystemLikeDatabase` as well as thrid-party libraries like HDF5.
- Updated `PID` models to use `ProfileGenerator`s rather than functions. This makes it simpler to set up a `PID` controller in Python, but still have the run-time performance of C++. See [PID](https://portal.karanadyn.com/docs/1.1.0/generated/python_api/Karana/Models/index.html#Karana.Models.PID) for more details.
- Removed `uvicorn` and `fastapi` as runtime dependencies.

## New Features

- Improved Chatbot tuning and ability to search kdFlex documentation
- Upgraded Chatbot frontend with several quality-of-life features such as copy buttons, dark/light mode, prompt tuning, and direct links to documentation
- Added the ability to swap integrators on the `StatePropagator` mid-stream. See [StatePropagator.setIntegrator](https://portal.karanadyn.com/docs/1.1.0/generated/api/classKarana_1_1Dynamics_1_1StatePropagator.html#_CPPv4N6Karana8Dynamics15StatePropagator13setIntegratorERKN2km14IntegratorTypeEPN2km10Integrator17IntegratorOptionsE) for more details.
- `DataStruct` now supports saving/loading meta data to/from files. This is useful for annotating and including source info in data files. See the [meta data](https://portal.karanadyn.com/docs/1.1.0/usage_guide.html#meta-data) section for more details.
- `DataStruct` support was added for many classes and models in kdFlex. See [PenalytContactDS](https://portal.karanadyn.com/docs/1.1.0/generated/python_api/Karana/Collision/Collision_types/index.html#Karana.Collision.Collision_types.PenaltyContactDS) as an example.
- Added `insertBefore` and `insertAfter` methods to `CallbackRegistry`. This makes it simpler to insert callback functions in the middle of a `CallbackRegistry`. See [CallbackRegistry.insertBefore](https://portal.karanadyn.com/docs/1.1.0/generated/api/classKarana_1_1Core_1_1CallbackRegistry.html#_CPPv4N6Karana4Core16CallbackRegistry12insertBeforeERKNSt6stringERKNSt6stringERK1f) and [CallbackRegistry.insertAfter](https://portal.karanadyn.com/docs/1.1.0/generated/api/classKarana_1_1Core_1_1CallbackRegistry.html#_CPPv4N6Karana4Core16CallbackRegistry11insertAfterERKNSt6stringERKNSt6stringERK1f) for more details.
- The `dump` and `dumpString` options for classes in `Math` have been updated to use an enum for the format type rather than a bool. This adds the ability to dump numbers as fixed-point, when previously, only default float and scientific were available. See [HomTran.dump](https://portal.karanadyn.com/docs/1.1.0/generated/python_api/Karana/Math/index.html#Karana.Math.HomTran.dump) as an example.
- Added a remotely-accessible all-in-one [graphical interface](https://portal.karanadyn.com/docs/1.1.0/generated/python_api/Karana/KUtils/MultibodyWebUI/index.html#Karana.KUtils.MultibodyWebUI.MultibodyWebUI) for visualizing and introspecting the multibody. This can be launched by calling the `gui` method on a [`Multibody`](https://portal.karanadyn.com/docs/1.1.0/generated/api/classKarana_1_1Dynamics_1_1Multibody.html#exhale-class-classkarana-1-1dynamics-1-1multibody) instance.
- Added picking support to WebScene, triggering an arbitrary [‘on pick’ callback](https://portal.karanadyn.com/docs/1.1.0/generated/python_api/Karana/Scene/index.html#Karana.Scene.WebScene.setOnPick) upon clicking a part.

## Enhancements

- Added **consolidated** `SOADyn/Defs.h` header for user facing structs and enums.
- Added optional support (`true` by default) for including size info in matrix/vector `dump()` output
- The jacobian generator `jacobianDot()` method now takes an `analytical` argument similar to the `jacobian()` and `poseGradient()` methods to allow use of numeric differencing
- Added initial versions of `Glossary` and `Conventions` sections to the documentation.
- Updated the [`ScenePartSpec`](https://portal.karanadyn.com/docs/1.1.0/generated/python_api/Karana/Scene/index.html#Karana.Scene.ScenePartSpec) python constructor to allow initializing using keyword arguments.
- Added [`setTransform`](https://portal.karanadyn.com/docs/1.1.0/generated/python_api/Karana/Scene/index.html#Karana.Scene.SceneNode.setTransform) methods to all [`SceneNode`](https://portal.karanadyn.com/docs/1.1.0/generated/python_api/Karana/Scene/index.html#Karana.Scene.SceneNode)-derived classes.

## Bug Fixes

- Fixed bug where `hardReset` could lead to a seg fault on certain sundials integrators.
- Fixed a bug where a WebScene render could occur between updating the translation and quaternion of a part, sometimes resulting in visual jitter.
