Kacheln und Fenster sprechen dieselbe Sprache

Alle Kacheln, Popovers und Fenster auf die Designschicht umgestellt: rund
hundert gesetzte Schriftgrößen und 159 gesetzte Abstände und Radien sind jetzt
Token. Übrig bleibt `spacing: 0` — das ist eine Aussage, keine geratene Zahl.

Die Einstellungen bekommen eine Seitenleiste statt sieben Reitern, deren
deutsche Beschriftungen zusammen 880 Punkte brauchten. Panel-Token stehen nicht
mehr in Fenstern: dort gilt Systemsemantik, damit der Hellmodus nicht schwarz
auf schwarz endet.

Neu ist ein Schaufenster, das alle Bauteile nebeneinander zeigt — ohne das
lässt sich eine Änderung an einem Token nur prüfen, indem man die App bedient,
bis jede Kachel einmal zu sehen war.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-09-05 21:05:51 +02:00
co-authored by Claude Opus 5
parent 9b600de9a9
commit edb327cabe
32 changed files with 3677 additions and 968 deletions
+26
View File
@@ -0,0 +1,26 @@
import AppKit
/// Wohin ein Fenster von Onyx gehört.
///
/// `NSWindow.center()` setzt etwas **oberhalb** der Bildschirmmitte. Bei einem
/// nicht sehr hohen Fenster landet der Schließknopf damit knapp unter der
/// Menüleiste — wer ihn treffen will, fährt durch die Auslösefläche der Notch
/// und hat plötzlich das Panel vor sich.
///
/// Das gilt für jedes Fenster, das Onyx aufmacht, nicht nur für die
/// Einstellungen. Deshalb steht es hier und nicht in einem der Controller.
enum OnyxWindowPlacement {
/// Wirklich mittig, nicht „etwas unterhalb der Notch".
///
/// Ein erster Versuch mit 60 Punkten Abstand zur Oberkante war zu zaghaft:
/// der Titelbalken lag weiter so hoch, dass man auf dem Weg zu seinen
/// Knöpfen durch die Auslösefläche fuhr.
static func center(_ window: NSWindow) {
guard let screen = window.screen ?? NSScreen.main else { window.center(); return }
let visible = screen.visibleFrame
let size = window.frame.size
window.setFrameOrigin(NSPoint(x: visible.midX - size.width / 2,
y: visible.midY - size.height / 2))
}
}