LEDS: Add concept of "presets"
- Many screens can now easily and reliably set the node's default IDLE state, which it will remember after boot. This makes it trivial to add LED support for a few states like timed play/free play without having to constantly refresh it all over the place.
- Rework some core flow with rendering idle screens to mostly center around rendering the idle screen from anywhere in the app.
- Recalculate and render the LED state from anywhere in the app as well.
- Take advantage of new major firmware LED features.
- Node check-ins now set LED presets.
LEDS: Add new per-node "Set global brightness" capability.
- Set a value from 0 to 255 (100%).
- Add console commands and cleanup existing LED commands.
- Not exposed to the WebUI yet, but it will be soon. Works well.
LEDS: Re-add slow LED fade-out to default idle pattern.
- Useful for making sure some LEDs are off at any given moment.
- Hopefully reduce temperature/etc., give each LED a small break in the cycle to be fully off.
Other
The LED changes are subtle for now but they really make adding changes and customization much easier for us in the future.
Shutdown: Kill the screen and LEDs on all shutdowns.
LEDs: Fix all remaining glitching at startup (was a harmless clock issue at init). It should be solid now.