From 8e579ecb3472ef29e71d972c8de96c5c256129e6 Mon Sep 17 00:00:00 2001 From: Waters Church Date: Thu, 17 Sep 2026 11:39:34 -0400 Subject: [PATCH] Shell 1.6.0: bars that tuck away, and every edge resizes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Three things about arranging a dashboard. **Auto-hide bars.** A new button left of ⛶ folds every tile's title bar away at once, for a windowed screen that should read like a wall display. Fullscreen already did this for watching; this is the windowed equivalent, asked for by hand. It starts off and saves with the layout, so a booth's named layout loads with the bars already tucked away. **A hidden bar is not a gone bar.** Folded away — by that switch or by a tile's own notch — the bar leaves the flow and parks just above its tile, so the module keeps the whole body and nothing reflows as the bar comes and goes. Point at the tile's top edge and it slides back in over the content, where its buttons click and its width drags the tile exactly as before. A dashboard can now be arranged with every bar out of the way, which is the point of hiding them. **Every edge resizes.** The top, left and right edges join the bottom one: each moves only itself, so the tile grows into the space beside it while the opposite edge stays put, stopping at a neighbour or at the module's own minimum. Where two tiles meet, that boundary already belongs to the seam pill between them — it moves both edges and leaves no gap — so the two tiles' side marks step aside there rather than offer a second, different control on the same pixels. One fix underneath: saving a named layout was dropping each tile's variant, title, minimum size and hidden-bar state, so a saved "Now" tile came back as the full Now/Next card and a solo timer came back with a full tile's settings. The layout file now carries them — and the new switch with them. Co-Authored-By: Claude Opus 5 --- README.md | 26 ++++-- package.json | 2 +- public/index.html | 8 ++ public/shell.js | 214 +++++++++++++++++++++++++++++++++++++++++++--- public/style.css | 115 +++++++++++++++++++++++-- server.js | 33 +++++-- 6 files changed, 365 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index 0a9dbc3..9b4d374 100644 --- a/README.md +++ b/README.md @@ -190,12 +190,15 @@ below. Nothing is installed without someone clicking. - **+** — add any enabled module; multiple tiles of the same module are fine (e.g. two transcripts filtered to different channels). - Drag a tile by its **title bar** to move it; drag either **bottom - corner** to resize; **✕** removes it. Hover a tile and a small pill - appears on its **bottom edge** — drag it to change just the height. If - another tile sits directly below, the pill moves the shared edge instead, - trading rows between the two so the column keeps its total height. Tiles - sit flush — when two share a vertical edge, hover the seam and the same - kind of pill appears; drag it to trade width (macOS split-view style). + corner** to resize; **✕** removes it. Hover a tile and a small mark + appears on each **edge** — drag one to move just that edge, so the tile + grows or shrinks into the space beside it while the opposite edge stays + put. The bottom edge is the exception: when another tile sits directly + below, it moves the shared edge instead, trading rows between the two so + the column keeps its total height. Tiles sit flush — when two share a + vertical edge, hover the seam and a pill appears; drag it to trade width + (macOS split-view style). That seam belongs to the pill, so the two tiles' + own side marks step aside there. - **Fullscreen** (the ⛶ button) is a viewing mode: the menu bar hides (its green lip at the top-left brings it back, minus the Admin button), the occupied columns stretch to the full width, and every column runs to the @@ -207,7 +210,16 @@ below. Nothing is installed without someone clicking. its normal row height and scrolls. - A tile's actions (menus, text size, clear…) live in its **title bar**; the small **notch** on the bar's bottom edge hides/shows the whole bar - for a clean wall-display look. The menu bar's handle is the **ProdDash + for a clean wall-display look. A hidden bar is not gone: point at the + tile's top edge and it slides back in over the content, where its buttons + click and its width drags the tile exactly as before — so a dashboard can + be arranged with every bar out of the way. +- **Auto-hide bars** (the button left of ⛶) folds every title bar away at + once, for a windowed screen that should read like a wall display. It is + off on a fresh dashboard and saves with the layout — including a named + layout on the server, so a booth loads its screen with the bars already + tucked away. Fullscreen folds the bars away regardless; this is the + windowed equivalent, asked for by hand. The menu bar's handle is the **ProdDash name itself**, wrapped in a translucent green pill at the left — click it to hide the bar; the slim green lip it leaves at the top-left edge brings the bar back. It stays at the left so it never sits on top of a tile's diff --git a/package.json b/package.json index 88de406..32e1974 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "proddash", - "version": "1.5.0", + "version": "1.6.0", "private": true, "description": "Modular production dashboard for Waters Church \u2014 zero-dependency Node server + vanilla client", "license": "UNLICENSED", diff --git a/public/index.html b/public/index.html index a1bfa52..c494d74 100644 --- a/public/index.html +++ b/public/index.html @@ -19,6 +19,14 @@ + +