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:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user