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 the begin_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(), or begin_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 returns False when 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 and undo() returns False, 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/maxUndoStackSize setting (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 after clear_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 inside omni.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