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.
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.
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_BASEundROUTER_LATEergä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.
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_BASEals „Client Base". - Info-Tab zeigt die volle Versionsnummer (v1.6.4.6), Statusbar behält die Kurzversion.
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_limitraus, die Firmware ließ das Hop-Limit dadurch auf 0 und kein Node leitete sie weiter. Jetzt: Hop-Limit 7,want_ackund 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.
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_mqttwerden 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.
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".
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.
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.
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.
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.
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)
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.csund kann nicht mehr durch Nicht-UTF-8-Speicherung kaputtgehen
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
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)
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
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_infoergänzt (Android braucht ihn für Node-Liste/Senden)
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 Protokolldefinitionen als git-Submodule (auf Version gepinnt);
portnumist 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
- 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
MainWindowin Teildateien aufgeteilt;AppSettingsauf init-Properties umgestellt (behebt einen latenten Bug beim Speichern der Sprache)
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
- 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)
- 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)
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
- 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
- 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
- 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
- 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)
- SNR + RSSI direkt in der Nachrichten-Bubble bei Direktempfang (0 Hops, kein MQTT) – farbig gemäß Signal-Gradient
- 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
Position.ground_speed/ground_tracklagen auf Feld 14/15 statt 15/16 → GPS-Geschwindigkeit/Kurs falsch dekodiertRegion-Enum ab Wert 13 verschoben (UA_868/MY_919/SG_923/LORA_24) → korrigiert + vollständige ListeMQTTConfigFeld 11 waruint32statt verschachtelterMapReportSettings→ Map-Report-Genauigkeit repariertTelemetryConfigFelder 3–9 verschoben → Telemetrie-Modul-Konfig jetzt korrektCannedMessageConfigverschoben (send_bellu.a.);ModemPreset8–13 ergänzt
- 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
Eigener Stationsname pro verbundenem Node, plus Fix der MQTT-Proxy-Statusleiste.
✨ Hinzugefügt
- 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
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
- 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
- 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
- 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
- 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
- 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
- Stern-Symbol in der Node-Liste; per Rechtsklick als Favorit markieren/entfernen
- Sync mit dem Gerät via
set_favorite_node/remove_favorite_nodeAdmin-Nachrichten - Favoriten werden in der Liste oben angezeigt; Persistenz in
meshhessen-client.ini
- 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_nodean den Remote-Node - Session-Schlüssel-Handshake, konfigurierbarer Timeout, feste GPS-Koordinaten via
set_position - Ferngesteuerter Neustart, Herunterfahren, Node-DB-Reset
- 📊-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
GetChannelRequestist 1-basiert (1 = Kanal 0 usw.): War 0-basiert → Kanal 0 lud nie (Timeout), alle anderen um eins verschoben- Stale-Response-Check entfernt:
ch.Indexist bei Firmware oft 0 (Protobuf-Default) → alle Kanäle außer 0 wurden als „falsche Antwort" dreifach neu angefordert
add_favorite_node = 36war veraltet; Firmware-Feld 36 =set_canned_message_module_messages→ Requests landeten still beim falschen Handleradmin.protoauf aktuelle Feldnummern aktualisiert:set_favorite_node = 39,remove_favorite_node = 40
- Public Key und Private Key wurden als Hex angezeigt; Meshtastic-App nutzt Base64 → beide Admin-Fenster (lokal & remote) zeigen Keys jetzt in Base64
- 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
Komplett überarbeitetes Einstellungsfenster mit allen Firmware-Modulen, eigenem Karten-Picker, vollständiger Positions-Präzision und Telemetrie im Karten-Kontextmenü.
✨ Hinzugefügt
- 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
- 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)
- Genauigkeitsstufe für Map-Report-Pakete einstellbar (neues Proto-Feld
map_report_precision) - Beschreibung verweist jetzt auch auf map.meshhessen.de
- „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
LocalFileTileProvidernachServices/ausgelagert (gemeinsame Nutzung durch Hauptkarte und Picker)
- Telemetrie im Rechtsklick-Kontextmenü für alle Nodes auf der Karte (nach Traceroute)
OpenTelemetryForNode()als gemeinsamer Helper — auch vom Nodes-Listenmenü genutzt
Drei Kartenmodi, HTTP/3, persistente Nachrichten-DB, DM-History und Verbindung merken.
✨ Hinzugefügt
- SQLite-Nachrichtenspeicher für Kanal- und DM-Nachrichten — optional, in Einstellungen aktivierbar
- Je Kanal eine eigene DB-Datei (
messages/channel_{index}_{name}.db), DMs inmessages/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
- 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
- Online-Modi: Meshhessen-Server (lazy download, dauerhaft lokal, alle Stile, Deutschland) und OpenStreetMap (weltweit, nur Standardkarte, OSM-Policy-konform)
- Neuer Tile-Server:
tile.meshhessenclient.delö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-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 (
↪ Nmit 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
⚡ MQTTgekennzeichnet
🐛 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
🐛 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
Viele Detailverbesserungen: bessere Traceroutes, Copy-Funktion, Hyperlinks, Übersetzungs-Fixes.
✨ Hinzugefügt
- 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 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)
Das größte Update bisher: vollständige Telemetrie-Analyse mit LED-Ampeln und PKI-Entschlüsselung.
✨ Hinzugefügt
- 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
- 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
- Device-Metadata: Firmware-Version und Hardware-Modell im Node-Info-Fenster
- Node-Konfiguration: Einstellungen des verbundenen Geräts direkt anpassen
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
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
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
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
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
Erster öffentlicher Beta-Release: DMs, Message-Logging, Offline-Karte, Telemetrie-Grundlage und Dark Mode.
✨ Hinzugefügt
- 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/
- 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
- USB/Serial-Verbindung mit robustem Protokoll-Framing
- Dark Mode (ModernWPF Fluent Design)
- Debug-Tab mit Live-Log
- Persistente Einstellungen (INI-Datei)