Commit Graph

2 Commits

Author SHA1 Message Date
Scarriffle
49a3ff0548 Panel je Bildschirm messen, nicht am schmalsten
Die Breite kam vom **schmalsten** aktiven Bildschirm — mit der Begründung,
dasselbe Panel erscheine überall. Ein Fernseher widerlegt das: bei 720 Punkten
Breite bleiben drei Spalten, vier Widgets brechen auf zwei Reihen um, und das
Panel wird hoch statt breit. Auf dem Notebook, wo achtmal Platz gewesen wäre.

Jetzt rechnet jeder Bildschirm für sich. Der Koordinator kennt seine
Bildschirme ohnehin und reicht die Kennung schon durch — sie wurde nur nicht
benutzt.

Die zweite Hälfte war, dass es nach dem Abstecken so blieb: die Größe wurde
einmal gerechnet und nie wieder. `NSScreen` meldet sich nicht bei SwiftUI,
also gibt es jetzt einen mitgezählten Bildschirmwechsel, den die Ansicht
mitliest, und beim Wechsel werden die Fenstergrößen neu gesetzt — verzögert um
einen Durchlauf, damit der Koordinator seine Fenster vorher neu aufgebaut hat.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-18 19:59:46 +02:00
Guido Schmit
fbe13fd1cb Phase 1: Notch-Shell, Design-System, Menüleisten-Infrastruktur
Zustandsmaschine und Geometrie sind testgetrieben entstanden und tragen 40
Tests — sie sind frei von AppKit, damit jeder Übergang ohne Fenster und ohne
Warten prüfbar ist. Zeit kommt nur als Ereignis herein.

Zwei Entscheidungen, die im Code begründet sind:

Der Zeiger wird über einen globalen Ereignismonitor verfolgt, nicht über ein
unsichtbares Fenster auf der Notch. Ein solches Fenster müsste Mausereignisse
annehmen, um sie zu bemerken, und würde damit Menüleiste und Fensterknöpfe
darunter unbenutzbar machen.

"Nur internes Display" fällt auf ein externes zurück, wenn kein eingebautes da
ist. Am Dock mit geschlossenem Deckel hieße die Einstellung wörtlich genommen,
dass Onyx unerreichbar wird.

Design: NSVisualEffectView mit eigenem Tint statt Liquid Glass — Onyx ist Stein,
kein Glas. Alle Farben und Maße liegen als Tokens in OnyxDesign.

Menüleiste: jedes Modul bekommt ein eigenes NSStatusItem. Elemente, denen macOS
mangels Platz keine Breite gibt, werden erkannt und gemeldet, statt still zu
verschwinden.

App-Target über XcodeGen, damit die Projektdefinition im Diff lesbar bleibt.
Nicht sandboxed, mit App-Group-Entitlement — baut, startet, signiert mit
PP34X97WS3.
2026-08-10 17:17:16 +02:00