v1.4.0 — Integration-driven layout, bookmarks, backup
Image (built + pushed manually, no CI): ghcr.io/samuelloranger/labby:1.4.0 (= :latest)
Features
- Integration-driven layout — dashboard renders from ordered integrations (no more pages/columns); drag-and-drop reorder on Manage Services with up/down keyboard/iOS fallback. One-time migration folds old layouts into integration order.
- Bookmarks widget — links editor with favicon auto-fetch.
- Backup — full export/import of integrations + dashboard.
Hardening (review pass)
- favicon endpoint: SSRF guard (blocks loopback/private/link-local incl. cloud metadata) + response size cap.
- Bookmark links sanitized against
javascript:href XSS. - Restore + layout migration now atomic (single transaction); restore validates integration types and accepts a null dashboard.
- Reorder repositions the full set (no stale-position collisions).
Breaking
Dashboard JSON schema changed (pages/columns removed). Auto-migrated on first boot.