- 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>