From 4abce1c8b9e519c797940ae7c9f4331711323db0 Mon Sep 17 00:00:00 2001 From: Scarriffle Date: Sun, 27 Sep 2026 18:27:38 +0200 Subject: [PATCH] =?UTF-8?q?Name=20und=20Passwort=20zuerst,=20und=20Bl?= =?UTF-8?q?=C3=A4tter=20in=20Fenstergr=C3=B6sse?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **Die Anmeldung.** Sobald ein Jellyfin-Server Quick Connect anbietet, sprang der Weg von selbst in den Code-Fluss. Gut gemeint — dabei läuft kein Passwort durch diese App —, aber am Alltag vorbei: der Code will in einem zweiten Gerät bestätigt werden, und wer im Zug sitzt, hat das nicht offen. Ein Passwortspeicher füllt dagegen beide Felder in einer Sekunde. Der Code bleibt als Knopf darunter erreichbar. **Die Blätter.** Wieder `#if os(macOS)`, das auf dem Mac nie greift, weil dort der iOS-Bau läuft. Filter, Spurwahl und Qualitätsblatt bekamen deshalb eine Blattkante in iPhone-Höhe — ein schmaler Streifen, der in einem grossen Fenster unten im Nichts klebt. Jetzt zur Laufzeit entschieden: auf dem Mac volle Höhe, sonst wie bisher. Co-Authored-By: Claude Opus 5 --- Flixy/Session/JellyfinSignInModel.swift | 17 ++++++++++++----- .../Sources/FlixyDesign/PlatformShims.swift | 18 ++++++++---------- 2 files changed, 20 insertions(+), 15 deletions(-) diff --git a/Flixy/Session/JellyfinSignInModel.swift b/Flixy/Session/JellyfinSignInModel.swift index 4a6d888..74a056f 100644 --- a/Flixy/Session/JellyfinSignInModel.swift +++ b/Flixy/Session/JellyfinSignInModel.swift @@ -89,11 +89,18 @@ final class JellyfinSignInModel { address = candidate.absoluteString offersQuickConnect = await authenticator.supportsQuickConnect() - if offersQuickConnect { - await beginQuickConnect() - } else { - step = .credentials - } + // **Name und Passwort zuerst.** + // + // Hier sprang der Weg bisher von selbst in den Code-Fluss, sobald + // der Server ihn anbietet. Das war gut gemeint — dabei läuft kein + // Passwort durch diese App —, geht aber am Alltag vorbei: der Code + // muss in einem zweiten Gerät bestätigt werden, und wer gerade im + // Zug sitzt, hat das nicht offen. Ein Passwortspeicher füllt + // dagegen beide Felder in einer Sekunde. + // + // Der Code bleibt erreichbar: `offersQuickConnect` steuert den + // Knopf darunter, und der steht schon da. + step = .credentials return } diff --git a/Packages/FlixyKit/Sources/FlixyDesign/PlatformShims.swift b/Packages/FlixyKit/Sources/FlixyDesign/PlatformShims.swift index 1c62d49..e674f42 100644 --- a/Packages/FlixyKit/Sources/FlixyDesign/PlatformShims.swift +++ b/Packages/FlixyKit/Sources/FlixyDesign/PlatformShims.swift @@ -51,20 +51,18 @@ extension View { /// Auf dem Mac ist ein Blatt ein Fenster: dort zählt keine Rastung, /// sondern eine vernünftige Mindestgröße. public func flixyMediumSheet() -> some View { - #if os(iOS) - presentationDetents([.medium]) - #else - frame(minWidth: 420, minHeight: 460) - #endif + // **Zur Laufzeit, nicht beim Übersetzen.** Der `#else`-Zweig für + // macOS griff nie: auf dem Mac läuft der iOS-Bau, und damit bekam ein + // grosses Fenster eine Blattkante in iPhone-Höhe — ein schmaler + // Streifen, der unten im Nichts klebt. + presentationDetents(FlixyPlatform.isMac ? [.large] : [.medium]) } /// Dasselbe, aber auf Wunsch bis zur vollen Höhe aufziehbar. public func flixyResizableSheet() -> some View { - #if os(iOS) - presentationDetents([.medium, .large]) - #else - frame(minWidth: 460, minHeight: 520) - #endif + // Siehe oben. Auf dem Mac gibt es kein „halb aufgezogen": ein Fenster + // hat die Höhe, die es hat, und eine Liste soll sie nutzen. + presentationDetents(FlixyPlatform.isMac ? [.large] : [.medium, .large]) } /// Ein Formular, das auf beiden Seiten gleich aussieht.