macOS: die App läuft jetzt auf dem Mac

Und dein Argument dafür war das beste: auf dem Mac kann ich selbst hinsehen.
Kein Simulator-Tunnel, der mitten im Prüfen abstürzt — `screencapture` auf das
Fenster der App, und zwar nur auf ihres, nicht auf den Bildschirm.

**Ein eigenes Ziel, nicht ein gemeinsames.** Die Info.plist der iOS-App ist
voller iOS-Angaben: Startbildschirm, erlaubte Ausrichtungen, Live Activities.
Die alle bedingt zu machen hieße, dass jede spätere Änderung an der iOS-Seite
über eine Stelle geht, die auch den Mac betrifft. Zwei Ziele sind ein paar
Zeilen mehr und eine Sorge weniger.

**Was den Unterschied ausmacht, steht an einer Stelle.** Ein neuer
`PlatformShims` in FlixyDesign übersetzt, was auf beiden Seiten verschieden
heißt: schmale Titelzeile, halbhohes Blatt, Eingabefelder ohne
Großschreibung, die Plätze in der Werkzeugleiste, die Zwischenablage. Zwanzig
Ansichten benutzen ihn, statt zwanzigmal `#if os(iOS)` zu tragen — sonst
wandert die Fallunterscheidung in jede neue Datei und wird beim übernächsten
Bildschirm vergessen.

Wirklich verschieden sind nur fünf Stellen: die Bildfläche (`UIView` gegen
`NSView`), der AirPlay-Knopf, die Ausrichtungssperre (auf dem Mac gibt es
nichts zu sperren), der App-Delegat für Hintergrund-Downloads und das
Anmeldefenster, das ein anderes Fenster als Anker braucht.

**Das Karussell blättert jetzt mit einem einrastenden Streifen** statt mit
`TabView(.page)` — den Seitenstil gibt es auf dem Mac nicht. Das ist nebenbei
die bessere Lösung: das verschachtelte TabView hatte die Eigenschaft, beim
Wechsel kurz zwei Seiten gleichzeitig zu zeigen.

**Was auf dem Mac fehlt und warum:** VLC. Das Binärpaket ist auf iOS
festgelegt; sein xcframework enthält zwar Mac-Teile, aber das ist eine eigene
Runde. Solange fällt die Wiedergabe dort auf den Systemplayer zurück — MKV und
DTS gehen also noch nicht. Live Activities gibt es auf dem Mac nicht, Bild-in-
Bild startet von Hand statt beim Verlassen der App.

Gesehen: die App startet, der Anmeldebildschirm steht, beide Wege sind da.
Angemeldet habe ich mich auf dem Mac **nicht** — das ginge nur, indem ich
einen Token in deinen Schlüsselbund schreibe, und dann fragt macOS dich beim
ersten Zugriff nach dem Passwort. Das machst du mit einem Klick selbst.

iOS baut unverändert, 263 Tests grün.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-09-13 15:45:13 +02:00
co-authored by Claude Opus 5
parent 21c5a8b46b
commit d54954b9c2
33 changed files with 480 additions and 111 deletions
+57
View File
@@ -4,6 +4,7 @@ options:
bundleIdPrefix: com.scarriffleservices
deploymentTarget:
iOS: "26.0"
macOS: "26.0"
createIntermediateGroups: true
groupSortPosition: top
developmentLanguage: en
@@ -147,6 +148,62 @@ targets:
# Die Live Activity für Downloads. Eine eigene Erweiterung, weil iOS die
# Darstellung im Sperrbildschirm in einem getrennten Prozess zeichnet — die
# App selbst läuft zu dem Zeitpunkt meist gar nicht.
# Dieselben Quellen, eigenes Ziel.
#
# Ein gemeinsames Target für beide Plattformen wäre weniger Text, aber die
# Info.plist ist voller iOS-Angaben — Startbildschirm, erlaubte
# Ausrichtungen, Live Activities. Die müssten dann alle bedingt werden, und
# jede spätere Änderung an der iOS-Seite ginge über eine Stelle, die auch
# den Mac betrifft. Zwei Ziele sind ein paar Zeilen mehr und ein Sorge
# weniger.
#
# Ohne DownloadWidget (Live Activities gibt es auf dem Mac nicht) und ohne
# FlixyVLC: das Binärpaket ist auf iOS festgelegt. Der Player fällt dort
# allein auf den Systemplayer zurück — was er nicht öffnen kann, sagt er.
FlixyMac:
type: application
platform: macOS
sources:
- path: Flixy
excludes:
- "AppIcon.icon"
dependencies:
- package: FlixyKit
product: MediaKit
- package: FlixyKit
product: PlexKit
- package: FlixyKit
product: JellyfinKit
- package: FlixyKit
product: FlixyDesign
- package: FlixyKit
product: FlixyPlayback
- package: FlixyKit
product: FlixyDownloads
settings:
base:
PRODUCT_BUNDLE_IDENTIFIER: com.scarriffleservices.flixy
PRODUCT_NAME: Flixy
# Selbst signiert, ohne Entwicklerkonto: ein Build zum Ansehen soll
# nicht jedes Mal nach dem Schlüsselbund-Passwort fragen.
CODE_SIGN_STYLE: Manual
CODE_SIGN_IDENTITY: "-"
DEVELOPMENT_TEAM: ""
ENABLE_HARDENED_RUNTIME: NO
COMBINE_HIDPI_IMAGES: YES
info:
path: Flixy/Info-macOS.plist
properties:
CFBundleDisplayName: Flixy
LSApplicationCategoryType: public.app-category.entertainment
NSHumanReadableCopyright: ""
CFBundleURLTypes:
- CFBundleURLName: com.scarriffleservices.flixy.auth
CFBundleURLSchemes:
- com.scarriffleservices.flixy
NSAppTransportSecurity:
NSAllowsLocalNetworking: true
DownloadWidget:
type: app-extension
platform: iOS