From a1576921fd212def70d908f356c22cb881a96afb Mon Sep 17 00:00:00 2001 From: Scarriffle Date: Tue, 29 Sep 2026 21:16:04 +0200 Subject: [PATCH] Das Regal hatte seine eigene Transportsicherheit MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Die Plakate blieben weg, und der Grund stand nicht im Code, sondern daneben: eine App-Erweiterung hat ihre **eigene** Info.plist, und damit ihre eigene Transportsicherheit. Die Ausnahme fürs lokale Netz, die in der Info.plist der App seit jeher steht, gilt dort nicht. Ein Jellyfin im Heimnetz antwortet auf blankem HTTP. Jede Bildanfrage der Erweiterung lief damit gegen ATS — lautlos, ohne Fehler, ohne Eintrag. Das Regal blieb leer und sah aus wie „geht halt nicht". Dazu die richtige Plakatgrösse: 666×1000 statt 404×606, Apples Mass für die doppelte Auflösung. Für beide Stufen dasselbe Bild — ein Apple TV zeichnet das Regal ohnehin doppelt aufgelöst, und zwei Adressen abzulegen hiesse, dem Server zwei Grössen desselben Plakats abzuverlangen, damit eine davon nie gebraucht wird. Nicht nachgewiesen: dass es jetzt zeichnet. Das Regal erscheint nur, wenn die App in der **obersten** Reihe des Menüs steht und fokussiert ist, und den Fokus kann ich im Simulator nicht bewegen — tvOS nimmt keine Touch-Eingaben, und an die Simulator-App komme ich aus dieser Umgebung nicht heran. Co-Authored-By: Claude Opus 5 --- .../xcshareddata/swiftpm/Package.resolved | 15 +++++++++++++++ Flixy/Session/TopShelfWriter.swift | 9 +++++++-- FlixyTopShelf/Info.plist | 5 +++++ .../Sources/FlixyDesign/Localizable.xcstrings | 4 ++++ project.yml | 9 +++++++++ 5 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 Flixy.xcworkspace/xcshareddata/swiftpm/Package.resolved diff --git a/Flixy.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Flixy.xcworkspace/xcshareddata/swiftpm/Package.resolved new file mode 100644 index 0000000..613e4ba --- /dev/null +++ b/Flixy.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -0,0 +1,15 @@ +{ + "originHash" : "8b778ccd4dce9d26be9db57d4587b19c4a4366fcdaf8b6017e1df36fa1eddb4f", + "pins" : [ + { + "identity" : "vlckit", + "kind" : "remoteSourceControl", + "location" : "https://github.com/videolan/vlckit.git", + "state" : { + "revision" : "6cbc4e7b248aa51ec0906697abb30ecae47194b7", + "version" : "4.0.0-a24" + } + } + ], + "version" : 3 +} diff --git a/Flixy/Session/TopShelfWriter.swift b/Flixy/Session/TopShelfWriter.swift index f9077a8..aff50a6 100644 --- a/Flixy/Session/TopShelfWriter.swift +++ b/Flixy/Session/TopShelfWriter.swift @@ -14,8 +14,13 @@ enum TopShelfWriter { static let group = "group.com.scarriffleservices.flixy" /// Die Kante, in der das Regal Plakate zeigt. - private static let posterWidth = 404 - private static let posterHeight = 606 + /// + /// **Apples Mass für die doppelte Auflösung**, und für beide Stufen + /// dasselbe Bild. Ein Apple TV zeichnet das Regal ohnehin doppelt + /// aufgelöst; zwei Adressen abzulegen hiesse, dem Server zwei Grössen + /// desselben Plakats abzuverlangen, damit eine davon nie gebraucht wird. + private static let posterWidth = 666 + private static let posterHeight = 1000 static func update( rows: [MediaRowGroup], diff --git a/FlixyTopShelf/Info.plist b/FlixyTopShelf/Info.plist index 9959438..e6f017b 100644 --- a/FlixyTopShelf/Info.plist +++ b/FlixyTopShelf/Info.plist @@ -18,6 +18,11 @@ 1.0 CFBundleVersion 1 + NSAppTransportSecurity + + NSAllowsLocalNetworking + + NSExtension NSExtensionPointIdentifier diff --git a/Packages/FlixyKit/Sources/FlixyDesign/Localizable.xcstrings b/Packages/FlixyKit/Sources/FlixyDesign/Localizable.xcstrings index 46cfd2b..58877b2 100644 --- a/Packages/FlixyKit/Sources/FlixyDesign/Localizable.xcstrings +++ b/Packages/FlixyKit/Sources/FlixyDesign/Localizable.xcstrings @@ -17,6 +17,10 @@ "comment" : "Name of the accent color option \"Indigo\".", "isCommentAutoGenerated" : true }, + "Lilac" : { + "comment" : "Name of the accent color option.", + "isCommentAutoGenerated" : true + }, "Lime" : { "comment" : "Name of the accent color \"Lime\".", "isCommentAutoGenerated" : true diff --git a/project.yml b/project.yml index 8c02dda..e01facc 100644 --- a/project.yml +++ b/project.yml @@ -286,6 +286,15 @@ targets: path: FlixyTopShelf/Info.plist properties: CFBundleDisplayName: Flixy + # **Die Erweiterung hat ihre eigene Info.plist.** + # + # Und damit ihre eigene Transportsicherheit: die Ausnahme in der + # Info.plist der App gilt hier nicht. Ohne sie blockt das System jedes + # Plakat weg, das über blankes HTTP vom Jellyfin im Heimnetz kommt — + # lautlos, und das Regal bleibt leer. Genau so sieht „geht halt nicht" + # aus. + NSAppTransportSecurity: + NSAllowsLocalNetworking: true NSExtension: NSExtensionPointIdentifier: com.apple.tv-top-shelf NSExtensionPrincipalClass: $(PRODUCT_MODULE_NAME).TopShelfProvider