Give a dashboard the panel's own size, and put the dots on its grid
A dashboard now carries the canvas it is drawn for (canvas_width / canvas_height, presets plus two numbers in the settings panel). Editor and wall panel render that surface at its true pixel size and scale it to fit, so a side panel opening changes only the scale — never the arrangement being made. With the width and column count known the dot pitch is exact, (width + gap) / columns by row height + gap, so a dot sits where every widget corner snaps. The wall panel shows no dots. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01H7LwYgJfpkbLCTeiAf8U4A
This commit is contained in:
@@ -180,6 +180,12 @@ class DashboardDef(BaseModel):
|
||||
#: How many columns the grid is cut into, so a dashboard can be matched to
|
||||
#: the panel it will hang on.
|
||||
columns: int = Field(default=12, ge=1, le=48)
|
||||
#: The panel this dashboard is drawn for, in CSS pixels. Both the editor
|
||||
#: and the wall panel scale that surface to fit whatever room they have, so
|
||||
#: an arrangement does not depend on the window it was made in. Zero means
|
||||
#: "unset" and the client falls back to its default.
|
||||
canvas_width: int = Field(default=1920, ge=0, le=7680)
|
||||
canvas_height: int = Field(default=1080, ge=0, le=4320)
|
||||
pages: list[PageDef] = Field(default_factory=list)
|
||||
#: Bumped on every save; a save based on an older one is refused.
|
||||
version: int = 1
|
||||
|
||||
Reference in New Issue
Block a user