M29: App-Einstellungen (Settings-Fenster ⌘,)
Neues natives macOS-Settings-Fenster mit Sprache, Auto-Update-Check,
Farbschema (Standard/Kontrastreich), echter Textgrößen-Skalierung,
Bedienelement-Größe und LAN-Scanner-Refreshraten/Sparkline-Einstellungen.
- AppPreferences.swift: zentrale AppStorage-Keys, ColorTheme/AppTextSize/
UIDensity
- SettingsView.swift: 3-Tab-Settings-Scene
- .environment(\.dynamicTypeSize) erwies sich auf macOS als wirkungslos
(per ImageRenderer-Snapshot bewiesen) — durch eigenen appFontScale-
Mechanismus ersetzt, ~110 .font(...)-Aufrufe app-weit umgestellt
- Farbschema auf Wunsch auch auf Experte-Tab-Sidebar ausgeweitet
- Docs aktualisiert: README/HANDOFF/CHATLOG/Manual.md+PDF, found.md
Live bestätigt nach mehreren Nachbesserungsrunden ("passt, lassen wir so").
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
+52
@@ -1845,3 +1845,55 @@ Release-Build, auf dem Stand des jeweils letzten Commits auf `main`
|
||||
(App-Icon "Signal Router"). Nach jeder weiteren Code-Änderung muss dieser
|
||||
Build-und-Kopier-Schritt (siehe oben) wiederholt werden, damit die
|
||||
installierte App aktuell bleibt.
|
||||
|
||||
**M29: App-Einstellungen / Settings-Fenster** (2026-09-17, komplett neue
|
||||
Infrastruktur, zuvor gab es nur den DE/EN-Toolbar-Schalter):
|
||||
|
||||
1. Natives macOS-Settings-Fenster (⌘,, `Settings { }`-Scene) statt eigenem
|
||||
Tab — Rückfrage vorab geklärt. Drei Tabs: Allgemein (Sprache,
|
||||
Auto-Update-Check beim Verbinden), Darstellung (Farbschema, Textgröße,
|
||||
Bedienelemente), Netzwerk (LAN-Scanner Aktualisierungsrate/
|
||||
Sparkline-Zeitfenster/-Breite). Zentrales `AppPreferences.swift`
|
||||
(`Core/Models/`) bündelt alle `AppStorage`-Keys + drei Enums
|
||||
(`ColorTheme`, `AppTextSize`, `UIDensity`).
|
||||
2. **Farbschema** (`ColorTheme`, 2 vordefinierte Themes Standard/
|
||||
Kontrastreich statt freier Farbwahl — bewusste Rückfrage-Entscheidung):
|
||||
ersetzt `OverviewStyle.color(for:)` für Übersicht-Node-Kategorien/
|
||||
Kanten, LAN-Scanner-Status (Traffic aktiv, Fest/Dynamisch, Port-Scan)
|
||||
und (auf Nachfrage nachgezogen) die Experte-Tab-Sidebar-Kategorien
|
||||
(13 `RouterOSMenuCategory`-Fälle auf die bestehende 5-Farb-Palette
|
||||
gebucketet, Firewall-Untermenüs → `.firewall`, VPN/WLAN/Queues/
|
||||
System/Tools → `.service`). Zwei Live-Test-Runden fanden echte Bugs:
|
||||
drei Farben waren anfangs in beiden Themes identisch definiert
|
||||
(Kopierfehler), und die LAN-Scanner-eigenen Statusfarben waren zu
|
||||
ähnliche SwiftUI-Nachbarfarben (grün/mint, orange/gelb) — beide
|
||||
gefixt, per `ImageRenderer`-Snapshot-Vergleich selbst verifiziert
|
||||
statt nur behauptet.
|
||||
3. **Textgröße** — erster Ansatz (`.environment(\.dynamicTypeSize, ...)`,
|
||||
SwiftUIs Standardmechanismus) erwies sich als kompletter Fehlschlag:
|
||||
per Snapshot-Vergleich bewiesen, dass diese Environment-Variable auf
|
||||
macOS **keine Wirkung** auf Text-Rendering hat (anders als iOS).
|
||||
Komplett neu gebaut: eigener `\.appFontScale`-Environment-Key +
|
||||
`AppFontStyle`-Enum mit expliziten macOS-Basis-Punktgrößen pro
|
||||
Textstil + `.appFont(...)`-Modifier. ~110 `.font(...)`-Aufrufe app-weit
|
||||
automatisiert umgestellt (Scratchpad-Skript, textbasierte Ersetzung),
|
||||
außer zwei fest-breiten Layout-Stellen (Übersicht-Diagramm-Knotenkarten,
|
||||
LAN-Scanner-Tabellenspalten), die beim Skalieren brechen würden.
|
||||
Danach noch ein Nachzügler-Fix: die Experte-Tab-Sidebar-Liste und alle
|
||||
Parameter/Wert-`TextField`s hatten von Anfang an gar kein `.font(...)`
|
||||
— automatisierte Ersetzung konnte dort nichts ersetzen. Fix: globaler
|
||||
Default-Font-Fallback (`.environment(\.font, ...)`) an der
|
||||
Fenster-Wurzel, wirkt überall dort, wo kein `.appFont(...)` bereits
|
||||
greift.
|
||||
4. **Bedienelemente/"Responsiveness"** (`UIDensity` → SwiftUIs
|
||||
`.controlSize`, an der Fenster-Wurzel) und **LAN-Scanner-Refreshraten/
|
||||
Sparkline-Fenster/-Breite** (`DevicesViewModel` liest die Werte bei
|
||||
jedem Poll-Tick frisch aus `UserDefaults`, nicht nur beim Start) auf
|
||||
Anhieb live bestätigt.
|
||||
5. Bewusst nicht umgesetzt: Übersicht-Zoom-Standardwert, Fokus-Popup-
|
||||
Größe/Verhalten (reine `@State`-Werte ohne Persistenz, nicht explizit
|
||||
gefordert). Für später vorgemerkt (`found.md` Punkt 9): freie
|
||||
Farbwahl pro Kategorie statt nur der 2 Themes.
|
||||
|
||||
Build+alle 98 Unit-Tests grün nach jedem Schritt. Live bestätigt
|
||||
("passt, lassen wir so").
|
||||
|
||||
Reference in New Issue
Block a user