LED GUI Fix — C# Pattern Mismatch
Bug: Changing LED color/mode/brightness in the GUI corrupted segment displays and desynchronized animations. Closing to system tray froze the LED display.
Root cause: GUI signal handlers were calling CLI-path LEDDevice methods (set_color(), set_mode(), set_brightness()) which force STATIC mode, immediately tick animation, send USB data, and save config — all designed for single CLI commands. This caused double/triple ticks desynchronizing animation state.
Fix: Matched the C# FormLED pattern — GUI handlers now update state only. The 150ms tick timer is the single authority for animation computation + USB send (like C#'s MyTimer_Event → SendHidVal).
Changes
- All 16 LED GUI signal handlers rewritten to call
LEDServicestate methods directly (no immediate tick/send/save) _on_tickwrapped in try/except to prevent silent timer death from unhandled exceptions- Periodic config save every ~3s instead of on every color picker drag
- Safety LED timer restart in
showEventwhen restoring from system tray - 4 new tests (no-immediate-send assertion, zone color propagation, periodic save, tick error handling)
Affected devices
All LED segment displays (PA120, AX120, AK120, LC1, LF8, LF10, LF12, CZ1, LC2, LF11, LF13, LF15)