Merge branch 'feature/youtube-gast-zugang'
# Conflicts: # CHANGELOG.md # test/downloads/online_screen_test.dart
This commit is contained in:
+123
@@ -236,6 +236,129 @@ Vor dem Push ein Review über den gesamten Diff der Blur-Übergang-Serie
|
||||
- ✅ **Getestet:** 3 neue Widget-Tests (RED→GREEN, je einer pro Stelle),
|
||||
volle Suite (590 Tests) grün, `flutter analyze` ohne Befund.
|
||||
|
||||
### 🐛 Cloud-Kontingent-Fix aus dem Task-Review (2026-08-29)
|
||||
|
||||
- 🔁 **`BakaAuth.abmelden()` setzt jetzt auch `verbleibend` zurück.**
|
||||
Referenzmuster `GastZugang.verwerfen()` setzt `_verbleibend = null` mit,
|
||||
`abmelden()` tat das bisher nicht — nur `_token`/`_benutzer` wurden
|
||||
zurückgesetzt. Meldet sich ein Cloud-User ab und ein ANDERER Cloud-User
|
||||
(Dustin/Baka/Tinker) danach an, wäre sonst bis zum nächsten Download der
|
||||
alte Kontingent-Stand des vorherigen Accounts sichtbar geblieben.
|
||||
Aktuell folgenlos (da `verbleibend` bis zum Server-Rollout ohnehin immer
|
||||
`null` ist), aber ein latenter Bug, der beim Server-Rollout live
|
||||
gegangen wäre. (`lib/services/baka_auth.dart`)
|
||||
- ✅ **Getestet (RED→GREEN):** neuer Test „Abmelden setzt auch den
|
||||
Kontingent-Stand zurück" in `test/services/baka_auth_test.dart`. Volle
|
||||
Suite grün, `flutter analyze` ohne Befund.
|
||||
|
||||
### ☁️ 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"
|
||||
angetippt, blieb `gast.hatToken` dauerhaft `true` (Token steckt im
|
||||
Secure Storage, wird bei jedem App-Start wiederhergestellt) — und damit
|
||||
war `_AnmeldeDialog`, der EINZIGE Einstieg in der App für die
|
||||
Baka-Anmeldung (auch für den Melo-Cloud-Sync-Login!), unerreichbar.
|
||||
Neu: `GastZugang.verwerfen()` verwirft den Token wieder, und ein
|
||||
"Anmelden"-Knopf neben der Gast-Statuszeile (Download-Tab und
|
||||
YT-Suche-Tab) ruft ihn auf.
|
||||
- 🔀 **Ein alter Gast-Token hat den Auto-Login-Rückfallweg für
|
||||
Server-User verdeckt.** `zugriffOk` prüfte bisher den rohen
|
||||
`gast.hatToken` statt `istGastModus` — ein Gerät, das früher mal als
|
||||
Gast lief und jetzt als Server-User mit fehlgeschlagenem Auto-Login
|
||||
dasteht, bekam die Fehlermeldung dazu nie zu sehen und lud still über
|
||||
den (limitierten) Gast-Pfad. `istGastModus` wird jetzt vor `zugriffOk`
|
||||
berechnet und dort statt des rohen Tokens verwendet.
|
||||
(`lib/downloads/downloads_screen.dart`,
|
||||
`lib/downloads/youtube_search_screen.dart`)
|
||||
- ⏱️ **Doppel-Tap auf "Als Gast fortfahren" konnte zwei Anfragen
|
||||
gleichzeitig auslösen.** Beide Screens sperren den Button jetzt während
|
||||
`holeToken()` läuft (`_gastLaeuft`).
|
||||
- 📝 **Widersprüchlicher Hinweistext im YT-Suche-Tab behoben** — der Text
|
||||
über dem Gast-Button verlangte fälschlich eine Baka-Anmeldung.
|
||||
- ⚠️ **CHANGELOG ergänzt:** der Abschnitt zum Gast-Zugang unten macht jetzt
|
||||
klar, dass die Server-Seite (`POST /api/guest-token`) noch fehlt.
|
||||
- ✅ **Getestet:** 2 neue Regressionstests fürs "Anmelden"-Escape-Hatch
|
||||
(`test/downloads/online_screen_test.dart`,
|
||||
`test/downloads/youtube_search_screen_test.dart`), 2 bestehende Gast-Tests
|
||||
im YT-Suche-Tab jetzt mit echtem `gast:`-Wiring in
|
||||
`YtSearchService`/`YtDownloadService`. Volle Suite grün, `flutter
|
||||
analyze` ohne Befund.
|
||||
|
||||
### 📺👤 YouTube-Gast-Zugang: bewusste Wahl + Tages-Zähler (Download-Tab + YT-Suche-Tab) (2026-08-26)
|
||||
|
||||
- ⚠️ **Braucht noch die Server-Seite.** Der neue Endpunkt `POST
|
||||
/api/guest-token` und die Quota-Logik in `yt_proxy.py` existieren noch
|
||||
nicht (separates Vorhaben, siehe
|
||||
`docs/superpowers/specs/2026-08-26-youtube-guest-quota-design.md`). Bis
|
||||
die Server-Seite steht, liefert der "Als Gast fortfahren"-Button
|
||||
zuverlässig einen 404-Fehler.
|
||||
- 👤 **Echte Gäste (kein Baka-Konto, kein Melo-Server) sehen jetzt zwei
|
||||
Buttons** statt nur der Anmeldung: "Beim Baka-Konto anmelden" und neu
|
||||
"Als Gast fortfahren (5 Downloads/Tag)". Der Gast-Button holt sich per
|
||||
`GastZugang.holeToken()` (aus Task 1-4 dieser Reihe) einen anonymen
|
||||
Token vom Proxy und schaltet damit den Downloader frei — ganz ohne
|
||||
Konto. Schlägt das Holen fehl, erscheint der Fehlertext direkt unter
|
||||
dem Button.
|
||||
- 🔢 **Im Gast-Modus zeigt eine Statuszeile "Als Gast unterwegs — noch N
|
||||
von 5 heute"**, sobald der Server den Kontingent-Stand gemeldet hat
|
||||
(vorher nur der generische Hinweistext "5 Downloads/Tag"). Der
|
||||
Cookie-Schalter ("YouTube-Cookies des Servers verwenden") ist im
|
||||
Gast-Modus ausgeblendet — der Server erzwingt für Gast-Zugriffe ohnehin
|
||||
`cookies=false`, ein sichtbarer Schalter hätte nur eine Wahl vorgetäuscht,
|
||||
die es nicht gibt.
|
||||
- 🐛 **Nebenbefund durchs Qualitäts-Gate:** `_YouTubeBereich.build()`
|
||||
beobachtet jetzt `GastZugang` app-weit über den Provider-Baum. Zwei
|
||||
Tests (`hauptmenue_test.dart`, `home_shell_test.dart`) bauen ihren
|
||||
eigenen Provider-Baum nach, statt `main.dart` zu importieren, und
|
||||
hatten `GastZugang` dort noch nicht — beide entsprechend ergänzt (analog
|
||||
zum bestehenden Muster für `BakaAuth`/`YtDownloadService`).
|
||||
- 📺 **YT-Suche-Tab bekommt denselben Gast-Button und -Zähler** wie der
|
||||
Download-Tab. Das alte "Baka-Anmeldung (siehe Download-Tab)" Hint für
|
||||
Gäste ist weg — echte Gäste in `lib/downloads/youtube_search_screen.dart`
|
||||
sehen jetzt "Als Gast fortfahren (5 Downloads/Tag)" und die Status-Zeile
|
||||
"Als Gast unterwegs — noch N von 5 heute", genauso wie im Download-Tab.
|
||||
- ✅ **Getestet:** volle Suite grün (600 Tests), `flutter analyze` ohne
|
||||
Befund. 3 neue Widget-Tests in
|
||||
`test/downloads/online_screen_test.dart`: beide Buttons sichtbar,
|
||||
Gast-Token-Erfolg schaltet das Adressfeld frei, Gast-Token-Fehler wird
|
||||
angezeigt.
|
||||
|
||||
### 📺🔑 YouTube-Tab: Server-User brauchen keine eigene Baka-Anmeldung mehr (2026-08-26)
|
||||
|
||||
- 🔑 **Server-User (Dustin, Baka, Tinker) sehen den Baka-Anmelde-Schritt nicht
|
||||
|
||||
Reference in New Issue
Block a user