Repository navigation
docs: redirect moved pages to their new location - #1348
Conversation
Each "This page has moved" stub now carries a meta refresh to the page it links to, so old URLs land on the new page without a click. The redirect lives in the stub rather than conf.py because every version is built with main's conf.py, and release branches still serve the original pages. Signed-off-by: Ivan Yang <yifanyang@nvidia.com>
|
No actionable comments were generated in the recent review.
|
|
✅ Preview deployed: https://NVIDIA.github.io/IsaacCapture/preview/pr-1348/ Built from commit 06017c9. It may take a minute for the updated preview to appear. |
Package the teleoperation examples with their configuration assets and update plugin discovery for the nested layout. Part of #985. Signed-off-by: Jiwen Cai <jiwenc@nvidia.com> [Ivan Yang: rebased onto main past the guide reorganization, which moved getting_started/quick_start.rst and getting_started/teleop_session.rst, and #1290, which moved device/trackers.rst; #1348 turned the stubs they left into redirects. The stubs keep main's text; the same path edits are applied to teleop/quick_start.rst, teleop/teleop_session.rst and device/trackers/index.rst. joint_space.rst keeps main's text (the URDF note) with only the path and commands reapplied. The pyproject.toml modify/delete conflict keeps main's glfw dependency in the new root pyproject.toml. The modules main added since (_example_loop.py and the gamepad, keyboard and SpaceMouse examples) move into the package unchanged.] Signed-off-by: Ivan Yang <yifanyang@nvidia.com>
* examples(oxr): package under isaaccapture_examples Package the OpenXR examples while preserving the GPU test runner paths and plugin discovery. Part of #985. Signed-off-by: Jiwen Cai <jiwenc@nvidia.com> [Ivan Yang: rebased onto main past #1348, which moved body_tracking.rst, oak.rst and trackers.rst into subdirectories and left redirect stubs. The stubs keep main's text; the same path edits are applied to body_tracking/index.rst, cameras/oak.rst and trackers/index.rst. python/README.md is deleted as in the original; the prerequisites link that #1361 added to it is already in examples/oxr/README.md.] Signed-off-by: Ivan Yang <yifanyang@nvidia.com> * examples(oxr): move the CloudXR GPU test scripts to tests/ The test_*.py scripts are CI checks, not example code, so they move to tests/python/xr_runtime/ instead of shipping in the example package. The package keeps modular_example and modular_example_with_mcap. - deps/cloudxr/Dockerfile.test copies tests/python/xr_runtime/ to /app/tests, so run_tests_with_cloudxr.sh lists the scripts by bare name again and the image's default command still finds test_extensions.py. - The synthetic-hands, hand-inactive and OAK scripts find plugins through install_tree.plugins_dir(): the nearest install/plugins above the script, which is <checkout>/install/plugins or /app/install/plugins in the test image. They are no longer installed beside install/plugins. - Docs and the OAK plugin README link the scripts at their new path. - The example depends on isaaccapture[cloudxr], which both modules import for CloudXRLauncher, and no longer on numpy, which none imports. Its README lists the two modules and says to install isaaccapture first. - tests/AGENTS.md says what the directory is and who runs it. Signed-off-by: Ivan Yang <yifanyang@nvidia.com> * examples(oxr): fix run instructions, plugin lookup and output paths - README: the Python modules attach to or start CloudXR through CloudXRLauncher, which overwrites XR_RUNTIME_JSON, so the export is gone from both Python blocks. The README says how to stop the service, what --accept-eula does and how to use another runtime. The C++ blocks source ~/.cloudxr/run/cloudxr.env, as references/cloudxr.rst says, instead of exporting a file name the runtime never writes. - README: install isaaccapture as Build from source step 4 does, pinned to X.Y+local with --reinstall-package, into a venv made with the build's Python. CI runs only the scripts listed in run_tests_with_cloudxr.sh, and the README says so and how to run one by hand. - install_tree.plugins_dir() stops at the checkout root (VERSION plus CMakeLists.txt) or the test image's /app instead of walking to /, so a nested worktree no longer picks up another checkout's plugins. The three plugin scripts take --plugin-root for any other install prefix. - modular_example_with_mcap and test_oak_camera write their MCAP under ./recordings/, which the root .gitignore covers, and create it. - modular_example_with_mcap's docstring names McapRecordingConfig, not parameters DeviceIOSession.run() no longer takes. - The OAK page and plugin README call test_oak_camera.py a test script and give its run line; tests/AGENTS.md uses a repo-root path. Signed-off-by: Ivan Yang <yifanyang@nvidia.com> * examples(oxr): complete the system-runtime and OAK run instructions - references/cloudxr.rst: a system runtime also needs ISAAC_TELEOP_DISABLE_CXR_ENV_CHECKS, or OpenXRSession refuses to start without NV_CXR_RUNTIME_DIR. The oxr README links that section instead of restating half of it. - oxr README: the C++ examples start the service with --accept-eula, as references/cloudxr.rst does. - OAK page and plugin README: test_oak_camera.py loads the plugin from install/plugins, so it needs a full build and install, not only the camera_plugin_oak target, and isaaccapture in the active environment. - --plugin-root and --mode help use %(default)s, so --mode shows its real default and a '%' in the checkout path no longer breaks --help. - .gitignore describes what lands in /recordings/ instead of listing it; test_oak_camera's docstring says the MCAP goes under the current directory. Signed-off-by: Ivan Yang <yifanyang@nvidia.com> --------- Signed-off-by: Jiwen Cai <jiwenc@nvidia.com> Signed-off-by: Ivan Yang <yifanyang@nvidia.com> Co-authored-by: Jiwen Cai <jiwenc@nvidia.com>
* examples(teleop): package under isaaccapture_examples Package the teleoperation examples with their configuration assets and update plugin discovery for the nested layout. Part of #985. Signed-off-by: Jiwen Cai <jiwenc@nvidia.com> [Ivan Yang: rebased onto main past the guide reorganization, which moved getting_started/quick_start.rst and getting_started/teleop_session.rst, and #1290, which moved device/trackers.rst; #1348 turned the stubs they left into redirects. The stubs keep main's text; the same path edits are applied to teleop/quick_start.rst, teleop/teleop_session.rst and device/trackers/index.rst. joint_space.rst keeps main's text (the URDF note) with only the path and commands reapplied. The pyproject.toml modify/delete conflict keeps main's glfw dependency in the new root pyproject.toml. The modules main added since (_example_loop.py and the gamepad, keyboard and SpaceMouse examples) move into the package unchanged.] Signed-off-by: Ivan Yang <yifanyang@nvidia.com> * examples(teleop): fix what the package move left behind - Import _example_loop relatively in the two examples that share it. - Declare the cloudxr extra: every module starts CloudXR through CloudXRLauncher. The bimanual examples' ImGui tuning window comes from the example's optional ui extra and is imported only under --enable-tuning: imgui 2.0.0 does not build on Python 3.13, so a base dependency would break every example's install there. - Remove examples/teleop/CMakeLists.txt. examples/CMakeLists.txt never adds it, so nothing installs teleop; the plugin-dir comments say the repo root has no plugins/ directory instead of naming an install path. - joint_space_device_example's default --plugin-bin tries build/, then install/plugins, then PATH, as oglo_tactile's does, so a wheel install still finds a built plugin. - Add a README that lists the modules and the command that runs them. - Docs: the commands and paths main added since the original commit (Quick Start --duration, teleop_session, CloudXR --no-launch-cloudxr-runtime, gamepad, SpaceMouse), the Quick Start and CloudXR install steps, runnable module names in the Quick Start's list of other examples, and the retargeting page's directory link. - Tests import the examples through isaaccapture_examples.teleop. Part of #985. Signed-off-by: Ivan Yang <yifanyang@nvidia.com> * examples(teleop): name both install paths; fail fast without ui - The README and the Teleop Session page say how to install isaaccapture from a source build as well as from the package index. - dex_bimanual_example and full_bimanual_reordering_example check for the ui extra right after parsing arguments, so --enable-tuning without it exits with the install command before the retargeters load and CloudXR starts. - The README says imgui 2.0.0 has wheels only for Python 3.11: 3.12 builds it from source with a C++ toolchain, and 3.13 cannot build it. Part of #985. Signed-off-by: Ivan Yang <yifanyang@nvidia.com> --------- Signed-off-by: Ivan Yang <yifanyang@nvidia.com> Co-authored-by: Jiwen Cai <jiwenc@nvidia.com>
Description
Old docs URLs from the restructure land on a "This page has moved to …" stub, and the reader has to click through. For example:
main/getting_started/lerobot/index.html→main/integrations/lerobot/index.htmlmain/references/egocentric_hand_reconstruction.html→main/ego_post_processing/egohand.htmlThis adds a meta refresh to each of the 34 stubs on
main, pointing at the page the stub already links to, so the browser goes straight there:Sphinx emits this as
<meta http-equiv="refresh">in<head>. No JavaScript is involved, matching the docs' no-JS rule and the existing rootdocs/index.htmlredirect. The visible "has moved" link stays as the fallback.The redirect is in each stub rather than in
conf.py(e.g.sphinx-reredirects), because every version is built withmain'sconf.pyand release branches still serve the original pages at these paths.Not covered: a few pages deleted earlier without a stub are still served stale from gh-pages (
keep_files: true), e.g.device/index.html,references/device.html,references/retargeting.html. They need a target chosen per page, so they are left for a follow-up.Type of change
Testing
make current-docs(sphinx-build -W --keep-going) succeeds with no warnings.<head>; each target exists, matches the stub's visible link, and is not itself a redirect (no chains)./IsaacCapture/main/and opened each of the 34 old URLs in a browser: every one landed on the expected page.Checklist
SKIP=check-copyright-year pre-commit run --all-filesgit commit -s) per the DCOSummary by CodeRabbit