Changelog

Meshhessen Client – Versionshistorie / Version History

← Zurück / Back GitHub Releases
v1.7.2 2026-11-09 Meshtastic 2.8: Status, Signaturen & neue Sensoren

Großes Protokoll-Update: Protobufs auf v2.8.2, Node-Status zum Mitteilen und Mitlesen, kryptografisch geprüfte Empfangsbestätigungen, AEAD-Kanäle, Display-Spiegelung (vorbereitet), Blitz- und Bodensensorik fürs Dashboard und Strahlung wahlweise in µSv/h.

✨ Neu

  • 💬 Node-Status: Setze deinen eigenen Freitext-Status per Klick auf den neuen Status-Button in der Kopfzeile („Im Urlaub bis 20.11.") — das Gerät funkt ihn ohne Neustart ins Mesh (Firmware 2.7.20+). Statuses anderer Nodes erscheinen in der Node-Liste, auf den Kacheln und im Node-Info-Fenster und überleben Client-Neustarts.
  • 🛡 Signierte Empfangsbestätigungen (Firmware 2.8): Zustell-Haken zeigen jetzt ✓✓🛡 bei kryptografisch verifizierter Bestätigung und ✓✓‼ in Rot bei ungültiger Signatur — es wird nur markiert, nie blockiert. Dazu die neue Paket-Signatur-Richtlinie (Kompatibel/Ausgewogen/Strikt) im Security-Panel von Node-Konfiguration und Fernverwaltung.
  • ⚡ Blitzsensor & Boden-/Wassersonden: Blitze pro Stunde und Gewitter-Distanz (AS3935) sowie die komplette Boden-/Wasserchemie (pH, Leitfähigkeit, NPK, O₂, Trübung …) werden erfasst — als Dashboard-Metriken mit Warn-/Alarm-Zonen („Alarm, wenn Gewitter näher als 10 km") und im Karten-Overlay. Strahlung gibt es jetzt auch als Dashboard-Metrik und auf Wunsch in µSv/h statt µR/h (Einstellung).
  • 🛡 AEAD-Kanäle (Firmware 2.8, experimentell): Kanäle mit authentifizierter Verschlüsselung (AES-CCM) werden mit Schild-Symbol angezeigt, und der Client kann sie selbst ent- und verschlüsseln — inklusive Manipulations-Erkennung.
  • 📺 Geräte-Display spiegeln (vorbereitet): Sobald eine Firmware das neue Spiegel-Protokoll liefert, zeigt der Tools-Tab bei Geräten mit Display einen Button, der den Node-Bildschirm live in den Client holt (Mono-OLED inkl. Farbzonen und TFT, nur lokale Verbindung).
  • 📶 „Direkt gehört"-Anzeige (Firmware 2.8): Das Gerät meldet jetzt selbst, welche Nodes es über das eigene Funkmodul gehört hat — sichtbar in Node-Liste und Kacheln.
  • Protobufs auf v2.8.2: Neue Hardware-Modelle (Heltec Mesh Pocket V2, T-Connect Pro u. a.) werden korrekt benannt; Funk-Echo kennt die neue Boden-/Wasser-Telemetrie und die Airtime-Schätzung alle aktuellen Modem-Presets.

🐛 Behoben / ✨ Verbessert

  • 🛠 Node-Konfiguration komplettiert (Android-Parität): GPS-Festposition wird wieder aus dem Gerät vorbefüllt (auch der Grund für leere Felder); sechs fehlende Module ergänzt — Audio (Codec2), Remote Hardware, Ambient Lighting, Detection Sensor, Paxcounter, TAK/ATAK — plus das neue Mesh-Beacon-Modul (FW 2.8) mit Kanal-/Preset-Angebot, auch als eigener Reiter in der Fernverwaltung (inkl. Warnung: Broadcast auf fremdem Preset = kein Empfang auf dem primären — für Router ungeeignet). Serielle Modi (WS85, VE.Direct, MODBUS …) und Modem-Presets (Short/Long Turbo, Lite, Narrow, Tiny …) vervollständigt.
  • Namenslängen byte-genau geprüft: Firmware 2.8 begrenzt lange Node-Namen auf 24 Byte — Node-Konfiguration und Fernverwaltung prüfen jetzt vor dem Speichern gegen die Firmware des Zielgeräts (Umlaute zählen doppelt), statt dass das Gerät zu lange Namen still verwirft.
  • Handbuch erweitert: Alle neuen Funktionen sind in den Kapiteln Nachrichten, Node-Verwaltung und Telemetrie dokumentiert.
v1.7.1 2026-11-09 Kanal-Fixes & mehrzeilige Nachrichten

Bugfix-Release: ein kritischer Fehler, der beim Speichern der Node-Konfiguration Kanalnamen auf dem Gerät löschte, dazu Shift+Enter für Zeilenumbrüche und saubere Trennung von DMs und Kanälen.

✨ Neu

  • ⏎ Mehrzeilige Nachrichten (Issue #72): Umschalt+Enter fügt im Nachrichtenfeld einen Zeilenumbruch ein — wie in der Android-App. Enter allein sendet weiterhin; das Eingabefeld wächst mit und scrollt bei langen Texten. Gilt für Hauptfenster und DM-Fenster.

🐛 Behoben

  • Kanalnamen wurden beim Speichern gelöscht (Issue #69, kritisch): Wer in der Node-Konfiguration Positions-Genauigkeit oder MQTT-Up-/Downlink speicherte, verlor die Kanalnamen auf dem Gerät („Channel 1, 2, …" nach dem Neustart). Der Client schreibt jetzt den vom Gerät geladenen Original-Kanal zurück und ändert nur die wirklich bearbeiteten Felder — Name, PSK und Kanal-ID bleiben garantiert erhalten (mit Regressionstests bis auf die Funk-Schnittstelle).
  • Kanalnamen-Limit wird durchgesetzt: Die Firmware erlaubt maximal 11 Byte — längere Namen ließen das Gerät den Kanal-Schreibvorgang stillschweigend verwerfen. Der „Kanal hinzufügen"-Dialog begrenzt und prüft jetzt die Eingabe (Achtung: Umlaute zählen doppelt), und alle Schreibpfade kappen sicher an der Zeichengrenze.
  • DMs tauchten im aktiven Kanal auf: Das Gegenstück zum Fix aus 1.7.0 — beim Kanalwechsel rutschten eingehende Direktnachrichten in die Kanal-Ansicht (DMs reisen technisch auf Kanal 0). Direktnachrichten bleiben jetzt zuverlässig im DM-Bereich.
v1.7.0 2026-10-23 Funk-Echo, Grafana-Dashboard & 3D-Gelände

Großes Feature-Release: Funk-Echo macht sichtbar, wer deinen Node anfragt (inkl. Retro-Sonar), das Telemetrie-Dashboard bekommt Warn-/Alarm-Zonen im Grafana-Stil, dazu 3D-Gelände, Höhenprofile pro Funkstrecke und Community-Fixes. Enthält alle Änderungen der nie veröffentlichten 1.6.4.7.

✨ Neu

  • 📡 Funk-Echo — „Wer funkt mich an?": Fragt eine andere Station gezielt NodeInfo, Position, Telemetrie oder einen Traceroute bei deinem Node an, zeigt das ein kleines Radar in der Statusleiste (farbige Welle je Anfrageart, Zähler, Meldung wie „KELL verfolgt den Funkweg zu uns!" — Stil Locker/Sachlich umschaltbar). Klick öffnet das Journal mit Statistik und Filtern; Telemetrie-Anfragen zeigen die Datengruppe (Umwelt, Strom, …), Traceroute-Anfragen ihren Hinweg (auf Wunsch als Linie auf der Karte). Ehrliches „Antwort erwartet" aus deiner Konfiguration — Positionsanfragen inklusive der konfigurierten Genauigkeit („±2,9 km"). Dazu: Retro-Sonar-Radar (schwarzes Scope, Phosphor-Grün, rotierender Sweep — bei Live-Anfragen läuft ein Ping von der Station zur Mitte und wird „reflektiert"), Stunden-Drilldown pro Station, Antwort-Airtime-Quittung, optionale Toasts, 🔕 Ruhemodus, Kiosk-Sperre und die Dashboard-Metrik „Anfragen an uns/h".
  • 📊 Telemetrie-Dashboard — Grafana-Runde: Pro Widget vier Grenzen (⚠ Warnung / 🚨 Alarm, jeweils tief/hoch) statt eines Schwellwerts — Gauge, Stat-Wert und Charts färben sich grün/orange/rot nach Zone (der Gauge zeigt die Grenzen als Zonen-Ring), Windows-Toasts melden Zonen-Wechsel inkl. ✅ Entwarnung; bestehende Schwellwerte werden automatisch übernommen. Neue Checkbox-Node-Auswahl im Widget-Editor (Ausgewählte bleiben trotz Suchfilter sichtbar, „Alle/Keine"), Zoom nur noch auf der Zeitachse mit Doppelklick-Reset, Heatmap-Farbskala und Histogramm-Klassen folgen dem echten Datenbereich, Candlesticks nach lokalen Kalendertagen mit neutralen Doji-Kerzen.
  • 💬 DM-Popup & Ungelesen-Badge (Community-Beitrag von @chrishaef): Neue Option, ob das DM-Fenster bei eingehenden Nachrichten aufspringt — ausgeschaltet zählt stattdessen ein roter Badge mit sanftem Pulsieren am DM-Button.
  • 🛠️ Remote Admin: GPS-Festposition lässt sich jetzt auslesen und setzen (inkl. Karten-Auswahl; Koordinaten kommen wie in der Android-App aus der Node-Datenbank), Sendeintervall als 3–24-h-Auswahl, GPS-Update-Intervall statt veralteter Versuchszeit; Geräterollen um CLIENT_BASE und ROUTER_LATE ergänzt (Community-Beiträge von @chrishaef).

🐛 Behoben / ✨ Verbessert

  • Verschlüsselte Fake-DMs gestoppt (Community-Beitrag von @chrishaef): Mitgehörte Pakete an andere Nodes und unentschlüsselbare Antworten auf eigene Abfragen öffneten das DM-Fenster mit „[Verschlüsselte Nachricht]"-Geisterchats — solche Pakete erreichen die Chat-Ansicht jetzt gar nicht mehr; echte PKI-DMs (inkl. Platzhalter + 🔑-Button) bleiben erhalten.
  • Traceroute-Distanz: Fehlte einem Zwischen-Hop die Position, zeigte die Distanz-Spalte „?" — jetzt wird zum letzten Hop mit bekannter Position gerechnet (Community-Beitrag von @chrishaef).
  • Kanal-Nachrichten rutschten in offene DM-Chats: War eine Inline-Direktnachricht geöffnet, erschienen live eintreffende Kanal-Nachrichten in der DM-Ansicht (bis zum Ansichtswechsel) — jetzt bleibt die DM sauber und der Kanal-Badge in der Seitenleiste zählt stattdessen hoch.
  • Positionen bekannter Nodes verschwanden immer wieder: NodeInfo-Broadcasts (ohne Positionsdaten) und die Geräte-NodeDB beim Verbinden ersetzten den Listeneintrag komplett — jetzt wird gemergt, eine bekannte Position wird nie mehr auf „leer" zurückgesetzt, und nach dem Verbinden füllt der Client fehlende Positionen aus seiner eigenen Datenbank zurück (das Gerät vergisst, der Client nicht).
  • Fernverwaltung: Das Schließen des Fensters konnte das Hauptfenster in die Taskleiste minimieren — behoben.
  • Karten-Texte auf DACH korrigiert: Der Meshhessen-Tile-Server liefert Deutschland, Österreich und die Schweiz — die In-App-Texte sagten noch „nur Deutschland".
  • ⛰ 3D-Gelände auf der Vektorkarte: Neuer Haken im Layer-Popup — echtes Höhenmodell (SRTM) mit Schummerung, Strg+Ziehen zum Neigen. Einmal angesehene Gebiete funktionieren auch offline. Bei gedrehter/geneigter Karte erscheint ein Nordpfeil (Klick = einnorden).
  • ⛰ Höhenprofil pro Funkstrecke: Rechtsklick auf einen Nachbarn im Telemetriefenster oder einen Hop im Traceroute-Fenster zeigt das Geländeprofil mit Sichtlinie und Fresnel-Zone — inklusive Einschätzung, ob die Strecke frei ist oder Gelände im Weg steht.
  • Traceroute: ehrliche MQTT-Badges. Hops bekommen das MQTT-Badge nur noch, wenn für die Teilstrecke keine Funk-Messung vorliegt — vorher wurde jeder Hop markiert, sobald die Antwort über MQTT ankam. Das Kopf-Badge „via MQTT" sagt jetzt nur noch: die Antwort hat uns über MQTT erreicht — das bestimmt der Ziel-Node, auch bei „Nur HF"-Anfragen.
  • Nachbar-Datenbank bereinigt: MQTT-gebrückte Traceroute-Teilstrecken landeten als falsche „0-dB-Funklinks" in der Nachbar-Datenbank — neue Links werden gefiltert, Altdaten beim Start automatisch bereinigt.
  • Kaputte Symbole repariert: Der ✕-Button der Traceroute-Legende und weitere Symbole (📡, 🚨, 🔔, 📍, Pfeile) zeigten durch einen alten Encoding-Fehler nur „?" — wiederhergestellt und mit einem automatischen Test gegen Wiederholung abgesichert.
  • Node-Info zeigt „Zuerst/Zuletzt gesehen": „Zuerst gesehen" kommt aus der Telemetrie-Datenbank (frühestes je empfangenes Paket) und überlebt Client-Neustarts.
v1.6.4.6 2026-10-19 Node-Info neu, Dashboard-Dark-Mode-Fix

Großes Update: Telemetrie-Dashboard stark ausgebaut (Zoom, Nachtbänder, Schwellwert-Alarme, Export/Import, Vollbild), Toast-Benachrichtigungen überarbeitet, Node-Info-Fenster neu, Dashboard-Dark-Mode-Fix und zuverlässige Rechtsklick-Menüs.

🐛 Behoben / ✨ Verbessert

  • Telemetrie-Dashboard ausgebaut: Zoom/Pan bleibt beim Auto-Refresh erhalten · Zeitachsen in Lokalzeit (vorher UTC) · Tag/Nacht-Schattierung · Schwellwert-Alarme als Windows-Toast · Dashboard-Export/-Import als JSON · Vollbild (F11) · Fensterposition & letztes Dashboard werden gemerkt · Widget duplizieren, als PNG speichern, Bild kopieren · CSV wahlweise für deutsches Excel · flüssigeres Rendering und keine UI-Freezes mehr beim Laden (Hintergrund-Prefetch) · zwei Timer-Lecks behoben.
  • Toast-Benachrichtigungen: Klick holt die App jetzt in den Vordergrund (vorher passierte nichts); viele gleichzeitig eintreffende Nachrichten werden zu einem Sammel-Toast gebündelt statt minutenlang einzeln aufzupoppen; nachgeladene alte Nachrichten benachrichtigen gar nicht mehr.
  • Telemetrie-Nachbarn = echte HF-Nachbarn: Die Nachbar-Tabelle zeigt nur noch direkte Funkverbindungen (eigener 0-Hop-Empfang, Traceroute-Teilstrecken mit per-Hop-SNR, NeighborInfo-Pakete) statt aller gehörten Nodes inkl. MQTT — mit SNR in beide Richtungen; die Liste füllt sich mit der Zeit (bis dahin automatischer Fallback auf die alte Ansicht).
  • SNR-Farben repariert: Multi-Hop- und MQTT-Nodes bekamen die SNR-Farbe des letzten Relays (rote „Nachbarn" in der Node-Liste) — SNR-Farben und -Zeitreihen basieren jetzt ausschließlich auf Direktempfang.
  • Funk-Overlays auf der Karte: Die Umweltdaten-Heatmap kann jetzt auch SNR, RSSI und Noise Floor als interpolierte Fläche anzeigen.
  • LocalStats-Telemetrie (neuere Firmware) wird erfasst: Noise Floor, RX fehlerhaft/Duplikate, TX Relay u. v. m. — im Telemetriefenster, als Dashboard-Metriken und als Karten-Overlay.
  • Automatische Telemetrie-Abfragen: Das Dashboard kann bis zu 4 Nodes aktiv nach LocalStats/Umweltdaten fragen (mesh-schonend: LocalStats max. 1×/h, anderes max. alle 30 min) — aus den Zähler-Deltas entstehen automatisch Raten in Pakete/h.
  • Traceroute „Nur HF": Neuer Haken — die Anfrage wird mit gelöschtem OK-to-MQTT-Bit gesendet (vorverschlüsseltes Paket), MQTT-Gateways leiten sie nicht weiter, die Route läuft rein über Funk.
  • Node-Info-Fenster neu gestaltet (Issue #46): Avatar in Node-Farbe, Rollen-Badge und Info-Karten (Gerät / Status / Position) — zeigt jetzt auch Rolle, Akku und Signal; vollständig lokalisiert und theme-fest.
  • Dashboard im Dark-Mode lesbar (Issue #47): Die Toolbar-Buttons fielen auf schwarzen Text zurück — die Styles sind jetzt theme-abhängig.
  • Node-Liste & Kanal-Liste: Rechtsklick-Menü zielt zuverlässig auf die geklickte Zeile — vorher öffnete „Node Info" manchmal nichts oder den falschen Node, und „PSK kopieren" konnte den PSK eines anderen Kanals kopieren.
  • Rollen-Erkennung repariert: Router/Repeater wurden intern nie als Infrastruktur erkannt (Schreibweisen-Mismatch); Anzeige-Namen jetzt für beide Schreibweisen, CLIENT_BASE als „Client Base".
  • Info-Tab zeigt die volle Versionsnummer (v1.6.4.6), Statusbar behält die Kurzversion.
v1.6.4.5 2026-10-03 Remote Admin über Multi-Hop & MQTT

Die Fernkonfiguration entfernter Nodes funktioniert jetzt auch über Relay- und MQTT-Strecken — und Ablehnungen werden mit konkretem Grund gemeldet statt als stiller Timeout.

🛠️ Remote Admin

  • Funktionierte nur zu direkt erreichbaren Nodes — Admin-Pakete gingen ohne want_ack/hop_limit raus, die Firmware ließ das Hop-Limit dadurch auf 0 und kein Node leitete sie weiter. Jetzt: Hop-Limit 7, want_ack und Priorität „Reliable" (inkl. Funk-Retransmits auf verlustreichen Strecken).
  • Ablehnungen (NAK) werden gemeldet — lehnt der Ziel-Node oder die Route ab (z. B. Admin-Key nicht eingetragen, PKI-Schlüsselproblem, keine Funk-Bestätigung), zeigt das Fenster sofort den konkreten Grund samt Hinweis statt 30 s später „Timeout".
  • Explizites PKI-Flag (wie die Android-App) — kann der lokale Node nicht per PKI verschlüsseln, gibt es jetzt einen sichtbaren Fehler, statt dass das Paket still kanalverschlüsselt gesendet und drüben kommentarlos verworfen wird.
v1.6.4.3 2026-09-18 Mesh-Hessen-Button reboot-sicher

Der Mesh-Hessen-Button schreibt das Profil jetzt in einer einzigen Transaktion (nur noch ein Reboot), liest alle Werte zurück und zieht Fehlendes automatisch nach.

🔵 Mesh-Hessen-Button

  • Nur noch ein Reboot am Ende (eine Edit-Transaktion) — vorher rebootete das Gerät schon nach dem Preset-Wechsel und der Kanal-Write ging verloren.
  • ok_to_mqtt/ignore_mqtt werden jetzt korrekt gesetzt — die EU868-Zwangskorrektur der Firmware wird durch einen zweiten LoRa-Write umgangen.
  • Rücklesung mit ✓/✗ nach dem automatischen Reconnect; fehlt etwas, wird es in einem zweiten Durchlauf nachgezogen.
v1.6.4.2 2026-09-17 Virtueller Node: Android-App-Verbindung stabil

Bugfix: Die Meshtastic-Android-App lief beim Verbinden mit dem virtuellen Node in eine Reconnect-Schleife.

📡 Virtueller Node

  • Zweistufiger want_config-Handshake der Android-App wird jetzt korrekt beantwortet (Stufe 1: nur Config, Stufe 2: nur Nodes) — vorher wurde die App nie „verbunden".
v1.6.4 2026-09-10 Nachrichten im Messenger-Stil

Großes Update rund um Nachrichten: Seitenleiste mit Kanälen & Direktnachrichten, Zustellhaken, Toast-Benachrichtigungen und schnelleres Bluetooth.

💬 Nachrichten

  • Seitenleiste im Nachrichten-Tab (Kanäle und DMs) mit Ungelesen-Badges; DMs wahlweise inline im Client oder im separaten Fenster.
  • Zustellstatus-Haken (… → ✓ → ✓✓ bzw. ⚠) auf Basis der Firmware-Bestätigung plus Erneut-senden-Button an fehlgeschlagenen Nachrichten.
  • Windows-Toast-Benachrichtigungen bei neuen Nachrichten (optional, nur wenn das Fenster nicht im Vordergrund ist).
  • BLE schneller und stabiler: durchsatzoptimierte Verbindungsparameter und sauberer Reconnect.

🐛 Behoben

  • Chat startet unten bei der neuesten Nachricht; Kanalauswahl folgt der Seitenleiste (doppeltes Dropdown entfernt); Anzeige und Auswahl stimmen beim Start überein.
  • „Info anfordern" im Chat-Kontextmenü (auch für unbekannte Nodes); „DM senden" respektiert den Inline/Fenster-Schalter.
  • Serielle Verbindung friert beim Trennen von einem Nicht-Meshtastic-Port nicht mehr ein; kein Toast-Spam bei unentschlüsselbaren Nachrichten.
v1.6.3 2026-08-31 Umweltdaten auf der Karte

Neues Feature: Nodes mit Umwelt-Telemetrie (Temperatur, Feuchte, IAQ u. v. m.) zeigen ihre Messwerte direkt auf der Karte – auf Raster- und Vektor-Karte.

🌡️ Umweltdaten

  • Messwert-Boxen an den Nodes (Modus: aus / immer / beim Überfahren); Nodes mit Daten sind am grünen Marker-Ring erkennbar.
  • Heatmap im Wetterdienst-Stil: IDW-interpolierte Wertefläche (~30 km Reichweite), kalibrierte Farbskala = tatsächlicher Messwert, weiche Kanten, Isothermen mit Temperatur-Beschriftung und Außenumrandung. Für alle Metriken.
  • Voller Sensorsatz (Temperatur, Feuchte, Luftdruck, IAQ, Gas, Lux, Wind, Regen, Boden u. a.); Telemetrie-DB wird automatisch migriert.
  • Zeit-Gewichtung (ältere Messwerte zählen weniger), einzelne Nodes abwählbar, Metrik-Auswahl – alles über den 🌡️-Button an der Karte.
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.7.2 2026-11-09 Meshtastic 2.8: status, signatures & new sensors

Big protocol update: protobufs bumped to v2.8.2, node status for sharing and reading, cryptographically verified delivery receipts, AEAD channels, display mirroring (prepared), lightning and soil sensors for the dashboard, and radiation optionally in µSv/h.

✨ New

  • 💬 Node status: set your own free-text status via the new status button in the header bar ("On vacation until Nov 20") — the device broadcasts it without rebooting (firmware 2.7.20+). Other nodes' statuses appear in the node list, on the tiles and in the node info window, and survive client restarts.
  • 🛡 Signed delivery receipts (firmware 2.8): delivery checks now show ✓✓🛡 for a cryptographically verified receipt and ✓✓‼ in red for an invalid signature — flagged, never blocked. Plus the new packet signature policy (Compatible/Balanced/Strict) in the security panel of node configuration and remote admin.
  • ⚡ Lightning sensor & soil/water probes: strikes per hour and storm distance (AS3935) plus the full soil/water chemistry (pH, conductivity, NPK, O₂, turbidity …) are recorded — as dashboard metrics with warn/alarm zones ("alarm when a storm is closer than 10 km") and in the map overlay. Radiation is now a dashboard metric too, optionally shown in µSv/h instead of µR/h (setting).
  • 🛡 AEAD channels (firmware 2.8, experimental): channels with authenticated encryption (AES-CCM) carry a shield icon, and the client can encrypt and decrypt them itself — including tamper detection.
  • 📺 Mirror device display (prepared): as soon as a firmware ships the new mirroring protocol, the Tools tab shows a button for devices with a display that brings the node's screen live into the client (mono OLED incl. color zones and TFT, local connection only).
  • 📶 "Heard directly" indicator (firmware 2.8): the device now reports which nodes it heard over its own radio — visible in the node list and tiles.
  • Protobufs bumped to v2.8.2: new hardware models (Heltec Mesh Pocket V2, T-Connect Pro and more) are named correctly; Funk-Echo understands the new soil/water telemetry and the airtime estimate covers every current modem preset.

🐛 Fixed / ✨ Improved

  • 🛠 Node configuration completed (Android parity): fixed GPS position is prefilled from the device again (also the cause of empty fields); six missing modules added — audio (Codec2), remote hardware, ambient lighting, detection sensor, paxcounter, TAK/ATAK — plus the new Mesh Beacon module (FW 2.8) with channel/preset offers, also a dedicated tab in remote admin (incl. warning: broadcasting on a foreign preset = no reception on the primary one — unsuitable for routers). Serial modes (WS85, VE.Direct, MODBUS …) and modem presets (Short/Long Turbo, Lite, Narrow, Tiny …) completed.
  • Name lengths validated byte-exactly: firmware 2.8 caps long node names at 24 bytes — node configuration and remote admin now validate against the target's firmware before saving (umlauts count twice), instead of the device silently rejecting oversized names.
  • Handbook extended: all new features are documented in the Messaging, Node Management and Telemetry chapters.
v1.7.1 2026-11-09 Channel fixes & multiline messages

Bugfix release: a critical bug that erased channel names on the device when saving the node configuration, plus Shift+Enter for line breaks and a clean separation of DMs and channels.

✨ New

  • ⏎ Multiline messages (issue #72): Shift+Enter inserts a line break in the message box — like the Android app. Enter alone still sends; the input grows with the text and scrolls when it gets long. Applies to the main window and the DM window.

🐛 Fixed

  • Channel names were erased on save (issue #69, critical): saving position precision or MQTT up/downlink in the node configuration wiped the channel names on the device ("Channel 1, 2, …" after reboot). The client now writes back the original channel loaded from the device and only changes the fields actually edited — name, PSK and channel ID are guaranteed to survive (with regression tests down to the wire).
  • Channel name limit enforced: the firmware allows at most 11 bytes — longer names made the device silently reject the channel write. The "Add channel" dialog now limits and validates the input (note: umlauts count twice), and every write path clamps safely at a character boundary.
  • DMs showed up in the active channel: the counterpart of the 1.7.0 fix — switching channels pulled incoming direct messages into the channel view (DMs technically travel on channel 0). Direct messages now reliably stay in the DM area.
v1.7.0 2026-10-23 Radio echo, Grafana dashboard & 3D terrain

Big feature release: the radio echo shows who is querying your node (incl. a retro sonar), the telemetry dashboard gains Grafana-style warn/alarm zones, plus 3D terrain, per-link elevation profiles and community fixes. Includes everything from the never-released 1.6.4.7.

✨ New

  • 📡 Radio echo — "Who's pinging us?": when another station requests NodeInfo, position, telemetry or a traceroute from your node, a little radar in the status strip reacts (colored wave per request type, counter, a message like "KELL is tracing the radio path to us!" — casual/factual style switchable). Click opens the journal with statistics and filters; telemetry requests show the data group (environment, power, …), traceroute requests their inbound path (optionally drawn on the map). Honest "reply expected" derived from your configuration — position requests include the configured precision ("±2.9 km"). Plus: a retro sonar radar (black scope, phosphor green, rotating sweep — live requests ping from the station to the center and get "reflected"), per-station hourly drilldown, a response-airtime receipt, optional toasts, 🔕 quiet mode, kiosk lock and the dashboard metric "requests to us/h".
  • 📊 Telemetry dashboard — Grafana round: four bounds per widget (⚠ warning / 🚨 alarm, low/high each) instead of a single threshold — gauge, stat value and charts color green/orange/red by zone (the gauge shows the bounds as a zone ring), Windows toasts report zone transitions incl. ✅ all-clear; existing thresholds migrate automatically. New checkbox node picker in the widget editor (selected nodes stay visible despite the search filter, "all/none"), zooming now happens on the time axis only with double-click reset, heatmap color scale and histogram bins follow the actual data range, candlesticks use local calendar days with neutral doji candles.
  • 💬 DM popup & unread badge (community contribution by @chrishaef): a new option controls whether the DM window pops up on incoming messages — turned off, a red badge with a gentle pulse counts unread DMs on the DM button instead.
  • 🛠️ Remote admin: fixed GPS position can now be read and set (incl. map picker; coordinates come from the node DB like in the Android app), broadcast interval as a 3–24 h picker, GPS update interval instead of the deprecated attempt time; device roles extended by CLIENT_BASE and ROUTER_LATE (community contributions by @chrishaef).

🐛 Fixed / ✨ Improved

  • Encrypted fake DMs stopped (community contribution by @chrishaef): overheard packets addressed to other nodes and undecryptable replies to our own queries used to open the DM window with "[encrypted message]" ghost chats — such packets no longer reach the chat view at all; real PKI DMs (incl. placeholder + 🔑 button) are preserved.
  • Traceroute distance: when an intermediate hop had no position, the distance column showed "?" — it now measures from the last hop with a known position (community contribution by @chrishaef).
  • Channel messages leaked into open DM chats: with an inline direct-message conversation open, live channel messages showed up inside the DM view (until the next view switch) — the DM now stays clean and the channel's sidebar badge counts instead.
  • Known nodes kept losing their positions: NodeInfo broadcasts (which carry no position) and the device's NodeDB on connect replaced the list entry wholesale — entries are now merged, a known position is never reset to empty anymore, and after connecting the client backfills missing positions from its own database (the device forgets, the client doesn't).
  • Remote admin: closing the window could minimize the main window to the taskbar — fixed.
  • Map texts corrected to DACH: the Meshhessen tile server covers Germany, Austria and Switzerland — the in-app texts still said "Germany only".
  • ⛰ 3D terrain on the vector map: new checkbox in the layer popup — a real elevation model (SRTM) with hillshading, Ctrl+drag to tilt. Areas viewed once keep working offline. A north arrow appears while the map is rotated/tilted (click to re-north).
  • ⛰ Elevation profile per radio link: right-click a neighbor in the telemetry window or a hop in the traceroute window to see the terrain profile with line of sight and Fresnel zone — including a verdict whether the path is clear or terrain is in the way.
  • Traceroute: honest MQTT badges. Hops only get the MQTT badge when no radio measurement exists for that segment — previously every hop was marked as soon as the reply arrived via MQTT. The header badge "via MQTT" now only means: the reply reached us via MQTT — that's up to the target node, even for "RF only" requests.
  • Neighbor database cleaned up: MQTT-bridged traceroute segments used to end up as fake "0 dB RF links" in the neighbor database — new links are filtered, old data is cleaned automatically at startup.
  • Broken glyphs repaired: the traceroute legend's ✕ button and other symbols (📡, 🚨, 🔔, 📍, arrows) only showed "?" due to an old encoding mishap — restored, with an automated test guarding against a repeat.
  • Node info shows "first/last seen": "first seen" comes from the telemetry database (earliest packet ever received) and survives client restarts.
v1.6.4.6 2026-10-19 New node info, dashboard dark-mode fix

Big update: telemetry dashboard greatly expanded (zoom, night shading, threshold alerts, export/import, fullscreen), toast notifications reworked, new node info window, dashboard dark-mode fix and reliable right-click menus.

🐛 Fixed / ✨ Improved

  • Telemetry dashboard expanded: zoom/pan survives auto-refresh · time axes in local time (was UTC) · day/night shading · threshold alerts as Windows toasts · dashboard export/import as JSON · fullscreen (F11) · window placement & last dashboard remembered · duplicate widget, save as PNG, copy image · CSV flavour for German Excel · smoother rendering and no more UI freezes while loading (background prefetch) · two timer leaks fixed.
  • Toast notifications: clicking now brings the app to the front (previously nothing happened); many messages arriving at once are bundled into a single summary toast instead of popping up individually for minutes; reloaded old messages no longer notify at all.
  • Telemetry neighbors = real RF neighbors: the neighbor table now shows only direct radio links (own 0-hop reception, traceroute hop pairs with per-hop SNR, NeighborInfo packets) instead of every heard node incl. MQTT — with SNR in both directions; the list fills over time (automatic fallback to the old view until then).
  • SNR colors fixed: multi-hop and MQTT nodes were painted with the last relay's SNR color (red "neighbors" in the node list) — SNR colors and time series are now based exclusively on direct reception.
  • Radio overlays on the map: the environment heatmap can now also render SNR, RSSI and noise floor as an interpolated surface.
  • LocalStats telemetry (newer firmware) is captured: noise floor, RX bad/duplicates, TX relay and more — in the telemetry window, as dashboard metrics and as a map overlay.
  • Automatic telemetry polling: the dashboard can actively poll up to 4 nodes for LocalStats/environment data (mesh-friendly: LocalStats at most 1×/h, others every 30 min max) — counter deltas automatically yield packets/h rates.
  • Traceroute "RF only": new checkbox — the request is sent with the OK-to-MQTT bit cleared (pre-encrypted packet), MQTT gateways won't uplink it, the route runs purely over RF.
  • Node info window redesigned (issue #46): avatar in node colour, role badge and info cards (device / status / position) — now also shows role, battery and signal; fully localized and theme-aware.
  • Dashboard readable in dark mode (issue #47): the toolbar buttons fell back to black text — the styles are now theme-aware.
  • Node list & channel list: right-click menu reliably targets the clicked row — previously "Node Info" sometimes opened nothing or the wrong node, and "Copy PSK" could copy another channel's PSK.
  • Role detection fixed: routers/repeaters were never recognized as infrastructure internally (spelling mismatch); display names now work for both spellings, CLIENT_BASE shows as "Client Base".
  • Info tab shows the full version number (v1.6.4.6), the status bar keeps the short version.
v1.6.4.5 2026-10-03 Remote admin over multi-hop & MQTT

Remote administration of distant nodes now works across relay and MQTT paths — and rejections are reported with a concrete reason instead of a silent timeout.

🛠️ Remote admin

  • Only worked for directly reachable nodes — admin packets were sent without want_ack/hop_limit, so the firmware left the hop limit at 0 and no node relayed them. Now: hop limit 7, want_ack and "Reliable" priority (including RF retransmits on lossy paths).
  • Rejections (NAK) are reported — if the target node or the route rejects a request (e.g. admin key not registered, PKI key problem, no RF acknowledgement), the window immediately shows the concrete reason plus a hint instead of "timeout" 30 s later.
  • Explicit PKI flag (like the Android app) — if the local node cannot encrypt via PKI, you now get a visible error instead of the packet being silently sent channel-encrypted and dropped on the other side.
v1.6.4.3 2026-09-18 Mesh-Hessen button reboot-safe

The Mesh-Hessen button now writes the profile in a single transaction (only one reboot), reads all values back and automatically re-applies anything missing.

🔵 Mesh-Hessen button

  • Only one reboot at the end (a single edit transaction) — previously the device rebooted right after the preset change and the channel write was lost.
  • ok_to_mqtt/ignore_mqtt are now set correctly — the firmware's EU868 coercion is bypassed with a second LoRa write.
  • Read-back with ✓/✗ after the automatic reconnect; anything missing is re-applied in a second pass.
v1.6.4.2 2026-09-17 Virtual node: stable Android app connection

Bugfix: the Meshtastic Android app ran into a reconnect loop when connecting to the virtual node.

📡 Virtual node

  • The Android app's two-stage want_config handshake is now answered correctly (stage 1: config only, stage 2: nodes only) — previously the app never reached "connected".
v1.6.4 2026-09-10 Messenger-style messaging

Big messaging update: sidebar with channels & direct messages, delivery ticks, toast notifications and faster Bluetooth.

💬 Messaging

  • Sidebar in the messages tab (channels and DMs) with unread badges; DMs either inline in the client or in a separate window.
  • Delivery ticks (… → ✓ → ✓✓ or ⚠) based on the firmware acknowledgement, plus a resend button on failed messages.
  • Windows toast notifications for new messages (optional, only while the window is not in the foreground).
  • Faster, more stable BLE: throughput-optimized connection parameters and clean reconnect.

🐛 Fixed

  • Chat starts at the newest message; the send channel follows the sidebar (duplicate dropdown removed); selection and displayed messages match at startup.
  • "Request info" in the chat context menu (works for unknown nodes too); "Send DM" respects the inline/window switch.
  • Serial connection no longer freezes when disconnecting from a non-Meshtastic port; no toast spam for undecryptable messages.
v1.6.3 2026-08-31 Environment data on the map

New feature: nodes with environmental telemetry (temperature, humidity, IAQ and more) show their readings directly on the map – on both the raster and vector map.

🌡️ Environment data

  • Value boxes at the nodes (mode: off / always / on hover); nodes with data are marked by a green marker ring.
  • Weather-service style heatmap: IDW-interpolated value field (~30 km reach), calibrated colour scale = actual reading, soft edges, isotherms with temperature labels and an outer border. For all metrics.
  • Full sensor set (temperature, humidity, pressure, IAQ, gas, lux, wind, rain, soil and more); telemetry DB is migrated automatically.
  • Time weighting (older readings count less), individual nodes can be excluded, metric selector – all via the 🌡️ button on the map.
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)