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 usesIExtensionManager.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 (
executeActionin ActionBindingsPython.cpp) emits the typedcom.nvidia.omni.kit.extension.usedevent (Carbonite MR !5433) viaIExtensionManager.emit_extension_used_eventfor every Python-initiated execution — the module-levelexecute_actionwrapper,IActionRegistry.execute_action(...), and directIAction.execute()calls (which is what hotkeys and the Actions window use) — withcontext="action used"and the action id aswindowOrActionName. 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/enabledto false. Pure C++ callers that hitIActionRegistry::executeActiondirectly are still not tracked; promote the hook into the registry plugin if that coverage becomes important. Privacy: when/telemetry/enableAnonymousAppNameis 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 readsummary["enabled_version"]["name"](the summary dict has no top-levelnamekey, 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 aNoneaction registry.
[1.0.0] - 2022-05-09#
Released