f0df53365d86d3002c55ad9709ce5653e5417dde
A panel can be split to the right or below, and the panel that appears can be split again, so any arrangement is reachable. The layout is a binary tree and the leaves, read in order, are the panels of a step. Scrolling drives all of them: with N panels a step covers N videos and one swipe advances the whole set. That runs through every index in the feed -- opening on a video, realigning after a rotation, the prefetch buffer, the render window -- all of which now convert between a video and the step that holds it. Each panel has its own sound, so two can play at once if that is what you want. A new panel inherits the feed-wide setting rather than starting muted, so a step built later doesn't disagree with what is already on screen, and the feed-wide button reads as muted only while every panel is. Two things fall out of panels that are worth knowing. The render window narrows as panels are added -- five steps ahead of a four-panel split would be twenty live <video> elements -- so splitting does not multiply decoding. And splitting rebuilds around the video you are on rather than keeping it in the panel you split from: steps are aligned to the panel count, so it stays on screen but not necessarily first. The per-video helpers were already written against an element holding one video's controls, so they took a panel unchanged; a slide became the container that fans out over them. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QBDkEXP4htyXTCZUwMLphd
Description
A webclient for hottub
Languages
JavaScript
68.7%
Python
17.6%
CSS
11%
HTML
2.1%
Shell
0.5%