pow-cli 0.2.0rc2__tar.gz → 0.4.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pow_cli-0.4.0/CHANGELOG.md +382 -0
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/PKG-INFO +3 -5
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/pow_cli/cli/init.py +282 -124
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/pow_cli/cli/lint.py +3 -9
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/pow_cli/cli/main.py +2 -4
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/pow_cli/cli/ros.py +3 -0
- pow_cli-0.4.0/pow_cli/cli/sim.py +217 -0
- pow_cli-0.4.0/pow_cli/common/installation.py +97 -0
- pow_cli-0.4.0/pow_cli/common/jsonc.py +332 -0
- pow_cli-0.4.0/pow_cli/common/prompt.py +282 -0
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/pow_cli/core/asset_manager.py +9 -2
- pow_cli-0.4.0/pow_cli/core/initializer.py +734 -0
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/pow_cli/core/linter.py +149 -27
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/pow_cli/core/models/pow_config.py +180 -6
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/pow_cli/core/models/system_config.py +26 -4
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/pow_cli/core/ros_manager.py +230 -41
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/pow_cli/core/runner.py +112 -56
- pow_cli-0.4.0/pow_cli/core/vscode_settings.py +294 -0
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/pow_cli/data/pow.template.toml +1 -1
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/pow_cli/data/system.template.toml +5 -0
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/pow_cli/docker/Dockerfile.simros_jazzy +9 -4
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/pyproject.toml +2 -4
- pow_cli-0.4.0/tests/conftest.py +11 -0
- pow_cli-0.4.0/tests/test_bump.py +30 -0
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/tests/test_config.py +171 -7
- pow_cli-0.4.0/tests/test_init_cmd.py +482 -0
- pow_cli-0.4.0/tests/test_initializer.py +423 -0
- pow_cli-0.4.0/tests/test_isaacsim_6_1_0.py +188 -0
- pow_cli-0.4.0/tests/test_linter.py +161 -0
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/tests/test_prompt.py +149 -1
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/tests/test_ros_cmd.py +8 -0
- pow_cli-0.4.0/tests/test_ros_image_recovery.py +135 -0
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/tests/test_ros_manager.py +78 -4
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/tests/test_runner.py +180 -4
- pow_cli-0.4.0/tests/test_sim_cmd.py +240 -0
- pow_cli-0.4.0/tests/test_sim_setup.py +238 -0
- pow_cli-0.4.0/tests/test_verify_isaacsim.py +156 -0
- pow_cli-0.4.0/tests/test_vscode_settings.py +370 -0
- pow_cli-0.4.0/tests/test_xauthority.py +105 -0
- pow_cli-0.2.0rc2/CHANGELOG.md +0 -170
- pow_cli-0.2.0rc2/pow_cli/cli/check.py +0 -25
- pow_cli-0.2.0rc2/pow_cli/cli/sim.py +0 -67
- pow_cli-0.2.0rc2/pow_cli/common/prompt.py +0 -136
- pow_cli-0.2.0rc2/pow_cli/core/initializer.py +0 -535
- pow_cli-0.2.0rc2/tests/test_check_cmd.py +0 -47
- pow_cli-0.2.0rc2/tests/test_init_cmd.py +0 -117
- pow_cli-0.2.0rc2/tests/test_initializer.py +0 -83
- pow_cli-0.2.0rc2/tests/test_sim_cmd.py +0 -71
- pow_cli-0.2.0rc2/tests/test_verify_isaacsim.py +0 -82
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/.gitignore +0 -0
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/LICENSE +0 -0
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/NOTICE +0 -0
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/README.md +0 -0
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/pow_cli/__init__.py +0 -0
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/pow_cli/cli/__init__.py +0 -0
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/pow_cli/cli/asset.py +0 -0
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/pow_cli/cli/python.py +0 -0
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/pow_cli/cli/run.py +0 -0
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/pow_cli/common/__init__.py +0 -0
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/pow_cli/common/utils.py +0 -0
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/pow_cli/core/__init__.py +0 -0
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/pow_cli/core/models/asset_profile.py +0 -0
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/pow_cli/data/asset-registry/isaacsim_assets_5_1_0.toml +0 -0
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/pow_cli/data/asset-registry/omniverse_assets.toml +0 -0
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/pow_cli/data/example/asset-profile.example.toml +0 -0
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/pow_cli/data/gitignore.template +0 -0
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/pow_cli/main.py +0 -0
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/scripts/check_assets_urls.py +0 -0
- {pow_cli-0.2.0rc2 → pow_cli-0.4.0}/tests/test_version.py +0 -0
|
@@ -0,0 +1,382 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to the `pow-cli` package will be documented in this file.
|
|
4
|
+
|
|
5
|
+
## [0.4.0] - 2026-09-14
|
|
6
|
+
|
|
7
|
+
### Added
|
|
8
|
+
|
|
9
|
+
- **Isaac Sim 6.1.0 support.** `pow init` now offers 6.1.0, downloads its standalone
|
|
10
|
+
archive and selects the matching ROS workspace tag. Asset references use
|
|
11
|
+
`Assets/Isaac/6.1`. Isaac Sim 5.1.0 remains supported.
|
|
12
|
+
- **Linux aarch64 support.** `pow init` and `pow sim` download the
|
|
13
|
+
aarch64 build of 6.1.0 or 5.1.0 on ARM hosts such as DGX Spark, and the simulator launch and
|
|
14
|
+
compatibility-check commands accept that architecture. The bundled ROS Docker image remains
|
|
15
|
+
amd64-only: `pow init` skips its build on aarch64, and `pow ros` / `pow ros build`
|
|
16
|
+
report that limitation.
|
|
17
|
+
- **`pow sim` / `pow sim check` install missing prerequisites.** Both commands
|
|
18
|
+
now create missing global folders and `system.toml`, install the selected
|
|
19
|
+
supported release when absent, and prepare the asset-browser cache before
|
|
20
|
+
launching. No project or confirmation prompt is required. Incomplete installs
|
|
21
|
+
are backed up before repair; a failed repair restores the original contents.
|
|
22
|
+
- **ROS image rebuild prompt in `pow init`.** An existing `pow_simros_jazzy`
|
|
23
|
+
image without a matching simulator-version label used to stop initialization
|
|
24
|
+
with no rebuild option. Init now asks whether to rebuild it (default: No).
|
|
25
|
+
Accepting updates the existing tag using Docker's cache and preserves existing
|
|
26
|
+
containers and workspace files. Recreate containers explicitly to use the new image.
|
|
27
|
+
|
|
28
|
+
### Changed
|
|
29
|
+
|
|
30
|
+
- `pow init` defaults new projects to `6.1.0` unless a global preference is set.
|
|
31
|
+
Explicit version selection takes precedence; keeping an existing project
|
|
32
|
+
configuration preserves its selected version.
|
|
33
|
+
- A missing version pinned in global `system.toml` is now installed by `pow sim`
|
|
34
|
+
and `pow sim check`, rather than falling back to another installed version.
|
|
35
|
+
- **ROS workspace and container compatibility checks.** Setup and launching now
|
|
36
|
+
check the selected 6.1.0 workspace, image label and running-container mount.
|
|
37
|
+
Unknown or incompatible state is reported with recovery guidance. Stale
|
|
38
|
+
container-mounted build directories are no longer deleted automatically.
|
|
39
|
+
- `pow lint` asset-version fixes use verified release mappings. Unknown versions are
|
|
40
|
+
not rewritten; changes to scenes still require `pow lint fix` and do not migrate
|
|
41
|
+
renamed assets or application APIs.
|
|
42
|
+
- The optional simulator lookup reads matching distribution metadata without
|
|
43
|
+
importing `isaacsim`, avoiding simulator startup during path discovery.
|
|
44
|
+
- Python 3.10 installs `tomli` for the existing `tomllib` fallback.
|
|
45
|
+
|
|
46
|
+
### Fixed
|
|
47
|
+
|
|
48
|
+
- **`pow init` could not upgrade an existing project's simulator version.**
|
|
49
|
+
Choosing to update the project now opens the version picker instead of keeping
|
|
50
|
+
the old version. Explicit `--sim-version` changes are saved with the
|
|
51
|
+
corresponding simulator link and editor paths while preserving unrelated TOML
|
|
52
|
+
settings, profiles, and comments.
|
|
53
|
+
- **`pow sim check` accepted unsuccessful verdicts.** A `System checking result:`
|
|
54
|
+
line now succeeds only when its verdict is `PASSED`; failed or unrecognized
|
|
55
|
+
verdicts are errors, alongside missing results and nonzero process exits.
|
|
56
|
+
- **Docker inspection errors were treated as missing or incompatible images.**
|
|
57
|
+
Daemon and permission failures now report the underlying error without offering
|
|
58
|
+
a rebuild. Failed ROS builds stop initialization before custom-image building
|
|
59
|
+
and finalization.
|
|
60
|
+
- **`setup.py install is deprecated` warnings during colcon builds** — suppressed
|
|
61
|
+
in both automatic and manual builds inside the bundled ROS container
|
|
62
|
+
(requires rebuilding the image).
|
|
63
|
+
- `pow asset set` now suggests `pow asset unset` when the assets symlink already
|
|
64
|
+
exists, instead of telling the user to remove it manually.
|
|
65
|
+
|
|
66
|
+
### Removed
|
|
67
|
+
|
|
68
|
+
- **Isaac Sim 6.0.1 installation support.** Projects pinned to it must select
|
|
69
|
+
6.1.0 or 5.1.0 for initialization; an existing complete 6.0.1 installation can
|
|
70
|
+
still launch through `pow sim -v 6.0.1`.
|
|
71
|
+
- The mandatory `isaacsim` runtime dependency — installing and starting pow-cli
|
|
72
|
+
no longer requires a simulator package.
|
|
73
|
+
|
|
74
|
+
Automated coverage uses mocked simulator, GPU, network, and Docker operations.
|
|
75
|
+
Actual 6.1.0 checker output, GUI/headless launches, standalone Python, ROS topic
|
|
76
|
+
delivery, and DGX Spark workflows still require hardware validation.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## [0.3.0] - 2026-09-07
|
|
81
|
+
|
|
82
|
+
### Added
|
|
83
|
+
|
|
84
|
+
- **`pow lint` rule 4 — Isaac asset version mismatch.** Asset references pointing
|
|
85
|
+
at an `Assets/Isaac/<major>.<minor>` tree other than the one `[sim] version`
|
|
86
|
+
reads from are reported, and rewritten by `pow lint fix` (`version = "6.0.1"`
|
|
87
|
+
→ `Assets/Isaac/6.0`). NVIDIA keeps every release's asset tree online, so a
|
|
88
|
+
stage authored against 5.1 kept loading 5.1 assets after the project moved to
|
|
89
|
+
6.0.1 with nothing to show for it. The target version is derived from the
|
|
90
|
+
configured version rather than tabulated, applies to every reference form (S3
|
|
91
|
+
URLs, `pow-assets`/`user-home` aliases, relative paths), and is skipped when
|
|
92
|
+
`pow.toml` sets no version
|
|
93
|
+
|
|
94
|
+
- **Isaac Sim 6.0.1 support.** `pow init` step 4 now offers the installable
|
|
95
|
+
versions as an arrow-key picker — latest first, marking the latest release and
|
|
96
|
+
any already installed — or takes the version from the new `--sim-version`
|
|
97
|
+
flag, or from `[sim] version` in an existing `pow.toml` you chose to keep. The
|
|
98
|
+
picker falls back to a typed prompt when there is no terminal (piped stdin,
|
|
99
|
+
CI), so the command stays scriptable. Releases live in
|
|
100
|
+
`PowConfig.ISAACSIM_RELEASES`, which pins each version's download URL — 6.0.1
|
|
101
|
+
is served from `downloads.isaacsim.nvidia.com`, not the host used for 5.1.0 —
|
|
102
|
+
and the matching `IsaacSim-<version>` ROS workspace ref cloned during setup.
|
|
103
|
+
- `pow sim` / `pow sim check` default `-v` to the Isaac Sim version actually
|
|
104
|
+
installed under `.pow/isaacsim/` instead of a fixed constant.
|
|
105
|
+
- **`[sim] default_version` in `~/.pow/system.toml`** — pin the version `pow sim`
|
|
106
|
+
and `pow sim check` use when `-v` is omitted. Resolution order is `-v`, then
|
|
107
|
+
this key, then the newest version installed under `.pow/isaacsim/`; an empty
|
|
108
|
+
value means auto-detect. A pinned version that is not installed prints a
|
|
109
|
+
warning and falls back to the newest installed one. New `system.toml` files
|
|
110
|
+
are created with the key present and empty; existing files are left untouched
|
|
111
|
+
and read as unset.
|
|
112
|
+
- `pow sim --help` now lists the options bare `pow sim` accepts (`-v/--version`,
|
|
113
|
+
`--ros`, `--no-ros`), which previously showed up only under
|
|
114
|
+
`pow sim launch --help`.
|
|
115
|
+
- **`pow sim check`** — run the Isaac Sim compatibility check from the managed
|
|
116
|
+
installation (`.pow/isaacsim/<version>/isaac-sim.compatibility_check.sh`), with
|
|
117
|
+
`-v/--version` to pick the version. Needs no project and no extra pip
|
|
118
|
+
dependency; the script sets up its own ROS environment (forward
|
|
119
|
+
`-- --no-ros-env` to skip it). `pow sim` is now a command group whose default
|
|
120
|
+
subcommand is `launch` — bare `pow sim [args...]` still launches Isaac Sim and
|
|
121
|
+
forwards raw arguments exactly as before, and `pow sim launch` is the explicit
|
|
122
|
+
form
|
|
123
|
+
|
|
124
|
+
### Changed
|
|
125
|
+
|
|
126
|
+
- **`pow init` no longer replaces an existing `pow.toml`.** Choosing to update
|
|
127
|
+
the configuration used to overwrite the file with the bundled template, losing
|
|
128
|
+
custom `exts`, `raw_args`, `ros_bridge`, every `[[profiles]]` block and all
|
|
129
|
+
comments. It now patches only the three settings init asks about — `version`,
|
|
130
|
+
`enable_ros`, `isaacsim_ros_ws` — and leaves the rest of the document, key
|
|
131
|
+
order and comments included, exactly as written. Step 10 lists what changed
|
|
132
|
+
(`version: 5.1.0 → 6.0.1`), and says the file is already up to date when
|
|
133
|
+
nothing moved, in which case it is not rewritten at all. Keys the template has
|
|
134
|
+
and your file lacks are deliberately not back-filled. The step-2 prompt is
|
|
135
|
+
reworded from "override" to "Update settings in existing pow.toml?" to match.
|
|
136
|
+
- The `_isaacsim` symlink is re-pointed when `pow init` installs a different
|
|
137
|
+
version, instead of being left on the previous installation. A real directory
|
|
138
|
+
at `_isaacsim` is never deleted; it is reported as an error.
|
|
139
|
+
- `pow init` writes the selected `version` into the generated `pow.toml`.
|
|
140
|
+
- Isaac Sim's bundled ROS 2 libraries are located by probing
|
|
141
|
+
`exts/isaacsim.ros2.core/<distro>/lib` and then
|
|
142
|
+
`exts/isaacsim.ros2.bridge/<distro>/lib`, so ROS works on 6.0.1, which renamed
|
|
143
|
+
the extension.
|
|
144
|
+
|
|
145
|
+
### Security
|
|
146
|
+
|
|
147
|
+
- **ROS containers no longer disable X11 access control with `xhost +`.** When
|
|
148
|
+
`DISPLAY` is set, `pow ros` now copies only the current display's Xauthority
|
|
149
|
+
record into a private temporary file, mounts it read-only in the container,
|
|
150
|
+
and sets the container's `XAUTHORITY` to that file. The host's authority file
|
|
151
|
+
and X server access-control settings are left unchanged, and the temporary
|
|
152
|
+
credentials are removed when the Docker client exits. Headless launches skip
|
|
153
|
+
X11 setup; GUI launches fail with an actionable message when `xauth` or valid
|
|
154
|
+
display credentials are unavailable. Existing running containers must be
|
|
155
|
+
recreated to receive the new authentication mount.
|
|
156
|
+
- An Isaac Sim version can no longer escape `.pow/isaacsim/`: versions used as a
|
|
157
|
+
path component are validated, and download URLs are only ever read from the
|
|
158
|
+
release registry, never built from a supplied version string.
|
|
159
|
+
- Archive members are chmod-ed via the path `zipfile` actually wrote rather than
|
|
160
|
+
a recomputed one, so a crafted zip cannot change permissions outside the
|
|
161
|
+
install directory; setuid/setgid bits in the archive are dropped.
|
|
162
|
+
|
|
163
|
+
### Fixed
|
|
164
|
+
|
|
165
|
+
- A `pow.toml` that is not valid TOML is reported as
|
|
166
|
+
`pow.toml is not valid TOML: <parse error>` with a pointer to fix or delete it,
|
|
167
|
+
instead of a raw `tomllib` traceback. No command rewrites the file to make it
|
|
168
|
+
parse.
|
|
169
|
+
- An interrupted Isaac Sim download no longer leaves a truncated zip that the
|
|
170
|
+
next `pow init` mistakes for a complete archive: downloads land on a `.part`
|
|
171
|
+
file and are renamed only once finished.
|
|
172
|
+
- Execute permissions are restored before `post_install.sh` runs, so an archive
|
|
173
|
+
without Unix mode bits no longer fails the install.
|
|
174
|
+
- `pow asset` resolves the `.kit` file from the project's configured Isaac Sim
|
|
175
|
+
version instead of a hardcoded `5.1.0` path.
|
|
176
|
+
- **`pow sim check` could report nothing at all** — inside Isaac Sim's bundled
|
|
177
|
+
Python the check extension failed with `ModuleNotFoundError: No module named
|
|
178
|
+
'packaging'` (then `'setuptools'`) and never produced a verdict. The vendor
|
|
179
|
+
launcher `isaac-sim.compatibility_check.sh` never sources
|
|
180
|
+
`setup_python_env.sh`, so whether `packaging` was importable depended on kit's
|
|
181
|
+
extension load order. pow now puts the installation's own bundled module
|
|
182
|
+
directories on `PYTHONPATH` and no longer forwards the host `PYTHONPATH` (which
|
|
183
|
+
typically targets another Python version, the same reason the ROS bridge
|
|
184
|
+
environment strips it)
|
|
185
|
+
- **`pow sim check` exited 0 when the check produced no result** — Isaac Sim exits
|
|
186
|
+
0 even when the check app fails to start. The command now streams the output and
|
|
187
|
+
fails with a clear message if no `System checking result:` line appears; a
|
|
188
|
+
non-zero exit code from the check still takes priority
|
|
189
|
+
|
|
190
|
+
### Removed
|
|
191
|
+
|
|
192
|
+
- **`pow check`** — the standalone Isaac Sim compatibility check command has been
|
|
193
|
+
removed, replaced by `pow sim check` above. It ran the check through the pip
|
|
194
|
+
`isaacsim` entry point, so pow-cli no longer depends on the
|
|
195
|
+
`isaacsim[compatibility-check]` extra and `isaacsim-app` is no longer installed
|
|
196
|
+
as a transitive dependency
|
|
197
|
+
- The `packaging` and `setuptools` runtime dependencies, which existed only for
|
|
198
|
+
that pip-based check. `pow sim check` reads those modules from the Isaac Sim
|
|
199
|
+
installation instead
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## [0.2.0] - 2026-07-28
|
|
204
|
+
|
|
205
|
+
Stable release of the 0.2.0 line, promoted from `0.2.0-rc.2` with no functional
|
|
206
|
+
changes.
|
|
207
|
+
|
|
208
|
+
Everything new since `0.1.1` is listed in the two release candidate entries
|
|
209
|
+
below — headline items: the new `pow sim` and `pow ros build` commands, the
|
|
210
|
+
`ros_bridge` and `ros_docker_image` config keys, Jazzy-only ROS 2 support
|
|
211
|
+
(Humble removed), a faster `pow init` that no longer builds the ROS workspace,
|
|
212
|
+
and fixes for `rosdep install`, `cpu_performance_mode`, and `ros2` tab
|
|
213
|
+
completion inside the container.
|
|
214
|
+
|
|
215
|
+
---
|
|
216
|
+
|
|
217
|
+
## [0.2.0-rc.2] - 2026-07-28
|
|
218
|
+
|
|
219
|
+
### Added
|
|
220
|
+
|
|
221
|
+
- **`pow sim`** — run Isaac Sim from any directory, with no project required: no `pyproject.toml` check and `pow.toml` is never read. Launches the default version (`5.1.0`, override with `-v/--version`) and forwards raw arguments straight to `isaac-sim.sh` (`pow sim -- --no-window`). The ROS 2 bridge environment is loaded by default (`--ros jazzy`); pass `--no-ros` to launch with the inherited environment instead
|
|
222
|
+
- **`pow ros build`** — build the custom image from `ros_dockerfile` without re-running `pow init`; builds the `pow_simros_jazzy` base image first if it is missing, and supports `--no-cache`. `pow ros` is now a command group (bare `pow ros [args...]` usage is unchanged; `pow ros launch` is the explicit form)
|
|
223
|
+
- **`ros_bridge` config in `pow.toml`** — choose which Isaac Sim internal ROS 2 bridge libs to load (`jazzy` or `humble`, default `jazzy`), i.e. which `exts/isaacsim.ros2.bridge/<distro>/lib` is added to `LD_LIBRARY_PATH` when `enable_ros = true`. Overridable per profile. Previously the bridge was inferred from the host Ubuntu version with no way to override it; an unsupported value is now rejected with a clear error
|
|
224
|
+
- **Tab completion for the `pow init` ROS workspace path** — step 6's "Path to clone IsaacSim-ros_workspaces" prompt now completes filesystem paths on <kbd>Tab</kbd> like a shell: unique directories complete inline (no stray trailing space, so the next segment can be typed straight away), ambiguous prefixes list candidates, and `~` is kept in the stored path. Trailing separators and whitespace are trimmed before the value is written to `pow.toml`
|
|
225
|
+
|
|
226
|
+
### Changed
|
|
227
|
+
|
|
228
|
+
- **Breaking (vs 0.2.0-rc.1):** the `ros_container_name` config key was renamed to `ros_docker_image`. The container name is no longer configured directly — it is derived from the image name (`/` and `:` replaced with `_`), so default setups now get a container named `pow_simros_jazzy` instead of `pow_simros`
|
|
229
|
+
- **Breaking (vs 0.2.0-rc.1):** ROS 2 Humble support was removed — the ROS workspace and docker integration now support Jazzy only (`Dockerfile.simros_humble` deleted). Isaac Sim itself still runs on Ubuntu 22.04 and 24.04; Jazzy workspaces build on both
|
|
230
|
+
- **`pow init` no longer builds the Isaac Sim ROS workspace.** Step 6 only clones `IsaacSim-ros_workspaces`; the ROS 2 bridge comes from Isaac Sim's own prebuilt libs (selected by `ros_bridge`), so init is much faster and no longer runs a Docker build for the workspace. It reports the bridge distro in use instead of a build result
|
|
231
|
+
- `pow init` no longer creates the `scripts/`, `.assets/`, and `standalone/` project folders (only `exts/`, `.modules/`, `usda/`). A manually created `scripts/` folder is still mounted into the ROS container when present
|
|
232
|
+
- The `pow_simros_jazzy` image now resolves workspace dependencies with `rosdep install` at build time instead of building the workspace, and source-only packages (`topic_based_ros2_control`) are staged in `/opt/pow/extra_src` and copied into `/jazzy_ws/src` at container start, so the runtime volume mount no longer shadows them
|
|
233
|
+
|
|
234
|
+
### Fixed
|
|
235
|
+
|
|
236
|
+
- **`rosdep install` failed inside the Jazzy container** — three causes, all fixed (requires rebuilding the image): the Ubuntu 24.04 base image's stock `ubuntu` user took UID 1000 and collided with the mapped host user, so `HOME` pointed at `/home/ubuntu` while the host `~/.ros` was mounted at `/home/hostuser/.ros`; the per-user rosdep cache was empty because `rosdep update` had run as root at build time, giving "your rosdep installation has not been initialized"; and `ros-jazzy-ros-testing` was missing from the image
|
|
237
|
+
- **`cpu_performance_mode` asked for the sudo password on every launch** — `pow run` / `pow python` now read the current CPU governor from `/sys/devices/system/cpu/cpu*/cpufreq/scaling_governor` first and run no `sudo` at all when it is already `performance`, so the password is normally needed once instead of every launch. When sudo credentials are still cached the governor is set without the "requires sudo" notice, and hosts without `cpupower` or without cpufreq support now report and skip rather than prompting for a password to no purpose. The interactive prompt itself is unchanged when the governor really has to be switched
|
|
238
|
+
- **`ros2` tab completion inside the `pow_simros` container** — the entrypoint sourced ROS before exec'ing bash, which carried environment variables but not bash completion functions. Interactive shells now re-source `/opt/ros/jazzy/setup.bash` and the workspace overlay via `/etc/bash.bashrc`, so `ros2` / `colcon` autocomplete works without manually sourcing `setup.bash` (requires rebuilding the image)
|
|
239
|
+
|
|
240
|
+
---
|
|
241
|
+
|
|
242
|
+
## [0.2.0-rc.1] - 2026-06-14
|
|
243
|
+
|
|
244
|
+
### Added
|
|
245
|
+
|
|
246
|
+
- **Custom ROS Dockerfile (`pow init`)**
|
|
247
|
+
- New `ros_dockerfile` config in `pow.toml` — point to a project-local Dockerfile that layers on top of the bundled `pow_simros_<distro>` base image
|
|
248
|
+
- New `ros_container_name` config in `pow.toml` — set a custom container/image name (defaults to `pow_simros`)
|
|
249
|
+
- `pow init` now builds the custom image automatically after the base image when `ros_dockerfile` is set
|
|
250
|
+
- `pow ros` launches the custom image when configured, otherwise falls back to the base image
|
|
251
|
+
- **Version flag (`pow --version` / `pow -v`)** — quickly check the installed `pow-cli` version from the command line
|
|
252
|
+
|
|
253
|
+
### Changed
|
|
254
|
+
|
|
255
|
+
- Updated CLI description to *"Manage Isaac Sim projects and simplify the development workflow"*
|
|
256
|
+
- Renamed status messages from *"Isaac ROS workspace"* to *"Isaac Sim ROS workspace"* for clarity
|
|
257
|
+
- Container name is now read from `ros_container_name` config instead of being hard-coded
|
|
258
|
+
|
|
259
|
+
---
|
|
260
|
+
|
|
261
|
+
## [0.1.1] - 2026-06-14
|
|
262
|
+
|
|
263
|
+
### Fixed
|
|
264
|
+
|
|
265
|
+
- **ROS Docker container: `colcon build` fails for new packages** — The container
|
|
266
|
+
entrypoint now detects stale build artifacts (left from a host-path build) and
|
|
267
|
+
cleans `build/`, `install/`, and `log/` automatically before rebuilding.
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
## [0.1.0] - 2026-06-05
|
|
272
|
+
|
|
273
|
+
First stable release of `pow-cli`, promoted from `0.1.0-rc.1` with documentation improvements.
|
|
274
|
+
|
|
275
|
+
|
|
276
|
+
### Fixed
|
|
277
|
+
|
|
278
|
+
- Installation guide referenced incorrect `pow-cli` version
|
|
279
|
+
|
|
280
|
+
### Changed
|
|
281
|
+
|
|
282
|
+
- Improved README wording, tagline, and Profiles section
|
|
283
|
+
|
|
284
|
+
---
|
|
285
|
+
|
|
286
|
+
## [0.1.0-rc.1] - 2026-05-11
|
|
287
|
+
|
|
288
|
+
### Added
|
|
289
|
+
|
|
290
|
+
- **Asset Management (`pow asset`)**
|
|
291
|
+
- `pow asset list` — list available Isaac Sim & Omniverse assets
|
|
292
|
+
- `pow asset add` — download and register assets into the local asset folder (only support `isaacsim_5_1_0` for now)
|
|
293
|
+
- `pow asset set / unset` — set/unset target local asset folder
|
|
294
|
+
- `pow asset info` — display current local asset folder information
|
|
295
|
+
- **Linter (`pow lint`)**
|
|
296
|
+
- New `pow lint` and `pow lint --fix` commands for `.usda` files
|
|
297
|
+
- Detects absolute/relative local asset paths and rewrites them with correct aliases or asset urls (`user-home`, `pow-assets`)
|
|
298
|
+
- Rule for validating `simros_ws` relative paths
|
|
299
|
+
- **ROS Integration (`pow ros`)**
|
|
300
|
+
- `pow ros` command to build, launch, and attach to ROS 2 Docker containers
|
|
301
|
+
- Verbose mode (`--verbose`) for runtime diagnostics
|
|
302
|
+
- Separate Dockerfiles for ROS Humble and Jazzy distributions
|
|
303
|
+
- Project `scripts/` directory mounted into the container
|
|
304
|
+
- PyTorch with CUDA support available inside the container
|
|
305
|
+
- `isaacsim_ros_ws` working directory configurable in `pow.toml`
|
|
306
|
+
- **Runner Improvements**
|
|
307
|
+
- (experimental) `pow run --open <file>` option to open a USD stage on launch
|
|
308
|
+
- Non-existent `ext_folders` entries are now silently skipped instead of auto-created
|
|
309
|
+
- **Other**
|
|
310
|
+
- `pow python` command with `--profile` flag for running standalone app under specified version of Isaac Sim's Python
|
|
311
|
+
- `user-home` aliases automatically configured during `pow init`
|
|
312
|
+
- `usda/` folder added to default project structure
|
|
313
|
+
- `extends` support in `pow.toml` for profile-based configuration
|
|
314
|
+
|
|
315
|
+
### Fixed
|
|
316
|
+
|
|
317
|
+
- ROS Jazzy container build failure on Ubuntu 24.04
|
|
318
|
+
- CUDA version pinned to 12.1 for deterministic ROS builds
|
|
319
|
+
- `.ros` / `.ros2` mount and permission issues in the SimROS container
|
|
320
|
+
- SimROS entrypoint no longer warns when host-user directory already exists
|
|
321
|
+
- `pow run` no longer calls `open_stage` when no path is provided
|
|
322
|
+
- `pow asset unset` no longer accidentally removes `user-home` alias
|
|
323
|
+
- Duplicate and deprecated keys in generated `.vscode/settings.json`
|
|
324
|
+
- `pow init` now respects existing `isaacsim_ros_ws` value in existing `pow.toml`
|
|
325
|
+
- `pow ros` correctly attaches to an already-running container
|
|
326
|
+
|
|
327
|
+
### Changed
|
|
328
|
+
|
|
329
|
+
- Rewrite and refactor all core functionality of pow-cli
|
|
330
|
+
- Move commands under group `pow sim` to root `pow` command instead
|
|
331
|
+
- Remove pow-foxglove from repository
|
|
332
|
+
- ROS-related logic extracted into dedicated `ros_manager.py` module
|
|
333
|
+
- CLI and core layers refactored for clearer separation of concerns
|
|
334
|
+
|
|
335
|
+
## [0.1.0a3] - 2026-01-27
|
|
336
|
+
|
|
337
|
+
### Fixed
|
|
338
|
+
|
|
339
|
+
- Fixed incorrect Ubuntu base Docker image version in `pow sim init` ROS workspace setup. Now correctly uses Ubuntu 22.04 for ROS Humble and Ubuntu 24.04 for ROS Jazzy (previously hardcoded to 22.04 for both).
|
|
340
|
+
|
|
341
|
+
## [0.1.0a2] - 2025-12-25
|
|
342
|
+
|
|
343
|
+
### Fixed
|
|
344
|
+
|
|
345
|
+
- `pow sim init` now allows overwriting existing VS Code settings to resolve Pylance `reportMissingImports` errors for Isaac Sim packages.
|
|
346
|
+
- Fixed an issue where the `ros_enable` flag did not correctly disable ROS workspace sourcing when set to `false` in an existing `pow.toml`.
|
|
347
|
+
|
|
348
|
+
## [0.1.0a1] - 2025-12-23
|
|
349
|
+
|
|
350
|
+
### Added
|
|
351
|
+
|
|
352
|
+
- Initial alpha release of Isaac Powerpack CLI (`pow`)
|
|
353
|
+
- **Core CLI Structure**
|
|
354
|
+
- Main entry point with Click-based command group architecture
|
|
355
|
+
- Hierarchical command organization under `pow sim` namespace
|
|
356
|
+
|
|
357
|
+
- **Simulation Commands (`pow sim`)**
|
|
358
|
+
- `pow sim run` - Run Isaac Sim applications with automatic environment setup
|
|
359
|
+
- Auto-discovery of project root via `pow.toml` configuration
|
|
360
|
+
- ROS 2 workspace sourcing support
|
|
361
|
+
- Isaac Sim setup file sourcing
|
|
362
|
+
- Configurable app path and extension loading
|
|
363
|
+
- `pow sim init` - Initialize Isaac Sim development environment
|
|
364
|
+
- VS Code settings generation for Isaac Sim development
|
|
365
|
+
- Asset browser cache fix utility
|
|
366
|
+
- Project configuration scaffolding
|
|
367
|
+
- `pow sim check` - Run Isaac Sim compatibility checker
|
|
368
|
+
- Validates system compatibility with Isaac Sim requirements
|
|
369
|
+
- `pow sim info` - Display Isaac Sim configuration information
|
|
370
|
+
- Show local assets path configuration (`-l, --local-assets` flag)
|
|
371
|
+
|
|
372
|
+
- **Resource Management (`pow sim add`)**
|
|
373
|
+
- `pow sim add local-assets` - Configure local Isaac Sim assets
|
|
374
|
+
- Updates `isaacsim.exp.base.kit` with local asset paths
|
|
375
|
+
- Configures asset browser and content browser folders
|
|
376
|
+
- Supports versioned asset directories
|
|
377
|
+
|
|
378
|
+
### Dependencies
|
|
379
|
+
|
|
380
|
+
- `click>=8.1.7` - Command line interface framework
|
|
381
|
+
- `toml>=0.10.2` - TOML configuration file parsing
|
|
382
|
+
- Python 3.10+ required
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
2
|
Name: pow-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.0
|
|
4
4
|
Summary: Command line interface for Isaac Powerpack
|
|
5
5
|
Author: Titiwat Munintravong, Isaac Powerpack Contributors
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -10,10 +10,8 @@ Requires-Python: >=3.10
|
|
|
10
10
|
Requires-Dist: aiohttp>=3.11.11
|
|
11
11
|
Requires-Dist: click>=8.1.7
|
|
12
12
|
Requires-Dist: distro>=1.9.0
|
|
13
|
-
Requires-Dist: isaacsim[compatibility-check]>=5.1.0.0
|
|
14
|
-
Requires-Dist: packaging>=26.0
|
|
15
13
|
Requires-Dist: rich
|
|
16
|
-
Requires-Dist:
|
|
14
|
+
Requires-Dist: tomli>=2; python_version < '3.11'
|
|
17
15
|
Requires-Dist: tomlkit>=0.14.0
|
|
18
16
|
Description-Content-Type: text/markdown
|
|
19
17
|
|