feat(huddle): compact stay-in-chat dock, grows for video, collapsible (LC-700) #666
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/LC-700-huddle-dock"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Redesigns the active-huddle layout (LC-700) so it reads as a lightweight, docked, stay-in-chat mode rather than a co-equal split that squeezes the timeline and wastes space on one avatar in a big box. Presentation only: no change to the WebRTC mesh/SFU signaling, the join/leave/mute/camera/screen logic, or transcription controls.
What changed
.lc-huddle, when nobody has a live camera or screen-share the in-call grid becomes a wrapping row of compact chips (avatar + name + speaking equalizer + mute badge + YOU pill), capped short, so the message timeline stays primary. Driven by one newdata-media="audio|video"attribute voice.js sets inupdateTileMedia; the rest is pure CSS:has()reusing the live tile DOM, so speaking/mute/YOU state stays wired..lc-callbar-controlsinside alc-callbarquery container, reusing the call view's rule so labels collapse to icons when the dock is narrow. Leave stays destructive.prefers-reduced-motion: no-preference; collapse is a deterministic display toggle (no layout jump).Safety / scope
The full-screen voice-channel view has no
.lc-huddleroot, so every new rule is scoped away from it. The only JS change to the RTC file is a single read-onlysetAttributeline; the collapse handler lives in live.js. No Rust, no signaling changes, no DB migration.Drag-to-resize was the stated alternative to a collapse toggle in the ticket; the toggle path is implemented, drag-resize is out of scope.
Tests
just testgreen (195 binaries, 1634 tests), en/es locale parity holds, both JS files passnode --check. Template compiles. Huddle integration tests exercise signaling only and are unaffected.🤖 Generated with Claude Code
https://claude.ai/code/session_016ufqbuN7mjyt4ms5NEygMy