Catalyst: ohne Netz, ohne Übersetzung, ohne Fenstergröße

Drei Fehler auf einmal, und alle drei meine.

**Die App kam gar nicht ins Netz.** Ein Catalyst-Programm läuft in der Sandbox
und braucht eine ausdrückliche Erlaubnis für ausgehende Verbindungen. Ohne sie
gibt es keine Fehlermeldung — der Ladekreis dreht sich einfach für immer, und
genau so sah es aus.

**In der Seitenleiste standen Schlüssel statt Wörtern** — „sidebar.downloads"
statt „Downloads". Ich hatte zwei Fassungen derselben Beschriftung gebaut, eine
mit `LocalizedStringKey` und eine mit `String` für Titel, die vom Server
kommen. Bei einem Literal darf Swift sich für beide entscheiden, und es
entschied sich nicht überall gleich. Jetzt gibt es eine Fassung; wer einen
fertigen Text hat, baut sein `Text` selbst.

**Das Fenster öffnete wieder in Notizzettelgröße.** Meine Größenangabe hing an
`os(macOS)` — unter Catalyst gilt aber `os(iOS)`, also griff sie nicht. Dort
hängt die Größe ohnehin an der Szene, nicht am Fenster.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-09-13 16:22:42 +02:00
co-authored by Claude Opus 5
parent f296d7ae1a
commit 39d9138911
6 changed files with 3777 additions and 3730 deletions
+31 -1
View File
@@ -70,9 +70,18 @@ struct FlixyApp: App {
// Eine Untergrenze, unter der die Oberfläche nicht mehr
// aufgeht: schmaler als das hier klappt die Seitenleiste zu
// und die Reihen zeigen anderthalb Kacheln.
#if os(macOS)
//
// `os(macOS)` allein reichte nicht — unter Catalyst gilt
// `os(iOS)`, und genau deshalb öffnete das Fenster wieder in
// Notizzettelgröße.
#if os(macOS) || targetEnvironment(macCatalyst)
.frame(minWidth: 900, minHeight: 620)
#endif
#if targetEnvironment(macCatalyst)
// Unter Catalyst gibt es `defaultSize` nicht; die Größe hängt
// an der Szene.
.task { Self.widenWindow() }
#endif
.environment(session)
.environment(playback)
.environment(playbackSettings)
@@ -123,6 +132,27 @@ struct FlixyApp: App {
}
#if os(iOS)
#if targetEnvironment(macCatalyst)
extension FlixyApp {
/// Gibt dem Fenster eine vernünftige Mindestgröße.
///
/// Unter Catalyst öffnet macOS sonst ein Fenster von der Größe eines
/// Notizzettels — und darin fällt der Aufmacher in sich zusammen, weil
/// seine Abstände dehnbar sind.
@MainActor
static func widenWindow() {
for scene in UIApplication.shared.connectedScenes {
guard let windowScene = scene as? UIWindowScene else { continue }
windowScene.sizeRestrictions?.minimumSize = CGSize(width: 900, height: 620)
windowScene.sizeRestrictions?.maximumSize = CGSize(
width: CGFloat.greatestFiniteMagnitude,
height: CGFloat.greatestFiniteMagnitude
)
}
}
}
#endif
/// Der klassische App-Delegat, für das eine, was SwiftUI nicht abdeckt.
@MainActor
final class AppDelegate: NSObject, UIApplicationDelegate {