Files
Flaro/FlixyTV/FlixyTVApp.swift
T
ScarriffleandClaude Opus 5 6326c8c24c Ein Apple-TV-Target, und es zeigt schon etwas
Das leere Gerüst: eigene Wurzel FlixyTVApp, eigenes Target FlixyTV in
project.yml, eigener Asset-Katalog. Es beweist Target, Icon, Signierung
und Paketauflösung auf einen Schlag — bevor eine Zeile Logik daran hängt.

**Das Icon von Hand gebaut.** Icon Composer deckt iOS, macOS und watchOS
ab, tvOS nicht: der Fernseher verlangt gestapelte Bilder, damit die
Parallaxe beim Wischen etwas zu bewegen hat. Zwei Ebenen aus derselben
Marke — Verlauf hinten, Dreieck vorn —, dazu App-Store-Icon und beide
Top-Shelf-Bilder. Ohne das breite lehnt App Store Connect den Upload mit
90513 ab.

**Zwei Annahmen aus dem Plan haben sich beim Bauen erledigt.**
PlexWebAuthenticator übersetzt nicht: ASWebAuthenticationSession steht
zwar im tvOS-SDK, aber presentationContextProvider, cancel() und der
Rest sind dort nicht verfügbar. Der Typ bleibt trotzdem stehen — als
Attrappe, die sofort „ging nicht" meldet. Ihn herauszuschneiden hiesse,
die Zustandsmaschine der Anmeldung für eine Plattform zu spalten, die
diesen Zweig nie betritt. Dieselbe Bauform wie bei OrientationLock.
NowPlaying wartet auf den Player in Schritt sieben.

**Und eine Messung statt einer Vermutung.** Der Plan führte zwei offene
Annahmen über den Sicherheitsrand. Der Simulator beantwortet beide:
SwiftUI legt ihn von selbst an, und er misst sechzig oben und unten,
achtzig seitlich — nicht neunzig. Nutzfläche 1760×960.

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

28 lines
1.1 KiB
Swift

import SwiftUI
import FlixyDesign
/// Die App auf dem Fernseher.
///
/// **Eine eigene Wurzel statt eines Zweigs in `FlixyApp`.** Der Unterschied
/// zwischen Telefon und Fernseher ist keine Feinheit der Darstellung, sondern
/// die Bedienart: kein Finger, keine Grössenklasse, keine Werkzeugleiste, kein
/// Ziehen zum Aktualisieren, keine halbhohen Sheets — und dafür ein Fokus, den
/// es auf iOS gar nicht gibt. Ein `#if os(tvOS)` in der bestehenden Wurzel
/// wäre kein Zweig, sondern ein zweiter Rumpf in derselben Datei, und der
/// nächste, der die iOS-Seite ändert, bräche die andere, ohne es zu merken.
///
/// **Die Modelle dagegen werden geteilt**, nicht kopiert: `Flixy/Session/`
/// kommt über einen Pfadeintrag in `project.yml` mit. Die Naht verläuft
/// zwischen Modell und Ansicht, nicht zwischen den Plattformen.
///
/// **Kein SwiftData.** Der `ModelContainer` der iOS-App trägt ausschliesslich
/// Downloads, und die gibt es hier nicht.
@main
struct FlixyTVApp: App {
var body: some Scene {
WindowGroup {
TVRootView()
}
}
}