Releases: noyse27/adolar-songster
Release list
Adolar Songster v0.5.3-beta
Adolar Songster v0.5.3-beta
Release date: 2026-09-04
Highlights
- Resolves the remaining moderate
qsadvisories reported through Express'
dependency tree. - Upgrades the backend to Express 5.2.1 and removes
express-async-errors,
relying on Express 5's native async error forwarding. - Pins
qs6.16.0 at the workspace root and backend level so Express,
body-parser, and Superagent resolve to the audited version.
Verification
npm audit --jsonreports zero vulnerabilities.npm run lint --if-presentnpm run build --if-present
Notes
- This follows
v0.5.2-beta, which documented the mobile playboard countdown.
It exists so the current Songster release line has no remaining dependency
audit tail.
Adolar Songster v0.5.2-beta
Adolar Songster v0.5.2-beta
Release date: 2026-09-04
Highlights
- Mobile playboards now show the round countdown, making the transition from
countdown to song window and input lock clearer on phones. - The current player's own timeline is prioritized in the playboard, improving
mobile usability during active rounds. - Active playboards keep their table sessions alive from the client, reducing
accidental cleanup while a game is still in use.
Fixes and Stability
- Admin table deletion and inactivity cleanup are safer, including cascade
handling for auto-ready preferences. - Adolar base URL handling was hardened.
- Beta debug logging and request IDs were added for easier troubleshooting.
- Local integration test database usage is documented.
Maintenance
- Added Dependabot version updates.
- Updated CI action versions.
- Bumped current Docker, Node, Vite, React Hooks ESLint, Express rate limit, and
test dependency ranges through the current dependency PRs.
Notes
- This release follows
v0.5.1-betaand closes the Mobile-Countdown work from
2026-09-04 that was already onmainbut not yet tagged or documented as a
release.
Adolar Songster v0.5.1-beta
Highlights
- Browser-/Host-App-Modus: Hostbildschirme laufen jetzt ueber /host\ im Browser oder /host-app\ in der Android-/Fire-TV-App.
- QR-Autorisierung: Ein angemeldeter Songster-Nutzer bestaetigt das Hostgeraet per QR-Code oder Kurzcode und kann es danach privaten Tischen zuweisen.
- iPad-/Tablet-tauglich: Auf iPad, Laptop und normalen Tablets reicht der Browser; keine native App erforderlich.
- Profil-Trennung: Autorisierte Hostgeraete koennen im Profil getrennt werden und verlieren dann sofort ihre Berechtigung.
- Playboard-Feinschliff: Auto-bereit hat einen sichtbaren Repeat-Schalter, Doppeltipp aufs eigene Icon ist robuster, Android-Textauswahl im Spielbereich wird unterdrueckt.
- Sync-Stabilitaet: Veraltete Spielstand-Updates werden ignoriert, damit alte Aufloesungen nicht ueber neuen Runden stehen bleiben.
- Playlist-Reihenfolge: Eine Standardplaylist kann festgelegt werden; danach folgen weitere Playlists alphabetisch, lokale Auswahl bleibt zuletzt.
Dokumentation
- Hostmodus-Anleitung auf Stand 2026-08-31 aktualisiert.
- README auf \�0.5.1-beta\ aktualisiert.
Checks
Adolar Songster v0.5.0-beta
Highlights
- Lobby-Chat für alle angemeldeten Nutzer mit kurzem, automatisch auslaufendem Verlauf
- separater Tisch-Chat für aktive Spieler und Zuschauer
- phasenabhängige Playboard-Reaktionen für Spieler und Hostdisplay
- neuer Adminbereich Chateinstellungen mit optionaler Smiley-Konvertierung und serverseitigem Wortfilter
- bis zu acht frei sortierbare Emoji-/Text-Kombinationen für jeden von sechs Spielzuständen
- kuratierter Reaktionskatalog mit 20 Motiven inklusive Elvis tanzt
- Live-Verteilung geänderter Reaktionskonfigurationen ohne Neuladen
Stabilität
- Auto-bereit löst ausschließlich den vorgesehenen Bereit-Vorgang aus
- Reveal-Timer, letzter Song und Stichrunden-Regelmodal gegen konkurrierende Timer abgesichert
- Chat- und Reaktionsberechtigungen werden serverseitig geprüft
- Chatnachrichten werden nach 30 Minuten automatisch entfernt
Wartung und Sicherheit
- npm-Workspace-Versionen auf 0.5.0-beta aktualisiert
- Vitest, Jest, jsdom und node-pg-migrate auf sichere aktuelle Versionen angehoben
- GitHub Actions auf Node-24-kompatible Hauptversionen aktualisiert
- npm audit: 0 bekannte Schwachstellen
Aktualisierung
Bei Docker-Installationen genügt in der Regel:
git pull
docker compose up -d --buildDer Migrationscontainer legt die neuen Kommunikationstabellen und Standardreaktionen automatisch an.
Qualitätssicherung
- 51 Backend-Unit-Tests
- 3 Frontend-Unit-Tests
- 106 Backend-Integrationstests
- Lint, Produktionsbuild, Migrationstest, CodeQL, Secret-/Dependency-Scan und Docker-Image-Scan erfolgreich
Hinweis: Dies ist weiterhin eine Beta-Version für private Installationen und kleine Spielgruppen.
Vollständiger Vergleich: v0.4.0-beta...v0.5.0-beta
v0.3.0-beta
Adolar Songster v0.3.0-beta
Beta nach der v0.2.0-beta. Vollständiges README: README.md.
Neu in dieser Beta
- Hostmodus: ein gemeinsames Anzeigegerät (Tablet/Fernseher/Laptop) zeigt das volle Playboard und spielt den Song für alle hörbar ab, während jedes Handy nur die eigene Zeitleiste zeigt und stumm bleibt. Das Anzeigegerät authentifiziert sich über einen eigenen, zeitlich begrenzten Token statt eines Logins — kollidiert also nicht mit der Single-Active-Session-Regel (ein Login dort hätte sonst den Spieler von seinem eigenen Handy geworfen). Beitritt für Mitspieler direkt per QR-Code vom großen Bildschirm
- Bildschirm bleibt wach während einer laufenden Partie (Screen Wake Lock) — auf jedem Gerät, nicht nur dem Anzeigegerät. Erfordert einen sicheren Kontext (HTTPS oder
localhost) - Persistenter Games-Played-Zähler: die "gespielte Spiele auf dem Server"-Statistik überlebt jetzt das automatische Aufräumen inaktiver Tische — vorher gingen abgeschlossene Partien nach 60 Minuten Inaktivität wieder aus der Zählung verloren, weil sie an der Tisch-Zeile hing
- Kein stiller Stale-Cache mehr:
index.htmlwird jetzt mitCache-Control: no-cacheausgeliefert (gehashte/assets/*-Dateien weiterhin langfristig gecacht) — vorher konnte ein Handy nach einem Redeploy tagelang die alte Version weiterzeigen, ohne dass ein harter Reload gemacht wurde - Playboard-Mobile-Fixes: eigene Höhen-Media-Query für kurze Querformat-Viewports (der bisherige Breakpoint zielte nur auf schmale Hochformat-Screens), ein CSS-Grid-Overflow-Fix, der die Zeile bei schmalen Bildschirmen über den Rand hinausschob, sowie
user-select: nonegegen einen Android-Bug, bei dem Antippen von UI-Text die Wörterbuch-Einblendung auslöste
Installation
Schnellstart mit Docker (empfohlen)
```bash
git clone https://github.com/noyse27/adolar-songster.git
cd adolar-songster
docker compose up --build
```
Startet Postgres, spielt die Migrationen ein und startet Backend (Port 4000) und Frontend (Port 5173).
- Frontend: http://localhost:5173
- Backend-Health: http://localhost:4000/api/v1/health
Einrichtung (3-Schritte-Onboarding):
- `.env` bzw. `backend/.env.example` bei Bedarf anpassen (z. B. `JWT_SECRET` für den Produktivbetrieb setzen)
- `docker compose up --build`
- Im Browser http://localhost:5173 öffnen — der Einrichtungsassistent führt auf einem frischen System durch Admin-Anlage, erste Einladung, Testtisch und einen abschließenden Funktionstest. Existiert bereits ein Admin, zeigt der Assistent das direkt an.
Danach per `POST /api/v1/auth/login` einloggen und mit dem `accessToken` weitere Invites erzeugen (`POST /api/v1/invites`). API-Details siehe docs/Adolar_Songster_API_Spezifikation_v1_20260821.md.
Für den Hostmodus außerdem: das Anzeigegerät braucht keinen eigenen Login — im Tisch-Vorraum auf "Anzeigegerät verbinden" tippen und den entstehenden Link/QR-Code auf dem gemeinsamen Bildschirm öffnen. Für den Wake Lock auf echten Handys muss der Stack über HTTPS erreichbar sein (z. B. via Reverse-Proxy mit Let's-Encrypt-Zertifikat); Schritt-für-Schritt-Anleitung für Einsteiger siehe docs/Adolar_Songster_Hostmodus_Anleitung_v1_20260825.md.
Optional: für die Musikquelle über Adolar `ADOLAR_BASE_URL`/`ADOLAR_API_TOKEN` in `backend/.env` setzen (Bearer-Token mit `product=songster`, erstellt über Adolar Webs Admin-Einstellungen). Ohne Adolar-Anbindung nutzt Songster den lokal admin-gepflegten Song-Pool.
Lokale Entwicklung ohne Docker
Voraussetzung: Node.js 22, laufende PostgreSQL-Instanz.
```bash
npm install
cp backend/.env.example backend/.env # DATABASE_URL ggf. anpassen
npm run --workspace backend migrate:up
npm run --workspace backend dev # Backend auf Port 4000
npm run --workspace frontend dev # Frontend auf Port 5173
```
Tests
```bash
npm run lint
npm run test:unit
npm run test:integration # benötigt DATABASE_URL gegen eine laufende Postgres-Instanz
npm run build
```
Bekannter Stand: Beta — Kernspiel plus Hostmodus sind vollständig getestet (126 Backend-Tests, 24 Suiten, CI grün inkl. CodeQL/Docker-Image-Scan), aber weiterhin nicht produktionsgehärtet für große Nutzergruppen.
v0.2.0-beta
Adolar Songster v0.2.0-beta
Erste Beta nach der v0.1.0-alpha. Vollständiges README: README.md.
Neu in dieser Beta
- Rangliste: Top 10 (Songster-/Karmapunkte, gespielte Spiele) plus eigener Rang, wenn außerhalb der Top 10
- Globale Rangformel:
(Songster-Punkte + Karma-Punkte) / √(gespielte Spiele + 1)— ersetzt die alte rein positionsbasierte Anzeige überall (Profil, Bestenliste, Live-Tooltip im Spiel) - Tisch-Beitrittsvoraussetzungen: Mindest-Karma/-Punkte/-Spiele bei Tischerstellung konfigurierbar; wer sie nicht erfüllt, kann nur als Zuschauer beitreten
- Automatisches Aufräumen inaktiver Tische: nach 60 Minuten ohne Interaktion wird ein Tisch gelöscht (kein Malus, keine Anrechnung als gespieltes Spiel), mit Vorwarnung 1 Minute vorher ("Ich bin noch da"); Admin-Bereich zeigt alle Tische mit 30-Minuten-Inaktivitäts-Kennzeichnung
- PDF-Export der Endspielstands-Zusammenfassung direkt vom Siegerbildschirm
- Song-Pool-Suche im Admin-Bereich (statt kompletter Listenabruf) plus manuelle Jahres-Korrektur mit Schutz vor Überschreiben durch den nächsten Adolar-Sync
- Adolar-Sync läuft asynchron: kein Blockieren/Timeout mehr bei großen Playlists
- Einladungslimit-Fix: delegierte Nutzer können ihr eigenes Beitritts-Limit nicht mehr selbst hochsetzen
- Diverse Stabilitätsfixes: Session-Race-Conditions, "Backend nicht erreichbar", doppelte Testdatenbank-Teardowns
- Aufgeräumt: Standalone-Playboard-Prototyp entfernt, ESLint/Dev-Tooling auf aktuellem Stand (keine deprecated-Pakete mehr im eigenen Einflussbereich)
Nachträge (in diesen Tag nachgezogen)
- Fix: Tisch-Beitrittsvoraussetzungen (Karma/Punkte/Spiele) waren intern immer mit Standardwert 0 statt "keine Anforderung" belegt - ein brandneuer Spieler (0 Karma/Punkte/Spiele) hätte durch einen Vorzeichenfehler theoretisch von jedem Tisch ausgeschlossen werden können. Jetzt echte Opt-in-Checkboxen im Tisch-erstellen-Dialog; ohne Häkchen gilt wirklich keine Anforderung.
Installation
Schnellstart mit Docker (empfohlen)
git clone https://github.com/noyse27/adolar-songster.git
cd adolar-songster
docker compose up --buildStartet Postgres, spielt die Migrationen ein und startet Backend (Port 4000) und Frontend (Port 5173).
- Frontend: http://localhost:5173
- Backend-Health: http://localhost:4000/api/v1/health
Einrichtung (3-Schritte-Onboarding):
.envbzw.backend/.env.examplebei Bedarf anpassen (z. B.JWT_SECRETfür den Produktivbetrieb setzen)docker compose up --build- Im Browser http://localhost:5173 öffnen — der Einrichtungsassistent führt auf einem frischen System durch Admin-Anlage, erste Einladung, Testtisch und einen abschließenden Funktionstest. Existiert bereits ein Admin, zeigt der Assistent das direkt an.
Danach per POST /api/v1/auth/login einloggen und mit dem accessToken weitere Invites erzeugen (POST /api/v1/invites). API-Details siehe docs/Adolar_Songster_API_Spezifikation_v1_20260821.md.
Optional: für die Musikquelle über Adolar ADOLAR_BASE_URL/ADOLAR_API_TOKEN in backend/.env setzen (Bearer-Token mit product=songster, erstellt über Adolar Webs Admin-Einstellungen). Ohne Adolar-Anbindung nutzt Songster den lokal admin-gepflegten Song-Pool.
Lokale Entwicklung ohne Docker
Voraussetzung: Node.js 22, laufende PostgreSQL-Instanz.
npm install
cp backend/.env.example backend/.env # DATABASE_URL ggf. anpassen
npm run --workspace backend migrate:up
npm run --workspace backend dev # Backend auf Port 4000
npm run --workspace frontend dev # Frontend auf Port 5173Tests
npm run lint
npm run test:unit
npm run test:integration # benötigt DATABASE_URL gegen eine laufende Postgres-Instanz
npm run buildBekannter Stand: Beta — Kernspiel (Lobby, Tische, Zeitleisten-Runden, Token-Mechanik, Bewertungssystem) ist vollständig getestet (115 Backend-Tests, CI grün inkl. CodeQL/Docker-Image-Scan), aber noch nicht produktionsgehärtet für große Nutzergruppen.