refactor: key colors targets → CSS source type, HA target improvements
Lint & Test / test (push) Successful in 1m26s

Key Colors refactor:
- New `key_colors` CSS source type with inline rectangles
- KeyColorsColorStripStream: extracts N colors from screen regions
- CSS editor: EntitySelect for picture source, IconSelect for color mode
- Configure Regions button on card opens pattern canvas editor
- Live WS preview at 5 FPS with rectangle overlay + color swatches
- Removed KC target type, pattern template entity, and related API routes
- Removed KC/pattern template sections from Targets tab

HA light target improvements:
- Update rate, transition, mappings, brightness VS now editable via PUT
- Card crosslinks for HA source, CSS source, brightness VS
- HA connection status icon, text metrics (Hz, uptime)
- Brightness value source selector in editor
This commit is contained in:
2026-03-28 15:28:22 +03:00
parent 89d1b13854
commit 3e6760f726
46 changed files with 2707 additions and 789 deletions
+4 -10
View File
@@ -2,7 +2,10 @@
import pytest
from wled_controller.core.processing.processor_manager import ProcessorDependencies, ProcessorManager
from wled_controller.core.processing.processor_manager import (
ProcessorDependencies,
ProcessorManager,
)
@pytest.fixture
@@ -230,8 +233,6 @@ def test_get_target_metrics(processor_manager):
def test_target_type_detection(processor_manager):
"""Test target type detection via processor instances."""
from wled_controller.storage.key_colors_output_target import KeyColorsSettings
from wled_controller.core.processing.kc_target_processor import KCTargetProcessor
from wled_controller.core.processing.wled_target_processor import WledTargetProcessor
processor_manager.add_device(
@@ -245,13 +246,6 @@ def test_target_type_detection(processor_manager):
device_id="test_device",
)
processor_manager.add_kc_target(
target_id="kc_target",
picture_source_id="src_1",
settings=KeyColorsSettings(),
)
assert isinstance(processor_manager._processors["kc_target"], KCTargetProcessor)
assert isinstance(processor_manager._processors["wled_target"], WledTargetProcessor)