YouTube-Gast-Zugang (App-Seite): 5 Downloads/Tag ohne Konto #4

Closed
dustin wants to merge 12 commits from feature/youtube-gast-zugang into fix/p0-vollwertigkeit
Owner

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

  • 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)

🤖 Generated with Claude Code

https://claude.ai/code/session_01CcDiyJdVRqh1TtJk5JiabX

## 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
dustin added 9 commits 2026-08-26 20:47:29 +00:00
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>
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>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CcDiyJdVRqh1TtJk5JiabX
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 added 3 commits 2026-08-29 11:28:39 +00:00
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
dustin closed this pull request 2026-08-30 08:35:59 +00:00
dustin deleted branch feature/youtube-gast-zugang 2026-08-30 08:35:59 +00:00

Pull request closed

This pull request cannot be reopened because the branch was deleted.
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: dustin/Melo#4