Changelog#
This document records all notable changes to the omni.kit.commands extension.
The format is based on Keep a Changelog. The project adheres to Semantic Versioning.
[1.6.2] - 2026-08-26#
Added#
OMPE-88621: A group left open past
/exts/omni.kit.commands/groupOpenWarningSeconds(default 300s) logs a one-shot warning naming thebegin_group()call site.
Fixed#
OMPE-88621:
begin_group()rolls back on exception instead of leaving the group counter raised with no group entry.OMPE-88621: A group bookkeeping mismatch (unmatched
end_group(), orbegin_group()over an abandoned group’s leftover state) is now repaired automatically: the orphan is closed and its children restored to their original undo level.
[1.6.1] - 2026-08-14#
Fixed#
OMPE-88625: Stop group undo on the first child failure and prevent redoing a corrupted group. Previously, if a child command’s
undo()raised,Undo.do()kept unwinding the rest of the group (partial rollback) and still pushed the root group entry onto the redo stack – letting the user redo a half-applied group on top of an inconsistent stage. Now the unwind stops on the first failure and the partially-undone group is removed from the undo stack instead of being placed on the redo stack, so a corrupted group can never be redone.Undo.do()also returnsFalsewhen the undo did not complete cleanly.OMPE-88625: A standalone (non-grouped) command whose
undo()raises is no longer left redoable – it is dropped from both the undo and redo stacks andundo()returnsFalse, so a command that failed to undo cannot be redone onto an inconsistent stage. A warning is now logged when this happens, matching the warning already logged when a corrupted command group is discarded.
[1.6.0] - 2026-07-22#
Added#
OMPE-88619: Bound the undo and redo stacks so they no longer grow without limit in long editing sessions. The maximum size is configurable via the
/exts/omni.kit.commands/maxUndoStackSizesetting (default 10000); a non-positive value disables the limit (legacy behavior). Eviction is group-aware: orphan child entries are removed from the front of the undo stack when their parent group is evicted.
[1.5.2] - 2026-07-22#
Fixed#
OMPE-92124:
omni.kit.undo.end_group()now closes safely afterclear_stack()removes an active group entry. Commands executed later in the still-open group retain valid undo and redo behavior.
[1.5.1] - 2026-05-09#
Fixed#
OMPE-88616: Do not push failed commands onto the redo stack. When a command’s
do()raised an exception, the failed root-level entry was being appended to the redo stack insideomni.kit.undo._execute()’s exception handler, which let the user redo a command that was known to have failed (potentially on a stage left in an inconsistent state by a partial unwind). Failed commands are no longer redoable.
[1.5.0] - 2025-10-12#
Changed#
OMPE-65059: Add argument “remove_if_empty” to remove empty group from undo stack
[1.4.10] - 2024-12-12#
Changed#
removed deprecated functions to minimize public api.
[1.4.9] - 2023-08-22#
Changed#
Removed Redo kwarg from Undo
[1.4.8] - 2023-08-22#
Added#
Option to disallow Redo when calling Undo
[1.4.7] - 2023-08-17#
Added#
OM-77258: New ChangeDraggableSettingCommand
[1.4.6] - 2022-10-27#
Added#
Support for pre- and post-undo callbacks
[1.4.5] - 2022-10-06#
Fixed#
Don’t assume that get_history_item() always returns a valid entry.
[1.4.4] - 2022-08-30#
Added#
Support for specifying optional and required keyword arguments when registering commands from C++
[1.4.3] - 2022-08-23#
Changed#
Removed check for kwargs default.
[1.4.2] - 2022-08-02#
Fixed#
Ensure GIL when calling back into python functions.
[1.4.1] - 2022-06-16#
Fixed#
Command groups now fire events to callbacks registered using ‘omni.kit.undo.subscribe_on_change’.
[1.4.0] - 2022-06-02#
Added#
Support for repeating the last command that was executed or redone.
[1.3.1] - 2022-06-01#
Added#
Support for specifying default keyword arguments to C++ commands.
[1.3.0] - 2022-05-26#
Added#
C++ support for registering, deregistering, executing, and undoing/redoing commands.
Support for preventing groups of commands from being added to the undo stack.
[1.2.2] - 2022-05-05#
Changed#
Use relative import to avoid exposing _call_callbacks() to users.
[1.2.1] - 2022-04-20#
Fixed#
Callbacks now fire on redo.
Callbacks now fire within the command’s undo block.
[1.2.0] - 2022-02-10#
Added#
Support for pre- and post-do callbacks
[1.1.0] - 2021-12-30#
Added#
added @abstractmethod to ‘do()’ method
[1.0.0] - 2019-06-18#
Added#
Initial Commands System