Changelog#

This document records all notable changes to the omni.kit.actions.core extension.

The format is based on Keep a Changelog. The project adheres to Semantic Versioning.

[1.2.1] - 2026-08-26#

Fixed#

  • OMPE-105197 / NVBug 6586846: Fixed a perf regression in the extension-usage telemetry hook. The first action invocation of a session (typically a hotkey like Ctrl+C) built a full extension-name->id map by walking fetch_extension_summaries(), and an unresolvable extension id rebuilt that map on every invocation (a failing emit retried the emit on every invocation, though against the warm map). On the perf benchmarks this landed inside the 2-frame “Copying an object” measurement window and cost a full frame. Resolution now uses IExtensionManager.get_enabled_extension_id — a single cheap C++ query that accepts both bare names and versioned ids — and emits are bounded at 3 attempts per action instead of retrying forever.

[1.2.0] - 2026-06-03#

Added#

  • OMPE-96417: Extension-usage telemetry hook for action invocations. The pybind chokepoint (executeAction in ActionBindingsPython.cpp) emits the typed com.nvidia.omni.kit.extension.used event (Carbonite MR !5433) via IExtensionManager.emit_extension_used_event for every Python-initiated execution — the module-level execute_action wrapper, IActionRegistry.execute_action(...), and direct IAction.execute() calls (which is what hotkeys and the Actions window use) — with context="action used" and the action id as windowOrActionName. Same schema and once-per-pair-per-session semantics as the omni.ui first-click hook, so a single event stream covers both UI clicks and action invocations. Enabled by default; an app that wants to drop just this signal can set /exts/omni.kit.actions.core/extensionUsageTelemetry/enabled to false. Pure C++ callers that hit IActionRegistry::executeAction directly are still not tracked; promote the hook into the registry plugin if that coverage becomes important. Privacy: when /telemetry/enableAnonymousAppName is true (the same gate that hashes the app name, set by default in customer app templates), the extension name and action id are FNV-1a-64 hashed before emit (hash:<hex>-<version> / hash:<hex>), keeping only the extension version plaintext — mirroring the appName-hashed/appVersion-plain convention; NVIDIA names are restored on the reporting side via a hash→name mapping. Also fixed the bare-name lookup in the resolver to read summary["enabled_version"]["name"] (the summary dict has no top-level name key, so the map silently built empty and every action event was dropped as unattributable).

[1.1.0] - 2026-06-11#

Fixed#

  • OMPE-92130: Guard execute_action() against a None action registry.

[1.0.0] - 2022-05-09#

  • Released