Simplify calibration model, add pixel preview, and improve UI
Some checks failed
Validate / validate (push) Failing after 9s
Some checks failed
Validate / validate (push) Failing after 9s
- Replace segment-based calibration with core parameters (leds_top/right/bottom/left); segments are now derived at runtime via lookup tables - Fix clockwise/counterclockwise edge traversal order for all 8 start_position/layout combinations (e.g. bottom_left+clockwise now correctly goes up-left first) - Add pixel layout preview overlay with color-coded edges, LED index labels, direction arrows, and start position marker - Move "Add New Device" form into a modal dialog triggered by "+" button - Add display index selector to device settings modal - Migrate from requirements.txt to pyproject.toml for dependency management - Update Dockerfile and docs to use `pip install .` Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -90,15 +90,6 @@ class ProcessingSettings(BaseModel):
|
||||
)
|
||||
|
||||
|
||||
class CalibrationSegment(BaseModel):
|
||||
"""Calibration segment for LED mapping."""
|
||||
|
||||
edge: Literal["top", "right", "bottom", "left"] = Field(description="Screen edge")
|
||||
led_start: int = Field(description="Starting LED index", ge=0)
|
||||
led_count: int = Field(description="Number of LEDs on this edge", gt=0)
|
||||
reverse: bool = Field(default=False, description="Reverse LED order on this edge")
|
||||
|
||||
|
||||
class Calibration(BaseModel):
|
||||
"""Calibration configuration for pixel-to-LED mapping."""
|
||||
|
||||
@@ -108,18 +99,17 @@ class Calibration(BaseModel):
|
||||
)
|
||||
start_position: Literal["top_left", "top_right", "bottom_left", "bottom_right"] = Field(
|
||||
default="bottom_left",
|
||||
description="Position of LED index 0"
|
||||
description="Starting corner of the LED strip"
|
||||
)
|
||||
offset: int = Field(
|
||||
default=0,
|
||||
ge=0,
|
||||
description="Number of LEDs from physical LED 0 to start corner (along strip direction)"
|
||||
)
|
||||
segments: List[CalibrationSegment] = Field(
|
||||
description="LED segments for each screen edge",
|
||||
min_length=1,
|
||||
max_length=4
|
||||
)
|
||||
leds_top: int = Field(default=0, ge=0, description="Number of LEDs on the top edge")
|
||||
leds_right: int = Field(default=0, ge=0, description="Number of LEDs on the right edge")
|
||||
leds_bottom: int = Field(default=0, ge=0, description="Number of LEDs on the bottom edge")
|
||||
leds_left: int = Field(default=0, ge=0, description="Number of LEDs on the left edge")
|
||||
|
||||
|
||||
class CalibrationTestModeRequest(BaseModel):
|
||||
|
||||
Reference in New Issue
Block a user