ETS-MD Changelog
# ETS-MD Changelog fuer ChatGPT
Bevorzugter ChatGPT-Link: https://ets-intern.de/ets-md-chatgpt-changelog-116b7c739602453f9b0d3ddbf7818e07-public.html
TXT-Fallback: https://ets-intern.de/ets-md-chatgpt-changelog-116b7c739602453f9b0d3ddbf7818e07.txt
Diese Datei ist die zentrale, maschinenlesbare Zusammenfassung fuer ChatGPT.
Bei jedem Upload/Deployment sollen neue Aenderungen hier ergaenzt und diese Datei mit hochgeladen werden. Der Dateiname ist absichtlich kryptisch und sollte nicht in Navigationen verlinkt werden.
## Format
Neue Eintraege bitte oben einfuegen.
## 2026-10-09 - Video-Timeline ohne doppelte Ideenliste
- Die Benutzer-Ideenliste unterhalb der Video-Timeline wurde ausgeblendet; gespeicherte Ideen und Mitwirkenden-Zuordnungen bleiben erhalten.
## 2026-10-09 - Kommentare und Szenen folgen der Wiedergabe
- Projektversions-Kommentare, Marker und Ausschnitte heben die erreichte Zeitmarke bis zur naechsten Zeitmarke hervor.
- Video-Timeline hebt Szenenliste, Punktmarker und Bereiche innerhalb ihrer Zeitzuordnung hervor; ueberlappende Bereiche koennen gleichzeitig aktiv sein.
- Spulen und Versionswechsel aktualisieren die Hervorhebung, ohne automatisches Scrollen.
## 2026-10-09 - Geteilte Links nach Login oeffnen
- Geschuetzte GET-Ziele inklusive Query-Parameter werden vor der Anmeldung in der Session gespeichert.
- Legacy- und Keycloak-Login verwenden danach wieder den urspruenglichen Link; die normalen Zugriffsrechte gelten weiterhin.
## 2026-10-09 - Audiovergleich wechselt die Version
- Klick auf eine andere Wellenform aktiviert die angeklickte Version an der gewaehlten Position; laufende Wiedergabe wird mit dieser Datei fortgesetzt.
- Pfeiltasten in Projektversions-Wellenformen verwenden ebenfalls die gewaehlte Version.
## 2026-10-09 - Gesamtdauer von Storage-Audio
- Beats, Releases und Projektversionen aktualisieren die Laufzeit bei durationchange und nachgeladenen Metadaten.
- Gespeicherte Release-Laufzeiten werden vor dem Abspielen angezeigt; Audio bleibt bis zum Playerstart ungeladen.
## 2026-10-09 - WAV-Projektversionen spulen
- Range-Status, Content-Range und Content-Length von Hetzner werden vor der Stream-Ausgabe gesetzt.
- Der Player kann dadurch gezielt Teilbereiche einer WAV-Datei laden und im Track springen.
## 2026-10-09 - Oeffentliche ChatGPT-Dokumentation
- Changelog und Funktionsuebersicht besitzen loginfreie HTML-Endpunkte mit normalem `text/html` Content-Type.
- `robots.txt` erlaubt ChatGPT-User, OAI-SearchBot, GPTBot und allgemeinen Web-Abrufen den direkten Zugriff; die fruehere globale Domain-Sperre wurde entfernt.
- Die TXT-Dateien bleiben als zentrale Textquelle erhalten.
- Die alten TXT-URLs leiten auf statische HTML-Dateien ohne Session-Cookies oder private Cache-Header weiter.
- Der Ablauf eines ungenutzten Beat-Picks wird mit Beat, ehemaligem Besitzer, geplantem und tatsaechlichem Ablaufzeitpunkt sowie Freigabegrund im Audit Log protokolliert.
## 2026-10-08 - Betrieb, Sicherheit und Arbeitsuebersicht
- Neue rollenbasierte Seiten `/heute`, `/suche` und `/einrichtung` buendeln Tagesarbeit, berechtigungsgefilterte Suche und Benutzer-Onboarding.
- Admins erhalten unter `/admin/system-status` den Zustand von Datenbanken, Scheduler, Queue, Storage, Integrationen und Audit-Integritaet.
- Web-Push wird nach dem internen Notification-Eintrag asynchron ueber die Datenbankqueue verarbeitet; der Scheduler startet den Queue-Worker minuetlich.
- Der Queue-Worker verwendet das wertlose `--stop-when-empty`-Flag korrekt; der beim ersten Rollout erkannte Scheduler-Parameterfehler wurde direkt behoben.
- Dashboards werden kurz gecacht und bei Aenderungen an Projekten, Releases, Beats, Aufgaben, Freigaben und Problemen invalidiert.
- Kombinierte DB-Indizes und Slow-Query-Logging verbessern und ueberwachen zentrale Listenabfragen.
- Security Header, zentrale Upload-Dateipruefung und benannte Rate Limits wurden ergaenzt.
- Neue Audit-Eintraege werden kryptografisch verkettet; `audit:seal` versiegelt den Altbestand und `audit:verify` prueft ihn.
- Automatisch abgelaufene Beat-Picks dokumentieren Artist/User, Pickzeit, Ablaufzeit und `EXPIRED_NO_PROJECT` im Audit Log.
- Audioquellen fuer Beats, Projekte und Releases bleiben lazy und werden erst beim Starten des Players gesetzt.
- 52 automatisierte Tests mit 156 Assertions laufen erfolgreich.
## 2026-10-08 - Laravel 12 und Betriebspruefung
- ETS-MD wurde von Laravel 11.54.0 auf Laravel 12.69.3 aktualisiert.
- PHPUnit wurde auf 11.5.57 und die kompatiblen Framework-Abhaengigkeiten wurden aktualisiert.
- Composer meldet nach dem Upgrade keine bekannten Security-Advisories mehr.
- Der Player-App-Update-Endpunkt verlangt nun den API-Schluessel und gibt ihn nicht mehr an anonyme Aufrufer weiter.
- Fehlende Queue-Tabellen wurden migrationssicher angelegt und der produktive Laravel-Scheduler als Cronjob aktiviert.
- Laufzeitkonfiguration fuer FFmpeg, Web Push, Storage und Player-API funktioniert nun auch mit aktivem Config-Cache.
- Produktionsrechte wurden gehaertet, sensible Env-Backups geschuetzt und veraltete Deployment-/Windows-Pfadartefakte aus dem aktiven Projektroot entfernt.
## 2026-10-08 - Zentrales Keycloak-Benutzerprofil
- Keycloak zeigt gruppierte Profilfelder fuer Artist Identity, Biografie, Handynummer, Geburtsdatum, Anschrift, Website, Streaming-Links, Social Media und externen Distributor.
- ETS-MD kann dieselben Angaben im eigenen Profil und in der Admin-Benutzerpflege lesen und schreiben; Keycloak bleibt die fuehrende Datenquelle.
- Private Anschrift, Geburtsdatum und Handynummer werden nicht im oeffentlichen Kuenstlerprofil angezeigt.
- Rollen, Rechte, Push-Einstellungen und technische WhatsApp-Kontaktverknuepfungen bleiben ausschliesslich in ETS-MD.
## 2026-10-07 - Getrennter Keycloak-Kuenstlername
- Keycloak besitzt jetzt im Benutzerprofil das eigene Eingabefeld `Künstlername` mit dem internen Attribut `artist_name`.
- Ein JSON-Kompatibilitaetsfehler beim Schreiben der Keycloak-26-User-Profile-Konfiguration wurde behoben.
- Benutzername und Kuenstlername werden getrennt gespeichert; neue oder geaenderte Kuenstlernamen duerfen nicht dem Benutzernamen entsprechen.
- Fehlende Kuenstlernamen werden als nicht gesetzt gekennzeichnet. Der Username dient nur weiterhin als Anzeige-Fallback.
## 2026-10-04 - Keycloak Kuenstlername
- Keycloak ist nun die fuehrende Quelle fuer Vorname, Nachname, Kuenstlername und E-Mail. ETS-MD liest diese Felder beim Login und in der Profilpflege und schreibt Aenderungen zuerst nach Keycloak.
- Die Loginseite unterscheidet jetzt zwischen bereits migrierten Benutzern und dem bisherigen Login; beide Loginverfahren sind in den Admin-Einstellungen getrennt schaltbar.
- Kuenstlernamen koennen nur noch Admin und Management aendern. Management erhaelt die Bearbeitung direkt in seiner Kuenstleruebersicht.
- Benutzer koennen Vorname und Nachname getrennt im ETS-MD-Profil pflegen; Admins koennen beide Werte ebenfalls bei der Benutzeranlage und -bearbeitung verwalten.
- Gepflegte Personennamen werden in die Keycloak-Standardfelder synchronisiert, ohne den sichtbaren Kuenstlernamen als Display Name zu ersetzen.
- `artist_name` ist der zentrale sichtbare ETS-Anzeigename; der technische Username bleibt der Fallback.
- ETS-MD haelt eine lokale, synchronisierte Arbeitskopie fuer schnelle Abfragen und fachliche Beziehungen.
- Der gemeinsame Keycloak Client Scope `ets-profile` liefert `artist_name` in ID Token, Access Token und UserInfo an ETS-MD, StudioLink und weitere konfigurierte Clients.
- Die Navigation und der StudioLink Web Client zeigen bevorzugt den Kuenstlernamen.
- Ein idempotenter Artisan-Befehl richtet User Profile, Mapper und Client-Zuordnungen mit vorgeschaltetem Dry-Run ein.
- Keycloak-Vorname, -Nachname und fremde Benutzerattribute bleiben bei Profilsynchronisierungen erhalten.
## 2026-10-03 - StudioLink Web Client
- Erfolgreiche SSO-Anmeldungen leiten nicht mehr versehentlich zur Login-Seite zurueck; sichere interne Ruecksprungziele werden zentral validiert.
- Unter Tools steht ein geschuetzter StudioLink Web Client zum Empfangen freigegebener Studio-Sessions bereit.
- Die Seite verwendet ETS Single Sign-On, kurzlebige WebSocket-Tickets, TURN und den vorhandenen StudioLink-Server; Tokens und Audiodaten laufen nicht durch das Browser-Markup.
- PCM 16/24 Bit, Float32 und Opus werden unterstuetzt; Pegel, Lautstaerke sowie Sender- und Empfaenger-Netzwerkdaten werden angezeigt.
- Doppelte Verbindungsanfragen und Sessionwechsel waehrend einer Anfrage oder aktiven Verbindung werden verhindert.
- Audioformate, Paketstatistik und Jitterpuffer werden validiert bzw. begrenzt; korrekte leere Statusantworten des Servers werden akzeptiert.
- Zugriff wird serverseitig mit dem Recht `tools.studiolink` abgesichert.
- Bei einer lokalen Legacy-Anmeldung zeigt die Seite direkt die notwendige ETS-SSO-Verknuepfung und kehrt danach automatisch zum Web Client zurueck.
## 2026-09-30 - ETS Programm-Downloads
- Unter Tools steht die neue Seite `ETS Programme` bereit.
- Sie fuehrt ETS Music Visualizer, ETS CoverForge und ETS - StudioLink mit Verfuegbarkeit, Version, Dateigroesse und Aktualisierungsdatum auf.
- Installer liegen ausserhalb des oeffentlichen Webroots und werden nur ueber eine angemeldete, serverseitig gepruefte Downloadroute ausgeliefert.
- Dateipfade und Versionen sind zentral ueber die ETS-Programmkonfiguration bzw. Umgebungsvariablen pflegbar.
## 2026-09-27 - Lesbare Auswahlfelder
- Native Auswahlfelder und aufgeklappte Optionslisten verwenden nun im Dunkelmodus dunkle Flaechen mit heller Schrift.
- Im Hellmodus werden helle Optionsflaechen mit dunkler Schrift verwendet.
- Die Korrektur gilt zentral fuer Projektwahl und alle weiteren nativen Auswahlfelder im Portal.
## 2026-09-27 - Nur offene Projekte bei Terminen
- Die Projektauswahl in der Terminerstellung zeigt nur aktive, nicht pausierte, nicht abgeschlossene und nicht gesperrte Projekte.
- Die Regel wird serverseitig geprueft und kann nicht durch einen manipulierten Request umgangen werden.
- Bestehende Termine behalten eine fruehere Projektverknuepfung, auch wenn das Projekt spaeter geschlossen oder gesperrt wurde.
## 2026-09-27 - Vereinfachte Produktions-Termine
- Kalendertermine koennen mit einem bestehenden Projekt verknuepft werden.
- Schnellvorlagen stehen fuer Recording, Mix, Mastering, Videodreh, Video Post Production, Listening Session und Artwork bereit.
- Titel wie `Mix Track von Kuenstler` werden automatisch aus der Produktionsart und dem gewaehlten Projekt erzeugt und bleiben bearbeitbar.
- Die Projektseite bietet `Termin planen`; Kalender- und Termindetailansicht verlinken zurueck zum Projekt.
- Projektzugriff und Projektverknuepfung werden serverseitig geprueft.
## 2026-09-27 - Kalenderdarstellung
- Die Monatsansicht gibt dem Kalender auf Laptop- und Tabletbreiten mehr Platz und verschiebt die Synchronisationsleiste unter den Kalender.
- Titel, Terminart, Uhrzeit/Ganztagsstatus und Teamkennzeichnung werden in Tagesfeldern lesbar und responsiv dargestellt.
- Lange Titel werden nicht mehr mitten im Wort zerlegt.
```text
## YYYY-MM-DD HH:MM - Kurzbeschreibung
Typ: Feature | Bugfix | UI | Backend | Datenbank | Deployment
Betroffene Bereiche: ...
Live-Status: lokal | hochgeladen | Migration ausgefuehrt | Cache geleert
- ...
```
## 2026-09-25 - Externe Projekte ohne Pflichtpunkte
Typ: Bugfix | Backend | UI
Betroffene Bereiche: Projekte, Fehlt noch, Readiness, Project Reminder
Live-Status: hochgeladen, Migrationen und Caches ausgefuehrt, Live-Pruefung erfolgreich
- Externe Projekte erzeugen keine `Fehlt noch`-Eintraege mehr.
- Eine ETS-Release-Verknuepfung ist fuer externe Projekte nicht erforderlich.
- Externe Projekte werden defensiv aus automatischen und manuellen Projekt-Remindern ausgeschlossen.
- Auf der Detailseite externer Projekte wird der Bereich `Fehlt noch` nicht angezeigt.
## 2026-09-25 - Projektversionen und Kommentare verwalten
Typ: Feature | Backend | UI | Datenbank
Betroffene Bereiche: Projekte, Projektversionen, Kommentare, Audit Log
Live-Status: hochgeladen, Migration ausgefuehrt, Routen und Blade-Cache geprueft
- Uploader und Management koennen Versionsname, Titel und Notiz einer Projektversion bearbeiten; die Audiodatei bleibt unveraendert.
- Versionen sind nur mit dem tatsaechlichen Recht der jeweiligen Version loeschbar.
- Kommentarautoren koennen eigene Versionskommentare bearbeiten und loeschen; Management kann alle Versionskommentare verwalten.
- Bearbeitete Versionen und Kommentare zeigen einen Bearbeitungshinweis samt Zeitpunkt.
- Direkte Requests werden projekt-, versions-, kommentar- und benutzerbezogen serverseitig autorisiert.
- Bearbeitungen und Loeschungen werden im Audit Log dokumentiert.
## 2026-09-25 - Externe Kuenstler und Projekte
Typ: Feature | Backend | UI | Datenbank
Betroffene Bereiche: Projekte, Releases, Readiness, Reminder, Audit Log
Live-Status: hochgeladen, Migration ausgefuehrt, Syntax und Blade kompiliert, Backend-Sperre und Readiness getestet
- Projekte koennen als `Extern` markiert werden, wenn Release und Distribution nicht ueber ETS erfolgen.
- Externe Projekte zeigen keine ETS-Release-Aktion und melden ein fehlendes Release nicht mehr als offenen Punkt.
- Direkte Release-Erstellung, allgemeines Release-Formular und nachtraegliche Verknuepfung werden serverseitig fuer externe Projekte blockiert.
- Bereits mit einem ETS-Release verknuepfte Projekte koennen nicht widerspruechlich als extern markiert werden.
- `Extern` ist ein eigener Kuenstlerstatus und bleibt technisch vom Beat-Pick-Status `Eingeschraenkt` getrennt.
- Neue Projekte externer Kuenstler werden automatisch extern; normale Kuenstler koennen einzelne externe Projekte besitzen.
- Distributor, externes Label, tatsaechliches Releasedatum, UPC/EAN, ISRC, Release-URL und Notizen koennen optional dokumentiert werden.
- Externe Projekte besitzen einen Produktionsfortschritt, aber keine ETS-Distributor-Readiness und keine entsprechenden Pflichtangaben.
- Projektliste und Profile kennzeichnen externe Inhalte; die Projektliste kann nach ETS/Extern gefiltert werden.
## 2026-09-25 - Lange Projekttitel vollstaendig anzeigen
Typ: Bugfix | UI
Betroffene Bereiche: Projekte, Projektuebersicht, Projekt-Detailseite
Live-Status: hochgeladen, Blade-Cache neu erstellt und Templates kompiliert
- Die einzeilige Ellipsen-Darstellung der Projekttitel wurde entfernt.
- Lange Titel und lange Woerter brechen nun responsiv um und bleiben vollstaendig lesbar.
## 2026-09-21 - AI Production Report
Typ: Feature | Backend | UI | Datenbank
Betroffene Bereiche: Releases, KI-Metadaten, Readiness, Audit Log, Timeline
Live-Status: Migration und Code hochgeladen, Syntax, Blade und Report-Status getestet
- Neuer interner AI Production Report je Release mit KI-Systemen, Produktionsrollen, menschlicher Nachbearbeitung, Lizenzangaben und Distributor-Check.
- Mehrere KI-Systeme koennen einem Produktionsbereich zugeordnet werden. Nachweise werden privat gespeichert und nur ueber autorisierte Downloadrouten geliefert.
- Report-Aenderungen besitzen Revisionen und erscheinen im Audit Log und in der Release Timeline.
- Die bestehende Release Readiness zeigt Warnungen und Blocker; `Nicht freigeben` oder fehlende kommerzielle Lizenz verhindert eine neue Distributor-Einreichung.
- Bisherige Track-KI-Metadaten und Audio-Projektversionen bleiben erhalten. Es erfolgt keine automatische Plattformuebertragung.
## 2026-09-20 - Rollenanzeige in der Mitgliederliste
Typ: UI | Backend
Betroffene Bereiche: Mitglieder, Benutzerrollen
Live-Status: hochgeladen, Syntax-, Blade- und Live-Datentests bestanden, Cache geleert und Views neu erstellt
- Jede Mitgliederkarte zeigt die Hauptrolle und alle zusaetzlich zugewiesenen Rollen.
- Die Hauptrolle ist nur visuell hervorgehoben; eine zusaetzliche sichtbare Beschriftung wird nicht angezeigt.
- Management wird unabhaengig von der Reihenfolge immer als `Management` angezeigt.
- Rollenbezeichnungen werden aus der zentralen Rollentabelle geladen und nicht in der Mitgliederansicht fest codiert.
## 2026-09-20 - Beat-Downloads und WAV-zu-MP3-Konvertierung
Typ: Feature | Backend | UI | Storage | Sicherheit
Betroffene Bereiche: Beats, Beat-Picks, Audio-Konvertierung, Hetzner Storage, Audit Log
Live-Status: hochgeladen, Syntax-, Blade-, Berechtigungs-, Storage- und FFmpeg-Tests bestanden, Cache geleert und Views neu erstellt
- Erfolgreich gepickte Beats bieten getrennte Buttons fuer MP3 und WAV.
- Liegt nur WAV vor, kann eine hochwertige MP3 einmalig erzeugt, dauerhaft gespeichert und direkt geladen werden.
- Normale Picks sind sofort berechtigt; eingeschraenkte Picks erst nach Management-Freigabe. Fehlende, abgelehnte und abgelaufene Picks bleiben auch bei direktem URL-Aufruf gesperrt.
- Browserdownloads verwenden `Titel_-_BeatInterpret.mp3|wav`; interne Storage-Namen und Storage-Pfade bleiben unveraendert.
- Lokale und Hetzner-Dateien nutzen denselben Downloadpfad. Remote-WAVs werden fuer FFmpeg streamend temporaer materialisiert.
- Ein serverseitiger Lock verhindert parallele Doppelkonvertierungen; unvollstaendige `.part`-Dateien werden entfernt.
- Projekt-, Release- und Beat-Konvertierungen verwenden nun den zentralen `AudioConversionService`.
- Erfolgreiche und fehlgeschlagene Beat-Konvertierungen werden im vorhandenen Audit Log protokolliert.
## 2026-09-20 - Management-Mitteilungscenter und Notification-Detailansicht
Typ: Feature | Backend | UI | Datenbank | Notification
Betroffene Bereiche: Management, Notification Center, Web Push, Berechtigungen
Live-Status: hochgeladen, Migration ausgefuehrt, Syntax- und Render-Tests bestanden, View-Cache neu erstellt
- Management/Admin kann Mitteilungen an alle, an Management/Admin oder an ausgewaehlte Benutzer senden.
- Jede Mitteilung wird intern im Notification Center gespeichert und versucht anschliessend Web Push.
- Eine getrennte Versandhistorie speichert Absender, Empfaengerumfang, Zielverknuepfung und aggregierte Push-Status.
- Mitteilungen koennen mit Projekt, Release, Songtext, Drehbuch oder Location verknuepft werden.
- Die Glocke oeffnet zuerst eine vollstaendige Benachrichtigungsansicht; Titel und Nachricht fuehren von dort zum verknuepften Inhalt.
- Neue Berechtigung: `management.notifications.send`.
## 2026-09-20 - Beat-Pick-Freigabe vollstaendig bereinigt
Typ: Bugfix | Backend | UI | Datenkonsistenz
Betroffene Bereiche: Beat-Picks, Feature-Zuordnungen, Management
Live-Status: hochgeladen, Datenkorrektur fuer `deep desire` ausgefuehrt, Push gesendet, Syntax- und Datenpruefung bestanden
- Management kann nun auch `FEATURE_LINKED`-Zuordnungen in der Beat-Pick-Verwaltung sehen und vollstaendig entfernen.
- Beim Entfernen werden aktiver Pick, urspruenglicher Picker, Feature-Artists, Freigabefelder und offene Approval-Anfragen gemeinsam bereinigt.
- Eine Projekt-/Release-Verknuepfung blockiert die Entfernung weiterhin und liefert jetzt eine klare Fehlermeldung statt einer falschen Erfolgsmeldung.
- Urspruengliche Picker koennen leere bzw. verwaiste Feature-Zuordnungen selbst entfernen.
- Der normale `Pick entfernen`-Ablauf loescht nun auch die eigene urspruengliche Pick-Zuordnung und verhindert neue verwaiste Picker-Daten.
- Bei Beat 41 `deep desire` wurde die verwaiste Zuordnung von `zentera93` entfernt; die erzeugte interne Benachrichtigung meldete Web Push als gesendet.
## 2026-09-20 - Push-Ereignisse fuer Portalaktionen vervollstaendigt
Typ: Bugfix | Backend | Notification
Betroffene Bereiche: Notifications, Web Push, WhatsApp, Songtexte, Drehbuecher, Locations
Live-Status: hochgeladen, Syntaxcheck bestanden, Service-/Controller-Aufloesung bestanden, Ereignis- und Vorlagenpruefung bestanden, Cache geleert, View-Cache neu erstellt
- Songtext-, Drehbuch- und Location-Aktionen erzeugen beim Erstellen, Bearbeiten und Loeschen nun zentrale Benachrichtigungen.
- Jede Benachrichtigung wird intern gespeichert und versucht anschliessend Web Push; vorhandene WhatsApp-Vorlagen werden wiederverwendet.
- Location-Ereignisse wurden in Metadaten, Vorlagen und Push-Praeferenzen aufgenommen.
- Neue Push-Praeferenzen sind standardmaessig aktiv, solange ein User sie nicht bewusst deaktiviert.
- Zustandsbasierte Deduplizierung verhindert Mehrfachmeldungen desselben gespeicherten Vorgangs.
- Bestehende Beat-, Beat-Pick-, Freigabe-, Release- und Projekt-Ereignisse wurden auf ihre zentrale NotificationService-Anbindung geprueft.
## 2026-09-20 - Beat-Downloadberechtigung korrigiert
Typ: Bugfix | Backend | UI | Security
Betroffene Bereiche: Beats, Beat-Galerie, Beat-Detail, Stems, Mobile Player API
Live-Status: hochgeladen, Syntaxcheck bestanden, Berechtigungsmatrix bestanden, Cache geleert, View-Cache neu erstellt
- Normale, nicht eingeschraenkte User erhalten nach einem erfolgreichen Pick sofort den Download.
- Eingeschraenkte User erhalten den Download erst nach Management-Freigabe.
- Ohne eigenen erfolgreichen Pick sowie bei `pending`, `rejected` oder `expired` verweigert der Server den Download.
- Beat-Preview und Originaldatei-Download wurden getrennt; der Player kann weiter zum Vorhoeren genutzt werden.
- Beat- und Stems-Downloads verwenden dieselbe zentrale Berechtigungspruefung.
- Die Mobile-Player-API liefert keine Beat-Dateien mehr ueber ihren nicht benutzergebundenen Download-Endpunkt aus.
## 2026-09-20 - Restricted Beat-Pick und Release-Metadaten konsolidiert
Typ: Feature | Bugfix | Backend | UI | Security | Datenbank
Betroffene Bereiche: Beat-Picks, Management-Freigaben, Downloadschutz, Scheduler, Notifications, Releases, Readiness
Live-Status: hochgeladen, Migration ausgefuehrt, Syntaxcheck bestanden, Scheduler-Dry-Run bestanden, Cache geleert, View-Cache neu erstellt
- Eingeschraenkte Beat-Picks werden jetzt ausschliesslich von Management/Admin freigegeben oder abgelehnt.
- Eine Management-Entscheidung schliesst die Anfrage ab; bei Ablehnung kann ein Grund fuer den Artist gespeichert werden.
- Der alte Beat-Galerie-Entscheidungsweg wurde gesperrt, damit die Management-Freigabe nicht umgangen werden kann.
- Der Ablauf-Scheduler verarbeitet nun auch Picks mit ausstehender Freigabe und beendet veraltete Freigabeanfragen sauber.
- `beats.manage_picks` ist in der zentralen Permission-Liste enthalten.
- Haupt-Genre und Explicit Content erscheinen als eigene Readiness-Blocker.
- Alte Releases ohne Pflichtmetadaten zeigen einen sichtbaren Nachpflegehinweis.
- Eine Datenmigration ueberfuehrt bereits offene Artist-Freigabeanfragen in den Management-Workflow.
## 2026-09-13 18:35 - Beat-Pick Freigabe-Benachrichtigungen und Entfernen korrigiert
Typ: Bugfix | Backend | Notification
Betroffene Bereiche: Beats, Beat-Picks, eingeschraenkte Beat-Picks, Push, Notification Center
Live-Status: hochgeladen, Syntaxcheck bestanden, Cache geleert, View-Cache neu erstellt
- Bei Beat-Pick-Freigabe wird der betroffene Kuenstler jetzt direkt intern und per Web-Push benachrichtigt.
- Bei Beat-Pick-Ablehnung wird der betroffene Kuenstler jetzt ebenfalls direkt benachrichtigt.
- Freigegebene Picks werden wieder als aktiver Pick mit Status `ACTIVE` gefuehrt.
- Abgelehnte, manuell entfernte, deaktivierte oder Feature-verknuepfte Picks zaehlen zentral nicht mehr als aktive Picks, selbst wenn alte Daten noch eine `picked_by_user_id` enthalten.
- Notification-Praeferenzen wurden um die Events `beat_pick_approved` und `beat_pick_rejected` erweitert.
## 2026-09-13 18:05 - Release-Metadaten Pflichtfelder
Typ: Feature | Backend | UI | Audit
Betroffene Bereiche: Releases, Release-Erstellung, Release-Bearbeitung, Readiness, Approval, Audit Log
Live-Status: hochgeladen, Syntaxcheck bestanden, View-Cache neu erstellt
- Beim Erstellen und Bearbeiten von Releases sind Haupt-Genre und Explicit Content jetzt serverseitige Pflichtfelder.
- Create/Edit-Formulare markieren beide Felder visuell als Pflichtfeld und zeigen konkrete deutsche Fehlermeldungen direkt am Feld.
- Explicit Content bleibt beim Erstellen bewusst leer, bis Ja / Explicit oder Nein / Clean ausgewählt wurde.
- Die Bearbeiten-Seite zeigt eine kompakte Metadaten-Zusammenfassung mit Genre- und Explicit/Clean-Badges.
- Release-Karten zeigen Haupt-Genre und Explicit/Clean dezent als Metadaten-Badges.
- Release-Detailseiten zeigen Explicit Content mit Klartextwert oder "Nicht angegeben" bei alten Releases.
- Explicit Content wurde in Audit Log, Release Lock und Approval-Metadatenfingerprint aufgenommen.
## 2026-09-13 15:25 - ChatGPT-Dateien in robots.txt freigegeben
Typ: Bugfix | Dokumentation | Deployment
Betroffene Bereiche: robots.txt, ChatGPT-Kontext
Live-Status: hochgeladen
- `robots.txt` blockiert weiterhin das Portal allgemein.
- Die beiden kryptischen ChatGPT-Kontextdateien wurden explizit per `Allow` freigegeben.
- Grund: ChatGPT/Webcrawler konnten die Dateien trotz HTTP-200 nicht lesen, weil `Disallow: /` vorher alles gesperrt hat.
## 2026-09-13 15:35 - ChatGPT-Dateien als TXT bereitgestellt
Typ: Bugfix | Dokumentation | Deployment
Betroffene Bereiche: ChatGPT-Kontext, Content-Type
Live-Status: hochgeladen
- Changelog und Funktionsuebersicht wurden zusaetzlich als `.txt` bereitgestellt.
- Grund: Einige ChatGPT-Webabrufe unterstuetzen `text/markdown` nicht, lesen aber `text/plain`.
- Neuer Changelog-Link: https://ets-intern.de/ets-md-chatgpt-changelog-116b7c739602453f9b0d3ddbf7818e07.txt
- Neue Funktionsuebersicht: https://ets-intern.de/ets-md-chatgpt-functions-a5419687015741f49e2d42c1aa96015a.txt
## 2026-09-13 13:50 - ChatGPT-Funktionsuebersicht
Typ: Dokumentation
Betroffene Bereiche: ChatGPT-Kontext, Deployment
Live-Status: hochgeladen
- Zusaetzliche Funktionsuebersicht fuer ChatGPT erstellt.
- Abrufbarer Link: https://ets-intern.de/ets-md-chatgpt-functions-a5419687015741f49e2d42c1aa96015a.txt
- Datei beschreibt die wichtigsten eingebauten ETS-MD-Funktionen und Systembereiche.
## 2026-09-13 13:35 - Systemnachricht fuer korrigierten Projekttitel
Typ: Datenkorrektur | Notification
Betroffene Bereiche: Projekte, Benachrichtigungen, Push
Live-Status: direkt live ausgefuehrt
- Projekt 26 wurde umbenannt von `Injektion0ne - Bars to Heaven` zu `Bars to Heaven`.
- Der betroffene Kuenstler wurde per ETS-Systemnachricht informiert.
- Das Management wurde per eigener ETS-Systemnachricht informiert.
- Web-Push wurde ueber den zentralen NotificationService ausgeloest, soweit beim jeweiligen Benutzer aktiviert.
## 2026-09-13 13:20 - Push fuer alle internen Benachrichtigungen
Typ: Backend | Notification | Bugfix
Betroffene Bereiche: NotificationService, WhatsAppNotificationService, Web Push
Live-Status: hochgeladen, Syntaxcheck bestanden, View-Cache neu erstellt
- Jede interne Benachrichtigung loest jetzt zentral auch Web-Push aus.
- Push haengt nicht mehr davon ab, ob eine WhatsApp-Vorlage existiert.
- Oeffentliche Benachrichtigungen senden Push pro gespeicherter Portal-Notification und speichern den Zustellstatus.
- Private Benachrichtigungen senden Push zentral und speichern `sent`, `disabled`, `not_configured` oder `failed`.
- Doppelte Push-Ausloesung ueber WhatsAppNotificationService wird durch `skip_push` verhindert.
## 2026-09-13 13:00 - Projekt-zu-Release Mindestvoraussetzungen
Typ: Feature | Backend | UI | Datenbank
Betroffene Bereiche: Projekte, Releases, Readiness, Metadata Validator, Notifications
Live-Status: hochgeladen, Migration ausgefuehrt, Syntaxcheck bestanden, View-Cache neu erstellt
- Management wird benachrichtigt, wenn ein Projekt angelegt wird.
- Management wird benachrichtigt, wenn aus einem Projekt ein Release erstellt wird.
- Release-Erstellung aus Projekt wird serverseitig blockiert, bis Titel, Cover, Master WAV, Haupt-Genre und Explicit Content vorhanden sind.
- Projektformular wurde um Haupt-Genre und Explicit Content erweitert.
- Release-Vorschau zeigt die Mindestvoraussetzungen und deaktiviert den Erstellen-Button, solange Pflichtpunkte fehlen.
- Releases speichern Explicit Content und zeigen das Feld beim Erstellen/Bearbeiten an.
- Release Metadata Validator und Release Readiness beruecksichtigen Explicit Content.
- Migration `2026_09_13_000001_add_release_gate_fields_to_projects_and_releases` wurde erstellt und live ausgefuehrt.
## 2026-09-13 14:25 - Eingeschraenkte Beat-Picks mit Artist-Freigabe
Typ: Feature | Backend | UI | Datenbank | Notifications | Audit Log
Betroffene Bereiche: Beats, Beat-Galerie, Beat-Freigaben, Notification Center, Audit Log
Live-Status: vorbereitet fuer Upload, Migration erforderlich
- Beat-Pick-System wurde um den Status `Eingeschraenkt` erweitert.
- Eingeschraenkte Artists erzeugen beim Beat-Pick zuerst eine Freigabeanfrage statt eines finalen Picks.
- Der Beat wird waehrend der Freigabe vorlaeufig reserviert und ist fuer andere User nicht pickbar.
- Entscheider werden beim Erstellen der Anfrage als Snapshot gespeichert.
- Ein einziges Nein lehnt die komplette Anfrage ab und gibt den Beat wieder frei.
- Erst wenn alle erforderlichen Entscheider Ja sagen, wird der Pick als normaler aktiver Beat-Pick bestaetigt.
- Neue Seiten `/beats/freigaben` und `/beats/freigaben/{id}` zeigen offene Anfragen und Ja/Nein-Aktionen.
- Beat-Galerie und Beat-Detailseite zeigen ausstehende Freigaben mit Antwortstand.
- Benachrichtigungen werden ueber den zentralen NotificationService erzeugt und loesen Push aus, wenn erlaubt.
- Neue Audit-Log-Aktionen dokumentieren Anfrage, Ja/Nein-Stimmen, Freigabe und Ablehnung.
## 2026-09-13 14:45 - Download-Sperre fuer eingeschraenkte Beat-Picks
Typ: Bugfix | Sicherheit | Backend | UI
Betroffene Bereiche: Beats, Beat-Galerie, Beat-Detailseite, Mobile Player API
Live-Status: vorbereitet fuer Upload
- Eingeschraenkte Artists erhalten waehrend einer offenen Freigabe keinen Zugriff auf Beat-Audio.
- Beat-Detailseite und Beat-Galerie zeigen statt Player/Download den Hinweis `Download nach Freigabe verfuegbar`.
- Der Beat-Stream `/beats/{id}/stream` blockiert direkte URL-Aufrufe fuer den anfragenden Artist, solange die Freigabe aussteht.
- Der Stems-Download `/beats/{id}/stems/download` blockiert ebenfalls, solange die Freigabe aussteht.
- Die Mobile Player API liefert pending reservierte Beats ohne Download-URL aus und blockiert direkte Beat-Audio-Downloads.
## Historischer Gesamtstand bis 2026-09-12
Dieser Abschnitt fasst die zuvor im ETS-MD umgesetzten und korrigierten Bereiche zusammen. Die aktuelle, vollstaendige Funktionsbeschreibung steht zusaetzlich in der verlinkten Funktionsuebersicht.
### Projekte und Releases
- Projekte und Releases wurden um Entwurf, Aktiv, Pausiert, Abgeschlossen/Gesperrt, Problem und externe Distribution erweitert.
- Pausierte Projekte und Releases werden getrennt angezeigt und aus normalen Reminder- und Workflowprozessen genommen.
- Projekt- und Release-Dateien werden dem eigentlichen Kuenstler zugeordnet und nach Single/Album strukturiert gespeichert.
- Externe Projekte bleiben vollwertige Produktionsprojekte, benoetigen aber keinen ETS-Release, keine Release-Verknuepfung und keine distributorbezogenen Pflichtpunkte.
- Release Lock, bewusstes Management-Entsperren, Begruendung, erneute Sperrung und Invalidierung betroffener Freigaben wurden integriert.
- Haupt-Genre und Explicit Content wurden als Pflichtmetadaten fuer neue Releases umgesetzt; Altbestand bleibt nachpflegbar.
- Projekt-zu-Release-Erstellung prueft Cover, Master, Titel, Genre und Explicit Content serverseitig.
- Lange Projekttitel, Feature- und Collabo-Anzeigen sowie Sortierung gesperrter Releases nach Releasedatum wurden korrigiert.
### Readiness, Validator und Medien
- `Fehlt noch`, Readiness und Preflight wurden zentral weiterverwendet und fuer Entwurf, Pausiert, Extern sowie optionale Songtexte/Drehbuecher angepasst.
- Audioanalyse fuer Master und Beats, getrennte Dateiauswahl sowie BPM-/Key-Erkennung und manuelle Nachpflege wurden ergaenzt.
- Coverpruefung umfasst Format, RGB, Aufloesung, Seitenverhaeltnis, Dateigroesse, OCR-Zusatztext und erneute Pruefung/Ablehnung mit Gruenden.
- Metadata Validator und Audioanalyse sind direkt aus Projekt und Release erreichbar.
- Audio wird in Beat-, Projekt- und Releaseansichten erst beim Start des Players geladen.
- Beat-Player spielt Listen nacheinander und kann beim Scrollen angedockt dargestellt werden.
- Das Vertriebsbriefing zeigt technische Distributorstatuswerte lesbar an.
### Label Inbox und TuneCore
- Die zentrale Label Inbox verwendet den vorhandenen TuneCore-Mailimport und dessen automatische Zuordnung ueber Bestellnummern weiter.
- Suche, Quellen-/Typ-/Release-/Zuordnungsfilter, gelesen/ungelesen und Release-Direktlinks wurden integriert.
- Fehlerhafte MIME-Header, RFC-kodierte Betreffzeilen, ISO-8859-1/UTF-8-Inhalte, Binaeranhaenge und ungueltige JSON-Metadaten werden bereinigt.
- Doppelte TuneCore-Mailnavigation wurde entfernt; Mailkonto und Inbox-Konfiguration liegen zentral in den Admin-Einstellungen.
### Benachrichtigungen und Kommunikation
- Interne Benachrichtigungen bilden die fuehrende persistente History; Web Push und WhatsApp sind nachgelagerte Kanaele mit Zustellstatus.
- Glocke, Badge, Dropdown, Notification Center, Suche/Filter, gelesen/ungelesen, Loeschen und sichere Benutzerisolation wurden umgesetzt.
- Projekt-, Release-, Beat-, Freigabe-, Location-, Songtext-, Drehbuch-, Storage-, Reminder- und Problemereignisse erzeugen zentrale Notifications.
- Management-Mitteilungen koennen gespeichert und zielgerichtet als interne Nachricht und Push versendet werden.
- WPPConnect-Konfiguration wurde zusammengefuehrt und fuer lokalen Serverbetrieb vorbereitet.
### Audit, Timeline und Freigaben
- Zentrales Audit Log speichert Benutzer, Rolle, Objekt, Aktion, Feld sowie alten und neuen Wert.
- Status- und Aktionsschluessel werden lesbar deutsch dargestellt; Tabellenlayout und Filter wurden verbessert.
- Release Timeline und Audit Log verwenden getrennte fachliche Ansichten derselben nachvollziehbaren Ereignisse.
- Management kann Cover-, Master- und weitere Freigaben mit Begruendung zuruecknehmen; betroffene Nutzer werden benachrichtigt.
- Release-Probleme, Problemloesung, Lock-Aktionen, Rollen-/Rechteaenderungen, Kosten und Budgets werden protokolliert.
### Beats und Beat-Picks
- Beat-Picks besitzen konfigurierbare Ablauf- und Erinnerungsfristen, History, Management-Verlaengerung sowie automatische Freigabe ohne Projekt.
- Eingeschraenkte Benutzer benoetigen eine Freigabe; Download und Konvertierung bleiben bis zur Zustimmung serverseitig gesperrt.
- Normale Benutzer duerfen nach einem gueltigen Pick sofort herunterladen.
- Management, Admin und Producer koennen Beats und Picks entsprechend ihren Rechten verwalten.
- WAV/MP3-Downloads nutzen sprechende Dateinamen; fehlende MP3-Dateien koennen einmalig aus WAV erzeugt und im zentralen Storage gespeichert werden.
### Management, Finanzen und Rechte
- Ein zentraler Management-Bereich buendelt Dashboard, Aufgaben, Problem Center, Approvals, Releases, Kuenstler, Rechte/Splits, Finanzen, Distributor, Katalog, Analytics und Audit Log.
- Aufgaben zeigen verknuepfte Projekte/Releases, Prioritaet, Status, Zustaendigkeit und Frist lesbar an.
- Kosten, Einnahmen, Budgets und verfuegbare Kasse verwenden genaue Geldwerte und Audit Logging.
- Rechte, Splits und Dokumentstatus sowie Budgetueberschreitungen und Release-Probleme sind in der Managementsicht sichtbar.
- Rollenbasierte Kuenstler- und Management-Dashboards greifen auf dieselben Projekte, Releases, Aufgaben und Freigaben zu.
### Storage, Dateien und Programme
- Die fruehere Core-Server-Seite wurde durch Storage-Verwaltung ersetzt; der Core Server ist keine Laufzeitabhaengigkeit mehr.
- Hetzner Storage Box, Uebertragung einzelner Projekte/Releases, Wiederholung fehlgeschlagener Transfers und Remote-Dateibrowser wurden integriert.
- Projekt-, Release- und Beat-Dateien koennen zentral aus dem Storage ausgeliefert werden; Speicherorte sind in Details sichtbar.
- Speicherwerte wechseln ab 1024 MB automatisch zur GB-Anzeige.
- Unter Tools stehen ETS Music Visualizer, ETS CoverForge und ETS StudioLink als Programmdownloads bereit.
### Authentifizierung, Profile und Geraete
- Legacy Login und Keycloak SSO sind konfigurierbar; mindestens ein Loginweg muss aktiv bleiben.
- Keycloak liefert `artist_name` als sichtbaren Namen mit Username-Fallback; Username und Kuenstlername bleiben getrennte Werte.
- Vorname, Nachname, E-Mail, Mobilnummer und weitere Profildaten werden mit Keycloak gelesen und kontrolliert aktualisiert.
- Passwort-Resetlinks sind 15 Minuten gueltig, nach Erfolg oder Fehlschlag verbraucht und funktionieren ohne Core-Server-Abhaengigkeit.
- Geraeteansichten zeigen Land/Flagge, Push- und Sitzungsstatus mit Ampellogik; fehlerhafte aktive Sitzungs-/Pushanzeigen wurden korrigiert.
- Mobile Navigation und Benutzer-Dropdown wurden fuer Theme, Benachrichtigungen und kleine Displays ueberarbeitet.
### Kalender, KI und weitere Fachbereiche
- Kalendertermine besitzen lesbare Karten, Produktionsvorlagen und direkte Verknuepfung zu offenen Projekten.
- AI Production Report dokumentiert Systeme, Modelle, Produktionsbereiche, menschliche Nachbearbeitung, Rechte, Nachweise und Distributorpruefung.
- Flexible KI-Metadaten und Artist Identity sind auf Release-, Track- und Artist-Ebene erweiterbar und auditierbar.
- Release Problem Center erzeugt persistente Hinweise, rote Hervorhebung und deduplizierte Benachrichtigungen bis zur Behebung.
- StudioLink Web Client und SSO-Anbindung wurden in das Portal integriert.
# 2026-09-27
- Künstler-Dashboard 2.0 ergänzt: offene persönliche Aufgaben, aktive Projekte, Zuständigkeit und verständliche Projekt-Timeline.
- Bestehende Projektaufgaben, Release-Aufgaben, Readiness und Artist-Freigaben werden gemeinsam angezeigt, ohne parallele Workflow-Daten.
- Externe Projekte bleiben vom ETS-Release-Ablauf ausgenommen.
- Rollenbasierte Startseite ergänzt: Künstler sehen ihre Musik und Aufgaben, Management/Admin die operative Label-Übersicht.
- Künstler-Dashboard um persönliche Releases und Beats erweitert; administrative Label-Daten bleiben ausgeblendet.
- Management-Dashboard zeigt zusätzliche Label-Kennzahlen und kritische Meldungen aus dem zentralen Notification Center.