Skip to content

Releases: noyse27/adolar-songster

Adolar Songster v0.5.3-beta

Pre-release

Choose a tag to compare

@noyse27 noyse27 released this 04 Sep 19:50
3d92ba4

Adolar Songster v0.5.3-beta

Release date: 2026-09-04

Highlights

  • Resolves the remaining moderate qs advisories 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 qs 6.16.0 at the workspace root and backend level so Express,
    body-parser, and Superagent resolve to the audited version.

Verification

  • npm audit --json reports zero vulnerabilities.
  • npm run lint --if-present
  • npm 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

Pre-release

Choose a tag to compare

@noyse27 noyse27 released this 04 Sep 19:40
b1436ea

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-beta and closes the Mobile-Countdown work from
    2026-09-04 that was already on main but not yet tagged or documented as a
    release.

Adolar Songster v0.5.1-beta

Pre-release

Choose a tag to compare

@noyse27 noyse27 released this 31 Aug 18:58
f6379b8

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

  • GitHub CI fuer PR #39 und PR #40 gruen.

Adolar Songster v0.5.0-beta

Pre-release

Choose a tag to compare

@noyse27 noyse27 released this 26 Aug 21:48
6ba6cc7

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 --build

Der 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

v0.3.0-beta Pre-release
Pre-release

Choose a tag to compare

@noyse27 noyse27 released this 25 Aug 08:25
08c2d86

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.html wird jetzt mit Cache-Control: no-cache ausgeliefert (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: none gegen 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).

Einrichtung (3-Schritte-Onboarding):

  1. `.env` bzw. `backend/.env.example` bei Bedarf anpassen (z. B. `JWT_SECRET` für den Produktivbetrieb setzen)
  2. `docker compose up --build`
  3. 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

v0.2.0-beta Pre-release
Pre-release

Choose a tag to compare

@noyse27 noyse27 released this 24 Aug 18:14

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 --build

Startet Postgres, spielt die Migrationen ein und startet Backend (Port 4000) und Frontend (Port 5173).

Einrichtung (3-Schritte-Onboarding):

  1. .env bzw. backend/.env.example bei Bedarf anpassen (z. B. JWT_SECRET für den Produktivbetrieb setzen)
  2. docker compose up --build
  3. 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 5173

Tests

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 (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.