## [0.56.0] - 2026-09-12

### Added
- **ui:** size the MQTT widget column and its controls from the profile
- **ui:** add an MQTT layout section and a theme-only background tier
- **ui:** add an MQTT layout section and a theme-only background tier
- **ui:** give the MQTT screen its own wallpaper and plate opacities
- **ws:** report Network Music as its own source instead of radio
- **status-led:** add configurable WS2812 system status indicators
- **network-music:** add Apache JSON directory listing adapter
- **display:** add MQTT screen visibility toggle
- add Network Music source and navigation actions
- add contextual action for opening source list
- add action to open Network Music list
- **rules:** play Network Music tracks from rules
- **rules:** add WS2812B effect conditions
- **io:** expose active WS2812B effect state
- **rules:** add brightness control to WS2812B effect actions
- **rules:** add guided WS2812B effect actions
- **web:** add per-rule saving and flow and rule ordering controls
- **io:** WS2812B volume effect
- **rules:** add save buttons to every rule

### Changed
- **www:** rename the per-screen Theme wallpaper source to Background
- **io-web:** put the system status LED section first on the I/O page
- **status-led:** redraw the strip only when a pixel would change

### Fixed
- **settings:** stop the main task overflowing its stack on the boot hostname save
- **ui:** follow the playing source into Network Music as its own source
- **status-led:** circle the whole range for batch and OTA instead of a shrinking progress window
- **status-led:** treat brightness 0 as off instead of a black overlay and skip the spinlock for slots that own no status
- **io-web:** keep the status LED target list in step with the form
- **network-music:** let playback supersede directory fetch
- **web:** prevent WS2812 color picker from reverting
- **web:** pace static assets while audio is playing
- **audio:** prebuffer PCM before starting I2S
- **io:** treat any non-zero PWM level as on
- **rules:** split WS2812B node labels into two lines

### Fixed
- **network-music:** let a web playback request supersede an in-flight directory listing and report the exact reason when it is rejected
