feat: bug fixes, layout improvements, and new features
Bug fixes: - Remove non-existent `role` column from admin users SQL query (A1) - Fix Nextcloud Talk chat API path v4 → v1 for messages/send/read (A2) - Fix ServiceModeTab sync: useState → useEffect to reflect DB state (A3) - Guard BookStack book_slug with book_id fallback to avoid broken URLs (A4) Layout & UI: - Chat panel: sticky full-height positioning, main content scrolls independently (B1) - Vehicle booking datetime inputs: explicit text color for dark mode (B2) - AnnouncementBanner moved into grid with full-width span (B3) Features: - Per-user widget visibility preferences stored in users.preferences JSONB (C1) - Link collections: grouped external links in admin UI and dashboard widget (C2) - Admin ping history: migration 026, checked_at timestamps, expandable history rows (C4) - Service mode end date picker with scheduled deactivation display (C5) - Vikunja startup config logging and configured:false warnings (C7) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
17
frontend/src/constants/widgets.ts
Normal file
17
frontend/src/constants/widgets.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
export const WIDGETS = [
|
||||
{ key: 'vehicles', label: 'Fahrzeuge', defaultVisible: true },
|
||||
{ key: 'equipment', label: 'Ausrüstung', defaultVisible: true },
|
||||
{ key: 'atemschutz', label: 'Atemschutz', defaultVisible: true },
|
||||
{ key: 'events', label: 'Termine', defaultVisible: true },
|
||||
{ key: 'nextcloudTalk', label: 'Nextcloud Talk', defaultVisible: true },
|
||||
{ key: 'bookstackRecent', label: 'Wissen — Neueste', defaultVisible: true },
|
||||
{ key: 'bookstackSearch', label: 'Wissen — Suche', defaultVisible: true },
|
||||
{ key: 'vikunjaTasks', label: 'Vikunja Aufgaben', defaultVisible: true },
|
||||
{ key: 'vikunjaQuickAdd', label: 'Vikunja Schnelleingabe', defaultVisible: true },
|
||||
{ key: 'vehicleBooking', label: 'Fahrzeugbuchung', defaultVisible: true },
|
||||
{ key: 'eventQuickAdd', label: 'Termin erstellen', defaultVisible: true },
|
||||
{ key: 'adminStatus', label: 'Admin Status', defaultVisible: true },
|
||||
{ key: 'links', label: 'Links', defaultVisible: true },
|
||||
] as const;
|
||||
|
||||
export type WidgetKey = typeof WIDGETS[number]['key'];
|
||||
Reference in New Issue
Block a user