<h2>Version 24.2</h2><ul><li>Update-Manifest-URLs präzisiert: JSON-Dateien liegen im Root, ZIP-Dateien im Ordner /releases.</li><li>Selfhosting-Kanal erwartet und kommuniziert den Paketnamen <code>qrator-vXX.zip</code>.</li><li>Update-Anzeige und lokale Paketerkennung berücksichtigen beide Namensschemata.</li><li>Fehlermeldung beim Online-Update zeigt die geprüfte Manifest-URL an.</li><li>Versionskonstante auf v24.2 aktualisiert.</li></ul>
<h2>Version 24.1</h2><ul><li>Online-Updater gehärtet: Kanalprüfung, SHA-256-Pflichtprüfung und klarere Fehlermeldungen ergänzt.</li><li>Automatisches Datei-Backup vor Updates erweitert; bei Installationsfehlern wird ein Rollback aus dem Backup versucht.</li><li>Update-Manifest-URL auf <code>https://qrator.web2use.ch/update-platform.json</code> gesetzt.</li><li>Lokale Update-Pakete akzeptieren die kanalisierten Paketnamen.</li></ul>
<h2>Version 24</h2><ul><li>Update-Kanal <code>platform</code> ergänzt, damit Plattform- und Selfhosting-Updates getrennt ausgeliefert werden.</li><li>Update-Manifest auf den kanalbezogenen Feed umgestellt.</li><li>Versionskonstante auf <code>v24</code> aktualisiert.</li></ul>
<h2>Version 22.3</h2><ul><li>Hero-Section der Startseite auf eine maximale Breite von <code>1920px</code> begrenzt, damit sie auf sehr grossen Monitoren kontrollierter wirkt.</li><li>Nicht vorhandenen Footer-Link <code>Installation</code> entfernt.</li><li>Versionskonstante auf <code>v22.3</code> aktualisiert.</li></ul>
<h2>Version 22.2</h2><ul><li>Version 22.1 als eigenständiges Updatepaket <code>v22.2</code> ausgegeben.</li><li>Cookie-Consentbanner unten rechts platziert und optisch stärker hervorgehoben.</li><li>Öffentliche Seite <code>Systemanforderungen</code> mit detaillierter technischer Tabelle für Selfhosting ergänzt.</li><li>Versionskonstante auf <code>v22.2</code> aktualisiert.</li></ul>
<h2>Version 22.1</h2><ul><li>Neue öffentliche Frontend-Seite <code>Systemanforderungen</code> ergänzt und in Navigation sowie Footer verlinkt.</li><li>Systemanforderungen inhaltlich auf Selfhosting, PHP, Datenbank, HTTPS, Schreibrechte, Backups und produktiven Betrieb ausgerichtet.</li><li>Cookie-Consentbanner mit aktiver Auswahl für notwendige Cookies und optionale Statistik-Cookies ergänzt.</li><li>Cookie-Kontrolle implementiert: optionale Statistik-Skripte werden erst nach Zustimmung aktiviert und können über den Footer erneut angepasst werden.</li><li>Versionskonstante auf <code>v22.1</code> aktualisiert.</li></ul>
<section class="card">
<h2>Version 22</h2><ul><li>Öffentliche Frontend-Inhalte vollständig auf Selfhosting, Datenhoheit und unabhängigen Betrieb ausgerichtet.</li><li>Startseite, QR-Code-Grundlagen, dynamische QR-Codes, Generator-Seite, Vorteilsseite und FAQ inhaltlich neu aufgebaut.</li><li>Kommunikation geschärft: QRator wird klar als selbst gehostete QR-Code-Lösung ohne Plattformabhängigkeit positioniert.</li><li>Versionskonstante auf <code>v22</code> aktualisiert.</li></ul>
</section>
<section class="card">
<h2>Version 21.12</h2><ul><li>Schriftformatierung der Aktionsbuttons im Bereich Statistik final vereinheitlicht.</li><li>Button-Höhe, Font-Size, Font-Weight, Line-Height und vertikale Ausrichtung im Statistikbereich konsistent gesetzt.</li></ul>
<h2>Version 21.11</h2><ul><li>Schriftgrösse der Aktionsbuttons im Bereich <code>Statistik</code> vereinheitlicht.</li><li>Update-Badge-Funktion bleibt für den Abschlusstest der Version 21 aktiv.</li></ul></section>
<h2>Version 21.7</h2><ul><li>Manuals bereinigt und auf Betreiberinnen und Betreiber eigener QRator-Installationen ausgerichtet.</li><li>Troubleshooting in den Manuals produktneutral und praxisnah überarbeitet.</li><li>Favicon überarbeitet: spielerische Kuh-Variante ohne Text für bessere Erkennbarkeit im Browser-Tab.</li><li>Favicon-Einbindung für Frontend und Backend ergänzt beziehungsweise stabilisiert.</li></ul>
<h2>Version 21.6</h2><ul><li>Neues Superadmin-Systemmenü <code>QRator</code> in der Sidebar ergänzt.</li><li>FAQ, Changelog, Systemanforderungen und Manuals unter dem QRator-Menü gebündelt und nur für Superadmins zugänglich gemacht.</li><li>Update-Menüpunkt zeigt eine dezente Markierung, wenn online ein neues Update verfügbar ist.</li></ul>
<h2>Version 21.5</h2><ul><li>Online-Updater erweitert: Der Button <code>Update installieren</code> lädt das Remote-Update, prüft SHA-256 und installiert es direkt.</li><li>Vor der Installation wird automatisch ein Datei-Backup im Ordner <code>/update/backups</code> erstellt.</li><li>Remote-Update-Flow vereinfacht: kein separater Schritt <code>herunterladen & prüfen</code> mehr nötig.</li></ul>
<h2>Version 21.4</h2><ul><li>Update-Manager in zwei Tabs gegliedert: Online-Update und lokales Update.</li><li>Favicon für Frontend und Backend ergänzt.</li><li>Dashboard-Filter optisch korrigiert; Gruppenfilter und Suchfeld haben nun dieselbe Höhe.</li><li>Suchfeld-Platzhalter auf <code>Durchsuche deine Codes</code> geändert.</li></ul>
<h2>Version 21.3</h2><ul><li>Update-Manifest-URL wird nun release-seitig über <code>QRATOR_UPDATE_MANIFEST_URL</code> vorgegeben und nicht mehr durch alte installierte <code>app/config.php</code>-Werte blockiert.</li><li>Versionsanzeige auf <code>v21.3</code> aktualisiert.</li><li>Update-Check bleibt auf <code>https://qrator.web2use.ch/update.json</code> fixiert.</li></ul>
<h2>Version 21.2</h2><ul><li>Update-URL auf <code>https://qrator.web2use.ch/update.json</code> umgestellt.</li><li>Remote-Update-Download im Backend ergänzt: Update-ZIP wird heruntergeladen, per SHA-256 geprüft und erst danach im lokalen Update-Ordner bereitgestellt.</li><li>Zentrale Versionsanzeige auf <code>v21.2</code> aktualisiert.</li></ul>
<?php require_once __DIR__.'/../app/bootstrap.php'; $user=require_login($pdo); if(!is_superadmin($user)){ http_response_code(403); exit('Zugriff verweigert.'); } require_once __DIR__.'/_layout.php'; page_header('Changelog'); ?>
<section class="card"><h2>Version 21.10</h2><ul><li>Update-Badge in der Sidebar stabilisiert: Superadmins sehen wieder eine kleine Markierung beim Menüpunkt <code>Updates</code>, sobald online eine neuere Version verfügbar ist.</li><li>Online-Update-Status wird beim Login geprüft und danach höchstens alle 30 Minuten automatisch aktualisiert.</li><li>Update-Status wird serverseitig in <code>/storage/update_status.json</code> gespeichert, damit die Sidebar keinen unnötigen Live-Request pro Seitenaufruf ausführt.</li></ul>
<h2>Version 21.9</h2><ul><li>Darstellung des Farbauswahlfelds bei weisser Hintergrundfarbe korrigiert.</li><li>Dateiauswahl für Logo/Bildmarke im QR-Code-Erstellen-Tool gestylt.</li></ul></section>
<section class="card"><h2>Version 21.8</h2><ul><li>Update-Menüpunkt zeigt bei verfügbarem Online-Update wieder einen kleinen Badge mit der Zahl 1.</li><li>Badge-Darstellung im Sidebar-Menü grafisch präzisiert.</li></ul></section>

