Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@
# Video assets are tracked by default.
*.mp4 filter=lfs diff=lfs merge=lfs -text

# Audio assets are tracked by default.
*.wav filter=lfs diff=lfs merge=lfs -text
*.mp3 filter=lfs diff=lfs merge=lfs -text

#
# Exceptions for small source SVGs (webpack-inlined; not binary assets).
deps/cloudxr/webxr_client/src/icons/*.svg -filter -diff -merge text
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,10 @@ Our [documentation page](https://nvidia.github.io/IsaacCapture) provides everyth
- [Quick installation steps](https://nvidia.github.io/IsaacCapture/main/getting_started/quick_start.html)
- [How to build from source](https://nvidia.github.io/IsaacCapture/main/getting_started/build_from_source.html)

### Check a Device Integration

The CTS records one scripted take from a hand-tracking device and checks it against the data a retargeter needs; start with the [hand guide](src/python/isaaccapture/cts/hand/README.md).


### Install & Run Isaac Lab

Expand Down
11 changes: 10 additions & 1 deletion docs/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,9 @@ Images follow `.gitattributes` like everything else, Git LFS included. A checkou
LFS holds pointer text and Sphinx copies it into the site verbatim, so a page that looks
right locally can still ship broken artwork. Commit artwork together with the page or data
that references it. Stage new artwork with a plain `git add` before running pre-commit:
`git add -N` bypasses the LFS filter, and `check-lfs-pointers` rejects the raw blob.
`git add -N` bypasses the LFS filter, and `check-lfs-pointers` rejects the raw blob. A clone
whose hooks pre-commit installed has no LFS pre-push hook, so GitHub declines a push that
adds artwork; run `git lfs push origin <branch>` first.

## Device pages stand alone

Expand Down Expand Up @@ -103,6 +105,13 @@ device page documents it, links belong in the Details panel, and the sentence it
dropped. The build keeps `company` that narrow by rejecting every field but `name`, `logo`,
and `logo_dark`.

## Conformance pages name no device maker

`source/conformance/` and its media are vendor-neutral: no glove, suit or tracker company
or product appears in prose, cards, commands, take names or plugin names, because a named
example reads as an endorsement. Use a fictional device (Glove X with `glove_x_plugin`) and
say it is a placeholder. Headsets (PICO, Quest) are the exception: every take runs on one.

## Removing cache overrides

Keep cache-removal documentation focused on migration impact. Omit asset-fetch
Expand Down
35 changes: 35 additions & 0 deletions docs/source/_ext/breakable_literals.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
# SPDX-License-Identifier: Apache-2.0

"""Let long dotted or underscored names in HTML literals wrap after ``.`` and ``_``."""

from __future__ import annotations

import re

from docutils import nodes

BREAKABLE = re.compile(r"[A-Za-z0-9_.]{24,}")
AFTER_SEPARATOR = re.compile(r"(?<=[._])")


# The search index reads the doctree, so the breaks are added only when writing HTML.
def _visit_literal(self, node: nodes.literal) -> None:
type(self).visit_literal(self, node)
text = node.astext()
if len(node.children) != 1 or not isinstance(node[0], nodes.Text):
return
if not BREAKABLE.fullmatch(text):
return
parts = [part for part in AFTER_SEPARATOR.split(text) if part]
for index, part in enumerate(parts):
if index:
self.body.append("<wbr>")
self.visit_Text(nodes.Text(part))
type(self).depart_literal(self, node)
raise nodes.SkipNode


def setup(app):
app.add_node(nodes.literal, override=True, html=(_visit_literal, None))
return {"version": "1.0", "parallel_read_safe": True, "parallel_write_safe": True}
3 changes: 3 additions & 0 deletions docs/source/_static/cts/hand-checker-panel.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions docs/source/_static/cts/hand-pacing.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions docs/source/_static/cts/hand/01-flat_on_table_open.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions docs/source/_static/cts/hand/02-fist.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions docs/source/_static/cts/hand/03-pinch_index.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions docs/source/_static/cts/hand/04-pinch_middle.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions docs/source/_static/cts/hand/05-pinch_ring.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions docs/source/_static/cts/hand/06-pinch_little.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions docs/source/_static/cts/hand/07-palms_together.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions docs/source/_static/cts/hand/08-tips_together.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions docs/source/_static/cts/hand/09-right_tip_roll.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions docs/source/_static/cts/hand/10-left_tip_roll.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions docs/source/_static/cts/hand/11-flat_on_table_close.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions docs/source/_static/cts/verdicts.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@ def _pip_pin(ref_name, fallback):
"sphinx_multiversion",
"sphinx_design",
"ecosystem_grid",
"breakable_literals",
]

exclude_patterns = ["build", "_templates", "_data", "_ext", "Thumbs.db", ".DS_Store"]
Expand Down
3 changes: 3 additions & 0 deletions docs/source/conformance/hand-rehearsal.mp3
Git LFS file not shown
Loading
Loading