|
| 1 | +# Changelog – One Chance |
| 2 | + |
| 3 | +Alle relevanten Änderungen am Projekt werden hier dokumentiert. |
| 4 | +Format: [Semantische Versionierung](https://semver.org/lang/de/) `vMAJOR.MINOR.PATCH` |
| 5 | + |
| 6 | +--- |
| 7 | + |
| 8 | +## [v1.4.5] – 2026-03-11 |
| 9 | + |
| 10 | +### Neu |
| 11 | + |
| 12 | +- **GitHub & Buy Me a Coffee Links** auf Start- und Ergebnis-Screen |
| 13 | +- **Leere Hinweisliste**: Wenn alle Hinweise gestrichen wurden, sieht der Rater „😬 Alle Hinweise wurden gestrichen – viel Glück!" statt einer leeren Liste |
| 14 | +- **Ergebnis-Screen**: „Das gesuchte Wort war: …" wird bei richtiger Antwort ausgeblendet – das Wort steht bereits in der Antwort |
| 15 | +- **Textfelder**: Alle Eingabefelder sind jetzt zentriert |
| 16 | + |
| 17 | +--- |
| 18 | + |
| 19 | +## [v1.4.4] – 2026-03-11 |
| 20 | + |
| 21 | +### Neu |
| 22 | + |
| 23 | +- **Groß-/Kleinschreibung bei Duplikaten**: „Schatten" und „SCHATTEN" werden jetzt als identisch erkannt und beide gestrichen |
| 24 | +- **Geheimwort-Treffer automatisch streichen**: Hinweise die das gesuchte Wort enthalten (z.B. „Kuchen" bei Gesucht: „Käsekuchen") oder im Geheimwort enthalten sind werden animiert gestrichen und nicht an den Rater weitergegeben |
| 25 | + |
| 26 | +--- |
| 27 | + |
| 28 | +## [v1.4.3] – 2026-03-11 |
| 29 | + |
| 30 | +### Neu |
| 31 | + |
| 32 | +- **Lobby/Spiel verlassen** für Spieler & Zuschauer: „↩ Verlassen"-Button erscheint floating auf allen Spielscreens sowie als fixer Button im Lobby-Screen |
| 33 | +- **In der Lobby**: direkt verlassen ohne Bestätigung – im laufenden Spiel kurze Bestätigung |
| 34 | +- **Tippgeber verlässt Clue-Phase**: sein Hinweis wird gelöscht, Zähler neu geprüft – die Gruppe wartet nicht mehr auf ihn |
| 35 | +- **Rater verlässt laufendes Spiel**: alle Clients werden automatisch zurück in die Lobby gesetzt (Toast: „🚶 Der Rater hat die Lobby verlassen") |
| 36 | + |
| 37 | +### Fixes |
| 38 | + |
| 39 | +- **Moderator zählt nicht zum Spielerlimit**: Limit-Check, Lobby-Zähler und Start-Button schließen den Mod korrekt aus |
| 40 | +- **Mod-Review springt nicht an**: Wortgeber-Zähler schloss den Moderator nicht aus – nun korrekt gefiltert |
| 41 | + |
| 42 | +--- |
| 43 | + |
| 44 | +## [v1.4.2] – 2026-03-11 |
| 45 | + |
| 46 | +### Fixes & Verbesserungen |
| 47 | + |
| 48 | +- **„↩ Zur Lobby"-Button** (floating, nur für Host): Bricht die laufende Runde ab und bringt alle Clients zurück in die Lobby |
| 49 | +- **„Lobby schließen"-Button** im Lobby-Screen: Löscht die Lobby komplett – alle Spieler landen auf dem Start-Screen mit Toast „🚪 Die Lobby wurde vom Host geschlossen." |
| 50 | +- **Zentraler Listener-Refactor**: `startCentralListener()` läuft außerhalb von `State.listeners[]` und überlebt Phasenwechsel – alle Clients reagieren zuverlässig auf Lobby-Löschung und Abbruch ohne manuellen Reload |
| 51 | +- **Spieler-Reconnect**: Spieler die beim Spielstart dabei waren können nach einem Reload automatisch wieder in die laufende Runde einspringen |
| 52 | +- **Phasenwechsel-Fix**: Clue-Zähler liest Spielerliste direkt aus Firebase statt aus lokalem State – Weiterleitung zur nächsten Phase funktioniert zuverlässig |
| 53 | + |
| 54 | +--- |
| 55 | + |
| 56 | +## [v1.4.0] – 2026-03-11 |
| 57 | + |
| 58 | +### Neu: Rollen |
| 59 | + |
| 60 | +- **Zuschauer**: Spieler können beim Beitreten "Zuschauer" wählen. Sie sehen in Echtzeit das Geheimwort und alle Eingaben. Sie zählen nicht zum Spielerlimit. |
| 61 | +- **Moderator**: Host kann einen Spieler als Moderator setzen. Moderatoren sehen alles wie Zuschauer, können aber nach der Clue-Phase manuell Hinweise streichen (Regelverstoß). Erst nach ihrer Bestätigung sehen Wortgeber die Animations-Phase. |
| 62 | +- **TV-Spieler**: Host markiert einen Spieler als TV-Spieler. Dieser rät immer (nie Wortgeber), sieht erst nach der Reveal-Animation die Hinweise und sitzt mit dem Rücken zum Fernseher. Richtig/Falsch wird durch Mod oder Host bestätigt. |
| 63 | + |
| 64 | +### Neu: Spielmechanik |
| 65 | + |
| 66 | +- **Moderator-Prüfungsphase** (`mod-review`): Wenn ein Moderator existiert, kommt nach der Clue-Phase ein eigener Screen für den Mod zum manuellen Streichen von Hinweisen. |
| 67 | +- **Automatische Weiterleitung** nach Reveal: Countdown-Ring (5 Sek.) ersetzt den "Weiter"-Button – kein Admin-Klick mehr nötig. |
| 68 | +- **Verdikt-System** (TV-Modus): Moderator (oder Host) sieht "✓ Richtig / ✗ Falsch" Buttons und entscheidet das Ergebnis manuell. |
| 69 | +- **Rater sieht Reveal NICHT mehr**: Rater und TV-Spieler bleiben auf dem Warte-Screen während die Durchstreich-Animation läuft. |
| 70 | + |
| 71 | +### Neu: Kategorien & Wortlisten |
| 72 | + |
| 73 | +- 4 Wortlisten als separate Dateien: `words-leicht.js`, `words-mittel.js`, `words-schwer.js`, `words-fsk18.js` |
| 74 | +- Kategorie-Auswahl per Chips auf Start-Screen und in der Lobby (Host kann ändern) |
| 75 | +- Kategorie wird in Firebase gespeichert und für alle Clients sichtbar |
| 76 | + |
| 77 | +### Neu: UI |
| 78 | + |
| 79 | +- **QR-Code** in Lobby wenn TV-Spieler gesetzt – schnelles Beitreten mit Smartphone |
| 80 | +- **Schieberegler** für Spieler-Limit (statt Dropdown) |
| 81 | +- **Responsivität**: Logo bricht nicht mehr aus dem Container; Geheimwort skaliert automatisch mit der Textlänge; Layout nutzt auf großen Screens (Desktop, TV) viel mehr Platz (Lobby zweispaltig) |
| 82 | +- Neuer Badge-Typ: `mod-badge` (lila), `tv-badge` (rot), überarbeitete Aktionsbuttons in Spielerliste |
| 83 | +- Kick-Rechte für Moderatoren ergänzt |
| 84 | + |
| 85 | +### Dateien |
| 86 | + |
| 87 | +``` |
| 88 | +assets/words/words-leicht.js ← neu |
| 89 | +assets/words/words-mittel.js ← neu |
| 90 | +assets/words/words-schwer.js ← neu |
| 91 | +assets/words/words-fsk18.js ← neu |
| 92 | +``` |
| 93 | + |
| 94 | +--- |
| 95 | + |
| 96 | +## [v1.3.0] – 2025-XX-XX |
| 97 | + |
| 98 | +### Neu |
| 99 | + |
| 100 | +- **Host-Reconnect**: UID wird in `localStorage` gespeichert (statt `sessionStorage`). |
| 101 | + Beim Seitenaufruf wird geprüft ob noch eine aktive Host-Lobby existiert – falls ja, |
| 102 | + kehrt der Host automatisch zur Lobby zurück ohne neu beitreten zu müssen. |
| 103 | +- **Spieler-Limit**: Host kann die maximale Spieleranzahl (3–12) festlegen – |
| 104 | + sowohl beim Erstellen einer Lobby (Start-Screen) als auch danach in der Lobby. |
| 105 | + Beitrittsversuche über dem Limit werden mit Fehlermeldung blockiert. |
| 106 | +- **Spieler kicken**: Host sieht neben jedem Spieler einen ✕-Button. |
| 107 | + Gekickte Spieler werden in `/kicked/` eingetragen, erhalten sofort einen |
| 108 | + Toast-Hinweis und landen auf dem Start-Screen. |
| 109 | +- **Einlade-Link**: Generiert einen direkten URL mit `?lobby=CODE`. |
| 110 | + Button zum Kopieren + WhatsApp-Teilen-Button in der Lobby. |
| 111 | + Beim Öffnen des Links wird der Code automatisch ins Beitrittsfeld eingetragen. |
| 112 | +- **Toast-Benachrichtigungen**: Kurze animierte Einblendungen für Systemereignisse |
| 113 | + (Kick, Reconnect, Link kopiert, Limit gesetzt). |
| 114 | +- **Letzter Name**: Wird in `localStorage` gespeichert und beim nächsten Start vorausgefüllt. |
| 115 | +- **Spielerzähler**: Zeigt `X / Limit` in der Lobby-Überschrift. |
| 116 | +- **Ich-Badge**: Spieler sehen ihr eigenes Profil in der Liste mit „Du"-Markierung. |
| 117 | + |
| 118 | +### Geändert |
| 119 | + |
| 120 | +- `getOrCreateUID()` nutzt jetzt `localStorage` statt `sessionStorage` |
| 121 | +- `enterLobbyScreen()` ruft `removeAllListeners()` auf (verhindert doppelte Listener bei Rundenende) |
| 122 | +- `watchForResult()` als eigenständiger Listener statt separater Funktion konsolidiert |
| 123 | + |
| 124 | +--- |
| 125 | + |
| 126 | +## [v1.2.0] – 2025-XX-XX |
| 127 | + |
| 128 | +### Geändert |
| 129 | + |
| 130 | +- Firebase-Konfiguration direkt in `assets/js/game.js` eingebaut (kein Setup-Modal mehr nötig) |
| 131 | +- `databaseURL` der Realtime Database (`europe-west1`) ergänzt |
| 132 | +- Config-Modal komplett entfernt aus `index.html` und `game.js` |
| 133 | +- `loadFirebaseConfig()` und `saveFirebaseConfig()` entfernt (nicht mehr benötigt) |
| 134 | +- `initFirebase()` benötigt keinen Parameter mehr – nutzt `FIREBASE_CONFIG` direkt |
| 135 | +- Fehlermeldung im Start-Screen als Fallback bei Firebase-Verbindungsfehler |
| 136 | + |
| 137 | +--- |
| 138 | + |
| 139 | +## [v1.1.0] – 2025-XX-XX |
| 140 | + |
| 141 | +### Geändert |
| 142 | + |
| 143 | +- Projekt umbenannt von „Just One" zu **„One Chance"** |
| 144 | +- Dateistruktur reorganisiert: CSS und JS liegen jetzt in `assets/css/` bzw. `assets/js/` |
| 145 | +- Nur `index.html` liegt im Root-Verzeichnis (GitHub Pages kompatibel) |
| 146 | +- `localStorage`- und `sessionStorage`-Schlüssel auf `onechance_*` umgestellt |
| 147 | +- Logger-Präfix von `[JustOne]` auf `[OneChance]` aktualisiert |
| 148 | +- `CHANGELOG.md` hinzugefügt |
| 149 | +- `README.md` überarbeitet mit Firebase-Schritt-für-Schritt-Anleitung |
| 150 | +- `.gitignore` hinzugefügt |
| 151 | + |
| 152 | +### Dateistruktur |
| 153 | + |
| 154 | +``` |
| 155 | +one-chance/ |
| 156 | +├── index.html |
| 157 | +├── README.md |
| 158 | +├── CHANGELOG.md |
| 159 | +├── .gitignore |
| 160 | +└── assets/ |
| 161 | + ├── css/style.css |
| 162 | + └── js/game.js |
| 163 | +``` |
| 164 | + |
| 165 | +--- |
| 166 | + |
| 167 | +## [v1.0.0] – 2025-XX-XX |
| 168 | + |
| 169 | +### Neu |
| 170 | + |
| 171 | +- Lobby-System mit zufälligem 6-stelligen Code |
| 172 | +- Beliebig viele Spieler (Minimum: 3) |
| 173 | +- Zufällige Rater-Zuteilung pro Runde |
| 174 | +- Geheimwort nur für Wortgeber sichtbar |
| 175 | +- Hinweis-Eingabe mit Firebase-Echtzeit-Synchronisierung |
| 176 | +- Animierte Streich-Animation für doppelte Hinweise |
| 177 | +- Rater-Screen mit gefilterten (validen) Hinweisen |
| 178 | +- Ergebnis-Auswertung mit Richtig/Falsch-Anzeige |
| 179 | +- Mehrere Runden in derselben Lobby möglich |
| 180 | +- Firebase-Konfiguration via UI-Modal (kein Code-Edit nötig) |
| 181 | +- Browser-Konsolen-Logger mit Zeitstempel für alle Spielaktionen |
| 182 | +- Dunkles Design mit animierten Hintergrund-Orbs |
| 183 | +- Vollständig responsiv (Mobile + Desktop) |
0 commit comments