Changelog
Alle RadioCMS-Versionen mit Release-Notes. Immer aktuell aus der Hub-API.
v2.0.6.2 Aktuell
24.05.2026
- Core 2.0.6.2 - Sammelhotfix der 2.0.6-Reihe
- FIXES (kumulativ enthalten):
- 2.0.6: Permission-Vererbung fuer Add-on Plugins. Bei Custom-Rollen wurden Chat-Add-on Sidebar-Links (Chatbots, Live-Quiz, Voice + AI) nicht angezeigt obwohl Lizenz aktiv war. Migration verteilt automatisch alle Chat-Add-on Permissions an Rollen die schon 'manage_chat' haben - kein manuelles SQL noetig.
- 2.0.6.1: Plugin-Sub-Links bei aktiver DB-autogroup waren komplett unsichtbar. Ursache: admin-header.php skippte die Plugin-Links per continue, der JS-Override-Block hatte aber keine DOM-Elemente zum Verschieben in die Gruppe. Fix: Plugin-Links werden jetzt immer als <a>-Tags gerendert. Defensiv: sichtbar > unsichtbar.
- 2.0.6.2: Hoererzahl-Chart im Admin-Dashboard wurde nicht gerendert obwohl Chart.js sauber geladen war. Ursache: alter Race-Condition-Fix nutzte window.addEventListener('load', ...) das nicht mehr triggert wenn der load-Event bereits gefeuert hat bevor das Inline-Script den Listener registriert (BFCache, late Inline-Parsing). Neuer Loader: DOMContentLoaded + Polling-Fallback (max 6 Sek). Robust gegen BFCache und Browser-Eigenheiten.
v2.0.6.1
24.05.2026
- Core 2.0.6.1 (Hotfix) - Admin-Sidebar Plugin-Link Skip-Bug behoben.\n- Behoben: Plugin-Sub-Links (z.B. Chat-Add-ons chat-chatbot, chat-live-quiz, chat-voice-ai) waren bei manchen Kunden im Admin unsichtbar, obwohl die Plugins korrekt installiert, lizenziert und alle Permissions vergeben waren. Ursache: admin-header.php skippte die Plugin-Links bei aktiver DB-autogroup, der JS-Override-Block hatte aber keine DOM-Elemente zum Verschieben in die Gruppe.\n- Fix: Plugin-Links werden jetzt immer als <a>-Tags gerendert. Wenn das Plugin eine DB-autogroup hat, wird nur die Auto-Wrapper-Gruppe ausgelassen und der JS-Override verschiebt die Links per parent_key in die DB-Gruppe. Defensiv: sollte der Override aus irgendeinem Grund nicht greifen, bleiben die Links wenigstens flach sichtbar statt komplett unsichtbar.
v2.0.6
24.05.2026
- Core 2.0.6 (Hotfix) - Permission-Vererbung fuer Add-on Plugins.
- Behoben: bei Custom-Rollen wurden Chat-Add-on Sidebar-Links (Chatbots, Live-Quiz, Voice + AI) nicht angezeigt, obwohl die Plugins korrekt installiert + lizenziert waren. Ursache: die Plugin-Permissions wurden nur an 'admin' und 'superadmin' vergeben, nicht an Custom-Rollen.
- Migration verteilt automatisch alle Chat-Add-on Permissions an Rollen die schon 'manage_chat' haben - kein manuelles SQL noetig.
- Generisches Pattern auch fuer zukuenftige Add-on Plugins (Charts, Page-Builder, Theme-Builder Familien).
v2.0.5
24.05.2026
- Core 2.0.5 - Admin-Navigation: Auto-Plugin-Gruppen werden im Manager sichtbar (Auto-Migration), neue Gruppen koennen direkt als Untergruppe einer bestehenden Gruppe angelegt werden.
v2.0.4
22.05.2026
- v2.0.4 (Hotfix)
- News-Detailseite: Artikel-Inhalt wurde nicht angezeigt wenn bestimmte Plugins (z.B. Chat-Pro) aktiv waren. Behoben.
- News-Admin: Veroeffentlichungsdatum wird jetzt korrekt gesetzt wenn ein Artikel veroeffentlicht wird.
- Stabilitaet: Typ-Fehler bei fehlendem Datum verhinderte das komplette Laden der Seite. Behoben.
- Enthaelt alle Aenderungen aus v2.0.0 bis v2.0.3.
v2.0.3
22.05.2026
- v2.0.3 (kumulativ über v2.0.0 bis v2.0.2)
- Song-Wünsche von der Radiowebseite werden automatisch in die Chat-Pro-Wunschbox übertragen wenn das Chat-Pro-Plugin aktiv ist
- Enthält alle Verbesserungen aus v2.0.0 bis v2.0.2: Theme-System, verschachtelbare Admin-Navigation, automatische Plugin-Gruppierung in der Sidebar und Sidebar-Suchfeld
v2.0.2
21.05.2026
- Kumulatives v2.0-Update (enthaelt v2.0.0, v2.0.1 und v2.0.2).
- Theme-System (aus v2.0.0):
- 3 zusaetzliche Core-Themes: Light Mode, Schausteller (Retro-Jahrmarkt-Style), Klassik (elegant mit Gold + Serifen).
- Plugin-Hook radiocms_register_theme() fuer Marketplace-Theme-Plugins.
- radiocms_get_theme_css_url() Helper mit Override-Support.
- Verschachtelte Admin-Navigation (aus v2.0.1):
- Im Navigation-Manager lassen sich Admin-Sidebar-Gruppen in Gruppen verschachteln.
- Die Admin-Sidebar rendert verschachtelte Gruppen als aufklappbare Untergruppen.
- Aufgeraeumte Admin-Sidebar (neu in v2.0.2):
- Plugins mit mehreren Admin-Seiten werden automatisch zu einem aufklappbaren Block zusammengefasst. Das gilt fuer jedes Plugin, ohne dass das Plugin etwas tun muss. Je mehr Plugins installiert sind, desto uebersichtlicher bleibt die Navigation.
- Neues Suchfeld oben in der Admin-Sidebar: filtert Menuepunkte und Gruppen live beim Tippen.
- Hinweis: Die v2.0-Premium-Plugins (Chat-Pro, Membership Pro etc.) sind separate Marketplace-Downloads und nicht Teil dieses Core-Updates.
v2.0.1
21.05.2026
- Kumulatives v2.0-Update (enthaelt v2.0.0 plus v2.0.1).
- Theme-System (aus v2.0.0):
- 3 zusaetzliche Core-Themes: Light Mode, Schausteller (Retro-Jahrmarkt-Style), Klassik (elegant mit Gold + Serifen).
- Plugin-Hook radiocms_register_theme() fuer Marketplace-Theme-Plugins.
- radiocms_get_theme_css_url() Helper mit Override-Support.
- Verschachtelte Admin-Navigation (neu in v2.0.1):
- Im Navigation-Manager lassen sich Admin-Sidebar-Gruppen jetzt in Gruppen verschachteln, per Drag-and-Drop (Gruppe in Gruppe).
- Die Admin-Sidebar rendert verschachtelte Gruppen als aufklappbare Untergruppen; die aktive Seite klappt ihre komplette Gruppen-Kette automatisch auf.
- Hinweis: Die v2.0-Premium-Plugins (Chat-Pro, Membership Pro etc.) sind separate Marketplace-Downloads und nicht Teil dieses Core-Updates.
v1.9.0
19.05.2026
- v1.9.0 Major-Release
- Begleitet die v1.9-Plugin-Welle: Forum & Community, Multi-Language Pro, DJ-Drops-Generator, AI-Music-Recommendations.
- Core-seitig keine breaking Changes. Cumulative seit v1.7.5 mit allen Bugfixes + Defensive-Hotfix fuer Rollen-Permissions. Plugins der v1.9-Welle erwarten requires_cms=1.8.0 minimum, laufen also auch unter 1.8.0 weiter - der Bump auf 1.9.0 markiert die Major-Stufe der neuen Plugin-Welle.
v1.8.0
17.05.2026
- Major-Release v1.8.0 mit dem v1.8-Plugin-Set (Backup Pro Cloud, Event-Calendar Pro, DJ-Pool-Manager). Cumulativ enthalten: alle Fixes aus v1.7.6 bis v1.7.9.9.4 (News-Lösch-Button, Plugin-Sidebar-Fix für DJ, Rechte-ansehen, Werbe-Spot-Tabs, Wunschbox-Spinner, Slider-Bild-Anpassung etc.). Migration ist idempotent.
v1.7.9.9.4
16.05.2026
- 2 Bug-Fixes: (1) Wunschbox Spinner-Symbol im Absenden-Button war dauerhaft sichtbar (kein default-hide, kein Submit-Handler). Spinner jetzt versteckt per inline display:none, JS-Handler blendet ihn beim Submit ein + disabled Button. (2) DJ sah in roles.php nur den Hinweis Du hast keine Berechtigung Rechte zu bearbeiten ohne die tatsaechlichen Permissions. Jetzt werden alle Permissions read-only (disabled Checkboxen) angezeigt, gruppiert nach Gruppe.
v1.7.9.9.3
16.05.2026
- Bug-Fix roles.php: DJ ohne view_roles wurde beim Klick auf seinen eigenen Rolle-Tab in roles.php zum Dashboard redirected, weil der interne Tab-Link role=ID nutzt aber mein Check nur role=NAME erlaubte. Jetzt beide akzeptiert (Name und ID), eigene Rolle ist read-only sichtbar.
v1.7.9.9.2
16.05.2026
- 3 UX-Fixes: (1) Rolle-Anzeige bei eigenem Profil als statisches Label + Hidden-Input (disabled-Dropdown war je nach Theme unsichtbar). (2) Bekannte Standard-Labels gemappt statt ucwords-Ausgabe (dj -> DJ / Moderator statt Dj). (3) Rechte ansehen Link öffnet im gleichen Tab (target=_blank raus).
v1.7.9.9.1
16.05.2026
- 2 Bug-Fixes: (1) Rechte ansehen Link bei users-edit.php fuehrte für DJs zu Dashboard-Redirect, weil roles.php view_roles-Permission verlangt. Jetzt darf jeder eingeloggte User die EIGENE Rolle in roles.php anschauen (read-only). (2) Rolle-Dropdown in users-edit.php zeigte nichts an. Roles-Query noch defensiver gemacht (catch Throwable + 3 Stufen Fallback + sichere Defaults). Plus alles aus v1.7.9.9.
v1.7.9.9
16.05.2026
- KRITISCHER Bug-Fix Sidebar: Plugin-Sidebar-Links waren faelschlich im view_settings-Wrapper, daher für DJ-Rolle unsichtbar (DJ hat kein view_settings). Block in admin-header.php rausgezogen. Plus Revert v1.7.9.8: Rechte-ansehen-Link in users-edit.php wieder für alle (DJ darf eigene Rechte ansehen, nur nicht ändern). Plus defensive roles-Query für aeltere Schema-Varianten.
v1.7.9.8
16.05.2026
- UI-Hotfix: in admin/users-edit.php wird der Link Rechte ansehen jetzt nur für User mit view_roles-Permission angezeigt (vorher für alle, fuehrte für DJs zu 403 beim Klick auf den eigenen Profil-Edit). Plus alles aus v1.7.9.7.
v1.7.9.7
16.05.2026
- Permission-Migration: delete_news wird allen admin + superadmin Rollen retro zugewiesen, damit der in v1.7.9.6 ergaenzte News-Lösch-Button auch bei Bestands-Admins sichtbar wird. Plus admin/news.php aus v1.7.9.6 cumulativ enthalten.
v1.7.9.6
16.05.2026
- Bug-Fix: News-Artikel konnten nicht gelöscht werden (Lösch-Funktion fehlte komplett). Trash-Button + Lösch-Handler ergaenzt, mit Bestaetigungs-Dialog und Bild-Cleanup. Plus alle kumulativen Änderungen seit v1.7.5.
v1.7.9.5
15.05.2026
- Fix PHP-Eval-Toggle im Custom-Widgets-Editor: der Button zum Aktivieren/Deaktivieren der PHP-Ausführung in eigenen Widgets war für ALLE User unsichtbar, auch für Superadmins. Ursache: der Code pruefte mit function_exists("isSuperAdmin"), aber diese Funktion existierte nirgendwo im Code. Resultat: Toggle wurde nie gerendert, nur der Hinweistext "Nur Superadmin kann PHP-Eval umschalten". Fix: Pruefung auf $_SESSION["admin_role"]==="superadmin" umgestellt, wie das auch der bestehende requireSuperAdmin()-Helper in includes/auth.php macht.
- Enthält cumulative alle Änderungen aus v1.7.6, v1.7.8, v1.7.9, v1.7.9.1, v1.7.9.2, v1.7.9.3 und v1.7.9.4.
v1.7.9.4
15.05.2026
- KRITISCHER Hotfix: das Plugin-Cron-System (radiocms_run_cron_hooks) hat seit Einfuehrung in v1.2.0 nie funktioniert. Ursache: die Funktion benutzte md5(serialize($callback)) als Setting-Key, aber Plugin-Crons sind immer Closures und PHP erlaubt das Serialisieren von Closures nicht. Resultat: bereits beim allerersten Hook im Loop flog eine Exception, der ganze Cron-Loop brach ab, ALLE Plugin-Crons wurden übersprungen.
- Konsequenz auf jedem Install bisher: Show-Replay-Auto-Aufnahme lief nie, Show-Replay-Cleanup loeschte nie alte Aufnahmen, Charts-Pro-Rollover lief nie, Newsletter-Pro-Schedules liefen nie, Sponsoren-Reminder liefen nie, Stats-Pro-Cleanup lief nie, Werbespot-Tick lief nie etc. Alle Plugin-Crons die als Closure registriert wurden, waren still kaputt.
- Fix: callback-Hash droppen, plugin_id als Setting-Key nutzen (ist eh schon eindeutig pro Hook). Plus per-Hook try/catch um die DB-Queries, sodass ein einzelner crashendter Hook nicht alle nachfolgenden mit-killt.
- Voraussetzung damit die Plugin-Crons jetzt wirklich laufen: ein externer Cron muss /cron/plugin-hooks.php regelmaessig aufrufen (z.B. via System-Crontab oder Plesk-Scheduled-Task auf curl -s https://DEINE-DOMAIN/cron/plugin-hooks.php). Vor diesem Hotfix lief das eh nicht, daher hat das vorher niemand gemerkt.
- Enthält cumulative alle Änderungen aus v1.7.6, v1.7.8, v1.7.9, v1.7.9.1, v1.7.9.2 und v1.7.9.3.
v1.7.9.3
15.05.2026
- Fix Live-DJ-Anzeige auf der Startseite: wenn ein DJ live geht, wird die im Sendeplan eingetragene Sendung in der Hero-Karte jetzt wirklich ausgeblendet. Der 1.7.6-Fix war strukturell richtig, aber jQuery.hide() wurde von der Bootstrap-Klasse d-flex (display:flex !important) ueberstimmt, sodass Live-DJ und Sendung trotzdem gleichzeitig untereinander angezeigt wurden. Neue Helper-Funktion in main.js setzt display:none mit !important via DOM-API, gewinnt damit zuverlaessig gegen jede CSS-Klassen-Regel.
- Enthält cumulative alle Änderungen aus v1.7.6, v1.7.8, v1.7.9, v1.7.9.1 und v1.7.9.2.
v1.7.9.2
15.05.2026
- Fix Eigene Seiten mit HTML: der Page-Editor in Admin -> Seiten nutzt jetzt eine reine HTML-Textarea (Monospace) mit Vorschau-Button. Vorher hat der WYSIWYG-Editor (Quill) HTML wie <iframe>, <table> oder <div class="..."> als Text escaped statt 1:1 zu speichern, dadurch wurde im Frontend der HTML-Code sichtbar statt gerendert. Bestehende Pages mit escaped HTML werden beim Update einmalig automatisch decodiert.
- Fix Plugin-Installer (Nachbesserung 1.7.9.1): die Install-URL-Whitelist akzeptiert jetzt den kompletten /radiocms/hub/-Prefix. Die echte Hub-Install-URL für Plugins ist /radiocms/hub/api/license/version.php?slug=..., was die 1.7.9.1-Whitelist nicht erwischt hatte. Slider Free und andere Free-Plugins lassen sich jetzt wirklich installieren.
- Fix Admin-Navigation (Nachbesserung 1.7.9.1): der Sidebar-Menupunkt "Listener" heißt jetzt wirklich "Registrierungen". Der 1.7.9.1-Fix war an der falschen Stelle (Daten-Array statt Render-Template), das Label kam aus admin/includes/admin-header.php das jetzt direkt korrigiert ist.
- Enthält cumulative alle Änderungen aus v1.7.6, v1.7.8, v1.7.9 und v1.7.9.1.
v1.7.9.1
15.05.2026
- Fix Plugin-Installer: Plugin-Installation vom Hub funktioniert wieder. Vorher schlug es bei manchen Plugins (z.B. Slider Free) mit "Install-URL kommt nicht vom offiziellen Hub" fehl, weil die URL-Whitelist nur den alten Download-Pfad kannte.
- Admin-Navigation: Der Sidebar-Menupunkt "Listener" heißt jetzt "Registrierungen", das beschreibt die Seite (Liste der registrierten Listener-Accounts) genauer.
- Enthält cumulative alle Änderungen aus v1.7.9 (preconnect-Resource-Hints, loading="lazy" auf Below-the-Fold-Bildern, migrate.php-Fix permissions-Schema).
v1.7.9
14.05.2026
- Performance: Schnellerer Verbindungsaufbau zu externen Diensten (Bootstrap-CDN, Google Fonts) durch preconnect-Hinweise im Seitenkopf. Die Seite faengt früher an zu rendern.
- Performance: Bilder unterhalb des sichtbaren Bereichs (DJ-Karten, Team-Fotos, Sendeplan-Banner, Podcast-Cover) werden erst beim Scrollen geladen. Schnellerer Erstaufbau, weniger Datenverbrauch.
- Fix: Das Update-Protokoll zeigt keine "Unknown column"-Meldung mehr beim Anlegen der DJ-Berechtigungen, das Datenbank-Schema wird jetzt korrekt erkannt.
- Enthält cumulative alle Änderungen aus v1.7.6 und v1.7.8 (Sendeplan-Anzeige robuster, Sonntag-Bug behoben, Live-DJ-Vorrang auf der Startseite, Genre-Feld im Sendeplan, Barrierefreiheit).
v1.7.8
14.05.2026
- Barrierefreiheit: Sichtbarer Tastatur-Fokus auf allen Links, Buttons und Formularfeldern. Tastatur- und Screenreader-Nutzer sehen jetzt klar, wo sie sich gerade befinden.
- Barrierefreiheit: Unterstuetzung für die Systemeinstellung "Bewegung reduzieren". Animationen und Bewegungseffekte werden für Nutzer mit dieser Einstellung praktisch abgeschaltet.
- Barrierefreiheit: Das Newsletter-Eingabefeld im Footer hat jetzt eine korrekte Beschriftung für Screenreader.
- Enthält cumulative alle Änderungen aus v1.7.6 (Sendeplan-Anzeige robuster, Sonntag-Bug in der Now-Playing-Anzeige, Live-DJ hat Vorrang auf der Startseite, Genre-Feld im Sendeplan).
v1.7.6
14.05.2026
- Fix: Sendeplan-Anzeige robuster. Eine reaktivierte oder unvollstaendig konfigurierte Sendung verschwand aus dem Sendeplan und der Now-Playing-Anzeige. Jetzt wird nur eine vollstaendige Einmal-Sendung datumsgebunden gefiltert, alles andere zaehlt als wöchentlich.
- Fix: Now-Playing zeigte Sonntags-Sendungen nicht mehr an. Die Wochentag-Berechnung war verschoben und wurde korrigiert.
- Fix: Die Startseite zeigte einen Live-DJ und die geplante Sendung gleichzeitig untereinander. Ein Live-DJ hat jetzt Vorrang und blendet die geplante Sendung in der Uebersicht aus.
- Feature: Genre-Feld pro Sendung im Sendeplan. In der Sendungs-Bearbeitung waehlbar (mit Freitext-Eingabe), Anzeige im Sendeplan-Frontend und in der Sendeplan-Uebersicht im Admin.
v1.7.5.4
13.05.2026
- v1.7.5.4 Update:
- Feature: 'Aktuelle Sendungen'-Section unter dem Hero-Bereich mit zwei Karten:
- Zur Zeit On-Air: DJ-Photo + Moderator + Sendung + Zeit-Range (von-bis)
- Naechste Live-Sendung: DJ-Photo + Moderator + Sendung + Start-Datum + Zeit-Range
- Bei kein-DJ-live wird Auto-DJ angezeigt. Abschaltbar in Settings.
- Feature: Chat-DB-Wartung mit:
- Hard-Delete-Option (Setting): Nachrichten sofort entfernen statt Soft-Delete
- Auto-Cleanup-Cron (täglich): Nachrichten aelter als 90 Tage komplett löschen + Soft-Deletes nach 7 Tagen aufraeumen (beides konfigurierbar)
- Admin-Filter 'Geloeschte ausblenden' in Chat-Admin
- Wartungs-Section mit DB-Stats (Total/Soft/Alt) + manuelle Cleanup-Buttons
- Server-Zeit-Anzeige damit Sender Timezone-Probleme sieht
- Settings (alle in Admin → Settings):
- hero_show_shows_cards = 1
- chat_hard_delete = 0 (default Soft-Delete)
- chat_auto_cleanup_days = 90
- chat_auto_cleanup_soft_days = 7
- Files: admin/chat.php, admin/settings.php, cron/chat-cleanup.php, index.php
v1.7.5.3
13.05.2026
- v1.7.5.3 Hotfix:
- Fix: Sendeplan-Live-Anzeige + Hero-Banner 'On Air Now' funktionierten falsch bei UTC-Servern (Hetzner-Standard). Sendungen wurden 2 Stunden versetzt als laufend angezeigt obwohl Zeit vorbei. Die 'Aktiv'-Beschriftung im Sendeplan war zudem missverstaendlich ('im Plan aktiviert' vs. 'läuft gerade').
- Lösung:
- Default-Zeitzone Europe/Berlin gesetzt (war vorher PHP-Server-Default = UTC)
- Neues Setting 'Zeitzone' in Admin → Settings → Identitaet (20 vorgewaehlte Zonen)
- Sendeplan-Admin zeigt jetzt:
- LIVE-Badge (rot, pulsierend) wenn Sendung gerade läuft
- 'Im Plan' wenn aktiviert aber läuft nicht jetzt
- 'Pausiert' wenn deaktiviert
- Plus Server-Zeit-Indicator oben mit Warnung bei UTC
- Migration legt cms_timezone-Setting auf 'Europe/Berlin' an (kann im Admin geändert werden).
- Files: config/config.php, admin/settings.php, admin/schedule.php
v1.7.5.2
13.05.2026
- v1.7.5.2 Hotfix + Feature :
- BUG: Chat-System-Messages (DJ-live/DJ-ended) wurden als 'Gast' angezeigt + bei Löschen 'gelöscht von Gast'. Root-Cause: user_id und guest_name beim Insert leer. Fix: guest_name='System' beim Insert + Display-Logik aufgeloest (message_type='system' → 'System', deleted_by → Username).
- FEATURE: Hero-Banner zeigt jetzt optional 'On Air Now: <Sendung>' und 'Next Show: <Sendung> · Morgen 14:00'. Bei kein-DJ-live mit Auto-DJ-Fallback an: zeigt 'Auto-DJ'-Badge. Konfigurierbar via 3 neue Settings im Admin → Settings → Identitaet (alle Default AN).
- Settings:
- hero_show_on_air = 1 (On-Air-Badge)
- hero_show_next_show = 1 (Next-Show-Badge)
- hero_autodj_fallback = 1 (Auto-DJ als Fallback)
- Files: admin/dj-area.php, admin/chat.php, admin/settings.php, index.php
v1.7.5.1
13.05.2026
- v1.7.5.1 Hotfix :
- Bug: 'Bei Song-Wuensche kann ich nicht löschen, obwohl Status setzen geht.'
- Root-Cause: data-confirm Modal-Handler in admin-footer.php nutzte form.submit() programmatisch, dabei ging der Button-name+value verloren. Backend bekam kein $_POST['action'] und Delete-Action wurde nie getriggert. Betraf ALLE data-confirm Forms im CMS die <button name="action" value="..."> nutzen.
- Fix (zweistufig):
- 1. admin/includes/admin-footer.php: generischer JS-Fix - merkt sich den geklickten Submit-Button und hängt name+value als hidden-Input ans Form vor form.submit(). Funktioniert jetzt für ALLE data-confirm-Forms im ganzen CMS.
- 2. admin/requests.php: Doppel-Sicherheit, action='delete' als hidden-Input statt button-value.
- Keine Schema-Änderungen, kein Migration-Aufwand. Reiner File-Update-Hotfix.
v1.7.5
12.05.2026
- Cumulative-Hotfix von 9 Bugs aus Tester-Reports ():
- Cookie-Banner: externe Inhalte (YouTube/Spotify/Maps/Vimeo/Soundcloud/Twitter/Facebook) werden jetzt ServerSeitig vor-blockiert. iframe-src wird durch data-src ersetzt damit der Browser die Embeds nicht auto-laedt bevor der User Consent gegeben hat. DSGVO-konform.
- DJ-Recht eigene Sendung bearbeiten: neue Permission edit_own_schedule (Default-Zuweisung an DJ-Rolle). DJ kann jetzt Uhrzeit, Beschreibung, Banner seiner eigenen Sendung ändern. Den DJ-Eintrag selbst aendert nur Admin.
- DJ-Recht Titel-Updater: neue Permission update_now_playing. DJ kann den manuellen Jetzt-läuft-Titel setzen wenn Admin den globalen Switch aktiviert hat. Granular zuweisbar pro DJ.
- Wunschbox pro Sendung waehlbar: schedule.wishes_enabled Spalte. Pro Sendung im Sendeplan kann Wunschbox an/aus geschaltet werden.
- Song-Wuensche löschen: DJ und Admin können Wuensche im /admin/requests.php jetzt einzeln und in Bulk löschen. Plus 'Alle Gespielten löschen' Button.
- Benachrichtigungen 'Alle löschen': löscht jetzt wirklich. Auto-Mark-Read beim Seitenaufruf entfernt (war verwirrend).
- Sendungs-Edit: pro Sendung Wunschbox an/aus Checkbox im Edit-Formular.
- Hinweis: Charts-Pro v1.0.5 Hotfix separat im Marketplace (Vorhoeren-Bug + Multi-Pause-Icon-Bug).
- Plus: Newsletter-Bot-Schutz
- Honeypot-Feld (unsichtbares website Input, Bots füllen es aus, Menschen nicht)
- Time-Trap (Form muss min 3 Sek seit Render alt sein, Bots submitten in <1s)
- Rate-Limit per IP (Default 5 Anmeldungen/Stunde, file-basiert, kein DB-Aufwand)
- MX-Record-Check (verhindert Bounces an tote Domains)
- 2 neue Settings: newsletter_mx_check_enabled, newsletter_rate_limit_per_hour
- Plus: Newsletter-Bot-Schutz (, Bounce-Mails durch Form-Spam-Bots)
- Honeypot-Feld (unsichtbares 'website' Input, Bots füllen es aus, Menschen nicht)
- Time-Trap (Form muss min 3 Sek seit Render alt sein, Bots submitten in <1s)
- Rate-Limit per IP (Default 5 Anmeldungen/Stunde, file-basiert, kein DB-Aufwand)
- MX-Record-Check (verhindert Bounces an tote Domains)
- 2 neue Settings: newsletter_mx_check_enabled, newsletter_rate_limit_per_hour
v2.0.0
12.05.2026
- Major Release: Theme-System ausgebaut.
- 3 zusaetzliche Core-Themes mitgeliefert: Light Mode, Schausteller (Retro-Jahrmarkt-Style), Klassik (elegant mit Gold + Serifen).
- Plugin-Hook radiocms_register_theme() für Marketplace-Theme-Plugins (Basis für Theme-Marketplace v2.2).
- radiocms_get_theme_css_url() Helper mit Override-Support.
- Hinweis: Die v2.0-Premium-Plugins (Chat-Pro, Membership Pro, Mobile-App-Builder, Page-Builder v2 etc.) sind separate Plugin-Downloads im Marketplace und nicht Teil dieses Core-Updates.
- CSRF-Schutz flaechendeckend in allen Admin-POST-Forms ergaenzt, plus plugin-spezifische Audit-Findings gefixed (siehe MEMORY feature_bug_audit_fixes.md).
- Plus: Theme-Loader prüft jetzt Marketplace-Themes-Registry (Audit-Fix).
v1.7.4.7
12.05.2026
- v1.7.4.7 (2026-05-12) – Feature-Hotfix
- Cookie-Floating-Icon konfigurierbar (-Wunsch):
- Eigenes Bild ODER Emoji ('🍪' Default)
- Position: bottom-left / bottom-right / top-left / top-right
- Pixel-Abstand zum Rand (Default 16, hoeher setzen wenn Footer-Player das Icon verdeckt)
- Behebt 'Cookie-Icon verdeckt Play-Button im Footer-Player'.
v1.7.4.6
12.05.2026
- v1.7.4.6 (2026-05-12) – UX-Hotfix
- Cookie-Settings: 'Plugin-Hook'-Info-Box war für Sender-Betreiber verwirrend. Jetzt verstaendlicher Text oben + technische window.RadioCMSConsent-Details in aufklappbarem 'Für Plugin-Entwickler'-Bereich versteckt. (-Frage 2026-05-12)
v1.7.4.5
12.05.2026
- v1.7.4.5 (2026-05-12) – Cumulative-Backfill
- 7 Files die in v1.6.7 ausgeliefert aber im v1.7.1-Cumulative vergessen wurden:
- admin/cookie-settings.php ('File not found' beim Cookie-Banner-Link)
- admin/djs-edit.php
- admin/modules.php
- admin/sections.php
- includes/cookie_consent.php
- includes/header.php
- includes/page_renderer.php
- Wer von einer Version vor v1.6.7 direkt auf v1.7.x gesprungen ist, hatte diese Files nicht. Jetzt endlich kumulativ enthalten.
v1.7.4.4
12.05.2026
- v1.7.4.4 (2026-05-12) – Hotfix
- Hoerer-Chart im Admin-Dashboard wurde nicht angezeigt (leere Box). Inline-Script rief 'new Chart(...)' auf bevor Chart.js (im Footer) geladen war → JS-Error. Jetzt wartet das Script via window.load bis Chart.js verfügbar ist. (2026-05-12)
v1.7.4.3
12.05.2026
- v1.7.4.3 (2026-05-12) – Cumulative Hotfix
- Custom-Widget Title-Header (PhpFusion-Box-Style): neue Spalten show_title + header_style. Checkbox 'Name als Ueberschrift anzeigen' im Editor. Header-Styles: Box (Header-Leiste + Body), Simple (h3), None.
- 9 zusaetzliche Datums-Shortcodes: {date_long} (Montag, 12. Mai 2026), {date_medium}, {time_full} (21:35 Uhr), {datetime}, {datetime_long}, {month_name}, {hour}, {minute}, {weekday_short}.
- test-widgets Plugin v1.0.1: 'Aktuelle Uhrzeit'-Widget zeigt jetzt deutsches Datum statt Monday/May. 'Folge uns!' Tippfehler im Social-Widget gefixt.
v1.7.4.2
12.05.2026
- v1.7.4.2 (2026-05-12) – Cumulative Hotfix
- Custom-Widgets-Editor: Quill (Rich-Text) raus, Monospace-Textarea rein. HTML wie <iframe>, <script>, <div> wird endlich 1:1 gespeichert und gerendert. Vorher escaped Quill jeden HTML-Tag zu Text.
- Snippet-Vorlagen im Editor: YouTube, Iframe, Sponsor-Banner, Google-Maps, Now-Playing-Box, PHP-Snippet.
- 19 Shortcodes: {site_title}, {now_playing}, {now_playing_artist}, {now_playing_track}, {listeners}, {current_show}, {current_dj}, {current_dj_avatar}, {next_show}, {next_show_at}, {date}, {time}, {year}, {day}, {weekday}, {listener_login_url}, {listener_register_url}, {stream_url}, {site_email} – werden vor dem Render durch dynamische Werte ersetzt.
- PHP-Eval-Toggle (Setting custom_widgets_php_eval, Default AUS). Nur Superadmin kann ihn aktivieren. Wenn AN: <?php ... ?> in Custom-Widgets wird serverseitig ausgeführt.
- Auto-Migration: bestehende Custom-Widgets mit Quill-escaped HTML werden einmalig unescaped (Smart-Check: nur wenn eindeutige HTML-Tags wie <iframe, <div etc. erkannt werden).
- Behebt 'iframe wird als Code angezeigt statt gerendert'.
v1.7.4.1
12.05.2026
- v1.7.4.1 (2026-05-12) – Hotfix
- Custom-Widgets wurden nicht im Frontend gerendert. Toast zeigte 'Gespeichert' beim Drag-Drop, DB-Save klappte auch, aber der Frontend-Renderer (includes/plugins.php radiocms_render_widget_position) ueberging Custom-Widgets weil sie nicht in der Plugin-Widget-Registry stehen.
- Fix: Renderer erkennt jetzt 'custom-{id}'-Pattern und rendert via radiocms_custom_widget_html() aus der custom_widgets-Tabelle. (2026-05-12)
v1.7.4
12.05.2026
- v1.7.4 (2026-05-12) – Hotfix
- Custom-Widgets sind jetzt multi-place: können mehrfach platziert werden (z.B. Sponsor-Box oben UND unten). Vorher waren sie nach erstem Platzieren 'dunkel hinterlegt' und nicht mehr dragbar.
- Plugin-registrierte Widgets bleiben weiterhin single-use (Now-Playing-Widget will man ja nur einmal).
- Visuelle Trennung: Custom-Widgets haben cyan Akzent + Badge 'in Verwendung' statt komplett ausgegraut. (2026-05-12)
v1.7.3
12.05.2026
- v1.7.3 (2026-05-12) – Hotfix
- Custom-Widgets waren nicht im Widget-Editor sichtbar. Jetzt erscheinen sie in der "Verfuegbare Widgets"-Liste (Category: Custom) und können wie alle anderen Plugin-Widgets in Positionen gedragged werden. (2026-05-12)
v1.7.2
12.05.2026
- v1.7.2 (2026-05-12) – Hotfix
- Custom-Widgets Speichern-Button war bei langem HTML-Inhalt nicht erreichbar (Quill-Editor expandierte sich endlos). Jetzt max-height 400px + interner Scroll. Plus zusaetzlicher Speichern-Button OBEN am Form + sticky Speichern-Button UNTEN, immer erreichbar. (2026-05-12)
v1.7.1
11.05.2026
- Cumulative-Hotfix v1.7.1 - -Sweep
- WICHTIG: Dieses Update enthält ALLE Files seit v1.6.0, damit User die Versionen
- übersprungen haben (z.B. direkt von 1.6.5 auf 1.7.0) keine fehlenden Files mehr haben.
- BUG-FIXES:
- Custom-Widgets-Seite: File not found behoben
- Listeners-Seite: File not found behoben
- Demo-Import-Seite: File not found behoben
- Listener-Frontend-Pages (login register profile verify forgot-password reset-password logout): nachgeliefert
- Listener-Helper includes/listener_auth.php: nachgeliefert
- Lizenz-Aktivierung Race-Condition: Token wird direkt von activate zu install durchgereicht
- (vorher: Bei sofortigem Re-Read aus settings-Tabelle kam manchmal noch ein leerer Wert
- was zu Fehlermeldung Kein activation_token in den Settings fuehrte)
- PLUS ALLE v1.7.0 FEATURES:
- Admin-Navigation-Manager Drag-Drop-Bugfix
- Bundles als eigene Sektion im Marketplace
- Plugin-Löschen-Funktion mit Daten-Behalten-Option
- Newsletter-Edit-Bug behoben
- Pages mit in_footer=1 erscheinen im Footer
- Schema-Migration (idempotent) sorgt für fehlende Tabellen:
- custom_widgets, listeners, listener_sessions, page_layouts, admin_nav_items
v1.7.0
11.05.2026
- Core-Release v1.7.0 - Plugin-Manager-UX + neue Hobby-Plugins
- CORE-VERBESSERUNGEN:
- Admin-Navigation-Manager: Drag-Drop in Gruppen funktioniert jetzt korrekt mit visuellen Containern
- Listener Custom-Widgets und Demo-Import sind jetzt im Manager verschiebbar
- Marketplace: Bundles in eigener Sektion oben goldener Akzent statt zwischen Plugins versteckt
- Plugin-Manager: NEUE Lösch-Funktion pro Plugin (Mehr-Optionen-Menue)
- Option Daten behalten (empfohlen) - Plugin weg, Tabellen bleiben für Re-Install
- Option Daten löschen - alles weg
- Lizenz bleibt am Hub erhalten und wiederverwendbar
- BUG-FIXES:
- Newsletter-Kampagne editieren ging nicht (Form-id verloren Quill leer)
- Seiten mit in_footer=1 wurden im Footer nicht angezeigt (Render-Logik fehlte)
- Plugin-Sidebar-Links unter eigenen Gruppen wurden nicht korrekt gerouted
- NEU IM MARKETPLACE (separat installierbar):
- Slider Free (gratis) - Image-Slider bis 5 Bilder
- Slider Pro (39 EUR) - Unbegrenzte Slides 4 Transitions Lightbox Video
- Donation Pro (49 EUR) - Spenden mit Stripe-Checkout
- Show-Replay (79 EUR) - Catch-up-Radio mit ffmpeg-Recording
- Bundle Hobby-Pack (149 EUR) - Charts + Donation + Show-Replay spare 28 EUR
- Charts Pro Update v1.0.2 - Daily-Refresh-Toggle + Charts-als-Newsletter-Button
v1.6.9.4
11.05.2026
- Bug-Fix: Newsletter-Kampagne editieren ging nicht (-Report)
- Form hat jetzt expliziten action-Pfad und id als hidden field
- Quill-Editor laedt vorhandenen Body sauber via dangerouslyPasteHTML
- Bereits versendete Kampagnen werden geschuetzt
- Bug-Fix: Seiten mit in_footer=1 werden jetzt im Footer angezeigt (-Report)
- Vorher gabs den Toggle im Admin aber die Render-Logik fehlte
- Impressum und Datenschutz bleiben hardcoded, eigene Pages kommen davor
v1.6.9.3
11.05.2026
- Cumulative Hotfix: djs-edit.php mit GIF-Fix wird jetzt im Update ausgeliefert (war vorher nur in v1.6.7 ZIP, )
- Migrations idempotent für alle Schemata seit v1.6.0 (page_layouts, custom_widgets, listeners, listener_sessions, admin_nav_items-Spalten, chat_online-Spalten, cookie_banner defaults, listener-settings defaults)
- Wer von einer alten Version direkt auf v1.6.9.3 springt, kriegt alle Tabellen + Spalten automatisch nachgezogen
- Plus alle Files aus v1.6.7-v1.6.9.2 nochmal mitgeliefert (Listener-Pages, Mail-Fixes, SMTP-Test-Button)
v1.6.9.2
10.05.2026
- Critical Hotfix: 500-Error auf /login.php /register.php /profile.php behoben
- Bug: die 7 neuen Listener-Pages (login, register, profile, verify, forgot-password, reset-password, logout) hatten den /includes/lang.php Include vergessen
- Fatal: Call to undefined function t() in header.php beim Aufruf jeder Listener-Page
- Fix: lang.php Include in allen 7 Listener-Pages nachgezogen
v1.6.9.1
10.05.2026
- Hotfix Hotfix Hotfix
- BASE_PATH-Warning beseitigt: define()-Aufrufe in config.php werden bei Updates automatisch mit if(!defined()) geguarded, Warning beim doppelten Include verschwindet
- SMTP-Test-Button zeigt jetzt konkrete Fehlermeldungen (Connection-Fehler, Auth-falsch, MAIL FROM abgewiesen, etc.) statt dem generischen 3-Punkte-Fallback
- lastSmtpError() Helper-Funktion für Plugins die eigene Mail-Tests bauen wollen
- Plus: Plesk-Hinweis bei AUTH-Fehler mit Gmail-Tipp (App-Password)
v1.6.9
10.05.2026
- Mini-Bump für Migration-Re-Run
- Wer v1.6.8 vor dem Chat-Online-Fix installiert hat, kriegt jetzt automatisch die chat_online Schema-Migration
- Online-Liste im Chat zeigt jetzt eingeloggte User und Gaeste korrekt an
- Keine Code-Änderungen gegenueber v1.6.8, nur Version-Bump damit Updater Migration nochmal ausfuehrt
v1.6.8
10.05.2026
- Mail-Versand-Hotfix (Newsletter-Bestaetigungs-Mail kam nicht raus)
- Auto-Domain-Detect: ohne SMTP-Config wird die Absender-Adresse automatisch auf 'noreply@deine-domain.de' gesetzt (Plesk akzeptiert das)
- HTML-Mail-Support: Mails kommen jetzt als multipart/alternative (text + html) an, nicht mehr als roher HTML-Code
- PHP mail()-Fallback robuster: Return-Path Header + -f Sender-Param für Plesk/Postfix
- Neuer SMTP-Test-Button in Admin-Settings: schickt Test-Mail an deine Admin-Email, zeigt genaue Fehlermeldung wenn was klemmt
- Plesk-Setup-Tipps in den SMTP-Settings als ausklappbare Hilfe
- Chat-Bug-Fix: fehlende Spalten in chat_online nachgezogen (status, user_color, bubble_color), Online-Liste war leer wenn diese Spalten fehlten
v1.6.7
10.05.2026
- Plugin-Manager-Redesign (Karten-Grid, Kategorie-Pills, View-Toggle Karten/Liste)
- Cookie-Banner-DSGVO-Trigger (Floating-Button unten links damit User Einstellungen jederzeit ändern können)
- Custom-Widgets-Manager mit Quill-Editor (eigene HTML-Widgets für Section-Manager und Page-Builder)
- Listener-Account-System: Register, Login, Profile, Verify, Forgot-Password (Vorbereitung für v2.0 Chat)
- Admin-Settings für Listener-Registrierung mit Captcha (Honeypot, Math, hCaptcha, Turnstile, reCAPTCHA)
- Email-Verifikation und optionale Admin-Freigabe für neue Listener-Accounts
- Admin-Sidebar alphabetisch innerhalb der Sektionen sortiert
- Aktuelle-Startseite-übernehmen Button in Section-Manager und Page-Builder Pro
- DJ-Edit Bug-Fix: kein Phantom-Streampasswort-Generiert mehr beim normalen Speichern
- DJ-Edit Bug-Fix: GIF-Upload klappt jetzt (robustere MIME-Detection plus 10 MB Limit für animierte GIFs)
- page_layouts Log-Spam beseitigt (Static-Cache wenn Tabelle fehlt)
- Cookie-Banner-Files mitgeliefert (File-not-found)
- Dev-Doku-Link auf Hub-Page umgebogen (war /dev/ 404)
v1.6.6
10.05.2026
- UX-Hotfix: Master-Update-Button Alles auf einmal (Core + alle Plugins). Plugin-Update-Liste nur mit Updates plus Toggle. Admin-Navigation-Manager mit Dropdown-Gruppen für uebersichtliche Sidebar.
v1.6.5
10.05.2026
- UX-Fix: Marketplace- und Plugin-Liste haben jetzt klar lesbare Aktion-Buttons mit Text plus Farbe statt nur Icons. Anleitung-Button cyan, Demo-Button gruen, Lizenz-Status sichtbar als Badge.
v1.6.4
10.05.2026
- Feature: Bestaetigungs-Seite nach Stripe-Kauf mit Hinweis dass der Lizenz-Key per E-Mail kommt (auch in Spam prüfen) plus Button zur Lizenz-Aktivierung im CMS. Plus Marketplace holt Stripe-Publishable-Key dynamisch vom Hub statt hardcoded zu sein, damit Live- und Test-Mode automatisch korrekt funktionieren.
v1.6.3
10.05.2026
- Bug-Fix: Nach Stripe-Checkout wurde Browser auf kaputte URL umgeleitet (DNS-Fehler). return_url hatte doppelt https:// drin. Fix: nur BASE_URL verwenden. Plus: Webhook akzeptiert jetzt sowohl product_slug als auch radiocms_slug für Compat zwischen DGN-Chat und RadioCMS-Marketplace.
v1.6.2
10.05.2026
- Feature: Premium-Plugins direkt im Marketplace per Stripe Embedded Checkout kaufbar. Klick auf Kaufen-Button öffnet Modal mit eingebettetem Stripe-Checkout, kein Wechsel auf externe Seite. Test-Mode aktiv, Test-Karte 4242 4242 4242 4242. Webhook-Setup folgt als naechster Schritt.
v1.6.1
10.05.2026
- Bug-Fix: Plugin-Updates konnten nicht installiert werden, Fehler "Plugin-Slug, Version oder URL fehlt" trotz angezeigtem Update-Button. Ursache war ein Feldnamens-Mismatch in includes/updater.php zwischen mp_client_check_update und updater_check_plugin_updates. Plus die Fehlermeldung zeigt jetzt konkret welches Feld fehlt. Migration löscht stale Plugin-Update-Caches damit beim nächsten Update-Seiten-Aufruf frisch vom Hub geholt wird.
v1.6.0
10.05.2026
- Feature: Plugin-Manager und Marketplace komplett neu gestaltet (Filter-Pills, Kategorien, Live-Suche, kompakte Listen-Ansicht). Newsletter Pro integriert die Core-Newsletter-Seite jetzt als Sub-Tab statt eigenem Sidebar-Link. Admin-Sidebar im Navigation-Manager unter dem neuen 3. Tab Admin-Sidebar sortier- und sichtbarkeits-konfigurierbar.
v1.5.7
09.05.2026
- Feature: Massen-Plugin-Updates. Auf der System-Update-Seite gibt es jetzt einen "Alle X updaten"-Button der alle verfuegbaren Plugin-Updates in einem Rutsch installiert (Backup pro Plugin). Plus auf der Plugin-Manager-Seite oben einen Banner der zeigt wenn Plugin-Updates verfügbar sind. "Updates suchen" invalidiert jetzt auch die Plugin-Update-Caches.
v1.5.6
09.05.2026
- Bug-Fix: Premium-Plugins (z.B. Newsletter Pro, Stats Pro) konnten nach Lizenz-Aktivierung nicht automatisch heruntergeladen werden. Fehler "Kein activation_token in den Settings" trotz erfolgreicher Aktivierung. Ursache war ein Settings-Cache der den frisch gespeicherten Token erst beim nächsten Page-Load gesehen hat. Plugin-Settings werden jetzt direkt aus der DB gelesen, Cache umgangen.
v1.5.5
09.05.2026
- Feature: Zwei neue Premium-Plugins im Marketplace. Newsletter Pro (79 EUR Lifetime) mit Drip-Sequenzen, A/B-Testing für Subject-Lines, Schedule-Sends, Subscriber-Segmenten und Open/Click-Tracking. Stats Pro (49 EUR Lifetime) mit Geo-Charts, Genre-Trends, Device-Analyse, Zeit-Heatmap, Monatsvergleich und CSV-Export. Beide Plugins über den Marketplace installierbar mit Lizenzschluessel.
v1.5.4
09.05.2026
- Feature: Drei neue Sendungs-Widgets für Section-Manager und Page-Builder. „Aktuelle Sendung" mit Banner und Live-Indicator, „Naechste Live-Sendung" mit Datum und Cover, „Aktuelle plus Naechste" als 2-Spalten-Kombi (perfekt für Startseite). Alle ziehen automatisch aus dem Sendeplan
v1.5.3
09.05.2026
- Bug-Fix: Auto-Update-Toggle übernimmt jetzt sofort mit einem Klick (vorher musste 2x geklickt werden)
- Bug-Fix: System-Update-Anzeige nach erfolgreichem Update sofort aktuell, das gerade installierte Update wird nicht mehr als „verfügbar" angezeigt
v1.5.2
09.05.2026
- Verbesserung: Auto-Update-Toggle auf der Plugin-Lizenz-Seite jetzt zuverlaessig sichtbar, sobald eine Lizenz mal aktiviert wurde
- Kosmetisches Update: interne Code-Bereinigung in mehreren Admin-Dateien, keine funktionalen Änderungen
v1.5.1
09.05.2026
- Bug-Fix: Variable-Kollision $manifest zwischen plugin-license.php und admin-header.php. Auf der Plugin-Lizenz-Seite wurde der Plugin-Name nicht angezeigt („, Lizenz" statt „Page-Builder Pro, Lizenz"), Anleitung-Banner zeigte „Anleitung zu " ohne Name, Versionsnummer war „v0.0.0". admin-header.php nutzt jetzt eine eigene Variable $cmsUpdateManifest
- Bug-Fix: Auto-Update-Toggle wirkte deshalb auch unsichtbar, ist aber tatsächlich da, sobald die License-Page korrekt rendert (sichtbar bei aktiver Lizenz im Aktionen-Block)
- Technisch: cms_db_version auf 1.5.1
v1.5.0
09.05.2026
- Feature: Auto-Update Toggle für Premium-Plugins. Pro Plugin auf der Lizenz-Seite einschaltbar, neue Versionen werden täglich vom Hub geholt und automatisch installiert (license-verify-Cron). Defensive: pro Plugin try/catch, nur installierte Plugins, error-resilient
- Feature: Backup-Uebersicht im Admin. Neuer Sidebar-Link „Backups" (nur Superadmin) zeigt alle Backups mit Datum, Größe, Anzahl Dateien, Typ. Download als ZIP, Löschen mit Bestätigung
- Feature: Update-Health-Check. Nach jedem Update laufen Smoke-Tests (Kern-Files, PHP-Syntax, DB, Plugins-Verzeichnis, role_permissions). Bei Fehler erscheint ein Hinweis in der Step-Liste plus Rollback-Empfehlung. Schlaegt nicht falsch-positiv an wenn exec auf Shared-Hosting disabled ist
- Feature: Cookie-Banner Auto-Block für externe Embeds. YouTube, Spotify, Soundcloud, Vimeo, Google Maps, Twitter/X, Facebook werden automatisch durch einen Klick-Wrapper ersetzt bis der User die Marketing-Kategorie akzeptiert. Sicher: nur https-URLs, sandbox-Attribute, MutationObserver für dynamisch eingefuegte iframes
- Feature: Podcast-Modul Major-Erweiterung. RSS-Feed unter /podcasts-rss.php Apple-Podcasts und Spotify konform mit iTunes-Tags und Kategorie-Filter, Show-Notes per Quill-Editor, Kategorien-Verwaltung, Staffel/Episode-Nummerierung, Slug pro Episode, Detail-Page mit Player+Share, Embed-Code für externe Webseiten, Episode-Statistik mit Play-Tracking
- Feature: Podcast-Frontend mit Kategorien-Filter, RSS-Link prominent, Episode-Detail-Page (Hero+Player+Show-Notes+Share), Embed-iframe-Modus per ?embed=1
- Technisch: cms_db_version auf 1.5.0, permissions_revision incrementiert. Neue Tabellen podcast_categories und podcast_plays. podcasts-Tabelle erweitert um slug, category_id, season_number, episode_number, show_notes, play_count, published_at
v1.4.0
09.05.2026
- Feature: Cookie-Consent-Banner DSGVO-konform. Drei Buttons (Alle akzeptieren / Nur notwendige / Einstellungen), Modal mit Kategorien (Notwendig/Statistik/Marketing), Cookie-Liste pflegbar im Admin. Default AUS, manuell aktivieren in Admin -> Cookie-Banner. JS-API window.RadioCMSConsent.has('category') für Tracking-Plugins
- Feature: Marketplace-Tab zeigt jetzt 📖-Icon (Anleitung) und ▶-Icon (Live-Demo) pro Plugin. Featured-Plugins kommen oben mit „Featured"-Badge
- Feature: Plugin-Bundle „Charts + Page-Builder Bundle" 119 EUR (statt 138 EUR Einzelkauf). Im Marketplace-Tab als eigene lila Bundle-Karte mit „spare 19 EUR"-Hinweis
- Feature: 6 Plugin-Anleitungen live unter https://dgnshop.com/radiocms/hub/docs/<slug>/. Premium: page-builder-pro, charts-pro. Free: section-manager, navigation-manager, voting, newsletter. Auf der License-Page kommt nach Aktivierung ein „Anleitung lesen"-Banner
- Feature: Re-Verify-Cron cron/license-verify.php. Checkt einmal pro Tag (Throttle 20h) für jedes Premium-Plugin, ob die Lizenz beim Hub noch aktiv ist. Revoken faengt das ab
- Feature: Chat-Default in Header-Navigation. Wenn Items existieren aber Chat fehlt, wird Chat-Item automatisch ergaenzt (sort_order 99). Kein „Chat-Link weg"-Problem mehr nach v1.3.0-Updates
- Technisch: Pre-Deploy-Check-Skript _build/check-zip.py prüft Update-ZIPs vor Hub-Upload auf Forward-Slashes (Backslash-Bug-Vorbeugung), files/-Verzeichnis, migrate.php
- Technisch: Hub-DB-Schema erweitert (marketplace_products.docs_url/demo_url/featured plus marketplace_bundles + bundle_products Tabellen). cms_db_version auf 1.4.0, permissions_revision incrementiert
v1.3.7
09.05.2026
- Bug-Fix: Chat-Senden warf db_error bei manchen Installs. Spalten user_color/bubble_color/font_size waren im Code, fehlten aber in der chat_messages-Tabelle (keine Migration vorher). v1.3.7 ergaenzt sie idempotent
- Bug-Fix: send.php loggt jetzt die echte DB-Fehlermeldung ins error_log, damit kuenftige Schema-Probleme schneller diagnostizierbar sind
- Hinweis: Chat-Link in der Hauptnavigation kann unter Admin -> Navigation -> Header-Tab manuell hinzugefügt werden (Typ Core, Target Chat). Nach v1.3.0 mit Navigation-Manager ist der Chat-Link nicht mehr hardcoded sondern frei platzierbar
v1.3.6
09.05.2026
- Bug-Fix: Sammel-Patch für v1.3.0-Files. Das urspruengliche v1.3.0-ZIP hatte Backslashes (PowerShell Compress-Archive) statt Forward-Slashes, dadurch wurden bei einigen Installs Dateien wie admin/navigation.php nicht extrahiert (Sidebar-Link „Navigation" fuehrte zu 404). v1.3.6 bringt alle 23 v1.3.0-Files mit Forward-Slash-ZIP plus alle Hotfix-Verbesserungen aus v1.3.1-v1.3.5
- Bug-Fix: admin/navigation.php, includes/navigation.php, cron/schedule-cleanup.php und weitere v1.3.0-Files werden jetzt zuverlaessig installiert
- Feature: Idempotente Migration läuft alle DB-Schritte aus v1.3.0 plus v1.3.5 nochmal durch (CREATE TABLE IF NOT EXISTS, INSERT IGNORE), heilt halb-installierte Updates
- Technisch: cms_db_version auf 1.3.6, permissions_revision incrementiert
v1.3.5
09.05.2026
- Bug-Fix: Sidebar-Link „Navigation" fehlte bei einigen Installs (Permission `manage_navigation` war zwar in DB, aber nicht in role_permissions zugewiesen). Migration heilt das jetzt idempotent für alle Permissions an admin und superadmin
- Bug-Fix: Pages-Modal (Impressum/Datenschutz/Custom-Pages) scrollt wieder zuverlaessig auf 1920x1080. Bootstrap modal-dialog-scrollable durch custom Flexbox-Layout mit !important ersetzt
- Feature: Superadmin-Catch-All in can(). Superadmin darf immer alles, unabhaengig von role_permissions, damit kuenftige Permission-Migrations keine Sperren mehr erzeugen können
- Technisch: permissions_revision incrementiert (alle aktiven Sessions reloaden Permissions). cms_db_version auf 1.3.5
v1.3.4
09.05.2026
- Bug-Fix: Auto-Install für Premium-Plugins ist jetzt zuverlaessig. Verbose Status-Meldungen pro Schritt (Token-Check, Hub-URL, ZIP-Download, Permissions, Extraction). Wenn auto fail, kommt ein Direkt-Link zum manuellen ZIP-Download
- Feature: GET Auto-Install. Wenn die Lizenz schon mal aktiviert wurde aber das Plugin lokal fehlt, wird beim Aufruf von plugin-license.php das ZIP automatisch nachgeladen, ohne dass der User erneut auf „Aktivieren" klicken muss
- Feature: install_only Action für Plugin-Re-Install ohne Lizenz-Aktivierung
- Bug-Fix: Bei war die Lizenz aktiviert, Plugin aber nicht installiert. Jetzt heilt sich das nach v1.3.4 von selbst beim nächsten Aufruf der License-Page
v1.3.3
09.05.2026
- Bug-Fix: plugin-license.php Defensive-Fallback. Wenn der Hub mal nicht antwortet oder ein neuer Plugin-Slug noch nicht im Browse-Index ist, wird ein minimales Pseudo-Manifest aus dem Slug gebaut. Lizenz-Eintragen funktioniert immer
- Bug-Fix (Hub-Side, separater Upload): browse.php sucht jetzt auch im slug-Feld der marketplace_products. „page-builder-pro" wird jetzt auch über den exakten Slug gefunden, nicht nur über Namens-Match
- Technisch: cms_db_version auf 1.3.3, permissions_revision incrementiert
v1.3.2
09.05.2026
- Bug-Fix: Marketplace-Tab zeigte „Lizenz eintragen" auch für Plugins mit aktiver Lizenz (Charts-Pro), pruefte den lokalen Status nicht. Jetzt 4 klare Buttons: „Lizenz aktiv" (gruen), „Lizenz eintragen" (gelb), „Plugin laden + Lizenz" (lila, für noch nicht installierte Plugins), „Installieren" (blau, für Free)
- Bug-Fix: Klick auf „Lizenz eintragen" tat nichts wenn das Plugin lokal nicht installiert war (plugin-license.php machte stillen Hard-Redirect). Jetzt Soft-Mode: Pseudo-Manifest vom Hub holen, Lizenz-Eingabe erlauben
- Feature: Auto-Download nach Lizenz-Aktivierung. Wenn das Plugin noch nicht lokal liegt, zieht das CMS das ZIP per activation_token vom Hub und entpackt es nach /plugins/<slug>/. Ein Klick statt manuellem ZIP-Upload
- Technisch: cms_db_version auf 1.3.2, permissions_revision incrementiert, demo_mode_enabled idempotent abgesichert
v1.3.1
09.05.2026
- Bug-Fix: Demo-Inhalte-Link wieder versteckt (Migration setzt demo_mode_enabled hart auf 0, war auf einigen Tester-Installs faelschlich aktiv)
- Feature: Marketplace-Tab im Plugin-Manager (vorher „Community-Browser"), zeigt jetzt auch Premium-Plugins (Page-Builder-Pro, Charts-Pro) mit PRO-Badge und Preis
- Feature: Premium-Plugins haben „Lizenz eintragen"-Button statt „Installieren", führt direkt zur Lizenz-Seite
- Technisch: Hub /api/browse.php gibt jetzt Premium-Plugins aus marketplace_products mit aus (is_premium, requires_license, price_eur Flags)
- Technisch: permissions_revision incrementiert (alle Sessions reloaden Permissions)
v1.2.1
09.05.2026
- Hotfix-Bundle aus Willis Feedback-Runde 3.
- Profil-Edit auch ohne edit_users-Permission (eigenes Profil), Sidebar-Avatar verlinkt zum eigenen Profil.
- Benutzer-Löschen-Action im Admin (Self-Schutz + Letzter-Superadmin-Schutz).
- verifyCsrf akzeptiert GET-Token, Empty-Token-Bypass blockiert.
- Social-Media-Links (Facebook, Instagram, Twitter, YouTube, TikTok, Discord) im Frontend-Footer gerendert.
- Hoererchart-Query gefixt (ONLY_FULL_GROUP_BY-Inkonsistenz).
- Pages-Edit-Modal mit Flexbox-Layout: Speichern-Button immer klickbar, Body scrollt automatisch.
- Sendungen können gelöscht werden (delete_schedule Permission).
- Neue Wiederholungs-Option Einmalig (Spontan-Sendung, recurrence_weeks=0).
- Stream-Server-Title-Reset bei Sendungsende (kein DJ-Titel mehr nach end_stream).
- Demo-Inhalte-Link nur sichtbar wenn demo_mode_enabled=1 (Schutz für Tester-Installs).
v1.3.0
09.05.2026
- Feature: Section-Manager (Free, Core) - Sektionen mit 1/2/3/4-Spalten-Layouts und Widgets aus dem CMS-Katalog auf Startseite und Custom-Pages
- Feature: Navigation-Manager (Free, Core) - Header- und Footer-Menüs getrennt verwalten, Drag-and-Drop, Dropdowns mit 1 Ebene, Sichtbarkeit pro Login-Status
- Feature: Page-Builder-Pro 1.0.1 (Plugin, 89 EUR Lifetime) - 5 polierte Templates, Editor-Fullscreen, List-Filter zeigt nur Custom/Builder-Pages, Save-Modal scrollt zuverlässig auf 1920x1080
- Feature: Sendung „Einmalig" (recurrence_weeks=0) mit Anchor-Datum, day_of_week aus Anchor abgeleitet, im Sendeplan steht das konkrete Datum statt Wochentag
- Feature: Cron-Task schedule-cleanup.php deaktiviert abgelaufene Einmal-Sendungen automatisch
- Feature: HTML-Source-Mode in Pages-Editor pro Sprach-Tab, Quill lässt HTML durch (sanitized: kein script, kein on*=, kein javascript:)
- Feature: Social-Icons als neuer Widget-Typ - greift auf Settings (social_facebook, social_instagram, social_youtube, social_tiktok, social_x, social_discord) zurück
- Feature: Stream-Server-Title nach Sendungs-Ende automatisch auf „<Radio-Name> - AutoDJ" zurückgesetzt
- Feature: Mein-Profil im Admin-Header (Avatar), eingeloggter User kann sein eigenes Profil bearbeiten (Rolle/Aktiv read-only für sich selbst)
- Feature: User-Löschen mit Self-Protection (eigener Account nicht löschbar) und Last-Superadmin-Protection
- Bug-Fix: Footer-Navigation rendert dynamisch, keine doppelten „News"-Einträge mehr
- Bug-Fix: Sendungs-Banner verschwindet nach Sendungs-Ende vom Dashboard (Title-Reset auf Stream)
- Bug-Fix: Chat-Widgets (Uhr, Social, Zitate) überlappen den Chat nicht mehr (display:none auf .radiocms-sidebar im Chat)
- Bug-Fix: Chat-Toolbar Schriftfarbe-Icon ist jetzt Palette statt verwirrendem „B"
- Bug-Fix: Chat-Senden robust - Gast-Token wird notfalls neu generiert, invalid_guest_token rotiert die Session, alle Server-Fehler bekommen einen Toast
- Bug-Fix: Chat-Raumwechsel zeigt sofort System-Message und Toast, vorher wirkte es wie „nichts passiert" wenn der Raum leer war
- Bug-Fix: Navigation-Reset im Footer-Tab zerstört nicht mehr das Header-Menü, beide Standorte haben jetzt eigene Defaults
- Bug-Fix: Pages-Modal nutzt Flexbox-Layout, scrollt zuverlässig auf 1920x1080 beim Speichern
- Bug-Fix: Admin-Buttons btn-admin-icon mit !important global vereinheitlicht (32x32, dunkler Hintergrund, dezente Border)
- Bug-Fix: CSRF-Verify akzeptiert auch GET-Tokens, leere Tokens werden nie als gültig akzeptiert
- Technisch: Neue Tabellen page_layouts und navigation_items (mit menu_location ENUM)
- Technisch: Permissions manage_layouts und manage_navigation neu, permissions_revision incrementiert (alle aktiven Sessions reloaden Permissions)
- Technisch: pages.page_type ENUM um „builder" erweitert für Page-Builder-Pro
- Technisch: Browser-Cache-Bust per admin.css?v=<SITE_VERSION> in admin-header.php
v1.2.0
08.05.2026
- Plattform-Refactor: Plugin-System v2 (Sidebar-Hooks, Cron-Hooks, Auto-Migration, License-Gating, Plugin-Admin-Page-Dispatcher)
- Plattform-Refactor: Marketplace-Lizenz-Client (HMAC-signed Calls gegen Hub-API mit 24h-Cache und 72h-Offline-Toleranz)
- Feature: CMS-Update-Page zeigt jetzt Plugin-Updates parallel zu Core-Updates an, mit Lizenz-Status und Ein-Klick-Plugin-Update
- Feature: Plugin-Lizenz-Settings-Page /admin/plugin-license.php für Lizenz-Eingabe und Status-Verifikation
- Feature: Zentraler Cron cron/plugin-hooks.php für Plugin-Cron-Tasks (Plugins registrieren sich beim Boot)
- Marketplace ist jetzt einsatzbereit. Erstes Premium-Plugin: Charts Pro (Top-100-Voting wie ddtop100.de). Bei Bedarf im Hub-Marketplace verfügbar.
v1.1.2
08.05.2026
- Feature: Hörproben pro Voting-Option (MP3, M4A, AAC, OGG, WAV bis 10 MB), Audio-Player im Frontend und in der Admin-Ergebnis-Tabelle
- Feature: Beim Löschen eines Votings oder einer Option werden Audio- und Cover-Dateien automatisch mit entfernt
- Migration: voting_options.audio_sample-Spalte plus assets/audio/voting-samples-Verzeichnis mit .htaccess-Schutz
v1.1.1
08.05.2026
- Feature: Voting-Modul (komplettes Abstimmungs-System mit eigenem Sidebar-Link, Cover-Bildern, IP/E-Mail/IP+E-Mail-Auth, Newsletter-Auto-Versand, Auto-Publish-Top-3 als News, Recurring-Templates, Live-Diagramm, CSV-Export, Footer-Widget)
- Feature: Sendungs-Wiederholungen (jede Woche, alle 2 Wochen, alle 4 Wochen) mit Anker-Datum, Filter wirkt auf aktuelle/nächste Sendung plus Sendeplan-Übersicht
- Feature: Stream-Title-Push an Stream-Server beim manuellen Now-Playing-Override (für Winamp, VLC, WMP), funktioniert mit SHOUTcast v1/v2 und Icecast2
- Feature: Externe-Player-Icons (Winamp PLS, VLC M3U, Windows Media Player ASX) unter dem „Jetzt hören"-Button auf der Startseite
- Bug-Fix: DJ-Rolle hatte Zugriff auf DJ-Bewerbungen, Podcasts trotz Rechte-Entzug. Jetzt eigene Permission `manage_applications`, `view_podcasts`, `edit_podcasts` korrekt geprüft
- Bug-Fix: Hero-„Jetzt hören"-Button startete den Player nicht (synthetic click verlor User-Activation in Chrome/Safari)
- Bug-Fix: Now-Playing-Titel wurde nicht aktualisiert (Browser-Cache + Reverse-Proxy-Cache durch fehlende no-cache-Header)
v1.0.10
08.05.2026
- Bug-Fix: Now-Playing-Titel wurde nicht aktualisiert auf der Radio-Seite (HTTP-Cache-Header fehlten in /api/status.php und /api/now-playing.php, Browser/Reverse-Proxies haben das gecached). Jetzt strikt no-cache plus Cache-Buster im Frontend-Polling.
- Bug-Fix: Hero-„Jetzt hören"-Button auf Startseite startete den Player nicht. Ursache: synthetischer playBtn.click() vererbt User-Activation nicht zuverlässig in Chrome/Safari, audio.play() wurde mit NotAllowedError blockiert. Jetzt ruft der Hero-Button die togglePlayer-Funktion direkt im selben User-Gesture-Stack auf.
v1.1.0
08.05.2026
- Feature: Voting-Modul komplett neu (eigener Sidebar-Link „Voting")
- Feature: Abstimmungen mit Einzel- oder Mehrfach-Auswahl, max-choices konfigurierbar
- Feature: Drei Auth-Modi pro Voting: nur IP, E-Mail-Double-Opt-In, IP+E-Mail kombiniert
- Feature: Optionen pro Voting mit Cover-Bild (max 3 MB), YouTube- und Spotify-Link, Beschreibung
- Feature: Auto-Publish-Winner: bei Voting-Ende automatisch Top-3 als News-Artikel
- Feature: Newsletter-Auto-Versand bei Voting-Start, nutzt SMTP/Resend/Brevo aus Newsletter-Modul
- Feature: Recurring-Templates, nach Ende automatisch neues Voting für nächsten Monat (Optionen kopiert)
- Feature: Live-Ergebnis-Diagramm (Chart.js) im Admin plus CSV-Export
- Feature: Footer-Widget im Frontend zeigt aktives Voting als Teaser
- Feature: Ergebnis-Sichtbarkeit konfigurierbar (immer / nach eigener Stimme / nach Voting-Ende)
- Feature: Voting-Modul-Settings im Admin (Default-Werte, Anzeige-Texte mehrsprachig)
- Feature: Permission „manage_voting" automatisch an admin und superadmin
- Feature: Cron-Job cron/voting-tick.php für Voting-Finalisierung (Best-Effort-Fallback ohne Cron)
v1.0.9
08.05.2026
- Bug-Fix: „Radio hören"-Button auf Startseite ohne Funktion bei HTTPS-Site mit HTTP-Stream (Browser blockierte still wegen Mixed-Content), URL wird jetzt automatisch auf HTTPS umgeschrieben
- Bug-Fix: Hörerstatistik blieb leer wenn kein Crontab für cron/stats.php eingerichtet war, jetzt sampled /api/status.php alle 5 Minuten selbst (idempotent via Lock-File), funktioniert auch auf Shared-Hosting ohne Cron
- Verbesserung: Sichtbare Toast-Meldung wenn der Player nicht starten kann (Mixed-Content, Autoplay-Block, fehlender Codec) statt stiller Fehlschlag
v1.0.8
08.05.2026
- Bug-Fix: Newsletter-Sidebar-Link fehlte nach Update (Permissions wurden nur beim Login gecacht, jetzt Auto-Reload bei DB-Version-Mismatch)
- Bug-Fix: „Jetzt hören"-Button schaltete Player auf Offline (Audio-Error-Event darf den Live-Status nicht überschreiben, der kommt aus dem Polling)
- Bug-Fix: Hörerstatistik im Dashboard blieb leer bei SHOUTcast (cron/stats.php ignorierte stream_server_type, fragte hardcoded Icecast2 ab)
- Bug-Fix: Footer-Text aus Admin-Einstellungen wurde im Frontend nicht angezeigt (Setting war Dead-Code, jetzt in Brand-Spalte gerendert)
- Bug-Fix: Version wurde im Admin-Footer nicht angezeigt (neue Footer-Bar mit Versionsnummer + Update-Hinweis für Superadmins)
- Feature: Newsletter-Anmeldung im Frontend-Footer (wenn newsletter_enabled aktiv), Double-Opt-In, DSGVO-Checkbox, CSRF-geschützt
v1.0.7
07.05.2026
- UX: Alle hässlichen Browser-Confirm-Popups durch Dark-Theme-Modal ersetzt (Update-Install, Plugin-Install, Newsletter-Versand, Lösch-Aktionen)
- UX: Versionshistorie im System-Update jetzt korrekt nach SemVer absteigend sortiert (neueste oben)
- UX: Versionshistorie zeigt jetzt alle Stichpunkte einer Version, vorher nur die ersten 8 mit „... 7 weitere"
- Feature: Hub-Admin „CMS-Versionen" hat jetzt Edit-Funktion pro Version (Datum, Download-URL, Changelog korrigieren)
- Technisch: Generischer data-confirm-Wrapper in admin-header.php, 13 Admin-Seiten umgestellt von onclick="return confirm()" auf data-confirm-Attribut
v1.0.6
06.05.2026
- Bug-Fix: Newsletter-Editor war kaum lesbar, Quill-Editor hatte keine Dark-Theme-Styles bekommen
- Geändert: Quill-Styles zentral in admin.css gepflegt, alle Editoren (Pages und Newsletter) ziehen daraus, einheitliches Aussehen
v1.0.5
04.05.2026
- UX: Admin-Einstellungen jetzt mit Tabs (Allgemein, Stream, E-Mail SMTP, Funktionen plus Social) statt endloser Liste
- UX: Newsletter-Einstellungen umgezogen nach Admin → Newsletter → Tab Einstellungen, Newsletter ist jetzt eigenes Modul in der Sidebar
- UX: System-Update als Sidebar-Link für Superadmins (war vorher versteckt)
- Feature: Hub-Admin erlaubt jetzt ZIP-Direktupload als Alternative zur Download-URL-Eingabe
v1.0.4
30.04.2026
- Bug-Fix: HTML-Entity-Doppel-Encoding bei SHOUTcast-Titeln, „C&J Street Mix" wurde als „C&J" ausgegeben
- Bug-Fix: Jetzt-hören-Button auf Startseite funktioniert jetzt zuverlässig (war eventbasiert hängengeblieben)
- Geändert: Live-Badge dreifarbig, grün wenn DJ live, rot wenn AutoDJ läuft, grau wenn offline (vorher alles rot)
v1.0.3
26.04.2026
- Feature: Newsletter-System komplett neu mit Double-Opt-In, Quill-Editor und Subscriber-Liste
- Feature: Versand-Engine mit drei Anbietern wählbar (SMTP, Resend, Brevo)
- Feature: Auto-Newsletter „Sendeplan-Wochenrückblick" via Cron mit Toggle in Settings
- Feature: Auto-Update-System (One-Click-Update vom Hub, Backup, Rollback, DB-Migration)
- Feature: Versionshistorie und Backups direkt im Admin sichtbar
- Bug-Fix: Demo-Login-Block jetzt host-gegated, nur auf radio.dgnshop.com sichtbar
- Bug-Fix: Manuelles Now-Playing greift nur wenn Override-Feld wirklich befüllt ist
v1.0.2
22.04.2026
- Bug-Fix: MariaDB-Kompatibilität für Chat-Statistiken (ANY_VALUE durch MAX ersetzt)
- Bug-Fix: SHOUTcast v1 Off-by-One im 7.html-Title-Parser, Track wurde nicht angezeigt
- Bug-Fix: HTTPS-Stream-Stats über SSL-Tunnel (Plesk, Centova, Radio.co)
- Bug-Fix: Player „Demo-Modus" entfernt, zeigt jetzt sauber „Stream offline"
- Bug-Fix: Hardcodierte Demo-Banner aus Impressum und Datenschutz raus
- Bug-Fix: DJ-Bereich passt Badge, Protokoll und Software-Tipps dynamisch an Server-Typ an
- Bug-Fix: Tabellen-Kontrast im Team-Admin auf dunklem Theme verbessert
- Bug-Fix: Permission-Audit, 6 Admin-Seiten hatten nur requireLogin() ohne can()-Check
- Feature: Manuelles Now-Playing-Override für Hoster die Stats sperren
- Feature: Sendungs-Banner pro Sendung (JPG, PNG, WebP, GIF bis 3 MB)
- Feature: Pages-System für Impressum, Datenschutz und Custom-Seiten (Quill-Editor)
- Feature: DJ aus registriertem Mitglied anlegen, Login-Account-Verknüpfung im Dropdown
- Feature: Sendeplan minutengenau (HH:MM, z.B. 14:30 bis 16:45)
- Feature: SHOUTcast v1 Single-Source-Hinweis, kein nutzloser persönlicher Mountpoint mehr
v1.0.0
17.04.2026
- Erste öffentliche Version der Community Edition (MIT-Lizenz)
- Stream-Polling für SHOUTcast v1, SHOUTcast v2 und Icecast2
- Admin-Bereich mit Sendeplan, DJs, Team, News, Chat
- Frontend-Player mit Now-Playing-Anzeige
- Mehrsprachiger DJ-Bereich mit Server-Typ-Erkennung
- Plugin-System (Themes, Erweiterungen) mit Hub-Anbindung
- Demo-Modus für radio.dgnshop.com
RadioCMS-Installationen prüfen automatisch 1x pro Tag ob hier eine neuere Version liegt und zeigen ggf. ein Update-Banner im Admin.