10 Commits
Author SHA1 Message Date
Hermes (Server) ec9b0d0f29 Merge branch 'feature/youtube-gast-zugang'
# Conflicts:
#	CHANGELOG.md
#	test/downloads/online_screen_test.dart
2026-08-30 10:34:58 +02:00
Hermes (Server) dbaec47faf Plan/Spec: Review-Panel-Befunde eingearbeitet
Budget-Adversarial-Panel (3 Reviewer, unabhängig konvergent) fand einen P0
(AnimatedBuilder.child-Fehlgebrauch macht Blur-Layer nicht live) und mehrere
P1s (State-Persistenz-Widerspruch zur Spec, fehlende Hit-Test-/Accessibility-
Isolation, verworfene Loslass-Geschwindigkeit, fehlendes extendBody, Tests
nur gegen Test-Doppelgänger). Alle behoben: eigene AnimatedBuilder pro
reaktiver Ebene (Reaktivitäts-Regel in Global Constraints), Visibility statt
Conditional-Unmount, IgnorePointer/ExcludeSemantics für Hintergrund-Layer,
echte Fling-Geschwindigkeit, extendBody + BottomNavigationBar-Fade, neuer
Integrationstest gegen das echte HomeShell, State-Persistenz-Test.
2026-08-29 14:07:59 +02:00
Hermes (Server) 8f4c3fa56f Implementierungsplan: Vollbild-Player als persistentes Overlay
10 Tasks, TDD-Schritte, Spec-Abdeckung geprüft.
2026-08-29 13:48:49 +02:00
Hermes (Server) 8d496cc70b Spec: Vollbild-Player als persistentes Overlay mit Live-Blur-Übergang
Punkt 2 der HyperOS-Animations-Serie. Bereit zur Freigabe durch Dustin
(via Hermes) vor der Umsetzung.
2026-08-29 13:40:19 +02:00
Hermes (Server)andClaude Sonnet 5 8611738124 Spec-Nachtrag: 100/Tag-Limit auch für Cloud-Accounts (nicht mehr unbegrenzt)
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
2026-08-29 13:17:35 +02:00
Hermes (Server)andClaude Sonnet 5 1940e2b790 Sync-Ausbau: Löschpfad gefixt — Spec + Plan entblockt
Hermes hat den irreversiblen Löschpfad in melo_cloud.py behoben: Der
Dedup-Zweig von upload() stellt die Datei jetzt aus den hochgeladenen
Bytes wieder her, wenn registry_pfad(sid) leer ist, statt sie zu
verwerfen.

End-to-end verifiziert (eigene Testdatei, Fake-Nutzer, Testdaten danach
restlos entfernt — Registry vor und nach dem Test bei 325 Titeln):
Upload → beide Kopien da · Löschung → beide weg, Download 404 (Bug
reproduziert) · erneuter Upload → beide Kopien zurück, Download
bitgenau identisch mit dem Original.

Damit ist die letzte offene Frage der Spec (A6) beantwortet und keine
Stufe mehr blockiert. Tasks 5-7 des Plans sind entblockt; Tasks 10-12
hängen nur noch an der Produktfrage "wird Feature 2 überhaupt gebaut?"
(0 Playlisten am Server).

Nebenbefund aus dem Test, als Backlog-Notiz festgehalten: _link_user()
legt im Dedup-Zweig einen dritten Hardlink unter users/<user>/ an, den
_entferne_datei_wenn_verwaist() nicht abräumt. Server-Hygiene für
Hermes, kein Datenverlust.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CcDiyJdVRqh1TtJk5JiabX
2026-08-27 10:31:49 +02:00
Hermes (Server)andClaude Sonnet 5 2a1cf9cdc2 Sync-Ausbau: Spec nachgeschärft + Implementierungsplan (13 Tasks)
Spec nach dem Review-Panel-Urteil überarbeitet (alle 17 Aktionspunkte).
Der Umfang schrumpft deutlich: 6→5 Ziele, 4→2 neue Dateien, neue
Dependencies 1→0. SSE, persistente Notification und der beidseitige
Playlist-Merge werden spätere Stufen; der Favoriten-Fix schreibt jetzt
additiv (POST /favorites gestrichen), womit der Datenverlust-Bug
strukturell unmöglich wird statt nur per Regel verhindert.

Implementierungsplan: 13 Tasks nach TDD, Favoriten-Fix zuerst (hängt an
keiner offenen Frage). Gegengelesen und geprüft; die Prüfung fand drei
echte Server-Vertragsfehler, die in den eigenen Tests grün geworden
wären (playlist.id statt id, positions statt song_ids, not_found ohne
error-Feld) — alle korrigiert und am Servercode belegt.

OFFEN: Rückfrage an Dustin zum irreversiblen Löschpfad (siehe Spec,
Abschnitt "OFFENE ENTSCHEIDUNG"). Tasks 5-7 und 10-12 sind bis dahin
als blockiert markiert; Tasks 1-4 können sofort starten.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CcDiyJdVRqh1TtJk5JiabX
2026-08-27 02:40:38 +02:00
Hermes (Server)andClaude Sonnet 5 3a376faf50 Spec: Sync-Ausbau (Auswahl-Upload, Einzel-Song-Offline, Merge-Fixes, SSE)
Design-Dokument für den Sync-Ausbau der Android-App, mit Dustin im
Brainstorming abgestimmt (Workflow-Bestandsaufnahme über 6 Schichten:
App-Sync, Offline, melo_cloud.py, Navidrome, Cross-Platform, Melo v2).
Kern: Favoriten-Merge-Fix (Datenverlust-Bug), gezielter Upload im
Auswahl-Modus, Einzel-Song-Offline, Playlist-Union-Sync,
Sync-Notification + Bericht, Echtzeit per SSE. Cross-Platform
Mac+Windows bewusst als eigenes Folgeprojekt ausgeklammert.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CcDiyJdVRqh1TtJk5JiabX
2026-08-27 00:04:06 +02:00
Hermes (Server)andClaude Sonnet 5 9f08286e50 Implementierungsplan: YouTube-Gast-Zugang (App-Seite)
7 Tasks nach TDD: GastZugang-Service, Gast-Unterstützung in
YtDownloadService/YtSearchService, Verdrahtung in main.dart, UI in
Download-Tab und YT-Suche-Tab (bewusste Wahl Anmelden/Als-Gast-
fortfahren + Tages-Zähler), Abschluss-Verifikation. Umsetzung auf
neuem Branch feature/youtube-gast-zugang (Task 1, Step 0).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CcDiyJdVRqh1TtJk5JiabX
2026-08-26 20:28:41 +02:00
Hermes (Server)andClaude Sonnet 5 2d94a3aa26 Spec: YouTube-Gast-Zugang mit Tages-Limit
Design-Dokument für den neuen anonymen Gast-Zugang zum YouTube-Proxy
(5 Downloads/Tag, keine Cookies) neben dem bestehenden
Baka-Auth-Cloud-Zugang. Mit Dustin im Brainstorming abgestimmt:
geräte-gebundener Gast-Token, bewusste Wahl in der UI, Reset nach
Server-Kalendertag, Suche bleibt unbegrenzt. Server-seitiger Teil
(yt_proxy.py) liegt außerhalb dieses Worktrees — die Spec beschreibt
den Vertrag dafür.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CcDiyJdVRqh1TtJk5JiabX
2026-08-26 20:16:27 +02:00