Skip to content

fix: ten more small fixes from release testing - #5186

Merged
paul-nechifor merged 11 commits into
mainfrom
paul/fix/release-tickets-group2
Nov 11, 2026
Merged

paul-nechifor merged 11 commits into
mainfrom
paul/fix/release-tickets-group2

Conversation

@paul-nechifor

Copy link
Copy Markdown
Contributor

Why do we need this?

Ten small bugs found during release testing.

  • With rerun-open web the Rerun bridge opens a browser tab and never logs its URL. The bare http://localhost:9878 shows a viewer with no data, so a closed tab cannot be reopened.
  • The first run of an arm blueprint clones the robot's description repository (62 MB for the xArm) without a log line. The terminal is silent for 11 seconds and the run looks hung.
  • get_data extracts tar archives without a filter argument. Python 3.12 prints a DeprecationWarning for that and Python 3.14 changes the default.
  • PointLio logs odom_freq: 30.0 and publishes odometry at 10 Hz. The setting is an upper limit. Point-LIO puts out one pose per lidar scan.
  • Arms without collision meshes, such as the dual OpenYAM, log the Viser warning "Cannot set .show_collision, since no collision meshes were loaded" at startup.
  • go2-sim-nav prints the zenoh warning "Gossip is disabled" 12 times on a clean start. The blueprint turns gossip off on purpose.
  • unitree-g1-groot-wbc starts with two Rerun warnings, "Dropping chunk without components".
  • The native modules doc reads as if Cachix holds every nix build. The two native module examples are not in the cache.
  • nix prints "stdenv.isLinux is deprecated" on every bin/native-modules run.
  • bin/install-test-clis prints npm "EBADENGINE Unsupported engine" warnings on a host whose Node is not 24. It reads like a broken install.

What is this feature?

  • The bridge logs the full URL when it serves the web viewer.
  • The clone logs the repository, the ref and the cache path before it starts, and the duration when it ends. The M20 asset fetch and the data repository clone of an installed package were silent too and log the same way.
  • Added filter="data". All 123 archives in data/.lfs pass it.
  • The config and its --help text now say that odom_freq and pointcloud_freq are upper limits.
  • For such an arm the viewer draws a second copy of the visual meshes in place of the collision meshes. It no longer sets the collision flag on that copy.
  • The zenoh log filter hides that one warning. Python sessions, native modules and the Rust recorder share the filter.
  • The static URDF logger no longer logs two empty transforms.
  • The doc now says that the cache holds the modules in the dimos package and that the examples compile on their first run.
  • Both flakes use stdenv.hostPlatform. The C++ builds still print an isDarwin warning. It comes from the external lcm_extended flake.
  • npm warnings are off while the script installs its private Node 24. That Node runs the CLIs, so the check against the host Node means nothing.

How to manually run this

Which issue(s) does this PR close?

Fixes

Checklist

  • I have read and approved the CLA.

With `rerun-open web` the bridge opened a browser tab and logged only the
gRPC address. Rerun prints the page URL at a log level its SDK hides. The
bare `http://localhost:9878` shows a viewer with no data, so a closed tab
could not be reopened from the log.

The bridge now logs the full URL, `?url=` query included, whenever it
serves the web viewer.
The first run of an arm blueprint cloned its description repository
(62 MB for the xArm) without a log line, so the terminal sat silent and
the run looked hung on a slow network.

`GitAssetCache` now logs the repository, the ref and the cache path before
it clones, and the duration after. The M20's sparse fetch and the data
repository clone of an installed package were silent in the same way and
log the same two lines.
PointLio logs `odom_freq: 30.0` and publishes odometry at 10 Hz. The
estimator puts out one pose per lidar scan, 10 Hz with the Mid-360 driver,
and `odom_freq` only skips poses that come faster than it. A value above
the scan rate changes nothing. A value of 5 gives 5 Hz.

