Changelog

Meshhessen Client – Versionshistorie / Version History

← Zurück / Back GitHub Releases
v1.6.2.5 2026-08-30 Tile-Download folgt dem Karten-Modus

Bugfix: Das Offline-Laden von Kacheln nutzte immer die „Tile-Server URL", egal welcher Karten-Modus gewählt war.

🗺️ Tile-Download

  • Download ignorierte den Karten-Modus — es wurde immer die Custom-URL aus dem Feld „Tile-Server URL" verwendet, unabhängig von Modus und Quell-Auswahl (osm/topo/dark). Die Custom-URL ist jetzt nur im Modus „Eigener Tile-Server" aktiv; alle anderen Modi laden vom quellenrichtigen Server (Meshhessen bzw. public OSM). Download und Kartenabfrage sind damit konsistent.
v1.6.2.4 2026-08-22 Kanal-Anzeige, Reply-Kanal & Debug-Scroll

Mehrere Fixes rund um Kanäle und das Debug-Log.

🐛 Behoben

  • Kanal-Anzeige im Backlog zeigte teils „Kanal N" statt des Kanalnamens — jetzt einheitlich aus dem aktuellen Kanal-Index aufgelöst und beim Eintreffen der Kanäle neu berechnet.
  • Reply wechselt wieder auf den Kanal der Nachricht — „Antworten" schaltet den aktiven Kanal auf den um, auf dem die Nachricht empfangen wurde (Live und Backlog).
  • Debug-Log Auto-Scroll sprang nach oben statt dem Ende zu folgen — Reihenfolge korrigiert: erst trimmen, dann ans Ende scrollen.
v1.6.2.3 2026-08-16 Alert-Bell, verschlüsselte Antworten & Karten-Feinschliff

Sammel-Release mit mehreren Fixes: der Alert-Bell löst endlich den Hardware-Alert aus, Antworten auf Info-Anfragen werden korrekt verarbeitet, und ein paar Karten-/Listen-Themen sind bereinigt.

🔔 Alert-Bell

  • Alert-Bell sendet jetzt das ASCII-Steuerzeichen 0x07 — nur das löst den Hardware-Alert der empfangenden Nodes aus (die Firmware prüft darauf); zuvor wurde nur das 🔔-Emoji verschickt. Der eigene Alert erscheint jetzt auch im Chat.

🔐 Verschlüsselte Antworten & Nodes

  • Antworten auf Info-Anfragen (NodeInfo/Telemetrie/Position) werden nach Portnum verarbeitet statt fälschlich als „verschlüsselte Nachricht" im Chat zu landen
  • PKI-DMs werden sofort entschlüsselt, wenn wir den Key haben — auch wenn der eigene Node ihn (z.B. nach NodeDB-Reset) nicht mehr kennt

🗺️ Karte & Liste

  • „Auf Karte zeigen" zentriert jetzt auch die Vector-Karte (MapLibre), nicht nur die Rasterkarte
  • Node-Namen-Spalte folgt wieder der Spaltenbreite (Ellipsis + Tooltip statt harter Abschnitt)
v1.6.2.1 2026-08-13 Bunte Emoji & Picker-Fix

Kleiner Feinschliff rund um Emojis: Sie erscheinen jetzt farbig in Node-Namen und im Chat, und der Reaction-Picker zeigt wieder echte Emojis statt „??".

🌈 Emoji

  • Bunte Emoji in Node-Namen und Chat — farbige Darstellung in Node-Kachel- und Tabellenansicht, Kanal-Tabelle sowie bei Absendernamen im Kanal-Chat und in DM-Blasen

😀 Behoben

  • Emoji-Picker zeigte „??" statt Emojis — die Emoji-Liste liegt jetzt zentral und codepunkt-basiert in EmojiPalette.cs und kann nicht mehr durch Nicht-UTF-8-Speicherung kaputtgehen
v1.6.2 2026-08-11 Verschlüsselte DMs, Namensauflösung & Chat-Feinschliff

Rund um verschlüsselte Direktnachrichten und den Chat: Die client-seitige PKI-Entschlüsselung wurde grundlegend korrigiert, unbekannte Absender lösen sich automatisch auf, und die Nachrichten-Sortierung beim Verbinden stimmt wieder.

🔐 Verschlüsselte Nachrichten

  • PKI-Entschlüsselung korrekt umgesetzt (AES-CCM statt CTR, inkl. extra-Nonce & Auth-Tag) — verschlüsselte DMs lassen sich client-seitig überhaupt erst entschlüsseln
  • Fehlt der Schlüssel des Absenders, wird er aktiv angefordert und die Nachricht nachträglich entschlüsselt (Puffer übersteht Neustarts, plus 🔑-Button zum manuellen Anstoß)
  • Anfragen gehen auf dem richtigen Kanal raus (erreicht auch nur über MQTT gehörte Nodes) und senden unseren Public Key gleich mit

💬 Chat & Nodes

  • Unbekannte Absender werden still per NodeInfo aufgelöst und angezeigte „Unknown"-Nachrichten nachträglich auf den echten Namen aktualisiert
  • Chat-Sortierung beim Verbinden/History-Laden wieder chronologisch (Kanal & DMs)
  • Reaction-Tooltip zeigt jetzt, wer reagiert hat; Positionen unbekannter Nodes werden gepuffert statt verworfen
v1.6.1.1 2026-08-11 Verschlüsselte DMs nachträglich entschlüsseln

Eine per PKI verschlüsselte Direktnachricht, für die uns noch der öffentliche Schlüssel des Absenders fehlt, wird jetzt erkannt: Der Client fordert aktiv dessen NodeInfo an und entschlüsselt die Nachricht nachträglich, sobald der Schlüssel eintrifft – die Sprechblase wechselt automatisch vom Platzhalter zum Klartext. Nur für Direktnachrichten (Kanäle sind hiervon nicht betroffen).

🔓 Nachrichten

  • Nicht entschlüsselbare PKI-Direktnachricht wird gepuffert; die NodeInfo des Absenders wird aktiv angefordert (rate-limitiert, nur bei DMs)
  • Nach Schlüsselempfang wird die Nachricht entschlüsselt und die bereits angezeigte Sprechblase in place aktualisiert – auch der gespeicherte Datenbank-Eintrag
  • Abgesichert durch einen End-to-End-Test (echter X25519-Roundtrip nach RFC 7748)
v1.6.1.0 2026-08-08 Textformatierung in Nachrichten

Nachrichten unterstützen jetzt das Meshtastic-Formatierungs-Subset – im Chat wie in DMs, für empfangene und eigene Nachrichten. Die Marker-Zeichen zählen weiter zum Längenlimit; nur die Darstellung ändert sich.

