feat: add per-layer LED range and collapsible layers to composite source
Lint & Test / test (push) Failing after 33s

Composite layers now support optional start/end LED range (toggleable)
and reverse flag, making composite a superset of mapped source. Layers
are collapsible with animated expand/collapse and consistent 0.85rem
font sizing. Delete button restyled as ghost icon button.

Also includes minor dashboard CSS overflow fixes.
This commit is contained in:
2026-03-24 17:15:22 +03:00
parent 4caafbb78f
commit bbef7e5869
12 changed files with 349 additions and 51 deletions
@@ -36,6 +36,9 @@ class CompositeLayer(BaseModel):
enabled: bool = Field(default=True, description="Whether this layer is active")
brightness_source_id: Optional[str] = Field(None, description="Optional value source ID for dynamic brightness")
processing_template_id: Optional[str] = Field(None, description="Optional color strip processing template ID")
start: int = Field(default=0, ge=0, description="First LED index for range (0 = full strip)")
end: int = Field(default=0, ge=0, description="Last LED index exclusive for range (0 = full strip)")
reverse: bool = Field(default=False, description="Reverse layer output within its range")
class MappedZone(BaseModel):