The config comment, the `--help` text of both fields and the `--odom-freq`
help of `pcap_to_db.py` now say so. The help of `pcap_to_db.py` called it
the odometry rate.
Arms whose URDF has no collision meshes logged "Cannot set
`.show_collision`, since no collision meshes were loaded" at startup and
on every display mode change. For such an arm the scene draws a second
copy of the visual meshes as a stand-in. That copy loads no collision
meshes, and the scene still set its `show_collision` flag.

The scene no longer touches that flag. The single-arm OpenYAM model has
collision meshes since #4980. `dual-openyam-planner-coordinator` still
showed the warning.
`get_data` called `tar.extractall` without a filter. Python 3.12 warns
about that on every extraction, and Python 3.14 changes the default.

The call now passes `filter="data"`, so the behaviour is the same on every
Python version and unsafe members (absolute paths, links out of the tree,
device files) are refused. All 123 archives under `data/.lfs` pass the
filter. The one visible change is that extracted files lose their group
write bit.
…ssip off

`go2-sim-nav` and the M20 sim turn zenoh gossip off on purpose. Zenoh then
warns "Gossip is disabled: cannot de-duplicate data traversing region
gateways" once per session. A clean `go2-sim-nav` start printed it 12
times: 4 from the native modules and 8 from the Python sessions.

The log filter that Python sessions and native modules share now raises
`zenoh::net::routing::hat::peer` to error. That warning is the only one
the target has in zenoh 1.10.1. The experimental Rust recorder printed the
warning too, so it takes the same filter.
`unitree-g1-groot-wbc` started with two Rerun warnings, "Dropping chunk
without components" for `/world/odom/g1` and `/world/odom/g1/pelvis`. The
static URDF logger put a `Transform3D()` with no fields on the robot root
and on the base link. Rerun has nothing to store for those and drops them.

The two entries are gone. The recording holds the same entities as before.
Alfred uses the same logger and loses the warnings too.
The "Faster builds via the Cachix substituter" section read as if every
nix-built native module came from the cache. CI publishes the modules in
the `dimos` package, the ones `bin/native-modules --build` builds. The two
example outputs under `examples/native-modules` are not in the cache, so a
machine without them compiles the examples on their first run.

The section now says so.
Newer nixpkgs warns "stdenv.isLinux is deprecated, use
stdenv.hostPlatform.isLinux instead" at evaluation. The depth2depth_cloud
flake printed it on every `bin/native-modules` run. The root flake uses the
same attributes 36 times and would start to warn at its next nixpkgs bump.

Both flakes now use the `hostPlatform` form. The root dev shell evaluates to
the same derivation as before on x86_64-linux, aarch64-linux and
aarch64-darwin. The depth2depth_cloud derivation differs only in its
source, which holds the flake.

The "stdenv.isDarwin" warning of the C++ builds stays. It comes from the
external `lcm_extended` flake.
Under a host node that is not 24, `npm install` warned "EBADENGINE
Unsupported engine" for dimcode, which wants Node 24. It read like a broken
install. npm checks engines against the node that runs it, but the script
installs a private Node 24 in that same run and that one runs the CLIs.

npm cannot silence that warning alone, so the script passes
`--loglevel=error` when it installs the private Node. Errors still show.
With a host Node 24, as in CI, nothing changes.
@greptile-apps

greptile-apps Bot commented Nov 11, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerView in GreptileConfidence Score: 4/5

[Medium impact] The PR reaches several startup, visualization, data-loading, and build workflows.

Fix Python compatibility in archive extraction before merging.

Findings

  1. P1 Older Python cannot unpack data ▶

Summary

Ten release-testing fixes improve startup messages, reduce expected warnings, and clarify configuration and build docs.

  • The Rerun bridge logs a link that reopens the viewer with its data source.
  • Asset downloads show what they are fetching and how long they take.
  • Zenoh sessions and recorders hide the repeated disabled-gossip warning.
  • Viser keeps the visual-mesh fallback without setting a missing collision flag.
  • Point-LIO help explains that its frequency settings are upper limits.
  • Data archives use Python’s data extraction filter.
  • Static Rerun robot output skips empty placeholder transforms.
  • Nix platform checks follow the target machine’s platform.
  • The CLI installer hides engine warnings when it adds a private Node 24.
  • The native-module guide separates cached package modules from examples.

