User-Bug: Layout-Skip-Optimierung war zu aggressiv — Mac Rhino haelt die
Panel-Anordnung zwischen Sessions doch nicht im internen State, also
wurden Panels falsch platziert nach Quick-Restart. Skip-Logik raus, der
~3s _-WindowLayout-Apply laeuft wieder jedes Mal. Das ist OK weil der
Splash diese Wartezeit jetzt optisch abdeckt.
Splash verbessert:
- _try_borderless_mac(): direkter NSWindow-Zugriff via Eto.ControlObject
+ ObjC-Methoden (setStyleMask_, setOpaque_, setHasShadow_,
setBackgroundColor_, setMovableByWindowBackground_) — produziert
echten borderless Mac-Look wie der Launcher-Splash
- Form-BackgroundColor auf transparent damit das gradient des WebView-
HTMLs durchscheint (rounded petrol gradient mit weichem Verlauf)
- WebView selber transparenter Hintergrund
- Closeable/Minimizable/Maximizable/Resizable alle False
- [SPLASH] visible log fuer Debug-Sichtbarkeit
Verdeckt visuell die 3+ Sekunden Wartezeit beim Cold-Start (Panel-
Registration + WindowLayout-Apply). Stilistisch identisch zum
Launcher-Splash: petrol-gruener Verlauf mit "DOSSIER."-Logo, pulsierendem
Dot, animierter Progress-Bar.
Architektur:
- _startup_splash.py: zentrale show() / hide() Helpers
- Borderless Eto.Forms.Form (420x160), Topmost, kein Taskbar-Eintrag
- WebView mit Inline-HTML (gleicher Stil wie launcher/public/splash.html)
- Sticky-Key _dossier_startup_splash haelt die Form-Referenz
- Safety-Timeout 8s falls hide() vergessen wird
- startup.py _load_all: show() ganz am Anfang (bevor Imports laufen)
- oberleiste._on_ready: hide() via 200ms-Timer NACH window-layout-apply
(bzw. nach skip) — Layout-Animation ist auf Panels in Finalposition
kurz sichtbar bevor Splash verschwindet
Effekt: User sieht sofort einen schoenen Branded-Loading-Screen statt
3s grauer Rhino-UI mit halb-geladenen Panels.