<section class="card changelog">
<h2>Version 21</h2><ul><li>Zentrale Versionskonstante <code>QRATOR_VERSION</code> ergänzt; die Version wird künftig direkt durch das Update-Paket vorgegeben.</li><li>Dezenter globaler Backend-Hinweis mit Version und Copyright <code>© web2use.ch</code> ergänzt.</li><li>Online-Update-Check für Superadmins ergänzt: QRator liest <code>update.json</code> von web2use.ch und zeigt verfügbare Versionen mit Download- und Changelog-Link an.</li><li>Lokaler Update-Bereich bleibt erhalten: heruntergeladene ZIP-Pakete können geprüft, hochgeladen und installiert werden.</li></ul>
<h2>Version 20</h2><ul><li>Live-Volltextsuche im QR-Code-Dashboard ergänzt.</li><li>Gruppenfilter im Dashboard optisch überarbeitet.</li><li>Changelog nur noch für Superadmins sichtbar.</li><li>CSRF-Cookie konsistent auf <code>SameSite=Strict</code> gehärtet.</li></ul>
<h2>Version 19.2</h2><ul><li>Kontodatenänderungen abgesichert: Name oder E-Mail können nur noch mit aktuellem Passwort gespeichert werden.</li><li>Passwortfeld im Konto erscheint erst, wenn Name oder E-Mail geändert werden.</li><li>CSP-Nonce wird nun an Script-Tags im Backend und Frontend übergeben.</li><li>Script-Policy weiter gehärtet und ohne <code>unsafe-inline</code> weitergeführt.</li></ul>
<h2>Version 19.1</h2><ul><li>Anzeigename für Benutzer ergänzt und in Sidebar/Benutzerverwaltung/Konto verwendet.</li><li>Login-Fehlermeldung vereinheitlicht, damit keine Rückschlüsse auf vorhandene Konten möglich sind.</li><li>Content-Security-Policy ohne <code>unsafe-inline</code> für Backend und Frontend ergänzt.</li><li>Inline-JavaScript und Inline-Event-Handler weitgehend in externe Dateien ausgelagert.</li><li>Frontend und Backend verwenden konsistentere UI-Komponenten und gemeinsame Utility-Klassen.</li></ul>
<h2>Version 18.6</h2><ul><li>Self-Updater erweitert: hochgeladene Update-Pakete können vor der Installation wieder gelöscht werden.</li><li>Löschfunktion mit CSRF-Schutz, Dateinamenprüfung und Sicherheitsprüfung auf den <code>/update</code>-Ordner ergänzt.</li><li>Sidebar-Version auf v18.6 aktualisiert.</li></ul>
<h2>Version 18.5</h2><ul><li>Backend-Sidebar auf Desktop scrollbar gemacht, wenn das Benutzermenü geöffnet ist.</li><li>Untere Menüpunkte bleiben innerhalb der Sidebar.</li><li>Pfeilschaltfläche des Benutzermenüs neu gestaltet.</li></ul>
<h2>Version 18.4</h2><ul><li>Sichtbaren <code>\\n</code>-Text im Frontend-Header entfernt.</li><li>Mobiles Frontend-Menü erneut geprüft und als stabiles Offcanvas-Menü mit Overlay, Scrollbereich und korrekter Ebenenreihenfolge umgesetzt.</li><li>Versionsanzeige in der Sidebar auf v18.4 aktualisiert.</li></ul>
<h2>Version 18.3</h2><ul><li>Benutzerverwaltung aus dem Kontomenü in die Hauptnavigation verschoben.</li><li>Passwortfeld beim Speichern der Kontodaten entfernt; die Passwortänderung bleibt im eigenen Menüpunkt.</li><li>Mobiles Backend-Menü optisch korrigiert, damit Inhalte nicht über die abgerundeten Ecken laufen.</li><li>Mobiles Frontend-Menü im Stil des Backend-Offcanvas-Menüs umgesetzt.</li></ul>
<h2>Version 18.2</h2><ul><li>Changelog-Eintrag für Version 18.1 nachgetragen.</li><li>Self-Updater zeigt bei gefundenen Update-Paketen direkt die Änderungen der neuesten Version aus dem Paket an.</li><li>Backend-FAQ optisch an die öffentliche FAQ angeglichen.</li></ul>
<h2>Version 18.1</h2><ul><li>Preloader ruhiger gestaltet: Logo und Kuh-Bildmarke stehen stärker im Fokus, der drehende Rahmen wurde entfernt.</li><li>QR-Element pulsiert dezenter.</li><li>Frontend-Footer farblich stärker abgehoben.</li></ul>


