Introduce Picture Targets to separate processing from devices

Add PictureTarget entity that bridges PictureSource to output device,
separating processing settings from device connection/calibration state.
This enables future target types (Art-Net, E1.31) and cleanly decouples
"what to stream" from "where to stream."

- Add PictureTarget/WledPictureTarget dataclasses and storage
- Split ProcessorManager into DeviceState (health) + TargetState (processing)
- Add /api/v1/picture-targets endpoints (CRUD, start/stop, settings, metrics)
- Simplify device API (remove processing/settings/metrics endpoints)
- Auto-migrate existing device settings to picture targets on first startup
- Add Targets tab to WebUI with target cards and editor modal
- Add en/ru locale keys for targets UI

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-12 15:27:41 +03:00
parent c3828e10fa
commit 55814a3c30
20 changed files with 1976 additions and 1489 deletions

View File

@@ -387,9 +387,11 @@ section {
.card-actions {
display: flex;
flex-wrap: wrap;
gap: 10px;
justify-content: center;
gap: 8px;
margin-top: auto;
padding-top: 12px;
border-top: 1px solid var(--border-color);
align-items: center;
}
.btn {
@@ -2534,9 +2536,7 @@ input:-webkit-autofill:focus {
}
.stream-card-prop {
display: inline-flex;
align-items: center;
gap: 3px;
display: inline-block;
font-size: 0.75rem;
color: var(--text-secondary);
background: var(--border-color);
@@ -2546,6 +2546,7 @@ input:-webkit-autofill:focus {
overflow: hidden;
text-overflow: ellipsis;
max-width: 180px;
vertical-align: middle;
}
.stream-card-prop-full {