Spaces:
Running
Running
Commit History
-
Fix null stats crash in demo (cpu_temp null without vcgencmd)
PanGalactic +1: Claude Opus 4.6vcgencmd is Pi-specific; Docker returns cpu_temp=null. The JS null check used === undefined (misses null), so null.toFixed() threw on every WS message, killing the entire handleLiveData() including the working psutil stats. Changed to == null to catch both. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>daaf3d5 -
Fix demo: use latest reachy-mini, skip media in DEMO_MODE
PanGalactic +1: Claude Opus 4.6- Switch back to latest reachy-mini (1.3.1) — the Zenoh pub_status error was a race condition from double-starting the daemon, not a version bug. The startup script already avoids double-start. - Add DEMO_MODE env var to Dockerfile + app.py check: when set, request_media_backend="no_media" skips camera/audio init that fails in headless containers (UDP camera stream not available). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>28ffbae -
Pin reachy-mini to 1.2.x (1.3.1 has Zenoh pub_status regression)
PanGalactic +1: Claude Opus 4.61.3.1 ZenohServer missing pub_status attribute causes daemon crash, app TimeoutError on get_status(), and all API routes 404. Also remove redundant daemon wake-up call from startup script — --sim mode auto-wakes (wake_up_on_start=True), and the double initialization was triggering the Zenoh crash. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>f671471 -
Add --headless flag to daemon (no X11 display in container)
PanGalactic +1: Claude Opus 4.6GLFW viewer requires X11 DISPLAY, which doesn't exist in Docker. The --headless flag skips viewer initialization. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>ac07f8f -
Add libportaudio2 for sounddevice (daemon audio init)
PanGalactic +1: Claude Opus 4.6The daemon's MujocoBackend initializes audio via sounddevice even in sim mode, which requires the PortAudio library at import time. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>70a08e7 -
Add libglib2.0-0 for OpenCV runtime (libgthread dependency)
PanGalactic +1: Claude Opus 4.6Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>c4bb373 -
Add gcc to Dockerfile.demo for webrtcvad C extension build
PanGalactic +1: Claude Opus 4.6The webrtcvad package requires GCC to compile its C extension. python:3.12-slim doesn't include build tools. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>b10c190 -
Fix Dockerfile.demo: replace libgl1-mesa-glx with libgl1
PanGalactic +1: Claude Opus 4.6Package libgl1-mesa-glx was removed in Debian Trixie. The libgl1 meta-package provides the needed GL shared libs. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>79d54bf -
Fix README.demo.md colorTo: cyan → blue (HF validation)
PanGalactic +1: Claude Opus 4.6Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>9dbe41b -
Add HuggingFace Spaces live demo infrastructure
PanGalactic +1: Claude Opus 4.6Docker-based demo that runs the full dashboard with reachy-mini-daemon in simulation mode. Supervisor manages daemon + app lifecycle. Includes graceful fallbacks for missing hardware (GStreamer, Bluetooth) so the app runs cleanly in containers without audio/BT hardware. New files: Dockerfile.demo, supervisord.demo.conf, demo-start.sh, README.demo.md, .dockerignore Modified: audio_output.py (GStreamer availability check), bluetooth.py (bluetoothctl availability check), index.html (Try Live Demo button) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>78b0f5a -
Add Continuity Camera and chrome://flags sections to landing page
PanGalactic +1: Claude Opus 4.6Show multi-camera support (iPhone, FaceTime, robot camera) with screenshot of the source selector dropdown, plus a setup guide for the chrome://flags insecure-origin flag required for WebRTC camera access over HTTP. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>1e98f5f -
Hero: double title size, nicer docs button, remove badge
PanGalactic +1: Claude Opus 4.6Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>e0fa9d6 -
Add prominent docs button to hero section
PanGalactic +1: Claude Opus 4.6Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>6dc3634 -
Add docs link to landing page footer
PanGalactic +1: Claude Opus 4.6Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>82a4fb0 -
Replace landing page with detailed feature showcase
PanGalactic +1: Claude Opus 4.622 annotated screenshots, demo video walkthrough, full feature descriptions for all dashboard tabs. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>981199c -
Shorten short_description to fit HuggingFace 60-char limit
PanGalactic +1: Claude Opus 4.6Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>b59fd08 -
Update branding: Hello World — One App to Rule Them All
PanGalactic +1: Claude Opus 4.6Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>e6533f6 -
Add head telemetry, joystick, scratchpad cards + new tagline
PanGalactic +1: Claude Opus 4.6- Tagline: "One app to rule them all" - Added head-telemetry.png showing roll/pitch/yaw charts + joystick - Added scratchpad-diagrams.png showing AI-generated Mermaid diagrams - Gallery now 8 cards (2 wide + 6 regular) covering all major features Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>9d0e2f4 -
Redesign landing page: eliminate repetition, halve the code
PanGalactic +1: Claude Opus 4.6- Hero: punchy "One app. Full robot." headline + stats, no feature list - Gallery: 6 curated cards (down from 11), using fresh video frames - Removed architecture section entirely (pipeline, WebSocket grid) - Added vision-pose.png (YOLO pose estimation with 3 cameras) - Added scene-3d.png (procedural 3D environment) - CSS: 308 lines (down from 653), removed ~20 unused class families - HTML: 108 lines (down from 256) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>a7799e2 -
Fix TTS timing: broadcast text to UI before speaking
PanGalactic +1: Claude Opus 4.6Text now appears in the conversation transcript before TTS starts playing, so users see the response immediately rather than hearing speech from invisible text. Also simplified the duplicate-broadcast guard to cover all response paths, not just tool-round responses. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>3644bea -
Recapture conversation screenshot with user messages visible
PanGalactic +1: Claude Opus 4.6Sent messages through text input so "You:" entries appear. Shows 10-tab navbar, tool calls, and model badges. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>4321be5 -
Replace old conversation screenshot with fresh capture
PanGalactic +1: Claude Opus 4.6Old one was from Feb 6 with only 4 tabs visible. New one shows current 10-tab UI with tool calls. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>14eef74 -
Expand gallery to 11 cards covering all features, add arch-stats CSS
PanGalactic +1: Claude Opus 4.6Gallery now includes: AI Conversation, System Telemetry (video), 3D Digital Twin (video), YOLO Vision, Moves Gallery, Web Shell, Timers & Ambient, Generative UI, Help & Docs, Scenes & Skins, and AI Providers. Each card has title + subtitle caption. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>5a969a2 -
Fix status-tab.mp4: re-record from correct Status tab
PanGalactic +1: Claude Opus 4.6Previous recording captured the Telemetry tab by mistake. New recording shows the actual Status tab with 9 system charts (CPU, RAM, disk, network, WiFi, load, fan, threads, temp). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>09cf498 -
Add animated video clips and update hero image
PanGalactic +1: Claude Opus 4.6- Add status-tab.mp4 (10s loop of live telemetry charts) - Add telemetry-tab.mp4 (10s loop of 3D sim + telemetry) - Update index.html to use <video autoplay loop muted> for status and telemetry cards - Replace hero image with default 3D appearance (not Neon scene) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>202f885 -
Update landing page: fix numbers, add screenshots, expand tool list
PanGalactic +1: Claude Opus 4.6- 15 AI Tools → 31, 5 WebSockets → 6, 114 endpoints → 146 - Replace deleted MP4 videos with PNG screenshots - Add 31 tool chips (was 15) - Add 6th WebSocket channel (browser-mic) - Add moves gallery, scratchpad, appearance screenshots to gallery - Update hero tagline with full feature scope - Use dashboard-overview.png as hero image Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>692bceb -
Redesign HuggingFace Space with visual README, screenshots, and appearance polish
PanGalactic +1: Claude Opus 4.6Complete README rewrite for GTC Golden Ticket competition judges: - Hero section with shields.io badges, HF badges, three-pillar positioning - Feature tour with Tailwind CSS grid and screenshot cards - Mermaid architecture diagrams (system, voice pipeline, ONNX dual-backend, WebSocket) - NVIDIA ecosystem section with ONNX Runtime dual-backend comparison table - Collapsible API reference (146 endpoints across 23 modules) - 31-tool table with example prompts - HuggingFace frontmatter with models, datasets, and thumbnail metadata Add 13 new dashboard screenshots, update 3 existing, remove old MP4s. Polish appearance CSS (compact gallery grid) and scene manager initialization. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>f1abc52
-
Add 3D scenes, skins, appearance controls, and conversation improvements
PanGalactic +1: Claude Opus 4.620 procedural Three.js scenes (desert, ocean, space-station, etc.), skin system with skin-manager, appearance toggle, enhanced moves gallery with search/filter, improved TTS with multi-provider routing, browser camera toolbar controls, vision overlay refinements, and WebSocket transcript broadcast. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>6aadc9b -
Add missing dependencies: opencv-python, psutil, libtmux
PanGalactic +1: Claude Opus 4.6These packages are used by the app but were not declared in pyproject.toml. A fresh install from HuggingFace would fail without them since pip only installs declared dependencies. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>d9eb8b1 -
Replace emoji icons with SVG, sort help topics by category
PanGalactic +1: Claude Opus 4.6- Swap emoji characters (camera, mic, settings, etc.) for inline SVG icons that render consistently across all browsers and platforms - Add CSS-based sun/moon theme toggle (no JS textContent needed) - Fix button alignment with inline-flex on .btn-sm and .cam-btn - Sort help topics by category order for coherent "All" view - Move Scratchpad tab before Timers in tab bar - Bump styles.css cache version to v25 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>b48162a -
Content refresh: update README with current feature counts and new modules
PanGalactic +1: Claude Opus 4.6Update all stale numbers: 140 REST endpoints (was 114), 31 LLM tools (was 22), 6 WebSocket channels (was 5), 23 API modules (was 19), 54 settings keys (was 47), 20 dances (was 19). Add Shell tab, Timers, Scratchpad, Help, and Bluetooth to dashboard tabs table. Add tmux, help, scratchpad, bluetooth API endpoint sections. Add xterm.js and marked.js to external deps. Update architecture tree and global JS APIs table with all new modules. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>18f033e -
Add Shell tab with Terminal (xterm.js PTY) and Tmux (REST) modes
PanGalactic +1: Claude Opus 4.6Port shell terminal feature from reference app. Two modes share a single tmux session: Terminal mode uses xterm.js over WebSocket PTY for full interactive terminal, Tmux mode uses REST polling for lightweight command injection. Includes help topic and static docs regeneration (43 conceptual topics). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>3975ac0 -
Unify docs: 43 help topics, remove Developer Docs toggle, fix duplication
PanGalactic +1: Claude Opus 4.6- Add 16 new conceptual topics to help.py (27 → 43): status charts, telemetry, 3D simulation, AI pipeline, vision tasks, follow mode, browser camera, WebSocket architecture, service health, audio routing, shell, dreaming, hardware - New category: Status & Telemetry (5 topics explaining all 18 charts) - Remove Quick Help / Developer Docs mode toggle from help.js and index.html - Rebuild docs.html: unified searchable experience, no README duplication - Remove mermaid.js dependency from static docs (no longer needed) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>c2363fe -
Rebuild docs.html with full Help tab experience (Quick Help + Developer Docs)
PanGalactic4cc1ea3 -
Add all pending changes: Bluetooth, alarms, ambient, vision, LFS setup
PanGalactic +1: Claude Opus 4.6Includes: alarm/ambient sound systems, Bluetooth audio, vision improvements, timer/alarm features, settings validation, config cleanup, help tab, inline style extraction, and Git LFS for binary files. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>715424b -
Add searchable docs page and solo developer callout for HuggingFace
PanGalactic +1: Claude Opus 4.6- Create docs.html: full README rendered as searchable static HTML with Mermaid diagrams, table of contents, and section filtering - Update index.html: add "Full Docs" nav link, solo developer callout, update AI tools count from 15 to 22 - Update style.css: solo developer card and docs nav link styles - Update README.md: add solo developer/contribution welcome blockquote Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>b2cda43 -
Add Bluetooth audio system with persistent GStreamer mixer
PanGalactic +1: Claude Opus 4.6Introduce BtMixer (persistent GStreamer audiomixer pipeline) that solves the BlueALSA single-client limitation by holding one pipeline open. Multiple audio sources (emotions, TTS, music, ambient) play simultaneously through a shared audiomixer → alsasink output chain. Key components: - bt_mixer.py: Dynamic source insertion with PAUSED preroll, duration-based cleanup (handles ElevenLabs WAV non-standard headers), per-pad EOS - audio_output.py: AudioRouter centralizes robot/BT routing with BtMixer fallback to subprocess - bluetooth.py: BT device scanning, pairing, connection management API - bluetooth.js: Frontend BT device picker with auto-connect Also: wire speech_volume setting into TTS (was hardcoded 2.0), remove music preemption from TTS (BtMixer handles concurrency), fix FloatingPanel display toggle, add scratchpad project categorization. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>9a4a4f7
-
Pre-Bluetooth snapshot: help tab, tooltips, inline style extraction
PanGalactic +1: Claude Opus 4.6Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>487676f -
Add Ollama advanced settings and fix joystick reset, API key display
PanGalactic +1: Claude Opus 4.6Ollama settings: - API key (bearer token) for authenticated remote instances - Keep-alive duration, context length, GPU layers, parallel requests - Expandable gear icon on Ollama provider row (accordion UI) - Backend passes ollama_api_key + tuning params to LiteLLM calls Other fixes: - Joystick reset button now re-centers all knob visuals (was only resetting antenna knobs, not head/XY/Z-Roll/body joysticks) - API keys page shows last 4 chars on load (backend sends masked suffix in api_keys_configured dict instead of plain list) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>63a4268 -
Fix resizeAllCharts reference error and combine disk+IO into single chart
PanGalactic +1: Claude Opus 4.6Replace stale diskIoChart reference with diskChart + threadsChart in resize array. Merge disk usage and disk I/O into one combined chart with dual lines (disk% yellow, swap% red) and I/O speeds in legend. Bump websocket.js cache version to v=9. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>d902292 -
Convert disk stats to line charts, fix threads chart rendering
PanGalactic +1: Claude Opus 4.6- Replace disk pie charts with LineChart (yellow=disk%, red=swap%) showing usage trending over time like all other system charts - Restore disk I/O as its own chart container with proper canvas sizing - Fix threads chart that had no line (canvas was nested inside disk container with constrained height, now in its own container) - All 10 system stat charts now use consistent line-based rendering Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>e87f21b -
Prevent WebRTC session leaks with 3-layer cleanup
PanGalactic +1: Claude Opus 4.61. beforeunload: Close session + API on tab close/refresh, clearing the daemon-side GStreamer pipeline immediately 2. Single-session enforcement: localStorage key tracks which tab owns the WebRTC session — new tab claims ownership, old tab yields on next startWebRTCStream() check 3. Visibility timeout: Tab hidden >2 minutes triggers full disconnect (previously just paused). Reconnects when tab becomes visible again. Each zombie WebRTC session costs ~20 daemon threads and ~75% CPU from video encoding. Four forgotten tabs caused 292% CPU and 101 threads. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>6edb5ec -
Add thread count monitoring chart and top bar indicator
PanGalactic +1: Claude Opus 4.6- stats.py: New get_thread_stats() collects app thread count (via threading.active_count) and daemon thread count (via psutil process matching on reachy_mini.daemon.app.main) - index.html: Replace Network with Threads in top bar (CPU|RAM|Thr), combine disk usage pie charts and disk I/O line chart into one container, add threads chart with legend in freed slot - websocket.js: Add threadsChart (purple=app, indigo=daemon) with color-coded thresholds (green <60, yellow <100, red >100) - app.py: Wire get_thread_stats into _get_stats pipeline Motivated by daemon crash at 100 threads from thread pool exhaustion. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>a696038 -
Fix thread pool exhaustion, WebRTC retry spam, panel persistence, and AI expressiveness
PanGalactic +1: Claude Opus 4.6- websocket.py: Shared daemon cache with TTL + backoff replaces per-client blocking HTTP calls that exhausted the 8-thread pool on CM4 - webrtc.js: Cap reconnection at 5 attempts, track script load failure to stop console spam when GstWebRTC API is unavailable - FloatingPanel.js: Save/restore minimized state in localStorage - init.js: Read panel visibility from localStorage directly on load - browser-camera.js: Default built-in panels to visible - app.py: Add Cache-Control no-cache for HTML, _tts_speaking flag - ambient.py: Pause ambient audio during TTS playback - conversation/chat.py: Add /tools endpoint, deferred emotion scheduling, 10-round tool call safety cap, multi-turn text accumulation - conversation/prompts.py: Stronger expressiveness instructions, emotion quick-reference guide, encourage multi-emotion responses - conversation/tts.py: Set _tts_speaking flag during robot playback - index.html: Bump version tags for webrtc, FloatingPanel, browser-camera, init Co-Author…af2582d -
Refactor conversation.py into subpackage + DRY improvements
PanGalactic +1: Claude Opus 4.6Split the 2031-line conversation.py monolith into 6 focused modules: - discovery.py: provider/model/voice discovery + caches - prompts.py: system prompt, 22 tool definitions, emotion/dance data - tool_executor.py: tool dispatch (23 elif branches) - tts.py: TTS playback with robot/browser routing - chat.py: chat endpoint, history, Pydantic models - __init__.py: backward-compatible facade Extract shared broadcast utility (broadcast.py) replacing 3 duplicates in conversation/tts.py, listener.py, and settings_api.py. Add settings validation with numeric bounds checking (14 keys). DRY audio playback: shared play_sound_on_robot() in sound_utils.py replacing identical implementations in timers.py and alarms.py. Update README: 114 endpoints, 19 modules, 22 tools, add timers/alarms/ ambient API docs, updated architecture tree. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>7bc4123 -
Fix Gemini tool-calling error and add tools_enabled to chat response
PanGalactic +1: Claude Opus 4.6Models that don't support function calling (gemini-pro, gemini-pro-latest) now have tools stripped from the request. Includes runtime fallback retry if a model rejects tools at call time. System prompt sections for tools are also stripped when tools aren't supported. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>1034016 -
Code review fixes: security, accessibility, DRY, reliability, compat
PanGalactic +1: Claude Opus 4.6Security (P0): - Filter API keys from GET /api/settings (write-only pattern) - Eliminate command injection in get_date_time tool (use strftime) - Add path traversal guards to moves audio/sim endpoints Reliability (P0): - Add asyncio.Lock to music, ambient, recordings, listener modules - Add robot null check in intercom WebSocket handler DRY (P1): - Extract sound_utils.py shared by timers, alarms, ambient - Centralize 26 hardcoded localhost URLs via config.get_app_endpoint() Accessibility (WCAG 2.1): - Convert tab divs to buttons with full ARIA tab pattern - Add keyboard navigation (arrows, Home, End) to tablist - Add aria-label to icon-only buttons, aria-live to status labels - Add :focus-visible styles, prefers-reduced-motion support Browser compatibility: - Add color-mix() CSS fallbacks for Firefox <113 - Button reset styles for tab elements - Improve touch targets for .btn-sm - Improve --text-muted contrast (#666 -> #888) Misc: - Extract magic numbers to named constants in list…1a4236d
-
Include all ElevenLabs premade voices in voice discovery
PanGalactic +1: Claude Opus 4.6Add show_legacy=true to ElevenLabs /v1/voices API call to return all 55 premade voices instead of the default 23. This surfaces classic voices like Rachel that ElevenLabs hides by default. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>4bc8dde -
Add missing defaults and set recommended model selections
PanGalactic +1: Claude Opus 4.6- Add 7 missing keys to DEFAULT_SETTINGS that were saveable but had no default (vlm_provider/model, master/music volume, tab_order, vision_source, vision_pose_mode) - Set recommended model defaults for fresh installs: STT: openai/gpt-4o-transcribe LLM: anthropic/claude-haiku-4-5-20251001 TTS: openai/gpt-4o-mini-tts/coral - All 43 settings keys now have defaults, are in ALLOWED_SETTINGS_KEYS, and persist correctly through the full load/save cycle Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>0b75016 -
Fix vision follow mode: antenna API format, arm angle mapping, face→Y
PanGalactic +1: Claude Opus 4.6- Fix antenna commands to use target_antennas array format (was using wrong field names the daemon ignores) - Change antenna control from vertical-only wrist detection to full arm angle mapping (0°=down, 90°=T-pose, 180°=up) - Add face bbox size → head Y (forward/backward lean) mapping - Fix left antenna direction (no negation, opposite motor from right) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>57ee645