Round out the editor: head widgets, undo, group/split-column, site settings
- Head widgets are now first-class in dashboard edit mode: they get drag/edit/delete handles, their own SortableJS group (so they can't cross into columns), and the layout endpoint accepts a headWidgets[] sequence alongside columns[]. - New POST /edit/api/restore swaps glance.yml ↔ glance.yml.bak — effectively undo (and click again to redo). Surfaced as a "Restore previous version" button on /edit. - group and split-column are now editable inline via a new list-of-widgets schema type. Each item picks a widget type from a dropdown (excluding group/split-column to honor the backend's no-nesting rule) and renders that type's schema-driven sub-form. Switching the type re-renders the body. - New /edit/site-settings page with a form for branding (app name, logo, favicon, footer, app icon/background). POST applies via the same surgical yaml.Node update used for widgets. Theme/server intentionally still YAML for now. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.7
parent
7f36f30dad
commit
e108feb74b
@@ -236,7 +236,15 @@ var widgetSchemas = map[string][]widgetFieldSchema{
|
||||
{Key: "frameless", Label: "Hide widget frame", Type: "boolean"},
|
||||
},
|
||||
|
||||
// group + split-column intentionally skipped: their `widgets:` field is a
|
||||
// recursive list of widget objects, which the inline form generator can't
|
||||
// render usefully yet. They fall through to the YAML editor.
|
||||
"group": {
|
||||
{Key: "title", Label: "Custom title", Type: "string"},
|
||||
{Key: "widgets", Label: "Widgets in group", Type: "list-of-widgets", Required: true,
|
||||
Help: "Each tab inside the group. Nested groups and split-columns aren't allowed."},
|
||||
},
|
||||
|
||||
"split-column": {
|
||||
{Key: "title", Label: "Custom title", Type: "string"},
|
||||
{Key: "max-columns", Label: "Maximum columns (≥2)", Type: "number"},
|
||||
{Key: "widgets", Label: "Widgets shown in the split", Type: "list-of-widgets", Required: true},
|
||||
},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user