5 Commits
Author SHA1 Message Date
patrickandClaude Sonnet 5 5b8bfeb4b0 fix(qr-scan): R8/ProGuard zerstörte ML-Kit-Komponenten-Registrierung
Root Cause endlich gefunden (via adb-Logcat auf echtem T10-Pro-Tablet):
NICHT primär ein Hardware/CameraX-Problem, sondern R8-Minifizierung im
Release-Build ohne Keep-Regeln für ML Kit (mobile_scanner nutzt Reflection-
basierte Komponenten-Registrierung, ComponentDiscovery). Log zeigte
"NoSuchMethodException: ...BarcodeRegistrar.<init> []" → in Folge
NullPointerException beim eigentlichen Scan-Callback.

Fix: android/app/build.gradle.kts explizit isMinifyEnabled=true +
proguardFiles inkl. neuer android/app/proguard-rules.pro mit ML-Kit-Keep-
Regeln. Damit war auch der vorherige Downgrade auf mobile_scanner 5.2.3
unnötig – zurück auf ^6.0.2, funktioniert jetzt mit den Keep-Regeln
einwandfrei (auf echtem Gerät verifiziert).

Die vorherige cameraResolution/formats-Einschränkung (v0.1.8) war ein
Fehlschluss (Symptom sah nach Hardware-Inkompatibilität aus), bleibt aber
als sinnvolle Optimierung bestehen (weniger Codec-Last).

v0.1.10+11, deployed 137, release-signiert (gleicher Fingerprint).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Dzdm3EWeNdYFUuXFRJryA1
2026-09-10 14:43:06 +02:00
patrickandClaude Sonnet 5 6f30e11e4e feat: In-App-Update (Download + Installer öffnen)
Portiert von timemaster-mobile v0.1.7+8: UpdateCheckService prüft
kiosk-version.txt, LoginScreen zeigt Update-Banner mit Fortschrittsbalken +
"Jetzt aktualisieren"-Button, öffnet Android-Paketinstaller direkt
(open_filex + FileProvider). Banner sitzt im LoginScreen statt StampScreen,
da das der Idle-/Ruhezustand des Kiosks ist – Stempel-Sessions sind nur
900s aktiv. REQUEST_INSTALL_PACKAGES-Permission ergänzt.

v0.1.5+6. Diese Version selbst muss noch einmal manuell installiert werden
(Feature existiert ja erst danach), ab hier sollte der Update-Button reichen.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Dzdm3EWeNdYFUuXFRJryA1
2026-09-10 13:39:16 +02:00
patrickandClaude Sonnet 5 be36786913 feat: QR-Code-Einrichtung (Kamera-Scan statt Token abtippen)
Neuer QrEnrollmentScanScreen (mobile_scanner) liest das JSON {url, token}
aus dem Portal-QR-Code (KioskDevicesPage → Bearer-Gerät anlegen) und füllt
EnrollmentScreen automatisch aus. Manuelle Eingabe bleibt als Fallback.
CAMERA-Permission ergänzt. v0.1.4+5, weiterhin release-signiert (gleicher
Fingerprint wie v0.1.3+4).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Dzdm3EWeNdYFUuXFRJryA1
2026-09-10 13:27:40 +02:00
patrickandClaude Sonnet 5 8044a90d12 feat: Wakelock + Release-Keystore-Signing
- Wakelock (wakelock_plus): Tablet-Display schläft nie ein, kein manuelles
  Entsperren vor jedem Stempeln nötig.
- Release-Build signiert jetzt mit eigenem Keystore statt Debug-Key.
  Keystore (release-keystore.jks) + key.properties liegen NUR auf dem
  Build-Rechner (236), nie im Git (siehe android/.gitignore). Fallback auf
  Debug-Signing falls key.properties fehlt (frischer Checkout ohne
  Keystore-Zugriff bricht Build nicht).
  Wichtig: storeFile-Pfad in build.gradle.kts über rootProject.file()
  aufgelöst, nicht file() – sonst relativ zum falschen Modul (app/ statt
  android/).

v0.1.3+4.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Dzdm3EWeNdYFUuXFRJryA1
2026-09-10 12:16:01 +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