Commit Graph
4 Commits
Author SHA1 Message Date
patrickandClaude Sonnet 5 cea8ba8f08 fix: Fehlerbehandlung + NFC-Session-Leak (flutter-expert-Review)
- NFC onDiscovered: try/finally um stopSession(), sonst bleibt die native
  NFC-Session bei einer Exception in _extractUid offen und jeder weitere
  Scan schlägt dauerhaft fehl (nur App-Neustart behebt es).
- Alle Login-/Stamp-Handler fangen jetzt auch generische Exceptions (nicht
  nur DioException) – sonst wirkt der Kiosk bei unerwarteter Serverantwort
  nur "eingefroren" ohne Hinweis.
- _runAction: expliziter Re-Entrancy-Guard gegen Doppel-Tap, Status-Refresh
  nach fehlgeschlagener Stempel-Aktion (kein veralteter Button-Zustand).
- ApiClient.init(): Secure-Storage-Reads einzeln try/catch, dio wird immer
  konstruiert auch wenn Keystore beim Kaltstart noch nicht bereit ist.
- main(): ApiClient.init() in try/catch – Fehler dort ließ die App vorher
  komplett schwarz bleiben (runApp() nie erreicht).

v0.1.2+3. Review von flutter-expert-Subagent, Diffs manuell gegengeprüft.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Dzdm3EWeNdYFUuXFRJryA1
2026-09-10 11:55:02 +02:00
patrickandClaude Sonnet 5 c407da2cee chore: android/-Projektordner ins Repo aufnehmen
Bisher nur auf 236 generiert (flutter create), nie zurückgesynct. Enthält
die Build-Fixes: compileSdk=36 (nfc_manager-Kompatibilität), gradle.properties
mit -Xmx2G statt Default 8G (236 hat nur 10GB RAM), INTERNET+NFC-Permissions
im Manifest.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Dzdm3EWeNdYFUuXFRJryA1
2026-09-10 02:43:42 +02:00
patrickandClaude Sonnet 5 7bee1c5644 fix: Build-Fehler beheben (compileSdk, nfc_manager 3.x→4.x API)
nfc_manager 3.5.1 verlangte compileSdk 31 in seinem eigenen Android-Modul,
kollidierte mit AndroidX-Transitivdeps die 33+ brauchen → Upgrade auf
nfc_manager 4.2.1 (compileSdk 36 im App-build.gradle.kts explizit gesetzt).
API hat sich geändert: isAvailable()→checkAvailability(), startSession
braucht jetzt pollingOptions, UID-Auslesen über NfcTagAndroid.from(tag).id
statt tag.data-Map. v0.1.1+2, erfolgreich auf 236 gebaut, deployed auf 137.

Nebenbefund: Gradle/Kotlin-Daemons mit -Xmx8G stapelten sich auf 236 (nur
10GB RAM) und blockierten sogar SSH – gradle.properties auf -Xmx2G gesenkt.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Dzdm3EWeNdYFUuXFRJryA1
2026-09-10 02:43:10 +02:00
patrickandClaude Sonnet 5 e42cae74f3 feat: TimeMaster Kiosk Grundgerüst (Login + Stempeln)
Android-Tablet-Kiosk-App, gedacht für Betrieb hinter WireGuard-VPN.
Bearer-Token-Geräte-Auth statt Ed25519-Request-Signing (siehe Backend-
Commit f4ff11a im Haupt-Repo). Ersteinrichtung (Server-URL+Token), PIN/
NFC/Listen-Login, Stempeln Ein/Aus/Pause, Heartbeat-Loop.

Bekannte Einschränkung: Android-NFC (13,56 MHz) ist inkompatibel zu den
125-kHz-EM4100-Karten der bestehenden PC-Terminals – separate Karten nötig,
siehe README.

Vollständiger Plan: /home/sysops/.claude/plans/staged-marinating-dove.md

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Dzdm3EWeNdYFUuXFRJryA1
2026-09-10 02:23:59 +02:00