Live portal: custom layouts are left alone — new streams chime and wait in a draggable tray; Arrange re-grids and returns to auto

layout store (auto/custom + pending), marked custom on manual move (onDidMovePanel outside arrange), sash drag,
stream/group rename. Tray chips: HTML5 drag accepted via onUnhandledDragOver/onDidDrop (position -> direction),
click = new column. WebAudio two-note chime. Gateway page instructions updated. Verified headless (custom vs auto).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
2026-11-01 14:36:01 -06:00
parent b2e7e9a4bb
commit 645f447015
8 changed files with 115 additions and 13 deletions

View File

@@ -74,3 +74,10 @@ html, body, #root { height:100%; margin:0; background:var(--bg); color:var(--fg)
.groupactions { display:flex; align-items:center; height:100%; padding:0 6px; }
.gbtn { background:transparent; color:var(--mut); border:0; cursor:pointer; font-size:14px; padding:0 6px; line-height:1; }
.gbtn:hover { color:var(--fg); }
/* tray: new streams waiting to be placed (custom layouts) */
.tray { display:flex; gap:8px; align-items:center; padding:4px 10px; background:#1d1a10; border-bottom:1px solid #3a3320; font-size:12px; }
.chip { display:flex; align-items:center; gap:6px; padding:3px 10px; border:1px solid #6b5a1e; border-radius:14px; background:#262012; color:var(--fg); cursor:grab; user-select:none; }
.chip:active { cursor:grabbing; }
.blink { color:#f1c40f; animation: vgblink 1s steps(2, start) infinite; }
@keyframes vgblink { to { visibility:hidden; } }