v5.0.4
This release was originally published with a changelog describing fixes that had not actually been committed yet β the tag pointed at v5.0.3's code under a v5.0.4 label. That has been corrected: the tag now points at the commit that actually contains all of this.
Fixed
- Pipe seam: enlarging the pipes or using different
valve_scale_*vs.pipes_scale_*values could leave a visible unfilled stretch of pipe between the water and the valve body. The two pipe halves are now defined to always meet exactly at the canvas's horizontal center (_pipeSplitX()) instead of a measured (and occasionally mismatched) valve position β no seam possible at any scale. - Water/lever timing sync: the water fill/drain animation used a fixed speed independent of
toggle_lock_ms, so it could finish several seconds before the valve-lever (which does honortoggle_lock_ms) finished rotating. Water speed is now derived from the sametoggle_lock_ms, so both finish together. - Valve/header overlap + rotation flash: the valve graphic scaled via a paint-only CSS
transform, which didn't reserve the right layout space, causing overlap with the header and a one-frame oversized flash after rotation depending on phone orientation. Now scales via actual rendered width instead. - Leak sensor clipping on small screens/short
card_min_heightβ icon/text now size withclamp()off each block's own rendered size instead of fixed pixel values. - "Closed at" timestamp accuracy: previously fell back to "just now" on a fresh browser with no cached value, even if the valve had actually been closed long before. Now reads the entity's own
last_changedfrom Home Assistant as the source of truth.
Added
btn_opening/btn_closingβ optional button text shown only while the valve is actively opening/closing, separate from the restingbtn_open/btn_close.- A small dependency-free unit test suite (
tests/,npm test) covering config migration, valve-state resolution, and the toggle-timing/pipe-split math.
See the README changelog for full history.