- Tag theme editor with color picker and RGB sliders
- Effect type selection: Solid, Flash, Pulse
- Speed control slider (0.2x fast to 3.0x slow) for Flash/Pulse effects
- Tag list with search/filter functionality
- Live portal connection and tag detection
- JSON config file import/export
- Video path assignments for Moonlight integration
- Real-time LED preview testing
- Default theme configuration
- Removed automatic green flash + cyan color on tag insert
- Callbacks now fully control LED behavior
- Added software_flash() for reliable cross-portal flashing
- Added software_pulse() for breathing effect
- Added apply_effect() unified interface
- Effects run in background threads (non-blocking)
- Tag removal stops any running effects on that pad
- Added legacy_key field to TagInfo for config lookup
- Add per-pad stop event system (_flash_stop_events dictionary)
- Add stop_flash(pad) method to cancel active flash animations
- flash_pad now checks stop events at multiple points in loop
- Tag removal handler calls stop_flash before setting pad to OFF
- Fixes issue where LED flash continued indefinitely after figure removed
- Tag detection turns ALL LEDs off immediately
- Server success shows CENTER blue blink (150ms)
- Theme effects (pulse/flash/solid) apply to ALL pads
- External tag_colors.json for customizable per-tag themes
- Debounce logic preserves theme effect even when skipping server