Tooling – „It just works“

Anspruch: Wer das Repo klont oder die App öffnet, soll nicht nachdenken müssen. Ein Befehl, eine klare Meldung, kein Rätselraten. Lokal läuft genau dasselbe wie in der CI.

Für Entwickler

Ein Befehl pro Aufgabe

BefehlWas er tut
dart pub getLöst den ganzen Workspace auf (im Repo-Root)
tool/doctor.shPrüft die Umgebung: Flutter-/Dart-Version, Xcode, Android SDK, CocoaPods. Sagt bei Problemen genau, was zu tun ist.
tool/check.shFormat, Analyse, Tests, Secret-Scan. Identisch mit der CI. Ist das grün, ist auch die CI grün.
tool/deploy_ios.shBaut die App und startet sie auf dem angeschlossenen bzw. per WLAN gekoppelten iPhone, ohne Debugger-Hänger (ab M3)
tool/deploy_android.shDasselbe für Android (ab M3)

Regeln

  • Eine Version für alle: Flutter/Dart-Version steht in einer Datei im Repo (.flutter-version). CI und tool/doctor.sh lesen sie von dort, keine abweichenden Versionen.
  • Keine versteckten Schritte: Was zum Bauen nötig ist, steht in einem Skript, nicht im Kopf. Skripte sind idempotent (zweimal ausführen schadet nie) und brechen beim ersten Fehler mit klarer Meldung ab (set -euo pipefail).
  • Verständliche Fehlermeldungen: Jede Meldung sagt, was schiefging und was man tun kann.
  • Schnelles Feedback: tool/check.sh soll in unter einer Minute durchlaufen. Langsames (z. B. Integrationstests auf Geräten) läuft getrennt.
  • CI = lokal: Die GitHub-Actions-Workflows rufen nur die Skripte aus tool/ auf. Es gibt keine Logik, die nur in YAML existiert.
  • Persönliches bleibt lokal: Signierung, Team-ID, Geräte-IDs stehen nur in git-ignorierten Dateien (siehe CLAUDE.md).
  • Keine Warnungen ignorieren: dart analyze muss leer sein, Tests müssen ohne Flackern grün sein.

Für Spieler

  • Kein Konto, keine Einrichtung: App öffnen, Namen eingeben, spielen. Server, Ports und IPs bekommt niemand zu sehen.
  • Sinnvolle Standards: Rollenvorschlag nach Spielerzahl, Einstellungen nur, wenn man sie sucht.
  • Probleme werden erkannt, nicht nur gemeldet: Klappt die Verbindung nicht, sagt die App warum und was hilft. Beispiele:
    • „Dein WLAN lässt Geräte nicht miteinander sprechen. Starte einen Hotspot auf dem Host-Handy.“
    • „Erlaube ‚Lokales Netzwerk‘ in den Einstellungen.“
  • Robust statt empfindlich: Bildschirm aus, kurz kein WLAN, App aus Versehen geschlossen? Man ist automatisch wieder drin.
  • Ehrlich: Keine Fake-Ladebalken, keine Meldung „Etwas ist schiefgelaufen“ ohne Erklärung.

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