Dashboard rework — everything in one window, no scrolling
The whole dashboard now fits at the minimum window size (720×588), four aux
relays included.
- Compact status bar replaces the 150 pt hero; water temperature joins the
gauge row as a fourth dial. - Setpoints are edited where they are read — click the pH, redox or
electrolysis gauge and its setpoint opens in a popover. The separate
"Setpoints" section is gone. - One idiom for every device: icon, live state, an explicit switch, and a
disclosure for the device's own settings. Boost, cover mode and the relays
no longer look like tiles that do nothing. - Pump mode and speed moved into Filtration's disclosure, so the
five-segment picker no longer shares a line with a toggle. - Devices without settings pair up in a compact two-column grid.
- Per-device progress: the row you touched shows a spinner during the ~20 s
the box takes to acknowledge a command. - Target bands are drawn on the gauge track, so "am I inside the range?" reads
at a glance.
New app icon
The dashboard's own gauge ring, filled with water — legible down to 16 px, and
generated reproducibly by Scripts/make-icon.swift.
Fixes
- Overlapping commands can no longer clear the busy indicator early.
- A 30 s poll no longer overwrites a setpoint or a schedule being edited.
- Raw relay names are capitalized; the toolbar pool picker is shortened to the
last six characters of the serial.
macOS 14+ · Developer ID signed & notarized · Sparkle 2 auto-update · MIT