Cloud-Account-Kontingent: App liest cloud_remaining, sobald der Server es liefert

BakaAuth bekommt verbleibend/merkeVerbleibend analog zu GastZugang.
YtDownloadService liest cloud_remaining bei Cloud-Zugriff (nicht bei
Gast-Zugriff — Felder bleiben getrennt). UI zeigt "Noch N von 100
heute" für angemeldete Cloud-Accounts. Reine App-Seite, wirkungslos
bis der Server (separates Vorhaben) cloud_remaining liefert.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012A2pmbnVNPiHdyf2GW8eLP
This commit is contained in:
Hermes (Server)
2026-08-29 13:22:04 +02:00
co-authored by Claude Sonnet 5
parent 8611738124
commit d03a4e93a0
9 changed files with 204 additions and 0 deletions
+36
View File
@@ -5,6 +5,42 @@ Format angelehnt an [Keep a Changelog](https://keepachangelog.com/de/1.0.0/).
## [Unreleased]
### ☁️ Cloud-Account-Kontingent: App-Seite für das 100/Tag-Limit (2026-08-29)
- ⚠️ **Reine App-Seite, ohne Wirkung bis der Server mitzieht.** Die
Server-Zählung (`cloud_quota`, 100/Tag je Nutzername) in `yt_proxy.py`
ist NICHT Teil dieser Änderung — das macht die `claude-server`-Session
separat (siehe Nachtrag "100/Tag-Limit auch für Cloud-Accounts" in
`docs/superpowers/specs/2026-08-26-youtube-guest-quota-design.md`). Bis
der Server das neue Feld `cloud_remaining` liefert, bleibt
`auth.verbleibend` einfach `null` — kein Fehler, kein sichtbarer
Unterschied zu heute.
- 🔢 **`BakaAuth` bekommt einen Kontingent-Stand** — analog zu
`GastZugang.verbleibend`/`.merkeVerbleibend(n)`: neues Feld `int?
verbleibend` (Getter) und `void merkeVerbleibend(int n)`
(`lib/services/baka_auth.dart`).
- 🔌 **`YtDownloadService.herunterladen()` liest `cloud_remaining`** aus
einer erfolgreichen `POST /api/yt-dl`-Antwort und ruft bei
Cloud-Zugriff (`!gastAktiv`) `auth.merkeVerbleibend(...)` auf — genau
wie beim bestehenden `guest_remaining`/`gast.merkeVerbleibend(...)`
fürs Gast-Kontingent, aber strikt getrennt (ein Gast-Zugriff liest das
Feld nie, ein Cloud-Zugriff nie `guest_remaining`).
(`lib/services/yt_download_service.dart`)
- 📟 **Angemeldete Cloud-Accounts sehen jetzt „Noch N von 100 heute“**,
sobald der Server den Stand gemeldet hat — an vergleichbarer Stelle wie
der bestehende Gast-Zähler, aber nur bei `auth.istAngemeldet` (Gäste
haben weiter ihren eigenen Text, beide schließen sich gegenseitig aus).
(`lib/downloads/downloads_screen.dart`,
`lib/downloads/youtube_search_screen.dart`)
-**Getestet (TDD, RED→GREEN):** `merkeVerbleibend` in
`test/services/baka_auth_test.dart`; Erfolgsfall mit `cloud_remaining`
plus eine Trennschärfe-Gegenprobe (Gast-Zugriff liest `cloud_remaining`
nie, selbst wenn es im Body steht) in
`test/services/yt_download_test.dart`; je ein Widget-Test für den neuen
„Noch N von 100 heute“-Text in `test/downloads/online_screen_test.dart`
und `test/downloads/youtube_search_screen_test.dart`. Volle Suite
grün, `flutter analyze` ohne Befund.
### 🐛 Gast-Zugang: Fixe aus dem Branch-Abschluss-Review (2026-08-26)
- 🔓 **Gast-Modus war eine Einbahnstraße.** Einmal "Als Gast fortfahren"