Entscheidungen

Log der Projektentscheidungen, neueste oben.

DatumEntscheidungBegründung
2026-10-25Startseite wieder Mondbühne: Nachtszene mit Pappfiguren und einem Handy als Pappfigur, das die App zeigt (Rolle, Nacht, Abstimmung); Sterne, Wolken, Glühwürmchen und wippende Figuren für mehr Leben; Spielschachtel und Filz entferntWunsch des Eigentümers: Karton-Look gefiel nicht, Mondbühnen-Ambiente soll tragen
2026-10-25Automatische Sprachwahl: Erster Besuch von außen mit nicht-deutscher Browsersprache wird auf die englische Seite geleitet; interne Navigation und Crawler nichtNicht-deutschsprachige Besucher landen direkt auf Englisch, ohne Speicherung
2026-10-25Cookie-Hinweis eingeführt (ersetzt „Kein Cookie-Banner nötig“): reiner Infohinweis, speichert nur die Bestätigung im localStorage (technisch notwendig)Wunsch des Eigentümers nach einem sichtbaren Hinweis
2026-10-25Website-Redesign „Die Spielschachtel“: Startbild als Spielschachtel auf grünem Spieltisch-Filz, die Schachtel als echtes CSS-3D-Objekt mit texturierten Seiten, das sich beim Scrollen hebt und dreht; Überschriften in Ancizar Serif; restliche Seite als Regelheft-Tafeln und Nachtbrett auf Filz. Entstanden mit impeccable (Richtung gewählt, Entwurf freigegeben, Startbild vermessen nachgebaut; die 3D-Schachtel weicht auf Wunsch vom flachen Entwurf ab)Eigenständiger Auftritt eines Spiels zum Auspacken statt Indie-Standard; wirkt wertig und verspielt zugleich
2026-10-25Kein Cookie-Banner nötig: Die Website speichert nichts auf dem Gerät (keine Cookies, kein localStorage, keine Dritt-Inhalte); der Bestwert beim Schäfchenzählen gilt nur für den BesuchBanner wäre rechtlich überflüssig und stört
2026-10-25Linux-Pre-Releases als .deb (tool/package_deb.sh, Installation nach /opt/whowolf, Starter und Icon) statt tar.gzWunsch des Eigentümers; einfache Installation unter Debian/Ubuntu
2026-10-25Walking Skeleton zuerst: minimale Flutter-App + Pre-Release-Pipeline (v0.0.X) vor den Spielregeln; Mindestversionen iOS 15 und macOS 12 (Vorgabe der aktuellen Xcode-Version); Android-Pre-Releases bis zum eigenen Keystore mit Debug-Schlüssel signiert, macOS unsigniert bis Developer-ID-Secrets da sind, iOS nur Compile-Check bis TestFlight-Secrets da sindSignierung, Builds und Downloads früh auf allen Plattformen erproben statt kurz vor dem Release
2026-10-25iPhone und Mac zuerst: Entwicklung und Tests auf iOS/macOS; Android im Emulator auf dem Mac, Windows und Linux über CI-Builds (Linux-Test in einer VM); iOS-Testversionen über TestFlight von Anfang anEigentümer testet mit iPhone und Mac und hat kein Android-Gerät
2026-10-25Website mehrsprachig per Konfiguration: jede Sprache eine Datei in website/src/i18n/locales/ (typgeprüft gegen Deutsch), lokalisierte URL-Slugs, alle Seiten aus einer Route; hreflang, Sprachumschalter und Sitemap leiten sich daraus abNeue Sprachen ohne Umbau hinzufügen
2026-10-25Website im Theaterzettel-Look: Papierstruktur (CSS-Rauschen) über der ganzen Seite, Wechsel von Programmheft-Papier und Nachtkarton mit gerissenen Kanten, Schäfchen-Zählen als spielbares Element, nur Scroll-Parallaxe (keine Maus-Parallaxe)Alles wirkt wie auf dasselbe Papier gedruckt, KI-Bilder und CSS aus einem Guss
2026-10-25Spur-Radius r = max(1, ⌊Spielerzahl / 5⌋) (5–9 → 1, 10–14 → 2, 15–20 → 3), symmetrisch, Ziel-Handy gleichverteilt im FensterFenster deckt in jeder Gruppengröße ein Drittel bis die Hälfte des Tisches ab; Regel bleibt in einem Satz erklärbar
2026-10-25Tarnaufgabe „Schäfchen zählen“ für Rollen ohne Nachtaktion: Schafe hüpfen über eine Wiese, weiße antippen (+1 Traumpunkt), schwarze nicht (−3); Traumpunkte als Spaß-Wertung am EndeAlle tippen nachts ähnlich viel, niemand fällt auf; die Wartezeit wird zum Mini-Spiel
2026-10-25Impressum nicht im Repo: Der offizielle Build (nurkert/whowolf) liest es zur Build-Zeit von https://nurkert.de/impressum (Whitelist-Sanitizer, Build bricht ab, wenn es fehlt); Forks setzen die Repo-Variable IMPRINT_URL oder zeigen einen Hinweis. Wöchentlicher Rebuild übernimmt ÄnderungenPersönliche Daten nur an einer Stelle pflegen, nicht im öffentlichen Repo; Forks übernehmen nicht versehentlich ein fremdes Impressum
2026-10-25Website ausgebaut: Szene ohne Bühnenrahmen, Logo-Schriftzug, CI-Schrift Lilita One, Docs-Wiki automatisch aus docs/, Download-Seite automatisch aus GitHub-Releases (zur Build-Zeit, Rebuild bei jedem Release), Datenschutz und ImpressumEinheitlicher Auftritt; Doku und Downloads bleiben ohne Handarbeit aktuell; Besucher kontaktieren keine Dritten
2026-10-25Website mit Astro 7 (statisch, website/), Bilder per astro:assets als AVIF/WebP, Schriften selbst gehostet, Deploy per GitHub Actions auf Pages (whowolf.de). CSP: Skripte nur 'self', Styles zusätzlich 'unsafe-inline' (Positionsangaben der Bühnenelemente)Kein JS-Framework nötig, sehr schnell; die Seite hat keine fremden Inhalte, daher ist die Style-Ausnahme vertretbar. npm-Pakete nur in Versionen, die älter als zwei Wochen sind
2026-10-25Assets als Sammelbögen generieren (mehrere Elemente pro Bild, transparenter Hintergrund) und mit tool/assets/slice_sheet.py ausschneidenSpart Bildgenerierungs-Kontingent und hält Stil und Licht über alle Elemente konsistent
2026-10-25Stil „Mondbühne“ für App, Website und alles Weitere: Puppentheater bei Mondlicht, flache Pappfiguren mit Kartonrand an Stäben auf gestaffelten Ebenen (2,5D), Cartoon der 2000er, edel ausgeleuchtet. Assets per Codex-Bildgenerierung, Prompts versioniert (siehe DESIGN.md)Eigenständig und wiedererkennbar; passt technisch ideal zu Parallaxe und Puppen-Animation; laute Illustration + leise Oberfläche wirkt wertig
2026-10-25Offizieller Server auf dem VPS des Eigentümers unter einer Subdomain von whowolf.de (Arbeitsname game.whowolf.de), betrieben mit genau dem Container aus dem RepoKein Sonderweg: offizieller Server = Self-Host, Self-Hosting bleibt dadurch erprobt
2026-10-25Secure by Design (Bedrohungsmodell in SECURITY_DESIGN.md): Ende-zu-Ende-Verschlüsselung per Noise-Handshake mit Schlüssel + Raumgeheimnis aus dem QR-Code, Identität nur aus der Sitzung, gleicher Nachrichtentakt in geheimen Phasen, abgesicherte Lieferkette und nachprüfbare ReleasesRealistischster Angreifer ist der schummelnde Mitspieler im selben WLAN; TLS scheidet aus, weil Browser selbst signierte Zertifikate ablehnen und das Relay später nur Chiffretext sehen soll
2026-10-25Tooling „It just works“ (TOOLING.md): ein Befehl pro Aufgabe, tool/check.sh = CI, gepinnte Flutter-Version, verständliche FehlermeldungenLokal und CI verhalten sich identisch; kein Wissen nur im Kopf
2026-10-25Domain whowolf.de, App-ID de.whowolf.app, QR-Link https://whowolf.de/join?room=…&lan=…Domain gesichert; App-ID passend zur Domain (umgekehrt); ein Link-Format, das heute die App und später Browser/Server verstehen
2026-10-25MVP zuerst: lokal im WLAN, Rollen Dorfbewohner/Werwolf/Seherin, QR-Beitritt in der App, Tischkreis, Wolfsspur v1; veröffentlicht als GitHub-Release + Website. Server, Browser-Beitritt und Stores erst danach; Server ganz zum Schluss, aber von Anfang an mitgedacht (siehe ROADMAP „Von Anfang an mitdenken“)Schnellster Weg zu echten Testrunden und einem Release; Wolfsspur ist das Alleinstellungsmerkmal und muss früh am Tisch getestet werden
2026-10-25Wolfsspur ersetzt „Knurren nur auf Werwolf-Handys“: Spur kommt auf dem Werwolf-Handy oder beim Sitznachbarn. Öffentliche Regel „Spur bei X → Werwolf auf X oder daneben“. Sitzordnung nötig. Spursystem allgemein für alle Nachtaktionen (z. B. Eulenspur der Seherin). Details in NIGHT_SOUNDS.mdDorfbewohner bekommen private Hinweise und wollen laut spielen, Werwölfe können sich durch Stummschalten nicht ganz schützen; wer die Spur hört, ist selbst verdächtig, also Diskussion statt Auflösung
2026-10-25Positionierung über die Kombination, nicht „erste App mit eigenem Handy“ (siehe MARKET.md); keine Werbung, kein Abo, kein KontoMarktanalyse: Die Nische ist besetzt, aber nur von kleinen Apps mit Lücken. Realistisches Ziel 10K–100K Downloads über einige Jahre
2026-10-25Idee aufgenommen: verräterische Wolfsgeräusche + Morgen-Gähnen auf jedem Handy (optionaler Modus, bewusste Ausnahme von der Anti-Tell-Regel)Neue, physische Deduktionsebene am Tisch, die es so nur mit „jeder hat sein Handy“ gibt
2026-10-25Tag-Bildschirm zeigt nur, wer lebt (und ob man selbst lebt), dann dimmenHandys weg, Gesichter lesen ist der Kern des Spiels
2026-10-25Erzähler optional: App erzählt (Standard) oder Mensch erzählt, App zähltManche Gruppen lieben einen menschlichen Erzähler
2026-10-25Nacht-Soundscape auf allen Geräten, teils mit echten Hinweisen; Geräusche nie direkt an Rolle/Aktion des Besitzers gekoppeltAtmosphäre „von überall“, neue Spielebene, ohne Tells
2026-10-25Rejoin mit vollem Status und Beitritt während der Partie; Spielleiter ist ein normaler Spieler; Server als Spielleiter später möglichAusfälle dürfen kein Spiel kaputt machen; Host-Logik bleibt deshalb Flutter-frei
2026-10-25Spiel läuft immer beim Host, Server ist nur Relay (ersetzt „Server ist autoritativ“). Gemischtes Spiel: Spieler im WLAN direkt am Host, Spieler von außen über den Server. QR-Code des Spielleiters führt auf die Server-Webseite (im Browser mitspielen oder App installieren). Offizieller Server voreingestellt, eigener in den Einstellungen, keine Abfrage im OnboardingEine einzige Spiellogik für lokal, gemischt und online. Server bleibt dumm, billig und leicht selbst zu hosten, keine Spieldaten auf dem Server. Host verbindet sich ausgehend, daher keine Probleme mit Routern/NAT
2026-10-25Start: nur Flutter-App, lokal im gleichen WLAN, ohne Server. Ein Gerät ist Host und spielt intern die Rolle des autoritativen Servers, die anderen verbinden sich per WebSocket im LAN. So plattformübergreifend wie möglich (Android, iOS, macOS, Windows, Linux; Web nur als beitretender Client, siehe ARCHITECTURE).Schnellster Weg zu einer spielbaren Runde am Tisch, keine Hosting-Kosten. Die Architektur bleibt so geschnitten, dass später ein echter Server ohne Umbau dazukommt: Host-Logik und Transport sind getrennt, das Protokoll ist dasselbe.
2026-10-25Name WhowolfWortspiel „Who? Wolf“, international verständlich und überall gleich aussprechbar; Websuche fand kein Spiel/keine App dieses Namens, Registerprüfung steht noch aus
2026-10-25Doku/Wiki im Repo (website/), nicht im GitHub-WikiVersioniert, Teil von Pull Requests, im App-Style gestaltbar
2026-10-25Server ist autoritativ (ersetzt: Host ist autoritativ, Server ist Relay)Kein Schummeln, Clients sehen nur ihre eigenen Infos
2026-10-25Server in Dart, Regeln in gemeinsamem Paket game_coreRegeln nur einmal schreiben, von App und Server gemeinsam genutzt
2026-10-25Self-Hosting per Docker + offizieller ServerOpen-Source-Gedanke, jeder kann eigenen Server betreiben
2026-10-25Flutter als primäre App, inkl. Flutter WebEine Codebasis für alle Plattformen, Beitritt im Browser ohne Installation
2026-10-25Monorepo nurkert/whowolf (öffentlich)App, Server, Website und Doku an einem Ort
2026-10-25Lizenz Apache 2.0Store-kompatibel, permissiv, mit Patentlizenz
2026-10-25Konzept: vor Ort zusammen, jeder mit eigenem Gerät, App als ErzählerKein Spielleiter nötig, keine Tells, Regeln automatisch

Diese Seite wird automatisch aus docs/DECISIONS.md erzeugt.Auf GitHub bearbeiten