Name und Passwort zuerst, und Blätter in Fenstergrösse

**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 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-09-27 18:27:38 +02:00
co-authored by Claude Opus 5
parent 8ff74ed4fa
commit 4abce1c8b9
2 changed files with 20 additions and 15 deletions
+12 -5
View File
@@ -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
}
@@ -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.