Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
f2dd7e790e
commit
cfd2ff344b
1 file changed
+72
@@ -0,0 +1,72 @@
|
||||
# Session Handoff: UI-Rework Lösung A (Bereichs-Navigation)
|
||||
|
||||
**Datum:** 2026-10-18 **Projekt:** `R:\CC-Projekte\Mikrotik-Installer` **Commit:** `f2dd7e7` (gepusht nach Gitea `origin`, schließt #72)
|
||||
|
||||
## Aktueller Stand
|
||||
|
||||
**Aufgabe:** Das Interview (lineare Schrittkette mit Bereichswahl) wurde durch eine Seitenleiste mit frei anklickbaren Bereichen ersetzt.
|
||||
**Phase:** Fertig umgesetzt und gegen die Testumgebung geprüft, noch nicht am echten Router.
|
||||
**Fortschritt:** 100 % Code und Doku. Die Release-Exe ist noch **nicht** neu gebaut.
|
||||
|
||||
## Was gemacht wurde
|
||||
|
||||
Der Nutzer hat die HTML-Vorschau (Artifact https://claude.ai/artifact/MFPPizmpZjn4LqBsLpdkz7) freigegeben („bau es als lösung a“). Daraufhin wurden `MainViewModel` und `MainWindow` neu geschrieben, die Einrichtungsschritte in einen eigenen Assistenten (`SetupWizardViewModel`) verschoben und Hilfe/Einstellungen von Fenstern zu Seiten umgebaut. README, Handbuch DE/EN und die Übersetzungen (EN/PT) sind nachgezogen.
|
||||
|
||||
## Entscheidungen
|
||||
|
||||
- **Bereiche statt Interview:** Start, Einrichten, Übersicht, Geräte, Backup & Wartung, Experte. Hilfe und Einstellungen stehen unten. Experte ist nur mit „Professioneller Netzwerker“ (`UserSettings.ProfessionalMode`) sichtbar.
|
||||
- **Ohne Verbindung** zeigt `CurrentPage` die Verbinden-Seite. Die Bereiche sind gesperrt, Hilfe und Einstellungen gehen immer.
|
||||
- **Pages werden bei jeder Verbindung neu erzeugt** (privater record `Pages` in `MainViewModel`), und `WizardSession.ResetPlan()` setzt den Plan zurück. So wird nichts vom vorherigen Gerät angewendet.
|
||||
- **Zusammenfassung enthält nur besuchte, gültige Schritte**, weil Schritte jetzt übersprungen werden können.
|
||||
- **Erneuter Klick auf einen Bereich lädt ihn neu** (`NavigateCommand`).
|
||||
- **RouterOS-Update** steht jetzt auf der Startseite (`StartViewModel` = Gerät + Update).
|
||||
- **Einrichten scrollt selbst** (`PageScrolls = false`), weil Zurück/Weiter fest unten stehen.
|
||||
|
||||
## Code-Änderungen (Commit `f2dd7e7`)
|
||||
|
||||
- `src/MikrotikInstaller.App/ViewModels/AppArea.cs`: enum `Start, Setup, Overview, Devices, Backup, Expert, Help, Settings`
|
||||
- `ViewModels/MainViewModel.cs`: neu. `Connection`, `Area`, `CurrentPage`, `PageTitle`, `PageScrolls`, `ShowExpert`, `NavigateCommand`, `SwitchConnectionCommand`, `QuickConnectCommand`, 30-s-Herzschlag. GoNext/GoBack/Finish/CloseRequested entfernt.
|
||||
- `ViewModels/SetupWizardViewModel.cs`: neu. Schritte Mode → Wan → Lan → Vlan → Wlan → Firewall → Summary, `StepNavItems` (Haken = besucht), `GoToStepCommand(int)`.
|
||||
- `ViewModels/StartViewModel.cs`: neu.
|
||||
- `WizardSession.cs`: `SelectedArea` entfernt, `ResetPlan()` neu.
|
||||
- Step-ViewModels: `SelectedArea`-Bedingungen aus `ShouldSkip` entfernt. Mode wird ohne ProfessionalMode übersprungen, WLAN ohne WLAN-Hardware.
|
||||
- `AreaSelectionStepViewModel` und seine View gelöscht.
|
||||
- `SettingsViewModel`: `Saved`-Event ersetzt durch `StatusMessage` („Gespeichert.“).
|
||||
- Views: `HelpView.xaml` und `SettingsView.xaml` (vorher Fenster), dazu neu `StartView.xaml` und `SetupWizardView.xaml`. DataTemplates stehen in `App.xaml`.
|
||||
- `MainWindow.xaml`: `NavItem`-RadioButton-Stil mit `EnumToBooleanConverter`. **Fix:** Der Papierkorb bei bekannten Routern bindet jetzt an `DataContext.Connection.RemoveSavedRouterCommand` (vorher totes Binding).
|
||||
- Übersetzungen: 12 neue Schlüssel, insgesamt 1007, alle in EN/PT übersetzt. Die alten Schlüssel der Bereichswahl sind entfernt.
|
||||
- Doku: README (Abschnitt „Bedienung: Bereiche statt Interview“), `docs/Handbuch.md` und `docs/Handbook.en.md` (Kapitel 2 „Bereiche“/„Areas“).
|
||||
|
||||
## Tests
|
||||
|
||||
- Build: 0 Fehler, 0 Warnungen. 209 Core-Tests grün.
|
||||
- WPF-Smoke-Harness: auf Deutsch alles grün, auf Englisch nur die drei bekannten Fehlschläge durch deutsche Textvergleiche (10-Minuten-Hinweis, Ping, Port-in-Bridge-Plan).
|
||||
- **Achtung:** Der Harness liegt nur im Session-Scratchpad (`C:\Users\Daniel\AppData\Local\Temp\claude\R--CC-Projekte-Mikrotik-Installer\05e4763f-93ba-4c02-9f0a-a33e13b15aed\scratchpad\wpf-smoke\`) und ist nicht im Repo. Er kann jederzeit verschwinden. Er nutzt die Helfer `ConnectAsync(host)`, `OpenAsync(vm, AppArea)` und `RenderWindow(window, png)` gegen die Demo-Hosts 127.127.127.128/129.
|
||||
- Der Harness schreibt in die echten AppData-Dateien. Deshalb stehen die Testrouter 127.127.127.127–129 in „Bekannte Router“. Bei Bedarf in der App entfernen.
|
||||
|
||||
## Bekannte Kleinigkeiten
|
||||
|
||||
- Ohne Verbindung erscheint „Start“ in der Seitenleiste gedimmt als ausgewählt (rein optisch).
|
||||
|
||||
## Kontext
|
||||
|
||||
- Gitea `origin` = `ssh://git@192.168.1.222:2222/admin/Mikrotik-Installer.git`, Web http://192.168.1.222:3666. **Nie** nach `github` pushen. `tea` funktioniert (`--repo admin/Mikrotik-Installer`).
|
||||
- Arbeitsweise: Tests grün → committen → nach origin pushen → README und Doku aktualisieren.
|
||||
- Antworten auf Deutsch mit Umlauten.
|
||||
- `found.md` im Projekt-Root ist das lokale Backlog und liegt nicht in Git.
|
||||
- Vorheriger Handoff: `.claude/handoffs/2026-10-16-mac-abgleich-v1.11.md` (Mac-Abgleich v1.11.4, P1–P42).
|
||||
|
||||
## Nächste Schritte
|
||||
|
||||
1. [ ] Release-Build neu erstellen: `build-release.ps1` → `src\MikrotikInstaller.App\bin\Release\net8.0-windows\win-x64\publish\MikroTik-Installer.exe`. Vorher eine laufende alte Instanz schließen (sperrt die exe).
|
||||
2. [ ] Neue Oberfläche in EN und PT von Hand durchklicken.
|
||||
3. [ ] Optional: die gedimmte „Start“-Auswahl ohne Verbindung beheben.
|
||||
4. [ ] Echtgerät-Prüfung (#71, außerdem #1, #2, #17, #30, #32), wartet auf Hardware.
|
||||
5. [ ] Entscheidung zu #26 und #20, v1.1-Housekeeping (#3, #4, #5), #18.
|
||||
|
||||
## Dateien zum Einlesen
|
||||
|
||||
- `src/MikrotikInstaller.App/ViewModels/MainViewModel.cs`: Navigation und Verbindungslebenszyklus
|
||||
- `src/MikrotikInstaller.App/ViewModels/SetupWizardViewModel.cs`: Einrichtungsassistent
|
||||
- `src/MikrotikInstaller.App/MainWindow.xaml`: Seitenleiste und Inhaltsbereich
|
||||
- `src/MikrotikInstaller.App/WizardSession.cs`: `ResetPlan()`
|
||||
Reference in new issue
Block a user