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:
2026-08-16 19:08:09 +02:00
co-authored by Claude Fable 5
parent fcd43e9ad9
commit c2321fe942
8 changed files with 308 additions and 79 deletions
+28
View File
@@ -218,6 +218,20 @@ export const DashboardDef_InputSchema = {
title: 'Columns',
default: 12
},
canvas_width: {
type: 'integer',
maximum: 7680,
minimum: 0,
title: 'Canvas Width',
default: 1920
},
canvas_height: {
type: 'integer',
maximum: 4320,
minimum: 0,
title: 'Canvas Height',
default: 1080
},
pages: {
items: {
'$ref': '#/components/schemas/PageDef-Input'
@@ -255,6 +269,20 @@ export const DashboardDef_OutputSchema = {
title: 'Columns',
default: 12
},
canvas_width: {
type: 'integer',
maximum: 7680,
minimum: 0,
title: 'Canvas Width',
default: 1920
},
canvas_height: {
type: 'integer',
maximum: 4320,
minimum: 0,
title: 'Canvas Height',
default: 1080
},
pages: {
items: {
'$ref': '#/components/schemas/PageDef-Output'
+4
View File
@@ -83,6 +83,8 @@ export type DashboardDef_Input = {
name: string;
title?: string;
columns?: number;
canvas_width?: number;
canvas_height?: number;
pages?: Array<PageDef_Input>;
version?: number;
};
@@ -94,6 +96,8 @@ export type DashboardDef_Output = {
name: string;
title?: string;
columns?: number;
canvas_width?: number;
canvas_height?: number;
pages?: Array<PageDef_Output>;
version?: number;
};