Skip to content

Fix env tests#10

Merged
aliberts merged 3 commits intomainfrom
user/rcadene/2024_03_06_fix_tests
Mar 8, 2024
Merged

Fix env tests#10
aliberts merged 3 commits intomainfrom
user/rcadene/2024_03_06_fix_tests

Conversation

@Cadene
Copy link
Copy Markdown
Contributor

@Cadene Cadene commented Mar 6, 2024

No description provided.

@Cadene Cadene requested a review from aliberts March 6, 2024 13:55
@aliberts aliberts added the CI label Mar 7, 2024
@aliberts aliberts force-pushed the user/rcadene/2024_03_06_fix_tests branch from fd7d906 to 54b05bf Compare March 7, 2024 14:59
Copy link
Copy Markdown
Contributor

@aliberts aliberts left a comment

Choose a reason for hiding this comment

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

LGTM

@aliberts aliberts merged commit 4cc7e15 into main Mar 8, 2024
@aliberts aliberts deleted the user/rcadene/2024_03_06_fix_tests branch March 9, 2024 15:07
menhguin pushed a commit to menhguin/lerobot that referenced this pull request Feb 9, 2025
Kalcy-U referenced this pull request in Kalcy-U/lerobot May 13, 2025
Dev-Jahn added a commit to IISLAB-VLA/lerobot that referenced this pull request Apr 14, 2026
- lib/api/streams.ts: typed client for the /api/streams/*
  endpoints shipped in feaa8ef / da7028d (offer, ice, stop,
  quality, stats, keyframe). 503 surfaces as
  StreamingUnavailableError so the UI can show a dedicated toast
  instead of a generic error.
- hooks/useWebRTCStream.ts: negotiates a recvonly video session,
  trickles ICE candidates via POST /ice, binds the inbound track
  to a stable MediaStream, and exposes phase / error / restart
  so video tiles re-render only when state actually changes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Dev-Jahn added a commit to IISLAB-VLA/lerobot that referenced this pull request Apr 14, 2026
- components/streaming/VideoTile.tsx: memoised tile that binds the
  MediaStream to <video>.srcObject via ref (no React-owned src),
  shows negotiating / error / offline overlays, and requests a
  keyframe on visibilitychange.
- components/streaming/{layouts.ts,LayoutSwitcher.tsx}:
  Single / Horizontal split / Vertical split / Grid / Spotlight
  with per-layout minTiles gating.
- components/streaming/StreamLayout.tsx: renders the same keyed
  set of VideoTiles across every layout so sessions persist
  across layout changes.
- routes/RobotDetail.tsx: new page at /robots/:id, resolves the
  robot's cameras, polls /status every 2s, offers a
  pause/resume-streams toggle, and activates tiles only when the
  robot is online.
- App.tsx: split nested routes — /robots (grid) and /robots/:id
  (detail).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Dev-Jahn added a commit to IISLAB-VLA/lerobot that referenced this pull request Apr 14, 2026
Dev-Jahn added a commit to IISLAB-VLA/lerobot that referenced this pull request Apr 14, 2026
…(task huggingface#10)

frontend-architect-3 needs a single-request stats snapshot for the
VideoTile grid — N open sessions should not become N HTTP requests per
second. This adds a batch endpoint alongside the existing per-session
route.

- SignalingManager.stats_many(session_ids | None) snapshots the manager
  dict under the lock, then awaits getStats() outside the lock so
  sessions are queried in parallel. Sessions that close between the
  snapshot and the call (or whose pc already tore down) are silently
  dropped — the UI treats absence as "unsubscribe this tile".
- GET /api/streams/stats ?session_ids=sid1,sid2 returns
  {"sessions": [{"session_id", "entries"}, ...]}. Omitted or empty
  filter means "all active sessions". Response uses the same per-session
  StatsResponse shape so the frontend needs one parser.

3 new tests: all-sessions, filtered allowlist (including an unknown sid
that is softly omitted), and the empty-string compat path. Route
declaration order puts the batch path above /{sid}/stats so FastAPI
matches the static prefix first.
Dev-Jahn added a commit to IISLAB-VLA/lerobot that referenced this pull request Apr 14, 2026
…task huggingface#19)

Part of task huggingface#10 follow-up (huggingface#19).

useWebRTCStream:
- On pc.connectionState in {failed, disconnected}, or on a non-503
  error from the signaling handshake, schedule a reconnect with
  exponential backoff (1s -> 2s -> 4s ... capped at 30s).
- Expose reconnectAttempt + nextReconnectAt so tiles can surface a
  live "auto-retry in Ns" countdown without owning their own timer.
- Reset the backoff attempt on every 'connected' transition and on
  user-initiated restart().

useStreamStageShortcuts (new hook):
- Window-level keydown handler, skipped while an editable element
  is focused or a modifier is held.
- 1..5 cycle through Single / Horizontal split / Vertical split /
  Grid / Spotlight, gated by each layout's minTiles.
- F toggles native Fullscreen API on the streaming stage element.
- Esc exits fullscreen (no-op if not in fullscreen).

RobotDetail: passes a ref to the <section> wrapping the stream
layout and renders a small "1..5 / F / Esc" hint when the robot
is online.

VideoTile: surfaces the reconnect countdown inside the error
overlay and swaps "Retry" for "Retry now" since auto-retry is
already scheduled.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Dev-Jahn added a commit to IISLAB-VLA/lerobot that referenced this pull request Apr 14, 2026
Dev-Jahn added a commit to IISLAB-VLA/lerobot that referenced this pull request Apr 14, 2026
pkooij added a commit that referenced this pull request May 6, 2026
…ests

* **#2 — dedupe `_PLACEHOLDER_RE`.** The same regex was compiled in
  `recipe.py` and `language_render.py`. Promote to module-level
  `PLACEHOLDER_RE` in `recipe.py` (its primary owner — declares
  template syntax) and import from `language_render.py`.
* **#3 — centralize language column names.** `io_utils.py` had
  hardcoded `{"language_persistent", "language_events"}` literals at
  two sites. Replace with `LANGUAGE_COLUMNS` import so a future column
  rename can't silently desync.
* **#4 — defensive collate preserved-keys.** `lerobot_collate_fn`
  silently filtered language fields from samples that didn't have
  them, which would hand downstream consumers a preserved list
  shorter than the tensor batch. Now: if any sample carries a key,
  every sample in the batch must carry it; otherwise raise a
  `ValueError` so the upstream rendering bug surfaces at the boundary.
* **#5 — `_scalar` rejects non-singleton lists.** Previously a zero-
  or multi-element list fell through and triggered confusing
  `float([])` errors downstream. Now raises `ValueError` with the
  actual length.
* **#6 — refactor `_extract_complementary_data`.** Replace 11 lines
  of `key = {... if ... else {}}` plus an 11-line splat dict with a
  single `_COMPLEMENTARY_KEYS` tuple iterated once.
* **#7 — document `EXTENDED_STYLES`.** Was an empty `set()` with no
  comment. Add a docstring explaining it's an intentional extension
  point: downstream modules append project-local styles before
  `column_for_style` is called.
* **#9 — `tools.mdx` notes the runtime layer is future work.** The
  page referenced `src/lerobot/tools/`, `registry.py`, and
  `get_tools(meta)` — none exist in this PR. Added a callout at the
  start of "How to add your own tool" plus a note on the
  implementations paragraph.
* **#10 — tests for YAML round-trip, malformed rows, blend
  validation.** `test_recipe.py` grew from 1 case to 12 covering:
  blend-or-messages exclusivity, target-turn requirement, blend
  emptiness, weight presence/positivity, nested-blend rejection,
  `from_dict` with nested blends, `from_yaml` / `load_recipe`
  agreement, top-level non-mapping rejection. Added a malformed-row
  test for `_normalize_rows` that asserts non-dict entries raise
  `TypeError`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants