Conversation
fd7d906 to
54b05bf
Compare
menhguin
pushed a commit
to menhguin/lerobot
that referenced
this pull request
Feb 9, 2025
…_fix_tests Fix env tests
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.