📝 Textformatierung

  • **fett**, *kursiv*, ~~durchgestrichen~~, `monospace` und [Linktext](https://…) werden gerendert; nackte URLs bleiben klickbar
  • Format-Leiste am Eingabefeld (B / I / S / </> / 🔗) umschließt den markierten Text – respektiert das Zeichenlimit
v1.6.0.1 2026-07-31 Virtuelle Node: Node-/Kanalliste erreicht Apps zuverlässig

Die virtuelle Node übertrug an verbundene Apps über BLE dauerhaft 0 Kanäle / 0 Nodes, über Serial erst nach einer Recovery. Ursache und Fix liegen in der Datenquelle des Replays.

🔀 Virtuelle Node

  • Transportunabhängiger Gerätestand-Snapshot (my_info, Metadata, Configs, Kanäle, Nodes) über Serial, BLE und TCP – für die gesamte Verbindung vorgehalten
  • Replay funktioniert jetzt unabhängig davon, wann die virtuelle Node aktiviert wird; klarer Hinweis, falls noch kein vollständiger Stand vorliegt
  • Fehlt der eigene Node des Geräts im Stream, wird er aus my_info ergänzt (Android braucht ihn für Node-Liste/Senden)
v1.6.0 2026-07-30 Offizielle Meshtastic-Protobufs, Tests & CI

Umstieg von den selbstgebauten auf die offiziellen Meshtastic-Protokolldefinitionen (als git-Submodule eingebunden) – beseitigt an der Wurzel die wiederkehrende Fehlerklasse falscher Feldnummern und hält den Client im Gleichschritt mit der Firmware. Dazu ein neues automatisiertes Testprojekt und CI, die jeden Push prüfen.

🔧 Geändert (intern)

📦 Offizielle Meshtastic-Protobufs
  • Offizielle Protokolldefinitionen als git-Submodule (auf Version gepinnt); portnum ist jetzt korrekt ein Enum, Config-Typen wie im Original verschachtelt
  • Empfangs-Decoding nachweislich unverändert (identische Feldnummern), abgesichert durch neue Decode- und Config-Write-Tests
🧪 Tests & CI
  • Neues Testprojekt (35 Tests): Protokoll-Decode, Gerätekonfig-Write über den Draht, Settings-Round-Trip, Tile-Mathematik, Overlay-/Cache-Logik
  • CI führt die Tests bei jedem Push/PR aus; ein Release wird nur bei grünen Tests gebaut
🧱 Aufräumen
  • MainWindow in Teildateien aufgeteilt; AppSettings auf init-Properties umgestellt (behebt einen latenten Bug beim Speichern der Sprache)
v1.5.14 2026-07-15 Vektorkarten (Vorschau) & Feuerwehr-Layer

Neue umschaltbare Vektorkarten-Darstellung (MapLibre GL JS im WebView2) mit automatischem Offline-Cache und zuschaltbarem 🚒 Feuerwehr-/Rettungs-Layer inkl. Detail-Popup per Klick. Die Rasterkarte bleibt Standard und voll unterstützt.

✨ Hinzugefügt

🗺️ Vektorkarten (Vorschau)
  • Neue Kartendarstellung „Vektor" in den Einstellungen – gestochen scharf in jeder Zoomstufe, alle drei Kartenstile (OSM, OpenTopo mit Höhenlinien+Relief, Dark) vom Meshhessen-Vektorserver
  • Alle vier Karten-Modi wie bei Raster: Offline / Meshhessen-Server / eigener Server (Style-URL) – im OSM-Online-Modus automatisch Rasterkarte
  • Automatischer Offline-Cache: online betrachtete Gebiete werden unter vectortiles/ gespeichert und sind ohne Internet nutzbar; deutlich kleinere Datenmengen als Raster
  • Kartenstil-Updates kommen vom Server – ohne Client-Update
  • Voller Funktionsumfang: Node-Pins (Farben, Notizen, Emoji), Waypoints, Traceroutes mit klickbaren SNR-Punkten, Nachbar-Linien (SNR-/Alter-Farbverlauf), Positionsverläufe und komplettes Rechtsklick-Menü auch auf der Vektorkarte
  • Offlinepaket-Downloader: Bundesland oder eigene Bounding-Box, Detail-Zoom 12–17, OpenTopo-Extras und Zusatz-Layer als Opt-in; Styles/Schriften/Symbole inklusive; Wiederaufnahme lädt nur Fehlendes
  • Automatischer Rückfall auf Raster (mit Hinweis), falls die WebView2-Runtime fehlt
  • Neue Lizenz-Einträge im Info-Tab: OpenMapTiles, MapLibre GL JS, Noto Sans (SIL OFL 1.1)
🚒 Feuerwehr-/Rettungs-Layer
  • An-/abwählbar in den Einstellungen und über den 🗂️-Layer-Button direkt auf der Karte (nur Vektor-Modus)
  • Hydranten – Überflur/Unterflur unterscheidbar (ab Zoom 15), Wachen, Sirenen, Löschteiche, Saugstellen, Rettungspunkte mit Nummer, Sammelplätze, Defibrillatoren u. v. m. (ab Zoom 13)
  • Klick auf ein Objekt zeigt Details: Bauart, Kupplungen, Durchfluss, Wasserquelle, Betreiber, Standort u. a.
  • Solange ausgeschaltet, wird kein Byte dafür geladen; im Offlinepaket-Downloader als Opt-in wählbar
  • Layer-Registry vorbereitet für weitere Fach-Layer (z. B. THW, Krankenhäuser)
v1.5.13 2026-06-11 Node-Kachelansicht, Nachbar-Linien & Protobuf-Abgleich

Neue Node-Kachelansicht (Fancy View), direkte HF-Nachbar-Linien auf der Karte mit Farbverlauf nach SNR/Alter, „Informationen anfordern" wie in der Android-App, erweiterte Node-Filter – plus vollständig mit den Original-Protobufs abgeglichene Definitionen.

✨ Hinzugefügt

🗺️ Direkte Nachbar-Linien auf der Karte
  • Aktivierbar im Legenden-Feld: Linien von der eigenen Position zu allen direkt über HF empfangenen Nodes (0 Hops, kein MQTT)
  • Farbverlauf nach SNR (rot → gelb → grün) oder Alter der letzten direkten Verbindung (cyan → violett) – echter Gradient
  • Option „Dauerhaft": alle je direkt gehörten Nachbarn; historische 0-Hop-Kontakte aus der Telemetrie-DB (packet_rx, hop_count=0)
  • Dunkler Umriss unter jeder Linie für gute Sichtbarkeit auf der Topo-Karte
🔧 Node-Kachelansicht (Fancy View)
  • Optionale, responsive Kachel-Oberfläche statt Tabelle (Einstellungen → Darstellung); Spaltenanzahl wächst mit der Fensterbreite
  • Pro Kachel: ShortName-Badge in Node-Farbe, 🔑/🔓 PKI, voller Name, „vor X min", ⭐-Favorit, 📡 Infrastruktur, ☁ MQTT
  • Strom (extern/Batterie + Spannung), Entfernung + Höhe, Hops, RSSI/SNR mit Farbverlauf, Umwelt-Telemetrie, HW-Modell · Rolle · Node-ID
  • Eigener Node immer ganz oben; virtualisiertes Pixel-Scrolling auch bei 1000+ Nodes
📥 Informationen anfordern (wie Android-App)
  • Rechtsklick-Untermenü in Liste, Kachel und Karte: fordert gezielt Daten an (want_response)
  • Benutzer-Info, Position, Geräte-/Umwelt-/Luftqualität-/Strom-/Host-Metriken, Signalqualität/Mesh-Statistik, PAX-Zähler
🔧 Erweiterte Node-Listen-Filter
  • Filter nach zuletzt gesehen (5 Min – 60 Tage), MQTT-Nodes ausblenden, nur Favoriten, SNR-Einfärbung an/aus
  • Sortier-Dropdown im Kachelmodus (Name, SNR, Entfernung, Batterie, zuletzt gesehen)
💬 Signalwerte in Nachrichten
  • SNR + RSSI direkt in der Nachrichten-Bubble bei Direktempfang (0 Hops, kein MQTT) – farbig gemäß Signal-Gradient
🔒 Kiosk-/Trainingsmodus
  • Sperrbare UI für geteilte Stationen (Vereinslokal, Schulung, Veranstaltung) – Versehens-Schutz, kein Angriffs-Schutz
  • Passwortgeschützt (PBKDF2-Hash); konfigurierbar, welche Tabs und Funktionen im gesperrten Zustand ausgeblendet werden
  • 🔒-Schloss in der Fußleiste zum Sperren/Entsperren; App startet im Kiosk-Modus immer gesperrt
  • Bei aktiver Sperre werden Admin-Befehle von Virtual-Node-Clients erzwungen blockiert

🐛 Behoben

🧩 Protobuf-Definitionen mit Original abgeglichen
  • Position.ground_speed/ground_track lagen auf Feld 14/15 statt 15/16 → GPS-Geschwindigkeit/Kurs falsch dekodiert
  • Region-Enum ab Wert 13 verschoben (UA_868/MY_919/SG_923/LORA_24) → korrigiert + vollständige Liste
  • MQTTConfig Feld 11 war uint32 statt verschachtelter MapReportSettings → Map-Report-Genauigkeit repariert
  • TelemetryConfig Felder 3–9 verschoben → Telemetrie-Modul-Konfig jetzt korrekt
  • CannedMessageConfig verschoben (send_bell u.a.); ModemPreset 8–13 ergänzt
🔡 Sonstige Fixes
  • RSSI/SNR nur bei direktem Empfang (0 Hops, kein MQTT); bei Relay-Nodes zeigt die Spalte die Hop-Anzahl
  • ~90 kaputte Umlaute (U+FFFD) in Log-/Dialog-Texten repariert; Logging durchgängig UTF-8
  • DM-Freeze behoben: Node-Refresh wird bei Paket-/DM-Verkehr immer gebündelt (700 ms)
  • Nachrichten: Scrollbar überdeckt die Chat-Bubbles nicht mehr
  • Kachelmodus: leere Einträge im „Farbe setzen"-Menü behoben (fehlende Resource-Keys)
  • LED-Tooltip-Zeilenumbruch, Legenden-i18n, Map-Topbar aufgeräumt, breitere Schlüssel-Spalte, breiteres Startfenster
v1.5.12 2026-06-09 Per-Node-Stationsname & MQTT-Statusfix

Eigener Stationsname pro verbundenem Node, plus Fix der MQTT-Proxy-Statusleiste.

✨ Hinzugefügt

🏷️ Per-Node-Stationsname
  • Pro verbundenem Node ein eigener Stationsname; ✏-Button neben dem Verbinden-Button
  • Auflösung: globaler Name → node-spezifisch → ShortName; Label-Farbe zeigt die Quelle
  • Persistenz pro Node in meshhessen-client.ini

🐛 Behoben

  • MQTT-Proxy-Statusleiste zeigte dauerhaft „gestoppt" auch ohne je gestarteten Proxy → nur noch gemeldet, wenn der Proxy lief
v1.5.11 2026-05-24 Virtual Node, T-Deck Assistent, Fernverwaltung & Bugfixes

Großes Release: Virtual Node TCP-Proxy-Server, T-Deck Karten-Assistent, vollständige Fernverwaltung mit Sicherheits-Reiter und Lazy Loading, sequentielles Config-Laden (Heltec-Fix), Favoriten-Sync, Kanal-Filter-Sync und zahlreiche Bugfixes.

✨ Hinzugefügt

🖧 Virtual Node (Tools-Tab)
  • TCP-Proxy-Server – wandelt den Client in ein Meshtastic-kompatibles TCP-Gerät um; Android/iOS-Apps verbinden sich direkt (Standard-Port 4404)
  • Config-Replay: verbindende Apps erhalten sofort MyNodeInfo, alle Kanäle und bekannte Nodes
  • Bidirektionale Weiterleitung: Nachrichten aus der App erscheinen im Client und umgekehrt
  • Multi-Client: beliebig viele Apps gleichzeitig verbindbar; Status + verbundene IPs im Tools-Tab
  • Startet automatisch beim Verbinden mit dem physischen Node (wenn aktiviert); Admin-Befehle optional blockieren
  • Message-Queue mit 10 ms Delay schützt den physischen Node vor Überflutung
  • Neue INI-Keys: VirtualNodeEnabled, VirtualNodePort, VirtualNodeBlockAdmin
🔧 T-Deck Karten-Assistent (neuer Tools-Tab)
  • Schritt 1 – Willkommen: Erklärung des Workflows; Hinweis: nur Deutschland verfügbar
  • Schritt 2 – SD-Karte: Listet Wechseldatenträger mit Größe, freiem Speicher und Dateisystem
  • Schritt 3 – Formatierung: Empfiehlt exFAT mit 4096-Byte-Zuordnungseinheiten (Tiles ≈ 100 Bytes → kleine AU spart Speicher); UAC-elevated Format-Volume; zwei Bestätigungsdialoge
  • Schritt 4 – Bereich: Nach Bundesland (16 Checkboxen), ganz Deutschland, oder Freestyle (Rechteck auf Mapsui-Karte zeichnen)
  • Schritt 5 – Zoom & Kartentyp: Stufen 8/10/12/14/16/17 mit Laufzeitwarnungen; OSM / OSM Dark / OpenTopoMap
  • Schritt 6 – Transfer (additiv): SD-Tile vorhanden → skip; lokal vorhanden → kopieren; sonst → vom Tile-Server laden + lokal cachen; Fortschrittsbalken
  • SD-Struktur: {Laufwerk}:\maps\OSM\{z}\{x}\{y}.png – T-Deck-kompatibel; ZIP-Export lokaler Tiles
💬 Kanal-Filter-Sync
  • Wählt man im „Kanal filtern"-Dropdown einen Kanal, springt der Sende-Kanal automatisch auf denselben Kanal mit; „Alle Kanäle" lässt den Sende-Kanal unverändert
🔧 Remote Admin – Lazy Loading & Tab-Reload
  • Lade-Modus-Dialog beim Öffnen: sofort alle Einstellungen laden (~30–60 s) oder seitenweise
  • Seitenweise-Modus: Reiter wird erst beim Anklicken geladen; bereits geladene Reiter werden nicht nochmal abgerufen
  • „↻ Tab neu laden"-Button in der Buttonleiste – lädt nur den aktuell sichtbaren Reiter neu
🔧 Lokaler Admin – Sequentielles Laden
  • Echtes sequentielles Config-Loading: senden → auf Antwort warten → nächste senden; 8 s Timeout pro Konfiguration
  • Verhindert Queue-Overflow auf langsamen Boards (z.B. Heltec) – vorher Abbruch bei 4–5/17
  • Fehlende Configs werden am Ende angezeigt statt den Prozess abzubrechen
Favoriten
  • Stern-Symbol in der Node-Liste; per Rechtsklick als Favorit markieren/entfernen
  • Sync mit dem Gerät via set_favorite_node / remove_favorite_node Admin-Nachrichten
  • Favoriten werden in der Liste oben angezeigt; Persistenz in meshhessen-client.ini
Fernverwaltung (Remote Admin)
  • Vollständiges Admin-Fenster: Reiter Besitzer, Gerät, Position, LoRa, Bluetooth, Netzwerk, Anzeige, Kanäle, Sicherheit, Steuerung
  • Sicherheits-Reiter: Public Key (read-only, Base64), Admin-Schlüssel 1–3 (Base64), Flags (Legacy Admin Channel, Managed Mode, Serial Console, Debug Log)
  • Favoriten remote verwalten: ComboBox + „Als Favorit setzen" / „Favorit entfernen" – sendet set_favorite_node / remove_favorite_node an den Remote-Node
  • Session-Schlüssel-Handshake, konfigurierbarer Timeout, feste GPS-Koordinaten via set_position
  • Ferngesteuerter Neustart, Herunterfahren, Node-DB-Reset
Telemetrie-Dashboard
  • 📊-Button direkt in der Toolbar – Dashboard ohne Umweg über das Telemetrie-Fenster öffnen
  • Unabhängiges Fenster – schließt sich nicht mehr mit dem Telemetrie-Fenster; auf zweitem Monitor platzierbar
  • Benannte Dashboards, vier Widget-Typen (Linie, Balken, Gauge, Heatmap), dunkles OxyPlot-Theme

🐛 Behoben

Remote Admin – Channel-Ladefehler
  • GetChannelRequest ist 1-basiert (1 = Kanal 0 usw.): War 0-basiert → Kanal 0 lud nie (Timeout), alle anderen um eins verschoben
  • Stale-Response-Check entfernt: ch.Index ist bei Firmware oft 0 (Protobuf-Default) → alle Kanäle außer 0 wurden als „falsche Antwort" dreifach neu angefordert
Remote Admin – Favoriten (veraltete Proto-Feldnummern)
  • add_favorite_node = 36 war veraltet; Firmware-Feld 36 = set_canned_message_module_messages → Requests landeten still beim falschen Handler
  • admin.proto auf aktuelle Feldnummern aktualisiert: set_favorite_node = 39, remove_favorite_node = 40
Admin – Key-Anzeige (Hex → Base64)
  • Public Key und Private Key wurden als Hex angezeigt; Meshtastic-App nutzt Base64 → beide Admin-Fenster (lokal & remote) zeigen Keys jetzt in Base64
Sonstige Bugfixes
  • Emoji-Node-Namen auf Karte (□-Fix): Node-Namen mit Emojis (🔥, 📶 …) wurden als □ angezeigt; LabelStyle-Font auf „Segoe UI Emoji" gesetzt
  • Virtual Node – Traceroute-Telemetrie: Traceroute-Requests des VNode-Clients wurden fälschlicherweise als eigene Telemetrie eingespeist; Fix: ausgehende Requests (WantResponse=true, Portnum 70) werden herausgefiltert
v1.5.9 2026-04-21 Vollständige Node-Konfiguration, Kartenauswahl & Map-Report

Komplett überarbeitetes Einstellungsfenster mit allen Firmware-Modulen, eigenem Karten-Picker, vollständiger Positions-Präzision und Telemetrie im Karten-Kontextmenü.

✨ Hinzugefügt

Node-Konfiguration – alle Module
  • Gerät & LoRa: Region, Modem-Preset (oder manuelle Parameter: Bandbreite, SF, Coding Rate), TX-Power, Hop-Limit, Geräterolle, Rebroadcast-Modus, LED-Heartbeat, Doppeltap-Aktion
  • Position: GPS-Modus, GPS-Intervall, Baudrate, RX/TX-GPIO, Smart-Broadcast, Mindestdistanz, Mindestintervall
  • Netzwerk: WLAN SSID/PSK, DHCP / statische IP (IP, Gateway, Subnetz, DNS), Ethernet, NTP-Server, Syslog
  • Display: Screen-Timeout, Carousel-Intervall, Kompass-Ausrichtung, 12h-Uhr, metrisch/imperial, Display-Modus, OLED-Typ, Flip, Wake-on-Tap
  • MQTT: Server, Credentials, TLS, JSON-Modus, Root-Topic, Proxy-Modus
  • Telemetrie: Geräte-, Umgebungs-, Luftqualitäts- und Energiemetrik-Intervalle; Messung-Checkboxen; Fahrenheit-Option
  • Bluetooth: Aktivieren, Pairing-Modus (RANDOM / FIXED / NO_PIN), fixer PIN
  • Security: Public Key anzeigen, Private Key generieren/importieren; Admin-Schlüssel 1–3; Managed Mode
  • Weitere Module: Nachbar-Info, Store & Forward, Externe Benachrichtigung, Canned Messages, Range Test, Serial — alle vollständig konfigurierbar
Kanalverwaltung
  • Alle 8 Kanäle: Rolle, Name, Uplink, Downlink, Positions-Genauigkeit
  • Positions-Genauigkeit vollständig: alle Bits 10–19 (~23 km bis ~45 m), 0 = kein Standort, 32 = Exakt — bisher fehlende Zwischenwerte (~11 km, ~5.7 km, ~1.4 km, ~740 m, ~180 m, ~90 m) ergänzt
  • Spaltenköpfe und Optionen vollständig i18n (DE + EN); ComboBox-Spalte verbreitert (kein Abschneiden mehr)
Map Reporting
  • Genauigkeitsstufe für Map-Report-Pakete einstellbar (neues Proto-Feld map_report_precision)
  • Beschreibung verweist jetzt auch auf map.meshhessen.de
Positions-Auswahl
  • „Von Karte wählen" öffnet jetzt ein eigenes MapPickerWindow — honoriert die aktuellen Karteneinstellungen (offline / online-own / online-osm)
  • „Eigener Kartenpin" — neuer Button übernimmt die per Rechtsklick gesetzte eigene Position direkt in die Felder für feste Position
  • LocalFileTileProvider nach Services/ ausgelagert (gemeinsame Nutzung durch Hauptkarte und Picker)
Karte
  • Telemetrie im Rechtsklick-Kontextmenü für alle Nodes auf der Karte (nach Traceroute)
  • OpenTelemetryForNode() als gemeinsamer Helper — auch vom Nodes-Listenmenü genutzt

v1.5.8 2026-04-13 Online-Karten, persistente DB & mehr

Drei Kartenmodi, HTTP/3, persistente Nachrichten-DB, DM-History und Verbindung merken.

✨ Hinzugefügt

Persistente Nachrichten-Datenbank
  • SQLite-Nachrichtenspeicher für Kanal- und DM-Nachrichten — optional, in Einstellungen aktivierbar
  • Je Kanal eine eigene DB-Datei (messages/channel_{index}_{name}.db), DMs in messages/dm.db
  • Automatisches Laden der letzten 24 h nach dem Verbinden; ältere per Hochscrollen nachladen
  • DM-History: alle gespeicherten Konversationen erscheinen beim Öffnen des DM-Fensters automatisch als Tabs
  • Pro-Kanal-Löschung im Kanäle-Tab — neuer Button pro Zeile, öffnet Dialog mit Zeitraum-Auswahl (Alle / 30 / 90 / 365 Tage)
  • Bestätigung vor dem Leeren einer DM-Konversation
  • Konfigurierbare Aufbewahrungsdauer, wird beim Start automatisch angewendet
  • Neue Einstellungen: EnableMessageDb, MessageDbRetentionDays
Verbindung merken
  • Letzte Verbindungsart (Serial / Bluetooth / WiFi) wird gespeichert und beim Start automatisch vorausgewählt
  • Letztes BT-Gerät nach BT-Scan automatisch in der Liste vorausgewählt
  • Neue Einstellungen: LastConnectionType, LastBtDevice
Karten-Erweiterungen
  • Online-Modi: Meshhessen-Server (lazy download, dauerhaft lokal, alle Stile, Deutschland) und OpenStreetMap (weltweit, nur Standardkarte, OSM-Policy-konform)
  • Neuer Tile-Server: tile.meshhessenclient.de löst den bisherigen Server ab
  • HTTP/3 mit automatischem Fallback auf HTTP/2 und HTTP/1.1
  • OSM-Tile-Cache mit HTTP-Cache-Headers, ETag/If-None-Match, mindestens 7 Tage TTL
Chat-Bubbles & Messaging
  • Chat-Bubble-Design im Kanal-Nachrichten-Fenster — eigene Nachrichten rechts (grün), fremde links, abgerundete Ecken, Light- & Dark-Mode-Farben
  • DM-Fenster ebenfalls auf Chat-Bubbles umgestellt — einheitliches Messaging-Erlebnis
  • Node-Farbe als Tint: die in den Node-Einstellungen gewählte Farbe wird als halbtransparenter Hintergrundton auf der gesamten Bubble sichtbar
  • Relay-Hops werden pro Nachricht angezeigt (↪ N mit Tooltip „Relay-Hops")
  • Datum bei alten Nachrichten: gestern → „Gestern HH:mm", ältere → „TT.MM. HH:mm"
  • Absender-Kurzname (ShortName) und Notiz-Badge neben dem Namen
  • MQTT-Nachrichten deutlich als ⚡ MQTT gekennzeichnet

🐛 Behoben

  • Zombie-Prozess beim Beenden: App schließt sich sauber via Application.Current.Shutdown()
  • Tab-Navigation: „Zur Karte"-Button springt korrekt zum Karten-Tab
  • Antwort löscht Eingabe nicht mehr: Klick auf „Antworten" im Kontextmenü leerte zuvor das Texteingabefeld — behoben

v1.5.7 Sortierungs-Fixes

🐛 Behoben

  • LastSeen-Sortierung: Datum wurde als Text verglichen statt als reelles Datum → falsche Reihenfolge
  • Batterie-Sortierung: Nodes ohne Batterie-Daten werden jetzt korrekt ans Ende sortiert

v1.5.6 Traceroute-Erweiterungen, QoL & Übersetzungen

Viele Detailverbesserungen: bessere Traceroutes, Copy-Funktion, Hyperlinks, Übersetzungs-Fixes.

✨ Hinzugefügt

Traceroute
  • Zeitraum-Filter (3d / 7d / 14d / 30d / 90d / Alle) in der Toolbar
  • Historische Traceroutes direkt aus der Datenbank laden
  • Deduplizierungs-Checkbox: nur neueste Traceroute pro Node-Paar
  • SNR-Popup beim Klick auf Hop-Segment in der Karte
  • Richtungspfeile auf Traceroute-Segmenten
  • MQTT-Hops mit ⚡-Symbol gekennzeichnet
  • Karten-Legende mit Farbe und ✕-Button pro Trace
Nachrichten & UI
  • Nachrichten kopierbar (Rechtsklick → „Nachricht kopieren")
  • Hyperlinks in Nachrichten anklickbar
  • Antwort-Funktion: Zitat-Block bei beantworteten Nachrichten verbessert (Wrapping, Sichtbarkeit)
  • Wegpunkte (Waypoints) in der Karte komplett überarbeitet
  • Kanalauslastungs-Prozentwert korrekt berechnet und angezeigt

🐛 Behoben

  • Viele Übersetzungs-Fixes in Deutsch und Englisch
  • Mesh-Health-Indikatoren angepasst
  • Traceroute: Automatisches Speichern repariert
  • Emoji-Darstellung: Emojis werden jetzt farbig angezeigt
  • Pfad-Stabilität LED (Grau-LED-Fix für Traceroutes ohne Relay-Hops)

v1.5.5 Telemetrie-Analyse & PKI-Entschlüsselung

Das größte Update bisher: vollständige Telemetrie-Analyse mit LED-Ampeln und PKI-Entschlüsselung.

✨ Hinzugefügt

Telemetrie-Analyse
  • Vollständiges Telemetrie-Analyse-Fenster pro Node: SNR, RSSI, Batterie, Airtime, Kanalauslastung, Routing, Nachbarn, Wetter
  • Zeitreihen-Graphen (OxyPlot): SNR-Trend, RSSI-Verlauf, Batterie-Tag/Nacht-Profil
  • Nachtabfall-Erkennung: wie viel % Batterie nachts (ohne Solar) verbraucht wird
  • Pfad-Stabilität: Hop-Anzahl, Pfadwechsel-Rate, Hop-Kosten
  • Nachbar-Analyse: direkte Verbindungen mit SNR-Trend pro Nachbar
  • LED-Ampeln im Hauptfenster: 📶 Signal, 👥 Nachbarn, 🛤️ Pfad, 🌐 Mesh-Health, 🌤️ Wetter
  • Mesh-Health-Tooltip: Top-5-Nodes nach Kanalauslastung
PKI-Entschlüsselung
  • Client-seitige PKI-Entschlüsselung: X25519 + AES-256-CTR
  • Private Key wird automatisch vom verbundenen Gerät geladen, nur im RAM gehalten
  • 🔑-Spalte in der Node-Liste: zeigt ob der Public Key eines Nodes bekannt ist
  • Lokale CSV-Datei (node_keys.csv) für Public-Key-Verwaltung
Node-Verwaltung
  • Device-Metadata: Firmware-Version und Hardware-Modell im Node-Info-Fenster
  • Node-Konfiguration: Einstellungen des verbundenen Geräts direkt anpassen

v1.5.4 Traceroute, Tap-Back & Update-Check

Traceroute-Visualisierung auf der Karte, Emoji-Reaktionen und automatischer Update-Check.

✨ Hinzugefügt

  • Traceroute: Hop-Tabelle (Name, Entfernung, SNR), Karten-Visualisierung mit durchgezogenen/gestrichelten Linien, mehrere Traces gleichzeitig mit eindeutigen Farben
  • Traceroutes werden automatisch als JSON in traceroutes/ gespeichert und sind nachladbar
  • Tap-Back-Reaktionen: auf Nachrichten mit Emoji reagieren (32 Emojis), kompatibel mit Android-App
  • Update-Check: beim Start wird automatisch nach neuen Versionen auf GitHub gesucht; klickbarer Hinweis in der Statusleiste
  • Automatische Traceroute-Speicherung

v1.5.3 GPS-Tracks, Mehrsprachigkeit & Node-Konfiguration

Standortverläufe auf der Karte, vollständige DE/EN-Übersetzung, Node-Konfiguration direkt aus dem Client.

✨ Hinzugefügt

  • GPS-Track-Logging: Standortverlauf von Nodes auf der Karte anzeigen (Farbe des Nodes, Zeitstempel pro Punkt)
  • Mehrsprachigkeit: vollständige Deutsch/Englisch-Unterstützung, umschaltbar in Einstellungen
  • Node-Konfiguration: Einstellungen des verbundenen Geräts direkt anpassen
  • Meshhessen-Schnellkonfiguration: One-Click für Short Slow + EU868 + Meshhessen-Kanal
  • Nodes anpinnen: Nodes in der Liste oben fixieren, unabhängig von Sortierung
  • BT-PIN ändern: Bluetooth-PIN direkt aus dem Client setzen
  • Auto-Reconnect: nach Einstellungsänderungen die einen Geräte-Neustart erfordern

v1.5.2 Alert Bell, eigener Tile-Server & PSK-Export

SOS-Notruf, eigener Tile-Server wegen OSM-Policy, PSK-Export-Funktion.

✨ Hinzugefügt

  • Alert Bell / SOS: Notruf senden und empfangen mit 🔔-Emoji, visueller Benachrichtigung (rote Umrandung) und „Zur Karte"-Button
  • Eigener Tile-Server: Umstellung auf eigenen Server wegen OSM-Tile-Policy (kein Bulk-Download auf offiziellem OSM-Server erlaubt)
  • PSK-Export: Channel-PSK aus der App exportieren
  • Channel-CSV: CHANNELS.csv mit bekannten Meshtastic-Kanälen
  • Copyright-Hinweise auf der Karte, dynamisch je nach Quelle

🐛 Behoben

  • Anzeige-Bug in Dark Mode Tabs
  • Kontextmenüs repariert
  • Text-Wrapping in Nachrichten-Fenster

v1.5 WiFi & Bluetooth

Der Client kann jetzt auch über TCP/WiFi und Bluetooth BLE verbinden — nicht mehr nur Serial/USB.

✨ Hinzugefügt

  • TCP/WiFi-Verbindung: Hostname/IP + Port konfigurierbar
  • Bluetooth BLE: direkte GATT-Verbindung ohne Framing, BLE-Gerät-Scan und Auswahl
  • Verbindungstyp-Auswahl als Radio-Buttons in der UI

v1.4 – v1.4.2 MQTT, Node-Farben & Verbindungs-Fixes

MQTT-Nachrichten besser anzeigen, Nodes einfärben und beschriften, Verbindungsrobustheit verbessert.

✨ Hinzugefügt

  • Bessere MQTT-Anzeige: MQTT-Nachrichten optisch gekennzeichnet
  • Node-Farben: Nodes individuell einfärben (Karte + Chat-Liste)
  • Node-Notizen: Freitext-Notizen pro Node
  • Node-Sortierung verbessert (Name, SNR, RSSI, Distanz)
  • Schnellfilter für die Node-Liste
  • Kurzname (ShortName) in der Node-Liste
  • RSSI-Spalte in der Node-Liste
  • T-Deck: verlangsamtes Channel-Loading als Workaround für langsames Gerät
  • Auto-Recovery wenn Node aus dem Protobuf-Modus fällt

🐛 Behoben

  • Disconnect/Reconnect: nach Reconnect wurden keine Daten mehr geladen
  • Tile-Download: Fortschrittsanzeige und Fehlermeldungen verständlicher
  • Sortierung nach Distanz, SNR und RSSI optimiert
  • Zoom-Button auf der Karte repariert
  • Hop-Count-Anzeige: war fälschlicherweise −1

v1.0-Beta 2026-02-08 Erstveröffentlichung

Erster öffentlicher Beta-Release: DMs, Message-Logging, Offline-Karte, Telemetrie-Grundlage und Dark Mode.

✨ Hinzugefügt

Nachrichten
  • Broadcast & Direktnachrichten, Multi-Channel
  • Separates DM-Fenster mit Tab-System für mehrere Konversationen
  • Benachrichtigungen bei neuen DMs (Fenster vordergrund, Taskbar-Blinken, System-Sound)
  • Orange Hervorhebung für ungelesene DM-Tabs
  • „💬 DM senden" per Rechtsklick auf Node
  • Automatisches Logging aller Nachrichten in logs/
Karte & Nodes
  • Offline-OSM-Karte mit Node-Pins (Mapsui)
  • GPS-Tracks und Wegpunkte auf der Karte
  • Node-Übersicht mit SNR, RSSI, Batterie, Entfernung, Hop-Anzahl
  • Eigener Standort per Rechtsklick auf Karte setzbar
  • Tile-Downloader für Offline-Nutzung
System
  • USB/Serial-Verbindung mit robustem Protokoll-Framing
  • Dark Mode (ModernWPF Fluent Design)
  • Debug-Tab mit Live-Log
  • Persistente Einstellungen (INI-Datei)
v1.6.2.5 2026-08-30 Tile download follows the map mode

Bugfix: offline tile downloads always used the "Tile server URL", regardless of the selected map mode.

🗺️ Tile download

  • Download ignored the map mode — it always used the custom URL from the "Tile server URL" field, regardless of mode and source selection (osm/topo/dark). The custom URL is now active only in "Own tile server" mode; every other mode downloads from the correct server for the source (Meshhessen or public OSM). Download and map query are now consistent.
v1.6.2.4 2026-08-22 Channel display, reply channel & debug scroll

Several fixes around channels and the debug log.

🐛 Fixed

  • Channel display in the backlog sometimes showed "Channel N" instead of the channel name — now resolved consistently from the current channel index and recomputed when channels arrive.
  • Reply switches back to the message's channel — "Reply" sets the active channel to the one the message was received on (live and backlog).
  • Debug-log auto-scroll jumped to the top instead of following the end — order fixed: trim first, then scroll to end.
v1.6.2.3 2026-08-16 Alert bell, encrypted replies & map polish

A roll-up release with several fixes: the alert bell finally triggers the hardware alert, replies to info requests are handled correctly, and a few map/list issues are cleaned up.

🔔 Alert bell

  • Alert bell now sends the ASCII control character 0x07 — the only thing that triggers receiving nodes' hardware alert (the firmware scans for it); previously only the 🔔 emoji was sent. Your own alert now also appears in the chat.

🔐 Encrypted replies & nodes

  • Replies to info requests (NodeInfo/telemetry/position) are processed by portnum instead of wrongly showing up as an "encrypted message" in chat
  • PKI DMs decrypt immediately when we hold the key — even if our own node no longer knows it (e.g. after a NodeDB reset)

🗺️ Map & list

  • "Show on map" now also centers the vector map (MapLibre), not just the raster map
  • Node name column follows the column width again (ellipsis + tooltip instead of a hard cut)
v1.6.2.1 2026-08-13 Colorful emoji & picker fix

A small polish pass around emoji: they now render in color in node names and the chat, and the reaction picker shows real emoji again instead of "??".

🌈 Emoji

  • Colorful emoji in node names and chat — colored rendering in the node tile and table views, the channel table, and sender names in channel chat and DM bubbles

😀 Fixed

  • Emoji picker showed "??" instead of emoji — the emoji list now lives centrally and code-point-based in EmojiPalette.cs and can no longer be mangled by a non-UTF-8 save
v1.6.2 2026-08-11 Encrypted DMs, name resolution & chat polish

All around encrypted direct messages and the chat: client-side PKI decryption was fundamentally corrected, unknown senders resolve automatically, and message ordering on connect is fixed again.

🔐 Encrypted messages

  • PKI decryption implemented correctly (AES-CCM instead of CTR, incl. extra nonce & auth tag) — encrypted DMs can be decrypted client-side at all now
  • If the sender's key is missing it is actively requested and the message is decrypted retroactively (buffer survives restarts, plus a 🔑 button for a manual retry)
  • Requests go out on the correct channel (reaching nodes we only hear via MQTT) and advertise our public key

💬 Chat & nodes

  • Unknown senders resolve silently via NodeInfo, and displayed "Unknown" messages update to the real name in place
  • Chat ordering on connect / history load is chronological again (channel & DMs)
  • Reaction tooltip now shows who reacted; positions of unknown nodes are buffered instead of discarded
v1.6.0 2026-07-30 Official Meshtastic protobufs, tests & CI

Switched from the hand-rolled to the official Meshtastic protocol definitions (added as a git submodule) – removes the recurring class of wrong-field-number bugs at the root and keeps the client in lockstep with the firmware. Plus a new automated test project and CI that checks every push.

🔧 Changed (internal)

📦 Official Meshtastic protobufs
  • Official protocol definitions as a version-pinned git submodule; portnum is now correctly an enum, config types nested as in the original
  • Receive decoding provably unchanged (identical field numbers), guarded by new decode and config-write tests
🧪 Tests & CI
  • New test project (35 tests): protocol decode, device-config write on the wire, settings round-trip, tile math, overlay/cache logic
  • CI runs the tests on every push/PR; a release is only built when tests are green
🧱 Cleanup
  • MainWindow split into partial files; AppSettings moved to init properties (fixes a latent bug when saving the language)
v1.5.14 2026-07-15 Vector maps (preview) & fire service layer

New switchable vector map rendering (MapLibre GL JS in WebView2) with automatic offline caching and a switchable 🚒 fire service / rescue layer including click-for-details popups. The raster map stays the default and remains fully supported.

✨ Added

🗺️ Vector maps (preview)
  • New "Vector" map rendering in the settings – razor-sharp at any zoom level, all three map styles (OSM, OpenTopo with contour lines + hillshade, Dark) from the Meshhessen vector server
  • All four map modes as with raster: offline / Meshhessen server / custom server (style URL) – OSM online mode automatically uses the raster map
  • Automatic offline cache: areas viewed online are stored under vectortiles/ and remain usable without internet; much smaller data volumes than raster
  • Map style updates arrive from the server – no client update needed
  • Full feature set: node pins (colors, notes, emoji), waypoints, traceroutes with clickable SNR dots, neighbor lines (SNR/age gradient), position history paths and the complete right-click menu also on the vector map
  • Offline package downloader: federal state presets or custom bounding box, detail zoom 12–17, OpenTopo extras and overlay layers as opt-in; styles/fonts/sprites included; re-running only fetches what is missing
  • Automatic fallback to raster (with a notice) if the WebView2 runtime is missing
  • New license entries in the info tab: OpenMapTiles, MapLibre GL JS, Noto Sans (SIL OFL 1.1)
🚒 Fire service / rescue layer
  • Toggle in the settings and via the 🗂️ layers button directly on the map (vector mode only)
  • Hydrants – pillar/underground distinguishable (from zoom 15), stations, sirens, fire ponds, suction points, numbered rescue points, assembly points, defibrillators and more (from zoom 13)
  • Click on an object shows details: type, couplings, flow rate, water source, operator, location and more
  • While switched off, not a single byte is loaded for it; selectable as opt-in in the offline package downloader
  • Layer registry prepared for further specialist layers (e.g. THW, hospitals)
v1.5.13 2026-06-11 Node tile view, neighbor lines & protobuf alignment

New node tile view (Fancy View), direct RF neighbor lines on the map with gradient by SNR/age, "Request information" like the Android app, advanced node filters – plus protobuf definitions fully aligned with the official sources.

✨ Added

🗺️ Direct neighbor lines on the map
  • Toggle in the legend box: lines from your own position to every node received directly over RF (0 hops, no MQTT)
  • Color gradient by SNR (red → yellow → green) or age of the last direct contact (cyan → purple)
  • "Permanent" option: every neighbor ever heard directly; historical 0-hop contacts from the telemetry DB (packet_rx, hop_count=0)
  • Dark outline beneath each line for good visibility on the topo map
🔧 Node tile view (Fancy View)
  • Optional responsive tile surface instead of a table (Settings → Appearance); column count grows with window width
  • Per tile: ShortName badge in node color, 🔑/🔓 PKI, full name, "X min ago", ⭐ favorite, 📡 infrastructure, ☁ MQTT
  • Power (external/battery + voltage), distance + altitude, hops, RSSI/SNR gradient, environment telemetry, HW model · role · node ID
  • Own node always on top; virtualized pixel scrolling even with 1000+ nodes
📥 Request information (like the Android app)
  • Right-click submenu in list, tile and map: requests data on demand (want_response)
  • User info, position, device/environment/air-quality/power/host metrics, signal quality/mesh stats, PAX counter
🔧 Advanced node-list filters
  • Filter by last seen (5 min – 60 days), hide MQTT nodes, favorites only, SNR coloring on/off
  • Sort dropdown in tile mode (name, SNR, distance, battery, last seen)
💬 Signal values in messages
  • SNR + RSSI right in the message bubble for direct reception (0 hops, no MQTT) – colored by the signal gradient
🔒 Kiosk / training mode
  • Lockable UI for shared stations (club room, training, events) – protects against accidents, not attacks
  • Password-protected (PBKDF2 hash); configurable which tabs and functions are hidden while locked
  • 🔒 lock in the footer bar to lock/unlock; the app always starts locked in kiosk mode
  • While locked, admin commands from Virtual Node clients are force-blocked

🐛 Fixed

🧩 Protobuf definitions aligned with originals
  • Position.ground_speed/ground_track were on field 14/15 instead of 15/16 → GPS speed/heading misdecoded
  • Region enum shifted from value 13 (UA_868/MY_919/SG_923/LORA_24) → corrected + full list
  • MQTTConfig field 11 was uint32 instead of nested MapReportSettings → map-report precision fixed
  • TelemetryConfig fields 3–9 shifted → telemetry module config now correct
  • CannedMessageConfig shifted (send_bell etc.); ModemPreset 8–13 added
🔡 Other fixes
  • RSSI/SNR only for direct reception (0 hops, no MQTT); relayed nodes show the hop count instead
  • ~90 corrupted umlauts (U+FFFD) in log/dialog text repaired; logging consistently UTF-8
  • DM freeze fixed: node refresh is now always coalesced (700 ms) under packet/DM traffic
  • Messages: scrollbar no longer overlaps the chat bubbles
  • Tile mode: fixed empty entries in the "Set color" menu (missing resource keys)
  • LED tooltip line break, legend i18n, tidied map top bar, wider key column, wider startup window
v1.5.12 2026-06-09 Per-node station name & MQTT status fix

A dedicated station name per connected node, plus a fix for the MQTT proxy status bar.

✨ Added

🏷️ Per-node station name
  • A dedicated station name per connected node; ✏ button next to the Connect button
  • Resolution: global name → node-specific → ShortName; label color shows the source
  • Persisted per node in meshhessen-client.ini

🐛 Fixed

v1.5.11 2026-05-24 Virtual Node, T-Deck Wizard, Remote Admin & Bug Fixes

Major release: Virtual Node TCP proxy server, T-Deck map wizard, full remote admin with security tab and lazy loading, sequential config loading (Heltec fix), favorites sync, channel filter sync and numerous bug fixes.

✨ Added

🖧 Virtual Node (Tools tab)
  • TCP proxy server – turns the client into a Meshtastic-compatible TCP device; Android/iOS apps connect directly (default port 4404)
  • Config-replay: connecting apps receive MyNodeInfo, all channels and known nodes immediately
  • Bidirectional relay: messages from the app appear in the client and vice versa
  • Multi-client: any number of apps simultaneously; status + connected IPs shown in Tools tab
  • Auto-starts when connected to the physical node (if enabled); optionally block admin commands
  • Message queue with 10 ms delay protects the physical node from flooding
  • New INI keys: VirtualNodeEnabled, VirtualNodePort, VirtualNodeBlockAdmin
🔧 T-Deck Map Assistant (new Tools tab)
  • Step 1 – Welcome: Workflow explanation; note: Germany only
  • Step 2 – SD card: Lists removable drives with size, free space and filesystem
  • Step 3 – Formatting: Recommends exFAT with 4096-byte allocation units; UAC-elevated Format-Volume; two confirmation dialogs
  • Step 4 – Region: By federal state (16 checkboxes), all of Germany, or Freestyle (draw rectangle on Mapsui map)
  • Step 5 – Zoom & map type: Levels 8/10/12/14/16/17 with runtime warnings; OSM / OSM Dark / OpenTopoMap
  • Step 6 – Transfer (additive): SD tile present → skip; local tile present → copy; otherwise → download + cache locally; progress bar
  • SD structure: {Drive}:\maps\OSM\{z}\{x}\{y}.png – T-Deck compatible; ZIP export of local tiles
💬 Channel Filter Sync
  • Selecting a channel in the "Filter channel" dropdown automatically switches the send channel to the same channel; "All channels" leaves the send channel unchanged
🔧 Remote Admin – Lazy Loading & Tab Reload
  • Load mode dialog on open: load all settings immediately (~30–60 s) or page-by-page
  • Page-by-page mode: tab is only loaded when clicked; already-loaded tabs are not re-fetched
  • "↻ Reload Tab" button in the button bar – reloads only the currently visible tab
🔧 Local Admin – Sequential Loading
  • True sequential config loading: send → wait for response → send next; 8 s timeout per config
  • Prevents queue overflow on slow boards (e.g. Heltec) – previously aborted at 4–5/17
  • Missing configs are reported at the end instead of aborting the process
Favorites
  • Star icon in the node list; right-click to mark/unmark as favorite
  • Synced with device via set_favorite_node / remove_favorite_node admin messages
  • Favorites shown at the top of the node list; persisted in meshhessen-client.ini
Remote Administration
  • Full admin window: tabs for Owner, Device, Position, LoRa, Bluetooth, Network, Display, Channels, Security, Control
  • Security tab: public key (read-only, Base64), admin keys 1–3 (Base64), flags (Legacy Admin Channel, Managed Mode, Serial Console, Debug Log)
  • Remote favorites management: ComboBox + "Set as Favorite" / "Remove Favorite" – sends set_favorite_node / remove_favorite_node to the remote node
  • Session-key handshake, configurable timeout, fixed GPS coordinates via set_position
  • Remote reboot, shutdown, node DB reset
Telemetry Dashboard
  • 📊 button directly in the toolbar – open the dashboard without going through the telemetry window
  • Independent window – no longer closes with the telemetry window; can be placed on a second monitor
  • Named dashboards, four widget types (line, bar, gauge, heatmap), dark OxyPlot theme

🐛 Fixed

Remote Admin – Channel Loading
  • GetChannelRequest is 1-based (1 = channel 0 etc.): Was 0-based → channel 0 never loaded (timeout), all others shifted by one
  • Stale-response check removed: ch.Index is often 0 from firmware (Protobuf default) → all channels except 0 were classified as "wrong response" and retried three times
Remote Admin – Favorites (outdated proto field numbers)
  • add_favorite_node = 36 was outdated; firmware field 36 = set_canned_message_module_messages → requests were silently misrouted
  • admin.proto updated to current field numbers: set_favorite_node = 39, remove_favorite_node = 40
Admin – Key Display (hex → Base64)
  • Public key and private key were displayed as hex; Meshtastic app uses Base64 → both admin windows (local & remote) now show keys in Base64
Other
  • Emoji node names on map (□ fix): node names containing emojis (🔥, 📶 …) rendered as □; LabelStyle font set to "Segoe UI Emoji"
  • Virtual Node – traceroute telemetry: traceroute requests from VNode clients were incorrectly injected into local telemetry; outgoing requests (WantResponse=true, portnum 70) are now filtered out
v1.5.9 2026-04-21 Full Node Configuration, Map Picker & Map Report

Fully redesigned settings window covering all firmware modules, dedicated map picker window, complete position precision levels and telemetry in the map context menu.

✨ Added

Node Configuration – all modules
  • Device & LoRa: region, modem preset (or manual: bandwidth, SF, coding rate), TX power, hop limit, device role, rebroadcast mode, LED heartbeat, double-tap action
  • Position: GPS mode, GPS interval, baud rate, RX/TX GPIO, smart broadcast, min distance, min interval
  • Network: Wi-Fi SSID/PSK, DHCP / static IP (IP, gateway, subnet, DNS), Ethernet, NTP server, syslog
  • Display: screen timeout, carousel interval, compass orientation, 12h clock, metric/imperial, display mode, OLED type, flip, wake-on-tap
  • MQTT: server, credentials, TLS, JSON mode, root topic, proxy mode
  • Telemetry: device, environment, air quality and power metric intervals; measurement checkboxes; Fahrenheit option
  • Bluetooth: enable, pairing mode (RANDOM / FIXED / NO_PIN), fixed PIN
  • Security: display public key, generate/import private key; admin keys 1–3; managed mode
  • Additional modules: neighbor info, store & forward, external notification, canned messages, range test, serial — all fully configurable
Channel Management
  • All 8 channels: role, name, uplink, downlink, position precision
  • Complete position precision: all bits 10–19 (~23 km to ~45 m), 0 = no location, 32 = exact — previously missing intermediate steps (~11 km, ~5.7 km, ~1.4 km, ~740 m, ~180 m, ~90 m) added
  • Column headers and dropdown options fully i18n (DE + EN); combobox column widened (no clipping)
Map Reporting
  • Position precision for map report packets now configurable (new proto field map_report_precision)
  • Description now also references map.meshhessen.de
Position Picker
  • "Pick from Map" now opens a dedicated MapPickerWindow — honours current map settings (offline / online-own / online-osm)
  • "Own Map Pin" — new button copies the position set via right-click directly into the fixed position fields
  • LocalFileTileProvider extracted to Services/ (shared by main map and picker)
Map
  • Telemetry in the right-click context menu for all nodes on the map (after Traceroute)
  • OpenTelemetryForNode() extracted as a shared helper — also used by the node list menu

v1.5.8 2026-04-13 Online Maps, Persistent DB & More

Three map modes, HTTP/3, persistent message DB, DM history and remember connection.

✨ Added

Persistent Message Database
  • SQLite message store for channel and DM messages — optional, enable in settings
  • One DB file per channel (messages/channel_{index}_{name}.db), DMs in messages/dm.db
  • Auto-load last 24 h on connect; scroll up to lazy-load older messages
  • DM history: all saved conversations auto-restored as tabs when DM window opens
  • Per-channel deletion in Channels tab — button per row, opens dialog with time range (All / 30 / 90 / 365 days)
  • Confirmation before clearing a DM conversation
  • Configurable retention period, applied on startup
  • New settings: EnableMessageDb, MessageDbRetentionDays
Remember Connection
  • Last connection type (Serial / Bluetooth / WiFi) saved and pre-selected on next launch
  • Last BT device auto-selected after BT scan
  • New settings: LastConnectionType, LastBtDevice
Map Enhancements
  • Online modes: Meshhessen server (lazy download, Germany) and OpenStreetMap (worldwide, policy-compliant)
  • New tile server: tile.meshhessenclient.de replaces the previous server
  • HTTP/3 with automatic fallback to HTTP/2 and HTTP/1.1
  • OSM tile cache with HTTP cache headers, ETag/If-None-Match, min. 7-day TTL
Chat Bubbles & Messaging
  • Chat bubble design in the channel messages view — own messages on the right (green), others on the left, rounded corners, Light & Dark mode colors
  • DM window redesigned as chat bubbles too — consistent messaging experience throughout
  • Node color tint: the color assigned to a node is shown as a semi-transparent background tint across the entire bubble
  • Relay hops displayed per message (↪ N with tooltip "Relay-Hops")
  • Smart date for old messages: yesterday → "Gestern HH:mm", older → "DD.MM. HH:mm"
  • Sender short name and note badge shown next to the name
  • MQTT messages clearly labeled as ⚡ MQTT

🐛 Fixed


v1.5.7 Sorting Fixes

🐛 Fixed


v1.5.6 Traceroute Enhancements, QoL & Translations

Many detail improvements: better traceroutes, copy function, hyperlinks, translation fixes.

✨ Added

Traceroute
  • Time range filter toolbar (3d / 7d / 14d / 30d / 90d / All)
  • Load historical traceroutes directly from the database
  • Deduplication checkbox: show only the latest traceroute per node pair
  • SNR popup on click of a hop segment on the map
  • Direction arrows on traceroute segments
  • MQTT hops marked with ⚡ symbol
  • Map legend with color and individual ✕ remove button per trace
Messaging & UI
  • Copyable messages (right-click → "Copy Message")
  • Clickable hyperlinks in messages
  • Reply quote block: improved wrapping and visibility
  • Waypoints on map completely overhauled
  • Channel utilization percentage correctly calculated

🐛 Fixed


v1.5.5 Telemetry Analysis & PKI Decryption

The biggest update yet: full telemetry analysis with LED indicators and PKI decryption.

✨ Added

Telemetry Analysis
  • Full telemetry analysis window per node: SNR, RSSI, battery, airtime, channel utilization, routing, neighbors, weather
  • Time-series graphs (OxyPlot): SNR trend, RSSI history, battery day/night profile
  • Night-drop detection: how much battery % the node uses overnight (no solar)
  • Path stability: hop count, path-change rate, hop cost
  • Neighbor analysis: direct links with SNR trend per neighbor
  • LED indicators in main window: 📶 Signal, 👥 Neighbors, 🛤️ Path, 🌐 Mesh Health, 🌤️ Weather
  • Mesh health tooltip: top-5 nodes by channel utilization
PKI Decryption
  • Client-side PKI decryption: X25519 + AES-256-CTR
  • Private key loaded automatically from connected device, held in RAM only
  • 🔑 column in node list: shows whether a node's public key is known
  • Local CSV file (node_keys.csv) for public key management

v1.5.4 Traceroute, Tap-Back & Update Check

Traceroute map visualization, emoji reactions and automatic update check.

✨ Added


v1.5.3 GPS Tracks, Multi-Language & Node Config

Location history on the map, full DE/EN translation, node configuration from the client.

✨ Added


v1.5.2 Alert Bell, Own Tile Server & PSK Export

SOS emergency alert, own tile server due to OSM policy, PSK export.

✨ Added

🐛 Fixed


v1.5 WiFi & Bluetooth

The client can now connect via TCP/WiFi and Bluetooth BLE — not just Serial/USB.

✨ Added


v1.4 – v1.4.2 MQTT, Node Colors & Connection Fixes

Better MQTT display, color-code and annotate nodes, improved connection robustness.

✨ Added

🐛 Fixed


v1.0-Beta 2026-02-08 Initial Release

First public beta: DMs, message logging, offline map, basic telemetry and dark mode.

✨ Added

Messaging
  • Broadcast & direct messages, multi-channel
  • Dedicated DM window with tab system for multiple conversations
  • Notifications for new DMs (foreground, taskbar flash, system sound)
  • Orange highlight for unread DM tabs
  • "💬 Send DM" via right-click on node
  • Automatic message logging to logs/
Map & Nodes
  • Offline OSM map with node pins (Mapsui)
  • GPS tracks and waypoints on the map
  • Node list with SNR, RSSI, battery, distance, hop count
  • Set own location via right-click on map
  • Tile downloader for offline use
System
  • USB/Serial connection with robust protocol framing
  • Dark mode (ModernWPF Fluent Design)
  • Debug tab with live log
  • Persistent settings (INI file)