aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docs/superpowers/specs/2026-10-13-controls-panel-design.md19
1 files changed, 15 insertions, 4 deletions
diff --git a/docs/superpowers/specs/2026-10-13-controls-panel-design.md b/docs/superpowers/specs/2026-10-13-controls-panel-design.md
index 57ecd68..582ffbe 100644
--- a/docs/superpowers/specs/2026-10-13-controls-panel-design.md
+++ b/docs/superpowers/specs/2026-10-13-controls-panel-design.md
@@ -95,7 +95,16 @@ Presentation reads as on while a game holds it (`Status.gaming`); clicking
then clears only the manual half, so the tile stays lit until the game ends.
That is the registry's existing rule and the tile does not hide it.
-Glyphs must exist in Inconsolata Nerd Font and be checked in its cmap.
+Icons are freedesktop names through `Quickshell.iconPath(name, true)`, the
+island's rule, so an icon theme switch reaches the panel. Every name was
+checked to resolve in candy-icons (which inherits breeze-dark): wifi
+`network-wireless` / `network-wireless-disconnected`, bluetooth
+`preferences-system-bluetooth`, DND `notifications` /
+`notifications-disabled`, presentation `video-display`, auto-lock
+`system-lock-screen`, output `Logic.volumeIcon`, mic
+`audio-input-microphone` / `microphone-sensitivity-muted`, the opener
+`preferences-system`, edit `document-edit`, hide `window-close`, show
+`list-add`.
## Panel
@@ -107,8 +116,9 @@ The grid is four columns, so seven tiles make two rows. A pencil glyph in a
corner enters edit mode, where:
- each visible tile carries a small × that hides it;
-- a tile dragged onto another moves to that position (`DragHandler` on the
- tile, `DropArea` on each slot);
+- a tile dragged onto another moves to that position: one `MouseArea` per
+ tile offsets it while pressed, and on release the slot under its centre
+ (`slotAt()` in `Controls.js`) is where it lands;
- hidden tiles appear in a strip under the grid, each with a + that appends it
to the visible list;
- clicks do not toggle and right-click does not open the drawer.
@@ -118,7 +128,8 @@ is allowed; the panel then shows only the strip.
The order helpers in `Controls.js` are pure: `known()`, `normalize(list)` (drop
unknown ids and duplicates), `hidden(list)`, `move(list, from, to)`,
-`hide(list, id)`, `show(list, id)`, `fill(volume)`. `test_controls.js` runs
+`hide(list, id)`, `show(list, id)`, `fill(volume)`, `step(volume, delta,
+max)`, `slotAt(x, y, pitch, cols, count)`. `test_controls.js` runs
them under `node`, the same way `test_logic.js` does.
## Opening