.. _changelog: Änderungsprotokoll ================== 0.5.27 (2026-07-09) ------------------- Added ~~~~~ * **Kanban-Ansicht für die Gig-Checkliste**: Die Checkliste im Tab **✅ Checkliste** des Gig-Detaildialogs bietet nun wahlweise eine **Kanban-Board-Ansicht** neben der bestehenden Listenansicht. Ein Toggle-Schalter (☰ Liste / ⬛ Kanban) im Header wechselt zwischen beiden Modi. Das Board zeigt zwei Spalten – **Offen** (gelb) und **Erledigt** (grün) – mit kompakten Karten pro Aufgabe (Titel, Kategorie- Badge, Fälligkeit, Zuständiger, Kommentar). Editors können Aufgaben direkt per Schaltfläche zwischen den Spalten verschieben. * **Vergangenheitssperre – Gig-Checkliste (Frontend)**: Für vergangene Gigs wird der **+ Eintrag**-Button ausgeblendet und durch einen 🔒-Hinweis ersetzt. Das Formular lässt sich auch programmatisch nicht mehr öffnen. * **Vergangenheitssperre – Gig-Checkliste (Backend)**: Der Endpoint ``POST /gigs/{gig_id}/checklist`` lehnt neue Einträge für vergangene Gigs mit **HTTP 403** ab (*„Für vergangene Gigs können keine neuen Checklisten-Einträge angelegt werden."*). * **Vergangenheitssperre – Verfügbarkeit (Frontend)**: Das ``AvailabilityWidget`` erhält einen neuen Prop ``readonly``. Bei vergangenen Gigs werden die Statusbuttons (Dabei / Vielleicht / Nicht dabei) sowie das Aushilfe-Formular und das Kommentarfeld ausgeblendet; stattdessen erscheint der Hinweis *„🔒 Vergangenes Event – keine Rückmeldung mehr möglich."* Die bereits abgegebene eigene Rückmeldung bleibt als Badge sichtbar; die Gesamtübersicht aller Rückmeldungen ist weiterhin lesbar. Der ``GigDetailsModal`` berechnet ``gigIsPast`` und übergibt es als ``readonly`` an das Widget. * **Vergangenheitssperre – Verfügbarkeit (Backend)**: Die Endpoints ``PUT /availability/gig/{id}`` und ``DELETE /availability/gig/{id}`` lehnen Schreibzugriffe auf vergangene Gigs mit **HTTP 403** ab. Proben (``event_type=rehearsal``) sind nicht betroffen. Lesezugriffe (``GET``) bleiben für alle Events uneingeschränkt. * **Tests – Verfügbarkeit (vergangene Gigs)**: Fünf neue Tests in ``test_availability.py`` decken die Vergangenheitssperre ab: PUT → 403, DELETE → 403, Fehlermeldung enthält „vergangen", Proben nicht betroffen, GET weiterhin lesbar. * **Tests – Gig-Checkliste** (neue Datei ``test_gig_checklist.py``): 12 Tests für GET (leer, 404, Lesezugriff auf vergangene Gigs) und POST (Erfolgsfall, vollständige Rückgabe, 404, fehlende Berechtigung, vergangener Gig → 403 mit Fehlermeldung, kein DB-Eintrag nach Ablehnung). Changed ~~~~~~~ * **+ Eintrag-Button**: Verwendet nun ``variant-filled-primary`` (ohne ``border``) – konsistent mit anderen Hinzufügen-Buttons (z. B. im Ablaufplan). * Chore: Projektversion auf ``0.5.27`` erhöht (``version.json``, ``pyproject.toml``, ``frontend/package.json``). * Manual: Changelog für Release ``0.5.27`` ergänzt. 0.5.26 (2026-07-07) ------------------- Added ~~~~~ * **Kommentarfeld in der Gig-Checkliste**: Jede Aufgabe erhält ein optionales Feld **Kommentar / Ergebnis**, um das Ergebnis oder Rückstände zu protokollieren. Vorhandene Kommentare werden in der Listenansicht mit 💬-Symbol angezeigt. * Datenbank: neue Spalte ``comment TEXT`` in ``gig_checklist_items`` via Alembic-Migration ``c3d4e5f6a1b2_add_comment_to_checklist_items``. * Schema: ``GigChecklistItemIn`` / ``GigChecklistItemOut`` um ``comment`` ergänzt. * **Checklisten-Detailmodal**: Klick auf eine Aufgabe in der Checkliste öffnet ein Modal mit allen Details (Titel, Status, Gig, Kategorie, Zuständiger, Fälligkeit, Kommentar). Admins und Editors können darin die Aufgabe direkt erledigen oder über ein Inline-Formular bearbeiten. Das Modal ist sowohl in der Gig-Checkliste als auch im Dashboard erreichbar. * **Dashboard – Tab „✅ Checkliste"**: Zeigt offene Gig-Checklisten-Aufgaben, die dem eingeloggten Mitglied zugewiesen sind. Klick auf einen Eintrag öffnet das Detailmodal; Admins/Editors können Aufgaben direkt als erledigt markieren. * **Dashboard – Tab „👥 Gig-Rückmeldungen"**: Zeigt bevorstehende Gigs, für die noch keine Verfügbarkeitsrückmeldung abgegeben wurde. Link führt zur Gig-Übersicht. * **Dashboard – Todos aus ``GET /user_todos``**: Der bestehende Backend-Endpunkt liefert nun zwei zusätzliche Felder: * ``gig_checklist_todos`` – offene, dem User zugewiesene Checklisten-Aufgaben * ``pending_gigs`` – Gigs ohne Verfügbarkeitseintrag des Users Beide Felder werden in einem einzigen API-Call mitgeliefert; kein separater Request mehr nötig. * Zusätzlicher Backend-Endpunkt ``GET /availability/pending_gigs`` bleibt weiterhin verfügbar (für externe Nutzung). Changed ~~~~~~~ * Dashboard-Hilfetext aktualisiert: beschreibt jetzt alle sechs Todo-Tabs. * :ref:`checkliste`: Neue Abschnitte *Kommentarfeld*, *Aufgaben-Detailansicht* und *Dashboard-Integration*. * :ref:`dashboard`: vollständig überarbeitet; beschreibt alle sechs Tabs, Nächste Termine, Saison-Statistiken und Kalender-Abo. * Chore: Projektversion auf ``0.5.26`` erhöht. 0.5.25 (2026-07-07) ------------------- Added ~~~~~ * **Gig-Checkliste**: Jeder Gig erhält einen neuen Tab **✅ Checkliste** (Tab 6) mit einer strukturierten Aufgabenliste für die Gig-Vorbereitung. Aufgaben besitzen Titel, Kategorie, optional einen Verantwortlichen (Mitglied oder Freitext) sowie ein optionales Fälligkeitsdatum. Admins und Editors können Aufgaben anlegen, bearbeiten, löschen und als erledigt markieren; normale Mitglieder sehen die Liste in Lese-Ansicht. * Gig-Details / Tab **Übersicht**: Neue Karte **✅ Checkliste** zeigt sofort einen Fortschrittsbalken (erledigte / offene Punkte) sowie bis zu vier offene Aufgaben als Schnellvorschau. Der Link **Details →** wechselt direkt in den Checklisten-Tab. * Backend: Neuer Router ``/gigs/{gig_id}/checklist`` mit Endpunkten ``GET``, ``POST``, ``PUT /{item_id}``, ``PATCH /{item_id}/done``, ``DELETE /{item_id}``. Das Abhaken (``PATCH done``) setzt ``check_editor`` voraus. * Datenbank: Neue Tabelle ``gig_checklist_items`` über Alembic-Migration ``f1a2b3c4d5e6_add_gig_checklist_items``; ``upgrade``/``downgrade`` vollständig implementiert. * Frontend-API: Neue Hilfsfunktionen ``getGigChecklist``, ``createChecklistItem``, ``updateChecklistItem``, ``toggleChecklistItemDone``, ``deleteChecklistItem`` in ``api.js``. * Manual: Neues Kapitel :ref:`checkliste` im Benutzerhandbuch; Querverweise in :ref:`gigs` ergänzt. * **Setlisten-Sperre**: Setliste und Ablaufplan eines Gigs sind nach mehr als sieben Tagen seit dem Gig-Datum für Editors gesperrt. Admins können weiterhin Änderungen vornehmen. * Backend: Hilfsfunktion ``_is_setlist_locked`` prüft das Gig-Datum; alle schreibenden Endpunkte (``PUT /update_setlist/``, ``POST/PUT/DELETE /schedule/``) geben bei überschrittener Frist und fehlendem Admin-Recht ``403 SETLIST_LOCKED`` zurück. * Frontend: Berechneter Zustand ``setlistLocked`` und ``canEditSetlist``; Button **Setliste bearbeiten** wird deaktiviert (🔒-Präfix, Tooltip). Im Ablaufplan-Tab erhalten Admins einen gelben Hinweis. * **Mobiles Tab-Layout**: Im Gig-Detail-Dialog werden die sieben Tabs auf kleinen Bildschirmen (< ``sm``) durch ein natives ``