Reviews (1) · Last reviewed commit: "fix(build): install-test-clis prints no ..." · Reviewed by Greptile

Comment thread dimos/utils/data.py Resolved

@github-actions github-actions Bot left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

go2 replay realtime (arm64)

Details
Benchmark suite Current: 37af1e6 Previous: 1916f35 Ratio
peak memory 1740.793 MB 1740.68 MB 1.00
peak threads 374 threads 377 threads 0.99
network (transport) 2728.328 MB 2730.983 MB 1.00
disk write 1.832 MB 1.586 MB 1.16
instructions 138.773 G 138.613 G 1.00

This comment was automatically generated by workflow using github-action-benchmark.

@codecov

codecov Bot commented Nov 11, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 96.58120% with 4 lines in your changes missing coverage. Please review.
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
...n/visualization/viser/test_visualizer_lifecycle.py 86.36% 2 Missing and 1 partial ⚠️
dimos/visualization/rerun/bridge.py 75.00% 1 Missing ⚠️
@@            Coverage Diff             @@
##             main    #5186      +/-   ##
==========================================
- Coverage   83.73%   83.64%   -0.09%     
==========================================
  Files        1864     1867       +3     
  Lines      181729   183001    +1272     
  Branches    14967    15165     +198     
==========================================
+ Hits       152168   153075     +907     
- Misses      25585    25959     +374     
+ Partials     3976     3967       -9     
Components Coverage Δ
Tests 96.30% <96.66%> (-0.36%) ⬇️
Flag Coverage Δ
OS-macos-latest 78.04% <96.58%> (+0.09%) ⬆️
OS-ubuntu-24.04-arm 77.77% <73.50%> (+0.06%) ⬆️
OS-ubuntu-latest 78.18% <96.58%> (+0.09%) ⬆️
Py-3.10 78.17% <96.58%> (+0.09%) ⬆️
Py-3.11 78.15% <96.58%> (+0.09%) ⬆️
Py-3.12 78.16% <96.58%> (+0.09%) ⬆️
SelfHosted-Linux 40.75% <32.47%> (-0.03%) ⬇️
SelfHosted-macOS 40.47% <32.47%> (-0.03%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Files with missing lines Coverage Δ
dimos/core/test_native_module.py 98.09% <100.00%> (ø)
dimos/experimental/memory/rust_cli_recorder.py 90.37% <100.00%> (+3.88%) ⬆️
dimos/hardware/sensors/lidar/pointlio/module.py 98.80% <100.00%> (ø)
dimos/manipulation/visualization/viser/scene.py 66.94% <ø> (+3.32%) ⬆️
dimos/protocol/service/zenohservice.py 94.50% <100.00%> (+1.00%) ⬆️
dimos/robot/assets/git_cache.py 93.00% <100.00%> (+3.63%) ⬆️
dimos/robot/assets/test_git_cache.py 100.00% <100.00%> (ø)
dimos/robot/deeprobotics/m20/assets/description.py 85.24% <100.00%> (+3.42%) ⬆️
dimos/utils/data.py 86.23% <100.00%> (+1.58%) ⬆️
dimos/utils/test_data.py 98.88% <100.00%> (+2.03%) ⬆️
... and 5 more

... and 26 files with indirect coverage changes

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions github-actions Bot added the ready-to-merge Required CI checks have passed on this PR label Nov 11, 2026
@github-actions github-actions Bot removed the ready-to-merge Required CI checks have passed on this PR label Nov 11, 2026
@paul-nechifor
paul-nechifor enabled auto-merge (squash) November 11, 2026 10:00
@github-actions github-actions Bot added the ready-to-merge Required CI checks have passed on this PR label Nov 11, 2026
@paul-nechifor
paul-nechifor merged commit 442d694 into main Nov 11, 2026
80 of 83 checks passed
@paul-nechifor
paul-nechifor deleted the paul/fix/release-tickets-group2 branch November 11, 2026 10:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-to-merge Required CI checks have passed on this PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants