Neuer anonymer Gast-Zugang zum YouTube-Downloader: "Als Gast fortfahren (5 Downloads/Tag)" neben dem bestehenden Baka-Konto-Login, in Download-Tab und YT-Suche-Tab
Neuer GastZugang-Service (device-gebundener Token, kein Passwort), verdrahtet in YtDownloadService/YtSearchService/main.dart
Kritischer Fund aus der Whole-Branch-Review behoben: Gast-Modus war eine Einbahnstraße und sperrte den einzigen Baka-Login (damit auch Melo-Cloud-Sync) dauerhaft aus — jetzt gibt es einen "Anmelden"-Ausstieg aus dem Gast-Modus (GastZugang.verwerfen())
Offene Abhängigkeit
⚠️Braucht noch die Server-Seite: POST /api/guest-token + Quota-Logik in yt_proxy.py existieren noch nicht (separates Vorhaben für die claude-server-Session/Hermes). Bis dahin liefert der Gast-Button zuverlässig einen 404. Siehe docs/superpowers/specs/2026-08-26-youtube-guest-quota-design.md.
Test-Plan
602/602 Tests grün, flutter analyze ohne Befund
Jeder der 7 Implementierungs-Tasks einzeln reviewed (subagent-driven-development)
Whole-Branch-Review + eine Fix-Runde + Re-Review, alle Findings adressiert
Echter Geräte-Test (erst möglich, sobald die Server-Seite steht)
## Zusammenfassung
- Neuer anonymer Gast-Zugang zum YouTube-Downloader: "Als Gast fortfahren (5 Downloads/Tag)" neben dem bestehenden Baka-Konto-Login, in Download-Tab und YT-Suche-Tab
- Neuer `GastZugang`-Service (device-gebundener Token, kein Passwort), verdrahtet in `YtDownloadService`/`YtSearchService`/`main.dart`
- Kritischer Fund aus der Whole-Branch-Review behoben: Gast-Modus war eine Einbahnstraße und sperrte den einzigen Baka-Login (damit auch Melo-Cloud-Sync) dauerhaft aus — jetzt gibt es einen "Anmelden"-Ausstieg aus dem Gast-Modus (`GastZugang.verwerfen()`)
## Offene Abhängigkeit
⚠️ **Braucht noch die Server-Seite**: `POST /api/guest-token` + Quota-Logik in `yt_proxy.py` existieren noch nicht (separates Vorhaben für die claude-server-Session/Hermes). Bis dahin liefert der Gast-Button zuverlässig einen 404. Siehe `docs/superpowers/specs/2026-08-26-youtube-guest-quota-design.md`.
## Test-Plan
- [x] 602/602 Tests grün, `flutter analyze` ohne Befund
- [x] Jeder der 7 Implementierungs-Tasks einzeln reviewed (subagent-driven-development)
- [x] Whole-Branch-Review + eine Fix-Runde + Re-Review, alle Findings adressiert
- [ ] Echter Geräte-Test (erst möglich, sobald die Server-Seite steht)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01CcDiyJdVRqh1TtJk5JiabX
Analog zu BakaAuth, aber ohne Passwort: holt/speichert einen
geräte-gebundenen Gast-Token vom neuen /api/guest-token-Endpunkt
(siehe docs/superpowers/specs/2026-08-26-youtube-guest-quota-design.md).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_$(uuidgen | cut -d- -f1)
Optionaler gast-Parameter (GastZugang) — sendet bei fehlender
Baka-Anmeldung X-Guest-Token statt Authorization, übernimmt
guest_remaining aus der Erfolgsantwort, holt bei 401 automatisch
einen neuen Gast-Token nach.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Analog zu YtDownloadService: optionaler gast-Parameter, X-Guest-
Token statt Authorization, automatisches Token-Nachholen bei 401.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Neue Instanz wird beim Start geladen (gespeicherten Gast-Token
wiederherstellen), an YtDownloadService/YtSearchService gereicht
und als Provider bereitgestellt.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Echte Gäste sehen jetzt zwei Buttons: "Beim Baka-Konto anmelden"
und "Als Gast fortfahren (5 Downloads/Tag)". Im Gast-Modus wird
der Cookie-Schalter ausgeblendet (Server erzwingt cookies=false
für Gast-Zugriffe ohnehin) und ein Zähler "noch N von 5 heute"
gezeigt, sobald der Server ihn meldet.
_YouTubeBereich.build() beobachtet jetzt app-weit GastZugang; das
Qualitäts-Gate deckte auf, dass hauptmenue_test.dart und
home_shell_test.dart eigene Provider-Bäume ohne GastZugang bauen
(sie spiegeln main.dart nach, statt es zu importieren) — dort
GastZugang ergänzt, analog zum bestehenden Muster für die anderen
Dienste.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Analog zum Download-Tab: echte Gäste sehen zusätzlich zum
bestehenden Hinweis den Button "Als Gast fortfahren (5
Downloads/Tag)"; im Gast-Modus ersetzt ein Zähler den Hinweis.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Behebt die Findings aus dem abschließenden Gesamt-Branch-Review für
feature/youtube-gast-zugang, alle in einem Rutsch:
- KRITISCH: Gast-Modus war eine Einbahnstraße — einmal "Als Gast
fortfahren" getippt, war _AnmeldeDialog (einziger Baka-Login-Einstieg,
auch für Melo-Cloud-Sync) dauerhaft unerreichbar. Neu:
GastZugang.verwerfen() plus "Anmelden"-Knopf neben der Gast-Statuszeile
in beiden Screens.
- WICHTIG: zugriffOk prüfte den rohen gast.hatToken statt istGastModus —
ein alter Gast-Token konnte den Auto-Login-Rückfallweg für Server-User
verdecken. istGastModus wird jetzt vor zugriffOk berechnet und dort
verwendet.
- WICHTIG: CHANGELOG ergänzt — der Server-Endpunkt POST /api/guest-token
fehlt noch (separates Vorhaben).
- Doppel-Tap-Schutz für den Gast-Button in beiden Screens.
- Widersprüchlicher Hinweistext im YT-Suche-Tab (verlangte Baka-Login
direkt über dem Gast-Button) korrigiert.
- Zwei Gast-Tests in youtube_search_screen_test.dart bekommen jetzt
echtes gast:-Wiring in YtSearchService/YtDownloadService.
- 2 neue Regressionstests fürs Anmelden-Escape-Hatch.
Getestet: volle Suite grün (602 Tests, 1 skipped, 0 failed),
flutter analyze ohne Befund.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CcDiyJdVRqh1TtJk5JiabX
Dustin hat beim Durchsprechen der Proxy-Architektur bestätigt: auch
Dustin/Baka/Tinker bekommen ein Tages-Limit (100 statt 5 bei Gästen),
nicht mehr unbegrenzt. Serverseitiger Vertrag (cloud_quota-Tabelle,
cloud_remaining-Feld) und App-Seite (BakaAuth.verbleibend, UI-Text)
dokumentiert, analog zum bestehenden Gast-Limit.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012A2pmbnVNPiHdyf2GW8eLP
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
Review-Fix: abmelden() setzte _verbleibend bisher nicht zurück,
anders als GastZugang.verwerfen() (_verbleibend = null). Ohne den
Fix bliebe nach einem Account-Wechsel (z.B. Baka -> Tinker) der
alte Kontingent-Stand sichtbar, bis der nächste Download einen
frischen Stand liefert. Aktuell folgenlos (verbleibend ist bis zum
Server-Rollout ohnehin immer null), aber ein latenter Bug.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012A2pmbnVNPiHdyf2GW8eLP
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Zusammenfassung
GastZugang-Service (device-gebundener Token, kein Passwort), verdrahtet inYtDownloadService/YtSearchService/main.dartGastZugang.verwerfen())Offene Abhängigkeit
⚠️ Braucht noch die Server-Seite:
POST /api/guest-token+ Quota-Logik inyt_proxy.pyexistieren noch nicht (separates Vorhaben für die claude-server-Session/Hermes). Bis dahin liefert der Gast-Button zuverlässig einen 404. Siehedocs/superpowers/specs/2026-08-26-youtube-guest-quota-design.md.Test-Plan
flutter analyzeohne Befund🤖 Generated with Claude Code
https://claude.ai/code/session_01CcDiyJdVRqh1TtJk5JiabX
Pull request closed