GuidoandClaude Opus 5 d0a84f35de Drei Fehler aus dem ersten Praxistest
Anmelde-Adresse wurde doppelt kodiert
  URLComponents.fragment kodiert beim Setzen erneut, aus %5B wurde
  %255B. Plex antwortete mit „Diese Anfrage konnte nicht abgeschlossen
  werden". Die Adresse wird jetzt von Hand zusammengesetzt.

Verbindungssuche hing bis zu anderthalb Minuten
  probeTimeout war deklariert, aber nirgends angewendet — es galt der
  URLSession-Standard von 60 Sekunden. Zusammen mit der Prüfung Rang
  für Rang kostete eine schweigende lokale Adresse die volle Zeit,
  bevor der direkte Weg überhaupt begann. Jetzt laufen alle Adressen
  gleichzeitig, mit Zeitgrenze, und die Rangordnung entscheidet unter
  den erreichbaren.

Kein Zurück während des Ladens
  Die Kopfzeile mit dem Schließen-Knopf wurde nur im Zustand .playing
  gezeichnet. Bei langsamer Verbindung saß man ohne Ausweg vor einem
  Ladekreis. Sie liegt jetzt als eigene Ebene darüber und erscheint
  auch beim Vorbereiten — samt Titel, damit erkennbar bleibt, worauf
  gewartet wird.

Sechs neue Tests, darunter drei, die die Zeitgrenze der
Verbindungssuche an einer schweigenden Adresse nachstellen.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-11 17:17:18 +02:00

Flixy

Ein nativer Plex-Client für iPhone und iPad — dunkel, mit ausfahrbarer Seitenleiste und Offline-Downloads.

Der Name ist ein Platzhalter. Siehe Flixy/Branding.swift.

Stand

Phase 0 (Fundament) steht. Die App startet, die Navigation ist begehbar, die Inhalte folgen in Phase 1.

Der Fahrplan steht in docs/superpowers/specs/2026-09-11-flixy-design.md.

Phase Inhalt Stand
0 Projektgerüst, Design-Tokens, Navigation ✅
1 Anmeldung, Bibliothek, DirectPlay offen
2 Transcoding, adaptive Bitrate, Spuren, Sync offen
3 Download-Engine und Offline-Wiedergabe offen
4 Download-Intelligenz offen
5 Feinschliff und Personalisierung offen
6 Live-TV mit EPG offen

Aufbau

Die Xcode-Projektdatei wird aus project.yml erzeugt und ist nicht eingecheckt — das erspart Konflikte in der pbxproj.

xcodegen generate
open Flixy.xcodeproj

Der Code liegt zum größten Teil in lokalen Packages unter Packages/FlixyKit. Das App-Target enthält nur Oberfläche und Navigation.

Modul Aufgabe Hängt ab von
PlexKit Anmeldung, Endpunkte, Modelle. Kein SwiftUI. —
FlixyDesign Farben, Typografie, wiederkehrende Bausteine. —
FlixyPlayback Wiedergabe-Abstraktion und die Entscheidung DirectPlay/Transcode. PlexKit
FlixyDownloads Warteschlange, Hintergrundübertragung, Offline-Bestand. PlexKit

Warum zwei Player

iOS spielt weder Matroska-Dateien noch DTS- oder TrueHD-Ton — und genau das liegt in typischen Plex-Beständen. PlaybackDecider prüft deshalb pro Datei, ob AVPlayer sie nativ öffnen kann (dann gibt es Bild-in-Bild und AirPlay gratis), und schickt sie sonst an VLCKit.

Ab Phase 2 kommt der dritte Weg dazu: Server-Transcoding. Dafür ist genau eine Funktion zu erweitern — PlaybackDecider.decide(media:part:policy:). Die Oberfläche bleibt unberührt.

Tests

Die Logik-Tests laufen ohne Simulator, deshalb in Sekunden:

cd Packages/FlixyKit && swift test

Die wichtigste Testdatei ist PlaybackDeciderTests — sie hält fest, welche Datei auf welchem Weg landet, und schlägt an, sobald jemand DeviceCapabilities anfasst.

Die Antwort-Vorlagen unter Tests/PlexKitTests/Fixtures sind von Hand geschrieben und gehören durch echte Mitschnitte ersetzt, sobald ein Server erreichbar ist — siehe das README dort.

Die Oberfläche wird von Hand im Simulator geprüft.

Voraussetzungen

  • Xcode 26 oder neuer
  • iOS 26.0 auf dem Zielgerät
  • XcodeGen (brew install xcodegen)
S
Description
No description provided
Readme GPL-2.0
13 MiB
Languages
C# 43.1%
Swift 38.4%
TypeScript 12.5%
CSS 2.5%
HTML 2.2%
Other 1.3%