Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
fef2e2c
feat(cts): conformance test suite for hand and full-body device integ…
ivany-nv Oct 10, 2026
0178310
cts: fail setup when the generated schema differs from the repo golden
ivany-nv Oct 10, 2026
e6051f6
cts: store takes under ~/isaaccapture-cts
ivany-nv Oct 11, 2026
5582a14
cts/hand: package a take for submission from the panel
ivany-nv Oct 11, 2026
1cc7d4d
cts: use a neutral device name in the archive examples
ivany-nv Oct 11, 2026
9388009
cts: count uncommitted cts_common changes in the archive's dirty flag
ivany-nv Oct 11, 2026
3b3a5b4
cts: record without audio when aplay is missing; exit 4 when a check …
ivany-nv Oct 15, 2026
6514a0a
docs(cts): add a Device Conformance section for device integrators
ivany-nv Oct 11, 2026
8916ef3
docs(cts): submit through the form, make audio optional, rework hand …
ivany-nv Oct 11, 2026
0e23d82
docs(cts): follow the new capture root and the hand package button
ivany-nv Oct 11, 2026
c9fa5eb
docs(cts): name no device maker in the conformance pages
ivany-nv Oct 11, 2026
8313835
docs(cts): match the pages to the hand package button and fill gaps
ivany-nv Oct 11, 2026
dddc53b
docs: push LFS objects before a branch that adds artwork
ivany-nv Oct 11, 2026
2e5de95
docs(cts): exit status 4, and record without audio when aplay is missing
ivany-nv Oct 15, 2026
0cbc869
cts: fixes from review of the conformance docs
ivany-nv Oct 16, 2026
c581226
docs(cts): fixes from review of the conformance pages
ivany-nv Oct 16, 2026
9835374
docs(cts): list Device Conformance under Devices, after Add a New Device
ivany-nv Oct 16, 2026
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 or full-body device and checks it against the data a retargeter needs; start with the [hand](src/python/isaaccapture/cts/hand/README.md) or [full-body](src/python/isaaccapture/cts/full_body/README.md) guide.


### Install & Run Isaac Lab

Expand Down
12 changes: 11 additions & 1 deletion docs/AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,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 @@ -96,6 +98,14 @@ 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`,
Suit X with `body.suit-x`) 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/full-body-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/full-body-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/full_body/01-a_pose_still.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/full_body/02-t_pose_hold_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/full_body/03-neutral_stance.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/full_body/04-left_arm_raise.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/full_body/05-right_arm_raise.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/full_body/06-left_leg_raise.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/full_body/07-right_leg_raise.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/full_body/08-squat_x2.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/full_body/09-march_in_place.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/full_body/10-t_pose_hold_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/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
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
Loading
Loading