You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+30Lines changed: 30 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,6 +7,36 @@ und dieses Projekt folgt [Semantic Versioning](https://semver.org/lang/de/).
7
7
8
8
---
9
9
10
+
## [1.6.2.2] - 2026-08-14
11
+
12
+
### ✨ Hinzugefügt / 🔧 Geändert
13
+
14
+
#### 🗄️ NodeDB-Reset: Abfrage-Dialog mit Optionen
15
+
- Der Button „NodeDB zurücksetzen" (Geräte-Einstellungen **und** Remote-Admin) öffnet jetzt einen Dialog mit zwei Häkchen statt einer simplen Ja/Nein-Abfrage:
16
+
-**Favoriten ebenfalls löschen** — steuert das `nodedb_reset`-Bool: Standard behält Favoriten (`true`), angehakt löscht sie (`false`). Firmware-Abgleich ergab: der Bool-Wert ist genau `keepFavorites` in `resetNodes()`. Hinweis im Dialog: Router/Client-Base behalten Favoriten firmwareseitig immer.
17
+
-**Interne Node-DB dieses Clients ebenfalls zurücksetzen** — leert zusätzlich die lokale Node-Liste (In-Memory) + Karten-Pins; Nachrichten-/Telemetrie-History bleibt.
18
+
-**Korrektur der Beschreibungen:** Texte sagten „alle bekannten Nodes werden vergessen", obwohl Favoriten erhalten blieben — jetzt korrekt formuliert. Der Geräte-Reset löst wie zuvor einen **Reboot** aus (kein Shutdown).
19
+
- Der hartcodierte Dialogtext wurde durch i18n-Strings (DE/EN) ersetzt.
20
+
21
+
### 🐛 Behoben
22
+
23
+
#### 🗺️ „Auf Karte zeigen" zentrierte die Vector-Map nicht
24
+
- Bei aktiver **Vector-Map** (MapLibre/WebView2) öffnete „Auf Karte zeigen" zwar die Karte, sprang aber **nicht** auf die Node-Position — die Zentrierung lief nur über die Mapsui-**Rastermap**. Jetzt zentriert ein gemeinsamer Helfer (`CenterMapOnNode`) **beide** Karten (Raster via `CenterOnAndZoomTo`, Vector via `setCenter`). Betrifft alle drei Einstiege (Node-Kontextmenü, Nachrichten-Kontextmenü, Alert-Button). Öffnet der Klick die Vector-Map erstmalig, wird das Ziel gepuffert und nach dem Laden angewandt.
25
+
26
+
#### 🔓 PKI-DMs werden sofort entschlüsselt, wenn wir den Key haben (Flag-unabhängig)
27
+
- Der sofortige client-seitige PKI-Entschlüsselungsversuch war an `packet.PkiEncrypted` gekoppelt. Die Firmware setzt dieses Flag aber auf `false`, sobald der **eigene** Node nicht entschlüsseln konnte (Router.cpp:814) — z.B. nach einem **NodeDB-Reset**, wenn dessen nodedb den Sender-Key nicht mehr hat. Dadurch wurden PKI-DMs gepuffert und nicht entschlüsselt, **obwohl der Client den Key besitzt**.
28
+
- Jetzt versucht der Client PKI-Entschlüsselung für **jede DM an uns**, sobald Private- und Sender-Key vorliegen — unabhängig vom Flag (sicher, da AES-CCM tag-verifiziert ist). Telemetrie/DMs von Nodes, deren Key wir kennen (der Node aber nach Reset nicht), gehen so sofort auf statt im Puffer zu landen.
29
+
30
+
#### 📨 Request-Antworten werden nach Portnum verarbeitet (nicht mehr als „verschlüsselte DM")
31
+
- Antworten auf `want_response`-Anfragen (UserInfo/Position/Telemetrie/PaxCounter) kommen teils verschlüsselt zurück: **Telemetrie/Pax** PKI-verschlüsselt (der Node hat unseren Key aus der Anfrage, uns fehlt seiner → Henne-Ei), **NodeInfo/Position** kanal-verschlüsselt (Firmware schließt diese Portnums von PKI aus, Router.cpp:1053). Konnte unser Node sie nicht entschlüsseln, landeten sie pauschal als „[Encrypted message]" im Chat und wurden beim Entschlüsseln nur akzeptiert, wenn es Text war.
32
+
- Jetzt: ein gepuffertes Paket wird nach Entschlüsselung **nach Portnum geroutet** (`DispatchLateDecrypted` → `RouteDecodedData`) — NodeInfo/Position/Telemetrie/… gehen in die normale Verarbeitung (Node/Key/Telemetrie werden übernommen), nur echter Text (Portnum 1) erscheint als DM.
33
+
-**Zusätzlich:** Kommt eine verschlüsselte Antwort kurz nach einer **expliziten** Info-Anfrage an denselben Node (≤30 s), wird sie als Request-Antwort erkannt, gepuffert und **nicht** mehr als Chat-Platzhalter angezeigt (und löst keine weitere NodeInfo-Anfrage aus). Hinweis: `pki=False` im Log ist irreführend — die Firmware setzt das Flag zurück, sobald der eigene Node nicht entschlüsseln konnte (Router.cpp:814).
34
+
35
+
#### 📏 Node-Namen-Spalte folgt jetzt der Spaltenbreite
36
+
- Die Namensspalte in der Node-Tabelle war hart auf 155 px gedeckelt (`MaxWidth`) und saß in einem `StackPanel` — beim Verbreitern der Spalte wurde der Name trotzdem abgeschnitten. Das Cell-Template nutzt jetzt ein `Grid` (Auto + `*`) ohne `MaxWidth`, und die Zeilen strecken sich auf die Spaltenbreite (`HorizontalContentAlignment=Stretch`). Der Name folgt jetzt der Spaltenbreite (Ellipsis) und zeigt per Tooltip den vollen Namen.
"NodeDB zurücksetzen?\n\nDas löscht alle bekannten Nodes auf dem Gerät.\nDie eigene Konfiguration bleibt erhalten.\n\nDas Gerät wird danach neu starten.",
923
-
"NodeDB zurücksetzen",
924
-
MessageBoxButton.YesNo,
925
-
MessageBoxImage.Warning);
926
-
if(result!=MessageBoxResult.Yes)return;
921
+
vardlg=newNodeDbResetDialog{Owner=this};
922
+
if(dlg.ShowDialog()!=true)return;
927
923
928
924
try
929
925
{
930
-
await_protocolService.ResetNodeDbAsync();
931
-
UpdateStatus("NodeDB-Reset gesendet. Gerät startet neu...");
932
-
Logger.WriteLine("NodeDB reset sent");
926
+
// nodedb_reset value == keepFavorites (firmware: resetNodes(keepFavorites)).
927
+
// The checkbox asks to WIPE favorites, so keepFavorites = !WipeFavorites.
0 commit comments