## [0.62.0] - 2026-10-09

### Added
- **display:** add a show/hide toggle for the Network Music screen
- **www:** flag GPIO changes awaiting a power cycle on the I/O page
- **encoder:** bind the second knob per screen in the layout editor
- **display:** add software dimming for GC9A01 modules without a backlight pin
- **display:** add per-axis image orientation for GC9A01 and fix its MADCTL baseline
- **display:** add GC9A01 round 240x240 driver and UI profile
- **www:** show works-always on IR keys in the rules editor
- **www:** show works-always on IR keys in the rules editor
- **www:** mark repeat and always-on keys on the remote tiles
- **rules:** show and edit variables in a tile on the rules page
- **ir:** raise the remote key limit from 20 to 26
- **vars:** add RAM variables and gate the IR remote on one
- **io:** keep the strip's brightness when an effect action leaves it empty
- **encoder:** add a second rotary encoder with configurable turn actions
- **www:** add ready-made colour palettes for the WS2812 VU and volume bar
- **io:** let the VU rule action set zone and peak colours
- **sd_player:** seek SD tracks from the device screen and the web player
- **io:** let the matrix-middle rule action set clock and weather colours
- **www:** move pin setup into the settings quick links and list the backup network
- **www:** let the setup wizard pick the SD bus and enter SD and Bluetooth pins
- **sdcard:** log once when SD support is compiled out
- **sdcard:** log once when SD support is compiled out
- **network:** add a backup WiFi network tried when the primary one fails
- **sdcard:** mount the SD card over SPI when sd_cs is set
- **ci:** add the headless variant to the release build matrix

### Fixed
- **io:** warn about backwards input polarity and ignore buttons held at boot
- **net_wallpaper:** hold the wallpaper batch until the boot update prompt is dismissed
- **net_wallpaper:** keep wallpaper fetches off the update and OTA screens
- **services:** keep rule and remote screen= actions off the update and OTA screens
- **www:** open the control panel by the rule lane that was clicked
- **www:** explain the missing layout editor on headless builds instead of a JSON parse error
- **www:** ignore a pointer release that did not start on the rule block or IR button
- **www:** name the wizard SD choices by bus (SDMMC/SPI) instead of slot/module
- **network:** stop the WiFi supervisor overflowing its stack when no saved network is reachable
