Fix crash when desktop config JSON is deleted: self-heal from board
server.py and desktop_viewer.py read-only mode required the desktop config JSONs to exist and crashed/showed "Config-Datei fehlt" if one was deleted, even though the board already holds the config durably in NVM. Add versapad_combined.fetch_from_board()/load_or_fetch(): a missing combined JSON is now transparently rebuilt from the board via serial and cached back to disk, falling back to the legacy per-profile JSONs (or a clear error) only when the board is unreachable.
This commit is contained in:
parent
8a2a73c68d
commit
540ce5b1eb
4 changed files with 104 additions and 10 deletions
14
AGENTS.md
14
AGENTS.md
|
|
@ -93,6 +93,20 @@ Dokumentation und Verifikation unten für die Größeneinschätzung).
|
|||
vorhanden, und fällt sonst auf die klassischen `versapad_config{1,2,3}.json`
|
||||
zurück — beide Ansichten müssen dieselbe Quelle zeigen, sonst wirkt eine
|
||||
Bearbeitung "verschwunden".
|
||||
- **Bug behoben 2026-08-08:** `server.py` (`vp.load_profile()`) und
|
||||
`desktop_viewer.py` (`_current_profile_view()`) lasen im Nur-Lese-Modus
|
||||
hart von den Desktop-JSONs -- fehlten sie (z.B. User loescht sie), gab es
|
||||
eine ungefangene `FileNotFoundError` bzw. "Config-Datei fehlt"-Anzeige,
|
||||
obwohl das Board die Config laengst dauerhaft im NVM haelt. Fix: neue
|
||||
`versapad_combined.fetch_from_board()`/`load_or_fetch()` -- fehlt die
|
||||
Kombi-JSON, wird sie automatisch per Serial vom Board neu aufgebaut und
|
||||
als Cache gespeichert (self-healing), nur bei unerreichbarem Board (Port
|
||||
belegt/kein Board) bleibt der Fallback auf die alten Einzel-JSONs bzw.
|
||||
eine Klartext-Fehlermeldung. In `desktop_viewer.py` nur versucht, wenn
|
||||
Live-Sync aus ist (sonst haelt der Serial-Hintergrundthread den
|
||||
COM-Port -- zwei gleichzeitige Zugriffe auf denselben `self.ser` waeren
|
||||
eine Race Condition). Die Desktop-JSONs sind damit reiner Lesecache, kein
|
||||
Pflegeaufwand mehr fuers Board-Backup.
|
||||
- **Bug behoben 2026-08-07:** `_on_toggle_editing()` initialisierte
|
||||
`self.combined` beim ersten Aktivieren des Programmiermodus mit
|
||||
`vcomb.default_combined()` — das seedet ALLE 3 Profile aus den alten
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue