Add Key Colors target type for extracting colors from screen regions

Introduce a new "key_colors" target type alongside WLED targets, enabling
real-time color extraction from configurable screen rectangles with
average/median/dominant modes, temporal smoothing, and WebSocket streaming.

- Split WledPictureTarget into its own module, add KeyColorsPictureTarget
- Add KC target lifecycle to ProcessorManager (register, start/stop, processing loop)
- Extend API routes and schemas for KC targets (CRUD, settings, state, metrics, colors)
- Add WebSocket endpoint for real-time color updates with auth
- Add KC sub-tab in Targets UI with editor modal and live color swatches
- Add EN and RU translations for all key colors strings

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-12 16:43:09 +03:00
parent 3d2393e474
commit 5f9bc9a37e
13 changed files with 1525 additions and 111 deletions

View File

@@ -341,5 +341,40 @@
"targets.metrics.actual_fps": "Факт. FPS",
"targets.metrics.target_fps": "Целев. FPS",
"targets.metrics.frames": "Кадры",
"targets.metrics.errors": "Ошибки"
"targets.metrics.errors": "Ошибки",
"targets.subtab.key_colors": "Ключевые Цвета",
"targets.section.key_colors": "🎨 Цели Ключевых Цветов",
"kc.add": "Добавить Цель Ключевых Цветов",
"kc.edit": "Редактировать Цель Ключевых Цветов",
"kc.name": "Имя Цели:",
"kc.name.placeholder": "Моя Цель Ключевых Цветов",
"kc.source": "Источник:",
"kc.source.hint": "Из какого источника извлекать цвета",
"kc.source.none": "-- Источник не назначен --",
"kc.fps": "FPS Извлечения:",
"kc.fps.hint": "Сколько раз в секунду извлекать цвета (1-60)",
"kc.interpolation": "Режим Цвета:",
"kc.interpolation.hint": "Как вычислять ключевой цвет из пикселей в каждом прямоугольнике",
"kc.interpolation.average": "Среднее",
"kc.interpolation.median": "Медиана",
"kc.interpolation.dominant": "Доминантный",
"kc.smoothing": "Сглаживание:",
"kc.smoothing.hint": "Временное смешивание между извлечениями (0=нет, 1=полное)",
"kc.rectangles": "Цветовые Прямоугольники",
"kc.rectangles.hint": "Определите именованные прямоугольники в относительных координатах (0.01.0) на захваченном изображении",
"kc.rect.name": "Имя",
"kc.rect.x": "X",
"kc.rect.y": "Y",
"kc.rect.width": "Ш",
"kc.rect.height": "В",
"kc.rect.add": "Добавить Прямоугольник",
"kc.rect.remove": "Удалить",
"kc.rect.empty": "Прямоугольники не определены. Добавьте хотя бы один для извлечения цветов.",
"kc.created": "Цель ключевых цветов успешно создана",
"kc.updated": "Цель ключевых цветов успешно обновлена",
"kc.deleted": "Цель ключевых цветов успешно удалена",
"kc.delete.confirm": "Вы уверены, что хотите удалить эту цель ключевых цветов?",
"kc.error.no_rectangles": "Пожалуйста, добавьте хотя бы один прямоугольник",
"kc.error.required": "Пожалуйста, заполните все обязательные поля",
"kc.colors.none": "Цвета пока не извлечены"
}