<h2>Version 18</h2><ul><li>Logo-basierter Preloader für Warteprozesse im Frontend und Backend ergänzt.</li><li>Frontend-Navigation auf mobilen Geräten mit Hamburger-Menü umgesetzt.</li><li>Footer der öffentlichen Seiten erweitert.</li><li>Öffentliche Seiten für Impressum und Datenschutz ergänzt.</li></ul>
<h2>Version 17.3</h2><ul><li>Upload-Bereich im Updatetool optisch überarbeitet.</li><li>Session-Cookie auf <code>SameSite=Strict</code> gehärtet.</li><li>Account-Lockout nach wiederholten Login-Fehlversuchen ergänzt.</li><li><code>/app</code> wird per <code>.htaccess</code> gegen direkten Webzugriff geschützt.</li></ul>
<h2>Version 17.2</h2><ul><li>Self-Updater-Fix: interne Tabelle <code>rate_limits</code> ist nun in der Tabellenzuordnung registriert.</li><li>Fehler <code>Update fehlgeschlagen: Unbekannte Tabelle.</code> behoben.</li><li>Update-Anzeige bleibt nach fehlgeschlagenen Migrationen konsistent und zeigt nur installierbare ZIP-Pakete.</li></ul>
<h2>Version 17.1</h2><ul><li>Storage-Verzeichnis mit .htaccess gegen direkten Zugriff und Directory Listing gehärtet.</li><li>HTTP-Sicherheitsheader ergänzt: CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy und Permissions-Policy.</li><li>Cloudflare-Länderheader werden nur noch verwendet, wenn Cloudflare als Geo-Anbieter konfiguriert ist.</li><li>Passwortrichtlinie verschärft: Mindestlänge plus Buchstaben- und Zahlen/Sonderzeichen-Anforderung.</li><li>Self-Updater um sichere Uploadfunktion für Update-ZIP-Dateien erweitert.</li></ul>
<h2>Version 17</h2><ul><li>Rate-Limiting für Login, Registrierung und Passwort-Reset ergänzt.</li><li>Passwort-Reset gegen Flooding/Token-Spamming gehärtet.</li><li>Proxy-Header werden nur noch bei explizit konfigurierten vertrauenswürdigen Proxy-IP-Adressen akzeptiert.</li><li><code>install.php</code> gibt nach abgeschlossener Installation keinen Inhalt mehr aus und antwortet mit 404.</li><li>Datenbankmigration um Rate-Limit-Tabelle erweitert.</li></ul>
<h2>Version 16</h2><ul><li>SEO-optimiertes Frontend mit Startseite, Grundlagen, dynamischen QR-Codes, Generator-Seite, Vorteilsseite und öffentlicher FAQ ergänzt.</li><li>Landingpage mit fröhlichem, luftigem Produktdesign erstellt.</li><li>Öffentliche Navigation und Frontend-Styles ergänzt.</li><li>Sidebar-Version auf v16 aktualisiert.</li></ul>
<h2>Version 15.11</h2><ul><li>Dark-Mode-Schalter aus der Sidebar entfernt und oben rechts im Fenster platziert.</li><li>Dark-Mode-Schalter auf mobilen Geräten ausgeblendet.</li><li>Sidebar-Version auf v15.11 aktualisiert.</li></ul>
<h2>Version 15.10</h2><ul><li>Self-Update-Migrationen für cPanel/MariaDB korrigiert.</li><li><code>SHOW COLUMNS</code> und <code>SHOW INDEX</code> verwenden keine problematischen Platzhalter mehr.</li><li>Update-Fehler <code>near '?'</code> behoben.</li></ul>
<h2>Version 15.6</h2><ul><li>Self-Updater nochmals stabilisiert und CSRF-Prüfung an das bestehende Sicherheitssystem angepasst.</li><li>FAQ-Seite im Backend ergänzt.</li><li>FAQ-Link in der Sidebar zwischen Dark Mode und Changelog platziert.</li></ul>
<h2>Version 15.5</h2><ul><li>Self-Updater an die bestehende Backend-Initialisierung angepasst, damit die aktive Session korrekt übernommen wird.</li><li>Erfolgsmeldung nach dem Update im Backend-Look-and-Feel ergänzt.</li><li>Automatische Weiterleitung zum Dashboard nach 5 Sekunden eingebaut.</li></ul>
<h2>Version 15.4</h2><ul><li>Changelog-Button in der Sidebar zeigt rechtsbündig die aktuelle Version.</li></ul>
<h2>Version 15.3</h2><ul><li>Sidebar-Logo im Backend vergrössert.</li><li>Textelemente «KuhRator» und «QR-Code Manager» aus dem Sidebar-Kopf entfernt.</li></ul>
<h2>Version 15.2</h2><ul><li>Self-Updater PHP-7.4-kompatibler gemacht.</li><li>Fehlerausgabe und Rechteprüfung beim Update verbessert.</li><li>Update-ZIP wird nach erfolgreichem Update entfernt oder als installiert markiert.</li></ul>
<h2>Version 15.1</h2><ul><li>Sidebar-Logo im Backend neu platziert und als saubere Bildmarke integriert.</li><li>Passwort-Anzeige direkt als Auge im Passwortfeld umgesetzt.</li><li>Registrierungsprozess robuster gemacht: Datenbankmigrationen werden beim Laden geprüft, damit fehlende Double-Opt-in-Felder nicht zu generischen Fehlern führen.</li></ul>
<h2>Version 15</h2><ul><li>Update-Ordner und 1-Klick-Update für Superadmins ergänzt.</li><li>ZIP-Erkennung für qr-code-manager-vXX.zip integriert.</li><li>Schutz für config.php, storage und update beim Self-Update.</li></ul>
<h2>Version 14</h2><ul><li>CSV- und PDF-Export der Statistik repariert.</li><li>Double-Opt-in für neue Registrierungen ergänzt.</li><li>Passwortfelder können per Button angezeigt und wieder verborgen werden.</li><li>Sidebar-Logo optisch sauberer platziert.</li></ul>
<h2>Version 13</h2><ul><li>Statistik mit Balkendiagramm für Scans pro Tag ergänzt.</li><li>Geo-Auswertung nach Land integriert, mit Cloudflare-Headern und optionalem Geo-Anbieter.</li><li>UTM-Tracking pro QR-Code ergänzt.</li><li>CSV-Export erweitert und PDF-Report ergänzt.</li></ul>
<h2>Version 12</h2><ul><li>KuhRator-Logo auf Login-Bildschirm und in der Sidebar integriert.</li><li>SSL/HTTPS-Erzwingung ergänzt, inklusive Installationsoption.</li><li>Session-Cookies werden bei HTTPS sicher gesetzt.</li></ul>
<h2>Version 11.2</h2><ul><li>Seiteninhalt wieder korrekt neben der Sidebar ausgerichtet.</li><li>Statistik-Auswahl direkt in die QR-Code-Tabelle integriert.</li><li>Aktionsbuttons zwischen Titel und Tabelle platziert.</li><li>Checkboxen pro QR-Code in der Tabellenzeile ergänzt.</li></ul>
<h2>Version 11</h2>
<ul>
<li>Sidebar-Kontomenü: Benutzer, Konto und Passwort sind neu einklappbar.</li>
<li>Changelog in der Sidebar zwischen Dark Mode und Logout platziert.</li>
<li>Formularwerte bleiben bei Fehlermeldungen besser erhalten.</li>
<li>Statistik mit QR-Code-Auswahl per Checkbox, inklusive Alle-Auswahl und Auswahl aufheben.</li>
<li>CSV-Export berücksichtigt die aktuelle Statistik-Auswahl.</li>
<li>Statistik pro QR-Code kann einzeln auf 0 zurückgesetzt werden.</li>
</ul>
<h2>Version 10</h2>
<ul>
<li>Passwort-Vergessen-Bildschirm grafisch überarbeitet.</li>
<li>Fallback-Link beim Passwort-Reset entfernt.</li>
<li>Mailversand im Installer wahlweise via Servermailer oder SMTP konfigurierbar.</li>
<li>SMTP-Versand für Passwort-Reset integriert.</li>
<li>Changelog in der Sidebar ergänzt.</li>
</ul>
<h2>Version 9</h2><ul><li>Gruppen können mit anderen Benutzern geteilt werden.</li><li>Berechtigungen: Nur anzeigen oder Bearbeiten.</li><li>Geteilte Gruppen erscheinen im Dashboard und in der Statistik.</li><li>Freigaben können wieder entfernt werden.</li><li>Titel im Dashboard direkt mit Bearbeiten verlinkt.</li></ul>
<h2>Version 8.5</h2><ul><li>Responsive Sidebar mit Hamburger-Menü unter 990 px.</li><li>Zweispaltiger Installer.</li><li>Überarbeitete QR-Erstellmaske mit Live-Vorschau.</li><li>Schönere Farbselektoren mit Hex-Eingabe.</li></ul>
<h2>Version 8.4</h2><ul><li>Sidebar-Navigation statt Top-Menü.</li><li>Modernisiertes Design.</li><li>Branding: KuhRator.</li></ul>
<h2>Version 8.3</h2><ul><li>Robuste CSRF-Validierung.</li><li>Session-Isolation pro Installation.</li><li>Fix für Login- und Registrierungsprobleme.</li></ul>
<h2>Version 8</h2><ul><li>QR-Codes können Gruppen zugeordnet werden.</li><li>Gruppen erstellen, bearbeiten und löschen.</li><li>Dashboard-Filter nach Gruppen.</li><li>CSV-Export erweitert um Gruppen.</li><li>Root-Weiterleitung integriert.</li></ul>
<h2>Version 7</h2><ul><li>Rollenmodell Benutzer/Superadmin.</li><li>Benutzerverwaltung durch Superadmins.</li><li>Schutz: letzter Superadmin kann nicht entfernt werden.</li></ul>
<h2>Version 6</h2><ul><li>Eigener Slug für Kurz-URLs.</li><li>Logo/Bildmarke im QR-Code.</li><li>Sichere Bildprüfung beim Upload.</li></ul>
<h2>Version 5</h2><ul><li>Benutzerregistrierung optional aktivierbar.</li><li>install.php löscht sich nach erfolgreicher Installation automatisch.</li></ul>
<h2>Version 4</h2><ul><li>Zufälliger Tabellenpräfix pro Installation.</li><li>Mehrere Instanzen können dieselbe Datenbank nutzen.</li></ul>
<h2>Version 3</h2><ul><li>Benutzer-System mit Konto-Dashboard.</li><li>E-Mail ändern und Konto löschen.</li><li>QR-Codes benutzergebunden.</li></ul>
<h2>Version 2</h2><ul><li>Passwort ändern und Passwort zurücksetzen.</li><li>Statistikfunktion mit CSV-Export.</li><li>Dark Mode.</li></ul>
<h2>Version 1</h2><ul><li>QR-Code-Generator mit bearbeitbaren Ziel-URLs.</li><li>PNG-, JPEG- und SVG-Export.</li><li>Login-System und Admin-Dashboard.</li></ul>
</section>
<?php page_footer(); ?>
