Today
scripts/setup-displayxr.{sh,bat} --with-demos only clones each displayxr-demo-* repo into ./demos/<name>/. It does not install. That was intentional in #283 because demo builds were API-specific and pre-#284 most demos didn't have a one-line installer to run.
What changed
Demos with .exe / .pkg releases now exist — displayxr-demo-gaussiansplat v1.3.1 ships DisplayXRGaussianSplatSetup-1.3.1.exe today, and the meta-installer scope from #284 will pin one or more demos into the bundle. For those demos, the orchestrator could trivially gh release download + start /wait "" $exe /S exactly like it does for runtime / shell / leia / mcp — that table of (repo, exe-glob, marker-key) is already the right shape.
Why this matters now
On a fresh dev box doing setup-displayxr.bat --with-demos:
- Today: clones to
./demos/displayxr-demo-gaussiansplat/, but the shell launcher shows no Gaussian Splat tile and the demo isn't usable. The contributor has to find the .exe on the demo's release page and double-click it separately — not a one-command setup.
- With this change: every pinned demo with a release asset is installed silently in the same pass as the runtime/shell/leia/mcp components. The shell launcher's manifest scan picks them up on next launch.
Proposed shape
versions.json: already has demos: { gaussiansplat: "v1.3.1" }. Reuse as-is.
scripts/lib/components.sh: add COMPONENT_REPO_demo_<name> / COMPONENT_EXE_demo_<name> entries for each demo with a release. Asset glob is the per-demo DisplayXR<Demo>Setup-*.exe.
scripts/setup-displayxr.bat + .sh: when --with-demos is set (or a new dedicated --install-demos flag), iterate versions.json's demos map and call the existing install_component subroutine for each. Same elevation / asset-attached / marker-check semantics — zero new code path.
- Backwards compat: keep the existing
gh repo clone behavior either as a separate --with-demo-sources flag or as a sibling of --install-demos. Contributors building from source still want the clone.
Coordination with #284
This is probably the wrong place for it long-term — once #284's displayxr-installer meta-installer ships, end users will get the demos via the bundle, not via the dev orchestrator. The orchestrator is dev-facing.
But the orchestrator is also a dev's only one-command path until #284 lands, and #284 doesn't have an ETA. Two ways to think about it:
I'd weakly recommend (A) if #284 is more than ~1 month out; (B) if it's imminent.
Why this is filed against the runtime repo
The orchestrator lives in displayxr-runtime/scripts/. Filing here keeps the implementation discussion next to the code. Linked to #284 since the user-facing bundle work supersedes this in the long run.
Surfaced by
Tail-of-the-week e2e test on #291. After setup-displayxr.bat --with mcp the shell launcher had no Gauss tile until I separately ran the demo installer. See DisplayXR/displayxr-demo-gaussiansplat#10 for the related demo-side uninstaller fragility found in the same trace.
Linked: #284
Today
scripts/setup-displayxr.{sh,bat} --with-demosonly clones eachdisplayxr-demo-*repo into./demos/<name>/. It does not install. That was intentional in #283 because demo builds were API-specific and pre-#284 most demos didn't have a one-line installer to run.What changed
Demos with
.exe/.pkgreleases now exist —displayxr-demo-gaussiansplatv1.3.1 shipsDisplayXRGaussianSplatSetup-1.3.1.exetoday, and the meta-installer scope from #284 will pin one or more demos into the bundle. For those demos, the orchestrator could triviallygh release download+start /wait "" $exe /Sexactly like it does for runtime / shell / leia / mcp — that table of(repo, exe-glob, marker-key)is already the right shape.Why this matters now
On a fresh dev box doing
setup-displayxr.bat --with-demos:./demos/displayxr-demo-gaussiansplat/, but the shell launcher shows no Gaussian Splat tile and the demo isn't usable. The contributor has to find the.exeon the demo's release page and double-click it separately — not a one-command setup.Proposed shape
versions.json: already hasdemos: { gaussiansplat: "v1.3.1" }. Reuse as-is.scripts/lib/components.sh: addCOMPONENT_REPO_demo_<name>/COMPONENT_EXE_demo_<name>entries for each demo with a release. Asset glob is the per-demoDisplayXR<Demo>Setup-*.exe.scripts/setup-displayxr.bat+.sh: when--with-demosis set (or a new dedicated--install-demosflag), iterateversions.json'sdemosmap and call the existinginstall_componentsubroutine for each. Same elevation / asset-attached / marker-check semantics — zero new code path.gh repo clonebehavior either as a separate--with-demo-sourcesflag or as a sibling of--install-demos. Contributors building from source still want the clone.Coordination with #284
This is probably the wrong place for it long-term — once #284's
displayxr-installermeta-installer ships, end users will get the demos via the bundle, not via the dev orchestrator. The orchestrator is dev-facing.But the orchestrator is also a dev's only one-command path until #284 lands, and #284 doesn't have an ETA. Two ways to think about it:
I'd weakly recommend (A) if #284 is more than ~1 month out; (B) if it's imminent.
Why this is filed against the runtime repo
The orchestrator lives in
displayxr-runtime/scripts/. Filing here keeps the implementation discussion next to the code. Linked to #284 since the user-facing bundle work supersedes this in the long run.Surfaced by
Tail-of-the-week e2e test on #291. After
setup-displayxr.bat --with mcpthe shell launcher had no Gauss tile until I separately ran the demo installer. See DisplayXR/displayxr-demo-gaussiansplat#10 for the related demo-side uninstaller fragility found in the same trace.Linked: #284