M14: Update-Check (Software+Firmware) + Karten-Design fuer Sektionen

Verbinden-Tab zeigt jetzt die volle Routerboard-Info (Modell/Revision/
Seriennummer/Firmware, aus /system routerboard) sowie einen
RouterOS-Software-Update-Check (/system package update: Kanal/
installierte/neueste Version/Status, "Jetzt pruefen"/"Update
installieren"), dazu "Firmware aktualisieren" fuer die
Routerboard-Bootloader-Firmware und "Jetzt neu starten" danach. Alle
vier Aktionen live bestaetigt, inklusive der zuvor unsicheren Frage, ob
/system routerboard upgrade's normalerweise interaktive Bestaetigung
den nicht-interaktiven SSH-Weg dieser App blockiert (tut es nicht).

Bug 20 gefunden und gefixt: fetchMenuItems' Singleton-Fallback (Bug 8)
reagierte nur auf eine geworfene Exception fuer "bad parameter terse",
aber RouterOS liefert diesen Fehler fuer /system routerboard mit
Exit-Code 0 zurueck (dasselbe Bug-10-Muster, diesmal beim Lesen statt
Schreiben) - die Routerboard-Sektion blieb dadurch leer, ohne Fehler.
Fix: zusaetzlich den Output-Text selbst pruefen, nicht nur die Exception.

Design-Durchgang: Verbinden-Detailseite/Sicherungen/Geraete liefen auf
nackter List ohne Rahmen - umgestellt auf Form+.formStyle(.grouped),
denselben nativen macOS-Karten-Look, den Wizard und Experte-Tab schon
hatten, fuer eine einheitliche App. Dark Mode auf Nachfrage gepueft und
ohne Codeaenderung bestaetigt funktionierend.

HANDOFF.md/CHATLOG.md aktualisiert: M14, Bug 20, Design-Durchgang,
Dark-Mode-Bestaetigung.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CTgRxJTzaQwaRkngbaE1GJ
This commit is contained in:
Kay
2026-09-14 16:34:50 +02:00
co-authored by Claude Sonnet 5
parent 20f8d5e0bf
commit e72da84843
10 changed files with 629 additions and 27 deletions
+46
View File
@@ -630,3 +630,49 @@ sind dadurch hinfällig, siehe HANDOFF.md Nächste Schritte. Offen bleibt
weiterhin die `.id`-Positionsüberlagerungs-Frage für den Experte-Tab
(Bug 15) und alle länger schon offenen Punkte (M7-Rest, M8-Hardware-
Test, WLAN/Bonding/PPPoE-Live-Tests).
## Session: Update-Check (M14) + Design-Durchgang
- "ok, sieht gut aus. weiter mit der Update-Überprüfung." — mehrdeutig
(RouterOS-Software vs. Routerboard-Firmware), per `AskUserQuestion`
geklärt: "Beides". Vorher per Recherche-Agent geprüft: `/system
package update` (Felder channel/installed-version/latest-version/
status, check-for-updates dann install, install reboot automatisch)
und `/system routerboard upgrade` (braucht in Winbox normalerweise
y/n-Bestätigung, kein automatischer Reboot danach).
- Gebaut: Routerboard-Vollinfo + Software-Update-Sektion im
Verbinden-Tab, "Firmware aktualisieren" mit Warnhinweis zur unsicheren
Interaktivitäts-Frage.
- "davon sehe ih nichts, CMD+Q wurde ausgeführt und app neugestartet" →
"nur die neue 'Routerboard'-Sektion fehlt" → gemeinsam per SSH
verifiziert (`/system routerboard print terse` → "bad parameter
terse"), dann über den Experte-Tab denselben generischen Lesepfad
getestet ("Unerwsrtete Antwort vom Router: bad commandname add" beim
Anlegen-Versuch, Liste vorher leer) — Bug 20 gefunden: der bestehende
Singleton-Fallback (Bug 8) reagiert nur auf eine geworfene Exception,
aber RouterOS liefert "bad parameter terse" für dieses Menü mit
Exit-Code 0 zurück, landet also als normaler leerer Output. Fix:
zusätzlich den Output-Text selbst prüfen. "ok, sieht gut aus" danach.
- "sieht gut aus, der Button 'Firmware aktualisieren' funktioniert
auch?" — ehrlich beantwortet: kann ich nicht bestätigen ohne Live-Test.
Nutzer testete, Konsolen-Ausgabe geteilt ("Firmware upgraded
successfully, please reboot for changes to take effect!") — die
interaktive Bestätigung blockierte den SSH-Weg nicht, wie gehofft.
"ja, bau das" → "Jetzt neu starten"-Button ergänzt, ebenfalls sofort
funktionierend gemeldet.
- "ok, jetzt zum Design. ich hätte gerne die einzelnen Sektionen
sauberer getrennt - Trennstriche oder Rahmen um die Sektionen." — per
`AskUserQuestion` Umfang ("ganze App") und Stil ("Karten mit Rahmen")
geklärt. Geprüft: Wizard-Schritte und Experte-Tab nutzten schon
`.formStyle(.grouped)` (nativer macOS-Karten-Look), nur Verbinden-
Detailseite/Sicherungen/Geräte liefen auf nackter `List` — auf
`Form`+`.formStyle(.grouped)` umgestellt statt eine eigene
Karten-Komponente zu bauen.
- "wie sieht es mit einem Darkmode aus?" — Code geprüft (keine
`.preferredColorScheme`-Überschreibung, kein
`NSRequiresAquaSystemAppearance`, nur adaptive System-Farben) und
bestätigt: funktioniert schon ohne Codeänderung. Nutzer bestätigte
nach eigenem Test ("passt super und funktioniert").
- "ja, committen und beides aktualisieren" → dieser Eintrag, HANDOFF.md
(M14, Bug 20, Design-Durchgang, Dark-Mode-Bestätigung) aktualisiert,
Commit erstellt.