Skip to content

Improved NVIDIA support out-of-the-box and other fixes#8

Merged
ppswaroopa merged 10 commits into
mainfrom
enhance-repeat
Apr 11, 2026
Merged

Improved NVIDIA support out-of-the-box and other fixes#8
ppswaroopa merged 10 commits into
mainfrom
enhance-repeat

Conversation

@ppswaroopa
Copy link
Copy Markdown
Owner

This PR introduces improved support for NVIDIA graphics cards out-of-the-box and fixes inconsistencies and other issues as listed in the CHANGELOG. Closes #4

This PR also moves the version to v1.2.0

Added

  • Modern NVIDIA Container Support: Support for runtime: nvidia in generated docker-compose.yml and the __GLX_VENDOR_LIBRARY_NAME=nvidia environment variable to ensure correct GPU offloading and OpenGL vendor selection.
  • Enhanced Hybrid GPU Support: Native support for Intel/NVIDIA hybrid laptops via mandatory /dev/dri volume mounts for Linux hosts and explicit installation of libgl1, libglvnd-dev, and libegl1 for vendor-neutral GL dispatch.
  • Intelligent Choice Relationships: Variant selections like desktop-full now automatically imply required packages (rviz2, gazebo/gz_sim), and GUI packages automatically enable x11 display forwarding.
  • Core Engine Upgrades: New resolve_config() method in both Python and JS core modules to handle automatic dependency resolution and OS-specific scaffolding.
  • Output-shape regression tests in tests/test_output_shape.py to verify repo-root workspace mounts, shell config generation, NVIDIA compose behavior, and README/package consistency.
  • Web bundle regression tests in tests/test_web_bundle.py to verify the website zip export contains the expected files and preserves byte-identical generated content.
  • Readiness checks in CI/validate.sh for writable default workspaces, colcon mixin list, and Oh My Zsh ownership in generated non-root containers.
  • CI workflow coverage for the new readiness invariants, including mounted default workspace validation and source-change triggers for heavier generator test jobs.
  • A lightweight zip bundler for the web UI and a local scripts/run_act.sh helper for reproducible sequential act runs without introducing third-party JS dependencies.

Changed

  • Modernized GPU acceleration logic in docker-compose.yml to prefer the runtime: nvidia directive over the legacy deploy: resources block for broader compatibility outside of Swarm.
  • Updated generated README with specific troubleshooting guidance and caveats for users on hybrid GPU laptop hardware (e.g., prime-select nvidia hints).
  • Generated docker-compose.yml now mounts the current directory into the configured ROS workspace by default instead of creating a nested ./ros2_ws bind mount.
  • Generated Dockerfiles now install Oh My Zsh in the selected user's home after switching to that user, while keeping Zsh as a normal optional tool selection.
  • Generated shell bootstrap now writes ROS/environment setup into .bashrc when bashrc is selected and into .zshrc when zsh is selected.
  • The CLI wizard now preselects propagated package and tool defaults for presets such as desktop-full, matching the web UI instead of only applying those implications at final generation time.
  • Generated README content now reflects the repo-root workspace workflow, includes clearer NVIDIA host/runtime guidance, and documents the new local act runner behavior.
  • CLI/web generation and CI helpers now consistently use the standard non-root user mode and current host UID mapping for dev-container readiness.
  • Shared defaults now drive Web, CLI, and CI generation consistently, including the default ros2-<distro> container name and default tool selection set.
  • TensorRT now behaves like a real selectable package and emits install steps from the NVIDIA CUDA image package repositories instead of acting as a placeholder selection.
  • The web UI now exports a real zip bundle containing Dockerfile, docker-compose.yml, and README.md, and local act runs now execute jobs sequentially with matrix fan-out capped to keep disk usage manageable.

Fixed

  • Resolved generated non-root dev environments depending on Docker auto-creating a writable workspace directory with the correct ownership.
  • Resolved generated Zsh environments installing Oh My Zsh under /root instead of the selected non-root user.
  • Removed misleading generated SSH port documentation when host networking is enabled and Docker would discard published ports.
  • Resolved website download bundles requiring manual renaming of Dockerfile before the generated compose setup could build.
  • Resolved generated Gazebo environments missing the ROS plugin library path, which could prevent Gazebo from launching until GAZEBO_PLUGIN_PATH was exported manually.

@ppswaroopa ppswaroopa self-assigned this Apr 11, 2026
@ppswaroopa ppswaroopa added bug Something isn't working enhancement New feature or request labels Apr 11, 2026
Copy link
Copy Markdown
Owner Author

@ppswaroopa ppswaroopa left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK

@ppswaroopa ppswaroopa merged commit 552e5c5 into main Apr 11, 2026
21 checks passed
@ppswaroopa ppswaroopa deleted the enhance-repeat branch April 14, 2026 16:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Terminal version should have replacing behavior

1 participant