README: Stand nach dem Praxistest

Die Tabelle stand noch auf „Phase 0 steht". Inzwischen laufen Anmeldung,
Blättern und Wiedergabe am echten Server — auf iPhone und iPad. Die
offenen Punkte sind jetzt einzeln benannt statt pauschal „ungeprüft".

Dazu ein Abschnitt über die drei Fehler, die kein Test gefunden hätte,
weil sie in Annahmen über fremde Bibliotheken steckten: VLCKits Thread,
die nicht verknüpfende Auth-Seite von Plex, und der Download-Task, der
auch bei 404 als erfolgreich gilt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Guido
2026-09-11 22:33:30 +02:00
co-authored by Claude Opus 5
parent 6150b018ec
commit eea81aad2f
+31 -14
View File
@@ -7,8 +7,8 @@ Der Name ist ein Platzhalter. Siehe [`Flixy/Branding.swift`](Flixy/Branding.swif
## Stand ## Stand
Phase 0 (Fundament) steht. Die App startet, die Navigation ist begehbar, die Alle sechs Phasen sind gebaut. Anmeldung, Blättern und Wiedergabe laufen am
Inhalte folgen in Phase 1. echten Server; der Rest ist unterschiedlich weit geprüft.
Der Fahrplan steht in Der Fahrplan steht in
[`docs/superpowers/specs/2026-09-11-flixy-design.md`](docs/superpowers/specs/2026-09-11-flixy-design.md). [`docs/superpowers/specs/2026-09-11-flixy-design.md`](docs/superpowers/specs/2026-09-11-flixy-design.md).
@@ -16,15 +16,29 @@ Der Fahrplan steht in
| Phase | Inhalt | Stand | | Phase | Inhalt | Stand |
|---|---|---| |---|---|---|
| 0 | Projektgerüst, Design-Tokens, Navigation | ✅ | | 0 | Projektgerüst, Design-Tokens, Navigation | ✅ |
| 1 | Anmeldung, Bibliothek, DirectPlay | ✅ Anmeldung am Server geprüft, der Rest nicht | | 1 | Anmeldung, Bibliothek, DirectPlay | ✅ am Server geprüft, iPhone und iPad |
| 2 | Transcoding, adaptive Bitrate, Spuren, Sync | ✅ gebaut, ungeprüft | | 2 | Transcoding, adaptive Bitrate, Spuren, Sync | ✅ Wiedergabe geprüft; Transcoding selbst noch nicht erzwungen |
| 3 | Download-Engine und Offline-Wiedergabe | ✅ gebaut, ungeprüft | | 3 | Download-Engine und Offline-Wiedergabe | ⚠️ Downloads starten, Offline-Wiedergabe noch nicht bestätigt |
| 4 | Download-Intelligenz | ✅ gebaut; komprimierte Downloads ungeprüft | | 4 | Download-Intelligenz | ⚠️ komprimierte Downloads ungeprüft |
| 5 | Feinschliff und Personalisierung | ✅ gebaut, ungeprüft | | 5 | Feinschliff und Personalisierung | ✅ gebaut, teilweise geprüft |
| 6 | Live-TV mit EPG | ✅ gebaut, an keinem DVR geprüft | | 6 | Live-TV mit EPG | ⚠️ Empfänger werden gefunden, Sender noch nicht bestätigt |
„Ungeprüft" heißt: die Logik ist von Tests abgedeckt, die Oberfläche wurde aber „Ungeprüft" heißt: die Logik ist von Tests abgedeckt, an einem echten Bestand
noch nie mit einem echten Bestand gesehen. aber noch nicht gesehen.
### Was der Praxistest gelehrt hat
Drei Fehler, die kein Test gefunden hätte, weil sie in Annahmen über fremde
Bibliotheken steckten — sie stehen als Warnung im jeweiligen Quelltext:
- **VLCKit ruft seinen Delegaten vom eigenen Thread**, nicht über die
Hauptwarteschlange. `MainActor.assumeIsolated` brach die App beim Drücken
auf Play hart ab.
- **`app.plex.tv/auth` verknüpft den Code nicht**, wenn man im Browser schon
bei Plex angemeldet ist — es springt auf watch.plex.tv weiter. `plex.tv/link`
tut es zuverlässig.
- **`URLSessionDownloadTask` gilt auch bei 404 als erfolgreich** und legt die
Fehlerseite als Datei ab.
## Aufbau ## Aufbau
@@ -96,10 +110,13 @@ Die Oberfläche wird von Hand im Simulator geprüft.
`Content-Length` mitschickt (ohne sie gibt es keinen Fortschrittsbalken und `Content-Length` mitschickt (ohne sie gibt es keinen Fortschrittsbalken und
kein Fortsetzen) und ob die Datei durchsuchbar ist. Original bleibt solange kein Fortsetzen) und ob die Datei durchsuchbar ist. Original bleibt solange
Voreinstellung. Siehe `transcodedDownloadURL` in `PlexServer+Playback.swift`. Voreinstellung. Siehe `transcodedDownloadURL` in `PlexServer+Playback.swift`.
2. **Live-TV.** Der am schlechtesten dokumentierte Teil der Plex-API — es gibt Ein Fehlschlag erscheint immerhin als solcher — die Plausibilitätsprüfung in
keine offizielle Beschreibung. Die Modelle sind durchgehend nachsichtig `DownloadCoordinator.implausibility` verwirft Fehlerseiten und abgebrochene
gebaut, und ohne eingerichteten Empfänger erklärt die App das, statt einen Übertragungen, statt sie als fertig zu verbuchen.
Fehler zu zeigen. 2. **Live-TV: die Senderliste.** Dass die Empfänger unter `Dvr` gefunden
werden, ist geprüft. Ob `/livetv/dvrs/{id}/channels` die Sender liefert,
nicht. Die Ansicht unterscheidet beide Fälle: „Kein Empfänger eingerichtet"
gegen „Keine Sender" — daran ist ablesbar, wo es hakt.
3. **App-Größe.** Die iOS-Slice von VLCKit ist unstripped 239 MB. Was davon im 3. **App-Größe.** Die iOS-Slice von VLCKit ist unstripped 239 MB. Was davon im
fertigen Archiv übrig bleibt, ist noch nicht gemessen. fertigen Archiv übrig bleibt, ist noch nicht gemessen.
4. **Große Dateien im Hintergrund.** Das Verhalten mit einem 40-GB-Remux — vor 4. **Große Dateien im Hintergrund.** Das Verhalten mit einem 40-GB-Remux — vor