Commit graph

  • bb4edc9550 chore(ansible): inventory auf Prod-Hostnamen aktualisieren (info01–info09) main Jesko Anschütz 2026-04-16 16:19:48 +02:00
  • b4f36639bf fix(kiosk): Chromium-Stop beschleunigen (90s → 10s) Jesko Anschütz 2026-04-16 16:06:10 +02:00
  • dd96b20263 feat(media): Medien nach Besitzer dann created_at sortieren Jesko Anschütz 2026-03-28 10:49:32 +01:00
  • 251e1fb15e fix(ui): toggleRestrictedMedia war im falschen Template (screenOverviewTmpl statt manageTmpl) Jesko Anschütz 2026-03-28 10:37:39 +01:00
  • e99cac4719 fix(ui): Toggle-Button 'Alles anzeigen' — JS direkt statt CSS-Klasse Jesko Anschütz 2026-03-28 10:24:59 +01:00
  • 3a0ac13faa fix(auth): restricted User können nur zugewiesene Screens aufrufen Jesko Anschütz 2026-03-28 10:17:29 +01:00
  • 3ebeaa70e1 fix(ui): restricted User sehen eigene Medien nicht (CSS-Hidden-Bug) Jesko Anschütz 2026-03-28 09:34:13 +01:00
  • cc9ca2cd81 fix: nil-pointer in DeleteMediaUI, restricted delete-check in tenant handler, SCHEMA fix Jesko Anschütz 2026-03-28 09:18:12 +01:00
  • e884acf41d docs: media_assets.created_by_user_id + Berechtigungslogik dokumentiert Jesko Anschütz 2026-03-28 09:14:35 +01:00
  • 8bcb59468a feat(ui): Restricted-Medien Toggle + Besitzer-Badge + Kein-Besitzer-Badge Jesko Anschütz 2026-03-28 09:13:07 +01:00
  • bfef6e25f5 feat(tenant): List/Create mit owner-Feld aktualisiert Jesko Anschütz 2026-03-28 09:11:16 +01:00
  • 7b0b132169 feat(ui): manage-Handler — restricted-aware List/Create/Delete Jesko Anschütz 2026-03-28 09:09:59 +01:00
  • 865c5e7ca8 feat(manage): canDeleteMedia + role-aware handlers für restricted users Jesko Anschütz 2026-03-28 09:07:13 +01:00
  • 52f503d462 feat(store): MediaAsset-Ownership — List/Create/Get mit created_by_user_id Jesko Anschütz 2026-03-28 09:03:44 +01:00
  • c40c846436 feat(db): created_by_user_id zu media_assets hinzufügen Jesko Anschütz 2026-03-28 09:01:00 +01:00
  • e6ad773e74 docs: Implementierungsplan user-spezifische Medien Jesko Anschütz 2026-03-28 08:55:36 +01:00
  • 922cb905b3 docs: spec — Besitzername bei Restricted-Medien anzeigen Jesko Anschütz 2026-03-28 08:47:17 +01:00
  • 0feb3073af docs: spec erweitern — Toggle für Restricted-Medien (Admin + screen_user) Jesko Anschütz 2026-03-28 08:45:07 +01:00
  • 6d74a4aa30 docs: spec user-spezifische Medien für Restricted Users Jesko Anschütz 2026-03-28 08:41:48 +01:00
  • 522f15c3cd fix(ansible): cloud-init deinstallieren und Verzeichnisse entfernen Jesko Anschütz 2026-03-27 22:10:19 +01:00
  • 3c7f5ce725 fix(ansible): network-online.target entfernen, network.target reicht Jesko Anschütz 2026-03-27 22:09:27 +01:00
  • 30548452bc docs: Implementierungsplan Boot-Optimierung Jesko Anschütz 2026-03-27 22:08:15 +01:00
  • 2ccfd8592b docs: spec Boot-Optimierung network-online + cloud-init Jesko Anschütz 2026-03-27 22:07:34 +01:00
  • b4d0a24320 fix(auth): restricted-User landen nach Login auf eigenen Screens (nicht Tenant-Dashboard) Jesko Anschütz 2026-03-27 21:59:32 +01:00
  • 787287b328 fix(restricted): Display-Box ausblenden; Sidebar zeigt nur eigene Screens Jesko Anschütz 2026-03-27 21:43:51 +01:00
  • f70ebddad2 docs: restricted-Rolle in API-Endpoints und README dokumentiert Jesko Anschütz 2026-03-27 21:40:48 +01:00
  • c943df4663 feat(ui): restricted-User sehen keine Steuerungs-UI (An/Aus, Zeitplan, Override) Jesko Anschütz 2026-03-27 21:38:37 +01:00
  • e35c3cfdbd feat(ui): Admin-Formular: Rolle-Dropdown + Badge in User-Liste Jesko Anschütz 2026-03-27 21:35:52 +01:00
  • 03ea3edb8b feat(handler): HandleCreateScreenUser liest role; UserRole ans Template übergeben Jesko Anschütz 2026-03-27 21:34:21 +01:00
  • f1dcb4f1d3 feat(router): Steuerungs-Endpunkte blocken restricted-User (403) Jesko Anschütz 2026-03-27 21:32:40 +01:00
  • 18ba448f05 feat(store): CreateScreenUser nimmt role-Parameter; ListScreenUsers schließt restricted ein Jesko Anschütz 2026-03-27 21:31:15 +01:00
  • 700567071b feat(auth): RequireNotRestricted middleware Jesko Anschütz 2026-03-27 21:29:26 +01:00
  • e0ea7f0bde docs: Implementierungsplan für restricted-Rolle Jesko Anschütz 2026-03-27 21:26:54 +01:00
  • c5f222cad8 docs: Design-Spec für restricted-Rolle Jesko Anschütz 2026-03-27 21:19:50 +01:00
  • 4996ff6def feat(ansible): agent-Build unterstützt armv7 (Raspi 2) via agent_goarch/agent_goarm Jesko Anschütz 2026-03-27 21:08:06 +01:00
  • 958090cb00 feat(admin): Link zu Monitor-Steuerung im Admin-Navbar Jesko Anschütz 2026-03-27 20:55:50 +01:00
  • bb30a75f5a fix(ui): Admin sieht /manage mit allen Screens statt Redirect Jesko Anschütz 2026-03-27 20:53:23 +01:00
  • f5d8311204 feat: Override, Wochenend-Sperre und per-Screen-Override implementiert Jesko Anschütz 2026-03-27 20:38:10 +01:00
  • 2bf82eed53 fix: Upsert löscht override_on_until nicht mehr; README + Auth-Kommentar Jesko Anschütz 2026-03-27 20:30:52 +01:00
  • db68c84d45 docs: API-ENDPOINTS + SCHEMA für Override und Wochenend-Sperre Jesko Anschütz 2026-03-27 20:25:50 +01:00
  • fc94f56162 feat(ui): per-Screen-Override in Übersichtskarte und Detailseite Jesko Anschütz 2026-03-27 20:24:21 +01:00
  • c263d97cca feat(ui): Übersichtsseite – globaler Override-Banner Jesko Anschütz 2026-03-27 20:21:06 +01:00
  • 9aabf18aa2 feat(wiring): GlobalOverrideStore in Router, App und Scheduler-Goroutinen Jesko Anschütz 2026-03-27 20:19:03 +01:00
  • 42458e68ff feat(manage): Handler für globalen + per-Screen-Override Jesko Anschütz 2026-03-27 20:17:20 +01:00
  • 0ca63a5367 feat(scheduler): check() unterdrückt display_on bei Wochenende/Override Jesko Anschütz 2026-03-27 20:15:21 +01:00
  • 81711f2f3d feat(scheduler): Reconciler iteriert alle Screens + resolveDesiredState Jesko Anschütz 2026-03-27 20:14:32 +01:00
  • e76f89798f feat(scheduler): resolveDesiredState – per-Screen, global, Wochenende, Zeitplan Jesko Anschütz 2026-03-27 20:13:23 +01:00
  • be3a5f5aac feat(store): ScreenSchedule.OverrideOnUntil – Struct, Get, Upsert, ListEnabled Jesko Anschütz 2026-03-27 20:11:41 +01:00
  • 8f1abd977b feat(store): GlobalOverrideStore + SetOverrideOnUntil Jesko Anschütz 2026-03-27 20:10:36 +01:00
  • 1b7c48f27f feat(db): Migration 006 – global_override-Tabelle + override_on_until Jesko Anschütz 2026-03-27 20:09:23 +01:00
  • 78a04dcee7 chore: .worktrees/ zu .gitignore hinzufügen Jesko Anschütz 2026-03-27 20:07:56 +01:00
  • e0d7820480 docs: Implementierungsplan für Override und Wochenend-Sperre Jesko Anschütz 2026-03-27 20:07:06 +01:00
  • bb3f11fa66 docs: Design-Spec für globalen Override und Wochenend-Sperre Jesko Anschütz 2026-03-27 19:55:58 +01:00
  • ccec32c832 feat(scheduler): Reconciler gleicht Ist- und Soll-Display-Zustand ab Jesko Anschütz 2026-03-27 18:33:48 +01:00
  • 88e10d1e67 fix(ui): saveSchedule nutzt SCREEN_SLUG statt printf %q Jesko Anschütz 2026-03-27 17:57:31 +01:00
  • e7776720c8 fix(ui): sendDisplayCmd nutzt SCREEN_SLUG statt printf %q (URL-Escaping-Bug) Jesko Anschütz 2026-03-27 17:56:46 +01:00
  • dc16a0fbd0 fix(store): GetDisplayState unterscheidet pgx.ErrNoRows; tz-Kommentar im Scheduler Jesko Anschütz 2026-03-27 07:32:28 +01:00
  • a27ef11b45 docs: Display-Steuerung + Zeitplan in API-ENDPOINTS, SCHEMA, README Jesko Anschütz 2026-03-27 07:27:50 +01:00
  • 588045ac04 feat(ui): Zeitplan-Formular in Playlist-Verwaltung Jesko Anschütz 2026-03-27 07:23:38 +01:00
  • 6cabaeca58 feat(manage): Schedule in ManageUI-Template-Daten Jesko Anschütz 2026-03-27 07:23:07 +01:00
  • fc5587c171 fix: Zeitformat-Validierung + pgx.ErrNoRows in ScreenScheduleStore.Get Jesko Anschütz 2026-03-27 07:21:01 +01:00
  • 83af005fad feat(api): POST /api/v1/screens/{slug}/schedule + Scheduler verdrahtet Jesko Anschütz 2026-03-27 07:17:45 +01:00
  • 9b766f9086 feat(scheduler): Display-Zeitplan-Scheduler Package Jesko Anschütz 2026-03-27 07:17:40 +01:00
  • 7e485e505e feat(store): ScreenScheduleStore mit Get/Upsert/ListEnabled Jesko Anschütz 2026-03-27 07:17:37 +01:00
  • 1556c0d002 feat(db): screen_schedules-Tabelle für Zeitplan Jesko Anschütz 2026-03-27 07:17:34 +01:00
  • bdd99d10bd feat(ui): Display-Buttons und Sammelschalter in Screen-Übersicht Jesko Anschütz 2026-03-27 07:10:40 +01:00
  • 68fc0bf4cf feat(ui): Display-Steuerbox in Playlist-Verwaltung Jesko Anschütz 2026-03-27 07:10:23 +01:00
  • 2a312cd61a feat(manage): DisplayState je Screen in ScreenOverview Jesko Anschütz 2026-03-27 07:05:06 +01:00
  • c4f15d862c feat(manage): DisplayState in ManageUI-Template-Daten Jesko Anschütz 2026-03-27 07:04:54 +01:00
  • 086f093cb9 feat(store): GetDisplayState für screen_status Jesko Anschütz 2026-03-27 07:02:26 +01:00
  • 79fcc20b79 fix(display): screen UUID lookup, authScreen middleware, JSON encoding Jesko Anschütz 2026-03-26 23:35:05 +01:00
  • 96135266f1 fix(ansible): DPMS aktivieren für Display-Steuerung Jesko Anschütz 2026-03-26 23:31:00 +01:00
  • c91e49dc57 feat(agent): displaycontroller in app.go verdrahtet Jesko Anschütz 2026-03-26 23:30:37 +01:00
  • a3255a0ced feat(agent): display_state im Status-Report Jesko Anschütz 2026-03-26 23:23:50 +01:00
  • 1047572157 feat(agent): mqttsubscriber abonniert Command-Topic Jesko Anschütz 2026-03-26 23:23:23 +01:00
  • bcc50635e5 feat(agent): SendDisplayState im MQTT-Publisher + Interface Jesko Anschütz 2026-03-26 23:07:31 +01:00
  • 4ef16048ad feat(agent): displaycontroller Package (xset DPMS) Jesko Anschütz 2026-03-26 23:07:14 +01:00
  • f985a99ea1 feat(api): display_state im Player-Status-Report persistieren Jesko Anschütz 2026-03-26 23:05:25 +01:00
  • fbcda1e2b8 feat(api): POST /api/v1/screens/{slug}/display Jesko Anschütz 2026-03-26 23:05:22 +01:00
  • 0d51d951a2 feat(mqtt): SendDisplayCommand mit retained QoS 1 Jesko Anschütz 2026-03-26 23:05:20 +01:00
  • c359757e31 feat(store): UpsertDisplayState für screen_status Jesko Anschütz 2026-03-26 23:05:18 +01:00
  • a833220ca6 feat(db): screen_status-Tabelle für Display-Zustand Jesko Anschütz 2026-03-26 23:05:15 +01:00
  • 01942aa3f3 docs: Implementierungsplan Display-Steuerung Schritt 1 (Command-Pipeline) Jesko Anschütz 2026-03-26 22:59:27 +01:00
  • 52bc1fbd6f docs: Design-Spec Display-Steuerung Schritt 1 (Command-Pipeline) Jesko Anschütz 2026-03-26 22:49:05 +01:00
  • 052cf199ae fix(manage): HandleReorder gibt 400 bei Mismatch zurück, slog für 500-Fehler Jesko Anschütz 2026-03-26 22:29:48 +01:00
  • 4fab5fe28a fix(manage): HandleReorderUI gibt 400 bei Mismatch zurück Jesko Anschütz 2026-03-26 22:27:07 +01:00
  • 1c11aa9877 fix(store): Reorder validiert Vollständigkeit und RowsAffected Jesko Anschütz 2026-03-26 22:23:28 +01:00
  • b463aeeae1 docs: Implementierungsplan für Reorder-Validierung Jesko Anschütz 2026-03-26 22:20:15 +01:00
  • 30325dc1b6 docs: Design-Spec für Reorder-Validierung im PlaylistStore Jesko Anschütz 2026-03-26 22:18:19 +01:00
  • 37a56903f2 Set Chromium to allow third-party cookies Jesko Anschütz 2026-03-26 18:48:05 +01:00
  • ba08220ec5 fix(player): resize-Event nach iframe-Einblenden feuern Jesko Anschütz 2026-03-26 13:04:44 +01:00
  • 8025946ab7 fix: orientationLabel in Tenant-Template registrieren + mosquitto-Abhängigkeit entfernen Jesko Anschütz 2026-03-25 09:47:11 +01:00
  • e077473bf0 feat(ui): Tenant-Dashboard neu gestaltet Alwin 2026-03-25 08:30:07 +00:00
  • 8bf142b5b1 feat(ui): Screen-Übersicht neu gestaltet Alwin 2026-03-25 08:27:18 +00:00
  • 0aedf61569 feat(ui): Playlist-Editor neu gestaltet (Karten, Inline-Edit, Zwei-Spalten) Alwin 2026-03-25 08:23:38 +00:00
  • a691186d9a feat(ui): Admin-Dashboard neu gestaltet (Karten-Grid, Tabs, Modals) Alwin 2026-03-25 07:54:42 +00:00
  • 41e12d1235 feat(ui): Provision-Wizard neu gestaltet Alwin 2026-03-25 07:44:48 +00:00
  • 10a495c13c feat(ui): Login-Seite neu gestaltet Alwin 2026-03-25 07:40:28 +00:00
  • e1506d5d2c fix(manage): HandleUpdateItemUI returns 204 for fetch callers Alwin 2026-03-25 07:01:47 +00:00
  • 135bbd875f chore: .worktrees/ zu .gitignore hinzufügen Alwin 2026-03-25 06:41:03 +00:00