[Docs] Update environments page and commands builder - #7160
Conversation
Greptile SummaryThe PR expands the environments page to cover core and contributed tasks and adds richer command, preview, and benchmark interfaces.
Confidence Score: 3/5The PR should not merge until the builder stops generating malformed commands for tasks without RL libraries and uses the actual published-checkpoint workflow. Newly selectable contributed tasks can produce a value-less Files Needing Attention: docs/source/_static/css/environment-browser.js and tools/environ_docs.py Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart LR
Registry[Gym task registry] --> Generator[Environment docs generator]
Curated[Curated environment tables] --> Generator
Generator --> Rows[Generated browser task rows]
CSV[Benchmark CSV] --> Browser[Environment browser]
Rows --> Browser
Browser --> Command[Generated Isaac Lab command]
Browser --> Preview[Image or video preview]
Browser --> Chart[Performance and VRAM views]
Reviews (1): Last reviewed commit: "Update docs commands builder" | Re-trigger Greptile |
| for (const extra of extras) { | ||
| parts.push("--extra", extra); | ||
| } | ||
| parts.push("isaaclab", state.mode, "--rl_library", fields.rl.value, "--task", state.task); |
| if (fields.checkpoint.checked) { | ||
| parts.push("--checkpoint", "pretrained"); |
There was a problem hiding this comment.
There was a problem hiding this comment.
Isaac Lab Review Bot
The expanded environment browser has four concrete issues to address before publication: prototype-duplicated benchmark rows are presented as historical measurements, CSS display declarations can defeat hidden-state toggling, RL-less contributed tasks generate invalid commands, and filtering removes the selected-task highlight.
- Design and architecture: The generator-to-JavaScript task-row contract remains backward-compatible through optional fields and destructuring defaults. However, the benchmark pipeline does not distinguish
duplicated_for_prototyperows from measured results, causing synthetic copies to be plotted and described as performance history. Non-measured rows should be removed, filtered, or clearly represented as synthetic. - API: The optional
preview_imagesargument and defaultedagent_preset_compatibilityfield preserve existing Python callers. The user-facing command-builder contract is not valid for newly included tasks with no RL library: it emits--rl_librarywithout a value, so those tasks must either omit that option or be excluded from train/play command generation. - Implementation: Preview and benchmark elements rely on the HTML
hiddenattribute, but new author-leveldisplaydeclarations can keep the media and benchmark toolbar visible; explicit[hidden]rules are needed. Task-list rebuilding after search or category changes also omits theis-selectedclass, so the current selection loses its visual highlight. Benchmark rendering additionally needs to account fordata_originrather than charting prototype duplicates as measured history.
Minor fixes needed. Posted 4 actionable findings inline.
Automated review; human maintainers own approval decisions.
| @@ -0,0 +1,113 @@ | |||
| benchmark_date_utc,data_origin,recorded_at_utc,task,workload,rl_library,physics_backend,rendering_backend,num_envs,seed,measured_iterations,total_fps_mean,total_fps_std,total_fps_peak,vram_mean_gb,vram_std_gb,vram_peak_gb,gpu_util_mean_pct,gpu_util_std_pct,gpu_name,gpu_memory_total_gb,cpu_name,physical_cpu_count,ram_total_gb,cuda_bindings_version,nvidia_driver_version,git_commit | |||
| 2026-07-28,duplicated_for_prototype,2026-08-19T01:17:37.920242Z,Isaac-Ant,runtime,,newton_kamino,none,4096,42,1000,123800.01,7610.95,139664.34,5.69,0.05,5.82,86.67,21.65,NVIDIA RTX PRO 6000 Blackwell Workstation Edition,94.96,AMD Ryzen Threadripper PRO 7965WX 24-Cores,48,62.30,12.9.7,580.159.03,a384e2f55c5847ca9c0eeeef0c91d0e258bc864e | |||
There was a problem hiding this comment.
🟡 Warning · Design Architecture — Prototype rows charted as measured history
Three of the four benchmark dates are marked data_origin=duplicated_for_prototype and are verbatim copies of the single measured run. updateBenchmark filters only on task and workload, so these synthetic points are drawn and tooltipped like real measurements, publishing an invented performance history. Ship only measured rows, or filter/label non-measured origins in the chart.
|
|
||
| .environment-preview-stage img { | ||
| .environment-preview-stage img, | ||
| .environment-preview-stage video { |
There was a problem hiding this comment.
🟡 Warning · Implementation — display rules defeat hidden attribute
Author display: block on .environment-preview-stage img, video (and display: flex on .environment-benchmark-toolbar) overrides the user-agent [hidden] { display: none } rule, so previewImage.hidden/previewVideo.hidden and toolbar.hidden = true have no effect: the empty video renders on load beside the image, and the legend/workload switch stays visible for tasks without data. Add [hidden] overrides as done for .environment-benchmark-stub.
| for (const extra of extras) { | ||
| parts.push("--extra", extra); | ||
| } | ||
| parts.push("isaaclab", state.mode, "--rl_library", fields.rl.value, "--task", state.task); |
There was a problem hiding this comment.
🟡 Warning · Implementation — Empty --rl_library for RL-less tasks
Many newly listed contributed tasks (e.g. IsaacContrib-ExhaustPipe-GR1T2-Pink-IK-Abs, IsaacContrib-Stack-Cube-Franka) have an empty RL list, so populateSelect yields an empty value and the command becomes ... isaaclab train --rl_library --task ..., which argparse rejects. Previously every listed task had an RL library. Skip the flag when no library is available, or exclude these tasks from the train/play builder.
| taskCount.textContent = `${visibleTasks.length} ${visibleTasks.length === 1 ? "task" : "tasks"}`; | ||
| taskEmpty.hidden = visibleTasks.length !== 0; | ||
| taskList.hidden = visibleTasks.length === 0; | ||
| }; |
There was a problem hiding this comment.
🔵 Suggestion · Implementation — Filtering drops selected-task highlight
updateSelection() moved out of renderTasks into initializeTasks, but the rebuilt rows only set aria-pressed, never the is-selected class the CSS styles. After any search keystroke or category change the currently selected task loses its highlight even though the command builder still targets it. Apply the class when creating each row, or call updateSelection() after re-rendering.
Description
Important
Confirm the pull request base before submitting. Target
developfor allcontributions. The
release/3.0.0-beta2branch is a frozen stable landingsnapshot and is not used for ongoing maintenance.
Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context.
List any dependencies that are required for this change.
Fixes # (issue)
Type of change
Screenshots
Please attach before and after screenshots of the change if applicable.
Checklist
pre-commitchecks with./isaaclab.sh --formatsource/<pkg>/changelog.d/for every touched package (do not editCHANGELOG.rstor bumpextension.toml— CI handles that)CONTRIBUTORS.mdor my name already exists there