Skip to content

Releases: SMLunchen/mh_windowsclient

Meshhessen Client v1.5.10

24 Apr 12:52

Choose a tag to compare

Pre-release

feat: v1.5.10 — Favoriten, Remote Admin, Telemetrie-Dashboard

Favoriten

  • Nodes als Favoriten markieren (★-Spalte, Rechtsklick-Menü)
  • Sync mit Gerät via add_favorite_node / remove_favorite_node (proto 36/37)
  • Sortierung: Favoriten → Gepinnte → Rest; Persistenz in meshhessen-client.ini

Remote Admin

  • SendRemoteAdminRequestAsync / SendRemoteAdminWriteAsync mit
    per-Node-Session-Keys und TCS-basiertem Request-Routing
  • RemoteAdminWindow: 9 Reiter (Besitzer, Gerät, Position, LoRa, Bluetooth,
    Netzwerk, Anzeige, Kanäle, Steuerung); Metadata- + Session-Key-Handshake
  • Feste GPS-Koordinaten via separatem set_position-Befehl
  • Ferngesteuerter Neustart, Herunterfahren, Node-DB-Reset
  • Favorit-Status direkt im Remote-Admin-Fenster umschaltbar
  • Konfigurierbarer Timeout (Standard 30 s) in Einstellungen

Telemetrie-Dashboard

  • TelemetryDashboardWindow mit benannten Dashboards (dashboards.json)
  • 11 Widget-Typen: Zeitverlauf (OxyPlot), Balkendiagramm, Area Chart, Bar Chart, Scatter Plot, Gauge, Stat Card, Heatmap, Histogram, Candlestick, State Timeline & Clock
  • Neue Metriken: Temperatur, Luftfeuchtigkeit, Luftdruck (environment_telemetry)
  • GetHeatmapData: 2D-Matrix Stunde×Tag für Heatmap-Widgets
  • AddWidgetDialog für Typ-, Metrik-, Node- und Zeitraum-Auswahl
  • Button "Dashboard öffnen" im TelemetryWindow-Footer

Docs & i18n

  • DE + EN Strings für alle neuen Features
  • Version 1.5.9 → 1.5.10 in .csproj
  • README (DE+EN) und docs/changelog.html aktualisiert
    feat: Remote Admin security tab, remote favorites, standalone dashboard

Remote Admin — Security tab

  • Add "Security" tab (between Channels and Control) for Config.SecurityConfig
  • Public key shown read-only as lowercase hex (Consolas font)
  • Admin keys 1–3 editable as Base64; rebuilt into repeated protobuf field on save
  • Checkboxes: Admin Channel Enabled, Managed Mode, Serial Console, Debug Log API
  • Loaded via GetConfigRequest = SecurityConfig (type 7) during ConnectAndLoadAsync
  • Saved inside BeginEditSettings / CommitEditSettings flow like all other config sections
  • Reuses existing StrNcSec* i18n keys from NodeConfigWindow; adds only StrRaTabSecurity

Remote Admin — Manage favorites on remote node

  • New section in the Control tab: ComboBox of all known nodes (excluding target)
  • "Add as favorite" / "Remove favorite" buttons send AddFavoriteNode /
    RemoveFavoriteNode AdminMessage directly to the remote node via SendRemoteAdminWriteAsync
  • Confirmation MessageBox after each action
  • New i18n keys: StrRaFavoritesSection/Desc/Add/Remove/Added/Removed (DE + EN)

Telemetry Dashboard

  • Remove Owner = this from TelemetryWindow.OpenDashboard_Click — dashboard is now
    an independent top-level window; it no longer closes when the telemetry window closes;
    can be placed on a second monitor
  • Add 📊 toolbar button (OpenDashboardButton) to the main window toolbar next to DMs,
    opening TelemetryDashboardWindow directly without going through the node context menu
  • New i18n keys: StrOpenDashboard (DE + EN)

Docs

  • CHANGELOG: document Security tab, remote favorites, dashboard improvements
  • README: expand Fernverwaltung bullet with all tabs including Security;
    update Dashboard bullet with full widget-type list and standalone-window note

Meshhessen Client v1.5.9

21 Apr 08:21

Choose a tag to compare

Meshhessen Client v1.5.9

Full Changelog: https://github.com/SMLunchen/mh_windowsclient/commits/v1.5.9

🚀 Schnellstart

.NET SDK installieren

  1. Download: https://dotnet.microsoft.com/en-us/download/dotnet/8.0

  2. Installer ausführen

  3. Download: Neueste MeshhessenClient.exe aus den Releases herunterladen

  4. Gerät anschließen: Meshtastic-Device per USB anstecken

  5. Starten: Doppelklick auf MeshhessenClient.exe – keine Installation nötig

  6. Verbinden: COM-Port wählen → „Verbinden" klicken

  7. Loslegen: 3–10 Sekunden warten bis Kanäle geladen sind, dann Nachrichten senden

Die App ist vollständig offline-fähig. Keine Cloud, keine Registrierung.

v1.5.9

Node Configuration — Full Device Setup

The node configuration window now covers all major Meshtastic modules in one place:

  • LoRa — region, modem preset, bandwidth, TX power, hop limit, and more
  • Bluetooth — enable/disable, PIN mode, fixed PIN
  • WiFi — SSID, password, AP mode
  • MQTT — server, credentials, TLS, JSON, map reporting
  • Position — fixed position, GPS settings, broadcast intervals
  • Display — flip screen, timeout, carousel
  • Channels — role, name, PSK, uplink/downlink per slot

Position Picker — Map-Aware

The "Pick from Map" button in the position settings now opens a dedicated picker window instead of using the main window's map center. The picker respects your current map settings (offline tile cache or online source).

"Own Map Pin" Button

A new button next to the position picker lets you instantly apply your own position pin (set via right-click → "Set My Position" on the main map) as the node's fixed position — no manual coordinate entry needed.

Channel Management Improvements

  • Column headers are now fully localized
  • Column widths adjusted so "No Location" and other labels are no longer clipped
  • Precision ComboBox now shows all levels from bits 10–19:
    ~23 km · ~11 km · ~5.7 km · ~2.9 km · ~1.4 km · ~720 m · ~360 m · ~180 m · ~90 m · ~45 m · Exact

MQTT Map Report Precision

A dedicated precision setting for MQTT map reports is now available in the MQTT section. Reports are visible at map.meshhessen.de.

Telemetry from Map Context Menu

Right-clicking a node on the map now includes a Telemetry entry alongside the existing Traceroute option — opens the telemetry window directly from the map.

v1.5.8

Features: Persistent Message DB, DM History, Remember Connection

  • Message Database (SQLite):
    • Permanently store channel and DM messages in a local SQLite database (optional, can be enabled in settings)
    • Each channel uses its own database file (channel_{index}_{name}.db), DMs are stored in dm.db
    • The last 24 hours of messages are automatically loaded after connecting
    • Lazy-load older messages when scrolling up
  • Direct Messages (DM) Window:
    • All saved conversations (last 24 hours) are automatically restored as tabs when opening
    • Sent DMs are now persisted to the database as well
    • Confirmation dialog before clearing a conversation
    • Fix: UpdateProtocolService was missing on first connect, causing DMs over WiFi/BT to fail with "Serial port is not connected"
  • Channels Tab:
    • New column "Clear Message DB" with a button for each channel
    • Button opens a dialog to select the time range to clear (All / 30 / 90 / 365 days)
  • Remember Connection:
    • Last connection type (Serial / BT / WiFi) is stored in the INI and preselected on startup
    • Last Bluetooth device is auto-selected after scanning

Features: Chat Bubbles, Node Color Tint, DM Redesign, UX Fixes

  • Chat bubble layout for both channel and DM windows (own messages right/green, others left)
  • Node color shows as semi-transparent tint across the entire bubble
  • Fully redesigned DM window (bubble-based design with XAML DataTemplate, no more GridView)
  • Relay hops indicator: displays ↪ N with localized tooltip
  • Note badge shown in red instead of gray
  • Reply bug: text entry is no longer cleared when clicking "Reply"

Fixes (7 bugs):

  • LastSeen now shows the date if not today (Yesterday HH:mm / dd.MM. HH:mm)
  • On reconnect: _messageById and _dbOldestTimestamp are cleared on disconnect
  • Database load: scrolls to end after loading
  • Port field widened (90px) to prevent cut-off text
  • MessageDB now enabled by default (with parse fallback)
  • SocketException “ConnectionRefused” displays localized string

Meshhessen Client v1.5.9-alpha

12 Apr 22:17

Choose a tag to compare

Pre-release

Meshhessen Client v1.5.9-alpha

Windows-Client für Meshtastic-Geräte – entwickelt von der Meshhessen Community.

Download

👇 Einfach MeshhessenClient.exe herunterladen und starten – keine Installation nötig!

Voraussetzungen

  • Windows 10/11 x64
  • Meshtastic-Gerät mit USB-Anschluss

Meshhessen Client v1.5.8

08 Apr 09:30
37841e6

Choose a tag to compare

Meshhessen Client v1.5.8

Full Changelog: https://github.com/SMLunchen/mh_windowsclient/commits/v1.5.8

🚀 Schnellstart

.NET SDK installieren

  1. Download: https://dotnet.microsoft.com/en-us/download/dotnet/8.0

  2. Installer ausführen

  3. Download: Neueste MeshhessenClient.exe aus den Releases herunterladen

  4. Gerät anschließen: Meshtastic-Device per USB anstecken

  5. Starten: Doppelklick auf MeshhessenClient.exe – keine Installation nötig

  6. Verbinden: COM-Port wählen → „Verbinden" klicken

  7. Loslegen: 3–10 Sekunden warten bis Kanäle geladen sind, dann Nachrichten senden

Die App ist vollständig offline-fähig. Keine Cloud, keine Registrierung.

v1.5.8

Features: Persistent Message DB, DM History, Remember Connection

  • Message Database (SQLite):
    • Permanently store channel and DM messages in a local SQLite database (optional, can be enabled in settings)
    • Each channel uses its own database file (channel_{index}_{name}.db), DMs are stored in dm.db
    • The last 24 hours of messages are automatically loaded after connecting
    • Lazy-load older messages when scrolling up
  • Direct Messages (DM) Window:
    • All saved conversations (last 24 hours) are automatically restored as tabs when opening
    • Sent DMs are now persisted to the database as well
    • Confirmation dialog before clearing a conversation
    • Fix: UpdateProtocolService was missing on first connect, causing DMs over WiFi/BT to fail with "Serial port is not connected"
  • Channels Tab:
    • New column "Clear Message DB" with a button for each channel
    • Button opens a dialog to select the time range to clear (All / 30 / 90 / 365 days)
  • Remember Connection:
    • Last connection type (Serial / BT / WiFi) is stored in the INI and preselected on startup
    • Last Bluetooth device is auto-selected after scanning

Features: Chat Bubbles, Node Color Tint, DM Redesign, UX Fixes

  • Chat bubble layout for both channel and DM windows (own messages right/green, others left)
  • Node color shows as semi-transparent tint across the entire bubble
  • Fully redesigned DM window (bubble-based design with XAML DataTemplate, no more GridView)
  • Relay hops indicator: displays ↪ N with localized tooltip
  • Note badge shown in red instead of gray
  • Reply bug: text entry is no longer cleared when clicking "Reply"

Fixes (7 bugs):

  • LastSeen now shows the date if not today (Yesterday HH:mm / dd.MM. HH:mm)
  • On reconnect: _messageById and _dbOldestTimestamp are cleared on disconnect
  • Database load: scrolls to end after loading
  • Port field widened (90px) to prevent cut-off text
  • MessageDB now enabled by default (with parse fallback)
  • SocketException “ConnectionRefused” displays localized string

v1.5.7

  • FIX: Sorting for Nodes: Last Seen was sorted by text not date
  • FIX: Sorting for Nodes: Battery status without info will now be put at the end

Meshhessen Client v1.5.8-alpha

04 Apr 20:36

Choose a tag to compare

Pre-release

Full Changelog: v1.5.7...v1.5.8-alpha
feat: Online-Kartenmodi, neuer Tile-Server, HTTP/3

  • Drei Karten-Modi: Offline (Standard), Online-Meshhessen (lazy download,
    persistent), Online-OSM (weltweit, policy-konform mit HTTP-Cache/ETag)
  • Tile-Server tile.schwarzes-seelenreich.de → tile.meshhessenclient.de
  • HTTP/3 mit automatischem Fallback auf HTTP/2 / HTTP/1.1
  • OSM-Cache: min. 7 Tage TTL, ETag/If-None-Match, stale-on-error
  • OSM User-Agent mit Kontaktadresse (policy-konform)

feat: persistente Nachrichten-DB, DM-History, Verbindung merken

Nachrichten-Datenbank (SQLite):

  • Kanal- und DM-Nachrichten dauerhaft in lokaler SQLite-DB speichern
    (optional, aktivierbar in Einstellungen)
  • Je Kanal eigene DB-Datei (channel_{index}_{name}.db), DMs in dm.db
  • Letzte 24 h werden nach dem Verbinden automatisch geladen
  • Lazy-Load älterer Nachrichten beim Hochscrollen

DM-Fenster:

  • Alle gespeicherten Konversationen (letzte 24 h) werden beim Öffnen
    automatisch als Tabs wiederhergestellt
  • Gesendete DMs werden jetzt ebenfalls in der DB persistiert
  • Bestätigung vor dem Leeren einer Konversation
  • Fix: UpdateProtocolService fehlte beim ersten Connect – DMs über
    WiFi/BT schlugen mit "Serial port is not connected" fehl

Kanäle-Tab:

  • Neue Spalte "Nachrichten-DB leeren" mit Button pro Kanal
  • Klick öffnet Dialog mit Zeitraum-Auswahl (Alle / 30 / 90 / 365 Tage)

Verbindung merken:

  • Letzte Verbindungsart (Serial / BT / WiFi) wird in der INI gespeichert
    und beim Start automatisch vorausgewählt
  • Letztes BT-Gerät wird nach dem Scan vorausgewählt

Strings / I18n:

  • Alle neuen UI-Texte in Deutsch und Englisch
  • Singular/Plural-Fix für DM-Statusleiste (1 aktiver Chat / N aktive Chats)

Docs: README, CHANGELOG und docs/index.html aktualisiertfeat: persistente Nachrichten-DB, DM-History, Verbindung merken

Meshhessen Client v1.5.7

03 Apr 18:03

Choose a tag to compare

Meshhessen Client v1.5.7

Full Changelog: https://github.com/SMLunchen/mh_windowsclient/commits/v1.5.7

🚀 Schnellstart

.NET SDK installieren

  1. Download: https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/runtime-desktop-8.0.23-windows-x64-installer

  2. Installer ausführen

  3. Download: Neueste MeshhessenClient.exe aus den Releases herunterladen

  4. Gerät anschließen: Meshtastic-Device per USB anstecken

  5. Starten: Doppelklick auf MeshhessenClient.exe – keine Installation nötig

  6. Verbinden: COM-Port wählen → „Verbinden" klicken

  7. Loslegen: 3–10 Sekunden warten bis Kanäle geladen sind, dann Nachrichten senden

Die App ist vollständig offline-fähig. Keine Cloud, keine Registrierung.

v1.5.7

  • FIX: Sorting for Nodes: Last Seen was sorted by text not date
  • FIX: Sorting for Nodes: Battery status without info will now be put at the end

v1.5.6

Messages & Interaction

  • Selectable text & clickable links — Messages in the main window and DM window now use a RichTextBox instead of a plain TextBlock. Text can be selected and copied; URLs are rendered as clickable hyperlinks. Implemented via MessageDocumentConverter (Converters/) and RichTextBoxHelper (Helpers/) attached property.

  • Protocol-level reply (Issue #26) — Replies use Meshtastic Data.reply_id (field 7). When sending a reply, the packet includes the original message's packet ID. Incoming replies are detected, the original message is looked up, and a quote block (↳ Sender: preview) is displayed above the message in both the main window and DM window. The quote block uses Windows accent blue (#0078D4) for the left border for clear visual distinction.

  • Copy message (Issue #25) — Right-click context menu "Copy Message" copies the full message text to the clipboard. Works correctly in both main and DM windows.

  • Context menu — right-clicked row — Right-clicking a message now always acts on the clicked row, not the previously selected row. Fixed via ContextMenuOpening handler that reads e.OriginalSource and updates SelectedItem before the menu opens. Applied to both main window and DM window.

  • Context menu for unknown senders — The main window no longer suppresses the entire context menu when the sender node is unknown. Copy, React, and Reply still work; node-specific items (Pin, Show Path) are hidden instead.

  • Text wrapping for reply messages — Messages with a reply quote block above them now wrap correctly. Root cause: StackPanel does not constrain child width in a ListView GridView cell. Fixed by replacing StackPanel with Grid (two Height="Auto" rows, HorizontalAlignment="Stretch"), applied to both main and DM window DataTemplates. Quote TextBlock uses TextWrapping="Wrap" instead of TextTrimming.

  • Message input limit — Both the main window and DM window input fields are limited to 200 characters (MaxLength="200").

  • DM window — messages visible — MsgDocConverter was defined only in MainWindow.Window.Resources (not app-level). The DM window code-behind now instantiates new MessageDocumentConverter() directly instead of looking it up via Application.Current.Resources.

  • Reply quote styling — Quote block uses #0078D4 (Windows accent blue, solid, 3px left border) and #150078D4 (10% opacity blue tint background). Text uses SystemControlForegroundBaseMediumHighBrush. Works in both light and dark mode.

  • Reply indicator bar — The "Replying to…" bar above the send field uses the same blue accent styling.

Map & Traceroutes

  • Segment-SNR popup (T3) — Left-clicking a traceroute segment opens SegmentSnrWindow showing a historical SNR chart for that segment. Root-cause fix: invalid hex color #DDDDDDD (7 chars) in SegmentSnrWindow.xaml caused a silent XamlParseException on InitializeComponent().

  • Segment click without map pan — PreviewMouseLeftButtonDown with e.Handled = true when a segment is hit prevents Mapsui from starting a pan gesture.

  • Hand cursor on segment hover — MouseMove handler changes cursor to a hand when hovering over a traceroute segment.

  • Traceroute MQTT lightning symbol (T1) — MQTT-routed traceroutes are shown with a ⚡ symbol.

  • Traceroute direction arrows (T2) — Arrows on segments indicate direction.

  • Traceroute toolbar — Time-range combobox (3d/7d/14d/30d/90d/All), "Load from DB" button, and deduplicate checkbox (only latest traceroute per node pair).

  • Waypoints (W1/W2) — Waypoints are received, stored, and displayed on the map. Create dialog via map right-click.

  • Position history (P1–P3) — node_positions DB table, position logging, and trail display on the map.

Signal Analysis & Status Bar

  • Global LED status strip — Four LEDs in the header: Weather/Short-Term (KT), Long-Term SNR (LZ), Neighbours (NB), Path Stability (PS), plus Mesh Health LED and score text. Detailed tooltips for each.

  • Mesh Health score — Channel utilization component corrected: SQL query now filters by timestamp >= since so stale/inactive nodes are excluded. Per-node breakdown (top 5) shown in tooltip. Format fixed from {0:0.1} (which appended literal "1" in German locale) to {0:F1}.

-Per-node channel util breakdown — Mesh Health LED tooltip shows the top 5 nodes by channel utilization: !nodeId = X.X% with total node count.

-Channel utilization sanity cap — Values capped at 100% in case of corrupt DB entries.

-Own Node ID in status bar — Shown on the right side of the status bar next to packet count.

-Per-node signal LEDs — In the Telemetry window: Signal, Battery, ACK, Channel LEDs per node.

-Time synchronisation (S1) — Node context menu "Sync time" sends the current UTC time to the node.

Connection & Translations

  • All connection validation strings localised — Previously hardcoded German MessageBox.Show(...) calls for COM port, Bluetooth, and TCP/WiFi connection errors are now fully localised via Loc():

  • StrSelectComPort, StrSelectBtDevice, StrEnterTcpHost, StrEnterTcpPort
    TCP panel labels StrTcpHost / StrTcpPort
    ~95 new string keys added to both Strings.de.xaml and Strings.en.xaml, covering traceroute, waypoint, telemetry, LED tooltips, reply/react, mesh health summary, connection status, and more.

Meshhessen Client v1.5.6

14 Mar 10:07

Choose a tag to compare

Meshhessen Client v1.5.6

Full Changelog: https://github.com/SMLunchen/mh_windowsclient/commits/v1.5.6

🚀 Schnellstart

.NET SDK installieren

  1. Download: https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/runtime-desktop-8.0.23-windows-x64-installer

  2. Installer ausführen

  3. Download: Neueste MeshhessenClient.exe aus den Releases herunterladen

  4. Gerät anschließen: Meshtastic-Device per USB anstecken

  5. Starten: Doppelklick auf MeshhessenClient.exe – keine Installation nötig

  6. Verbinden: COM-Port wählen → „Verbinden" klicken

  7. Loslegen: 3–10 Sekunden warten bis Kanäle geladen sind, dann Nachrichten senden

Die App ist vollständig offline-fähig. Keine Cloud, keine Registrierung.

v1.5.6

Messages & Interaction

  • Selectable text & clickable links — Messages in the main window and DM window now use a RichTextBox instead of a plain TextBlock. Text can be selected and copied; URLs are rendered as clickable hyperlinks. Implemented via MessageDocumentConverter (Converters/) and RichTextBoxHelper (Helpers/) attached property.

  • Protocol-level reply (Issue #26) — Replies use Meshtastic Data.reply_id (field 7). When sending a reply, the packet includes the original message's packet ID. Incoming replies are detected, the original message is looked up, and a quote block (↳ Sender: preview) is displayed above the message in both the main window and DM window. The quote block uses Windows accent blue (#0078D4) for the left border for clear visual distinction.

  • Copy message (Issue #25) — Right-click context menu "Copy Message" copies the full message text to the clipboard. Works correctly in both main and DM windows.

  • Context menu — right-clicked row — Right-clicking a message now always acts on the clicked row, not the previously selected row. Fixed via ContextMenuOpening handler that reads e.OriginalSource and updates SelectedItem before the menu opens. Applied to both main window and DM window.

  • Context menu for unknown senders — The main window no longer suppresses the entire context menu when the sender node is unknown. Copy, React, and Reply still work; node-specific items (Pin, Show Path) are hidden instead.

  • Text wrapping for reply messages — Messages with a reply quote block above them now wrap correctly. Root cause: StackPanel does not constrain child width in a ListView GridView cell. Fixed by replacing StackPanel with Grid (two Height="Auto" rows, HorizontalAlignment="Stretch"), applied to both main and DM window DataTemplates. Quote TextBlock uses TextWrapping="Wrap" instead of TextTrimming.

  • Message input limit — Both the main window and DM window input fields are limited to 200 characters (MaxLength="200").

  • DM window — messages visible — MsgDocConverter was defined only in MainWindow.Window.Resources (not app-level). The DM window code-behind now instantiates new MessageDocumentConverter() directly instead of looking it up via Application.Current.Resources.

  • Reply quote styling — Quote block uses #0078D4 (Windows accent blue, solid, 3px left border) and #150078D4 (10% opacity blue tint background). Text uses SystemControlForegroundBaseMediumHighBrush. Works in both light and dark mode.

  • Reply indicator bar — The "Replying to…" bar above the send field uses the same blue accent styling.

Map & Traceroutes

  • Segment-SNR popup (T3) — Left-clicking a traceroute segment opens SegmentSnrWindow showing a historical SNR chart for that segment. Root-cause fix: invalid hex color #DDDDDDD (7 chars) in SegmentSnrWindow.xaml caused a silent XamlParseException on InitializeComponent().

  • Segment click without map pan — PreviewMouseLeftButtonDown with e.Handled = true when a segment is hit prevents Mapsui from starting a pan gesture.

  • Hand cursor on segment hover — MouseMove handler changes cursor to a hand when hovering over a traceroute segment.

  • Traceroute MQTT lightning symbol (T1) — MQTT-routed traceroutes are shown with a ⚡ symbol.

  • Traceroute direction arrows (T2) — Arrows on segments indicate direction.

  • Traceroute toolbar — Time-range combobox (3d/7d/14d/30d/90d/All), "Load from DB" button, and deduplicate checkbox (only latest traceroute per node pair).

  • Waypoints (W1/W2) — Waypoints are received, stored, and displayed on the map. Create dialog via map right-click.

  • Position history (P1–P3) — node_positions DB table, position logging, and trail display on the map.

Signal Analysis & Status Bar

  • Global LED status strip — Four LEDs in the header: Weather/Short-Term (KT), Long-Term SNR (LZ), Neighbours (NB), Path Stability (PS), plus Mesh Health LED and score text. Detailed tooltips for each.

  • Mesh Health score — Channel utilization component corrected: SQL query now filters by timestamp >= since so stale/inactive nodes are excluded. Per-node breakdown (top 5) shown in tooltip. Format fixed from {0:0.1} (which appended literal "1" in German locale) to {0:F1}.

-Per-node channel util breakdown — Mesh Health LED tooltip shows the top 5 nodes by channel utilization: !nodeId = X.X% with total node count.

-Channel utilization sanity cap — Values capped at 100% in case of corrupt DB entries.

-Own Node ID in status bar — Shown on the right side of the status bar next to packet count.

-Per-node signal LEDs — In the Telemetry window: Signal, Battery, ACK, Channel LEDs per node.

-Time synchronisation (S1) — Node context menu "Sync time" sends the current UTC time to the node.

Connection & Translations

  • All connection validation strings localised — Previously hardcoded German MessageBox.Show(...) calls for COM port, Bluetooth, and TCP/WiFi connection errors are now fully localised via Loc():

  • StrSelectComPort, StrSelectBtDevice, StrEnterTcpHost, StrEnterTcpPort
    TCP panel labels StrTcpHost / StrTcpPort
    ~95 new string keys added to both Strings.de.xaml and Strings.en.xaml, covering traceroute, waypoint, telemetry, LED tooltips, reply/react, mesh health summary, connection status, and more.

v1.5.5

v1.5.5 – Telemetrie, Signal-Analyse & PSKs

Telemetrie & Statistik

  • Telemetrie-Datenbank (telemetry.db, SQLite): Alle Pakete werden lokal gespeichert — SNR, RSSI, Hops, ACK-Status, Batterie, Spannung, Channel-Auslastung, Temperatur, Luftfeuchte, Luftdruck
  • Telemetrie-Fenster pro Node (Rechtsklick → Telemetrie): Signal-, Energie-, Airtime- und Routing-Statistiken mit wählbarem Zeitraum (7 / 30 / 90 / ∞ Tage)
  • Interaktive Zeitreihen-Plots (OxyPlot): SNR/RSSI, Batterie, Temperatur/Feuchte, Channel-Util — mit Zoom & Pan
  • Tag/Nacht-Auswertung via NOAA-Algorithmus (Standort-basiert): Batterie-Nachtabfall, Energie-Trend sichtbar
  • Datenbank-Retention: konfigurierbar in den Einstellungen (Standard 90 Tage, 0 = unbegrenzt)

Signal-Analyse & LED-Ampeln

  • Globale Status-Leiste (immer sichtbar): 4 LEDs für Wetter-Signal, Antennen-Qualität, Nachbar-Stabilität und Pfad-Stabilität + Mesh-Health-Score (0–100%)
  • Node-Liste: 3-Punkte-Matrix pro Node (Signal-Qualität | Signal-Trend | Batterie-Status) — grau = kein Datensatz, farbig = live bewertet
  • Per-Node Ampel im Telemetrie-Fenster: Signal, Energie, ACK, Kanal-Auslastung

PKI-Entschlüsselung

  • X25519 ECDH + AES-256-CTR: Verschlüsselte Direkt-Nachrichten (pki_encrypted) werden automatisch entschlüsselt
  • Private Key RAM-only: wird beim Disconnect sicher aus dem Speicher gelöscht (ZeroMemory), nie auf Disk geschrieben
  • Public-Key-Datenbank (node_keys.csv): automatisch befüllt; bei Key-Wechsel konfigurierbar: Warnen / Überschreiben / Nachfragen
  • Key-Spalte in der Node-Liste zeigt ob der Public Key eines Nodes bekannt ist

Hardware & Firmware

  • Firmware-Version und Board-Modell werden beim Connect automatisch abgerufen und im Node-Info-Fenster angezeigt
  • Board-Erkennung gefixt: Heltec v3 wurde fälschlicherweise als EbyteEsp32S3 erkannt (und weitere betroffene Boards)

UI / UX

  • Tooltip-Delay: 400ms → 150ms, Anzeigedauer auf 20 Sekunden verlängert
  • DPI-Clipping der LEDs bei hoher Bildschirmskalierung behoben (SnapsToDevicePixels, UseLayoutRounding)
  • Dark-Mode: LED-Dots in der Node-Liste jetzt grau statt unsichtbar, wenn kein Status vorhanden
  • NodeKeyMismatchDialog: Buttons "Übernehmen"/"Ignorieren" wurden bei langen Labels abgeschnitten — gefixt

Meshhessen Client v1.5.6-alpha

13 Mar 22:12

Choose a tag to compare

Pre-release

Meshhessen Client v1.5.6-alpha

Important

Wir nutzen nun meinen eigenen Karten-Tile Server (der Server der die Karten bereitstellt) - da Open Streetmap in ihren Policies leider verbietet, dass man Kartendaten für offline Nutzung speichert.
je nachdem wie hier die Abfragemenge ist, kann es sein dass ihr beim ersten Abruf von Kartendaten länger warten müsst. Wenn der Server die Karten vorgerndert hat, geht auch der abruf schneller.

Full Changelog: https://github.com/SMLunchen/mh_windowsclient/commits/v1.5.6-alpha

🚀 Schnellstart

.NET SDK installieren

  1. Download: https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/runtime-desktop-8.0.23-windows-x64-installer

  2. Installer ausführen

  3. Download: Neueste MeshhessenClient.exe aus den Releases herunterladen

  4. Gerät anschließen: Meshtastic-Device per USB anstecken

  5. Starten: Doppelklick auf MeshhessenClient.exe – keine Installation nötig

  6. Verbinden: COM-Port wählen → „Verbinden" klicken

  7. Loslegen: 3–10 Sekunden warten bis Kanäle geladen sind, dann Nachrichten senden

Die App ist vollständig offline-fähig. Keine Cloud, keine Registrierung.

v1.5.6

Changes

  • Toolbar-Combobox für Zeitraum (3d/7d/14d/30d/90d/Alle)

  • Aus DB-Button lädt historische Traceroutes aus der DB

  • Dedupe-Checkbox: nur neueste Traceroute pro Node-Paar

  • TelemetryDatabaseService.GetRecentTracerouteResults() rekonstruiert TracerouteResult-Objekte aus der DB

  • Pfeilrichtung auf Segmenten (T2)

  • Richtungspfeile (Dreiecke) auf Segmentmitte zeigen Traceroute-Richtung an

  • MQTT-Segmente als Zickzack (T5)

  • SNR-Sentinel-Wert -128 (raw) → Segment wird als Blitzlinie gezeichnet statt gerader Linie

  • S1+S2: Zeitsynchronisation

  • Drift-Erkennung (S1)

  • HandleMeshPacket() vergleicht packet.RxTime mit lokaler UTC

  • Bei >300 Sekunden Abweichung → TimeDriftDetected-Event → automatische Zeitsynchronisation

  • Zeitsync senden (S2)

  • SendTimeSyncAsync(): sendet Position-Paket mit nur Time = unixNow an eigene Node-ID

  • Automatisch bei Connect + alle 12h via Timer

  • Manuell über "Jetzt synchronisieren"-Button in den Einstellungen

  • Einstellungen: AutoTimeSyncOnConnect (Checkbox) + TimeSyncDriftThresholdSeconds (Textfeld)

  • W1–W3: Wegpunkte

  • Waypoint-Empfang + Speicherung (W1)

  • HandleWaypointPacket() für PortNum 8

  • TelemetryDatabaseService: waypoints-Tabelle, UpsertWaypoint(), DeleteWaypoint(), GetAllWaypoints() - _waypointLayer auf der Karte mit Pin-Markern

  • Waypoint erstellen (W2)

  • Rechtsklick auf Karte → "Waypoint erstellen…"

  • WaypointCreateDialog: Name, Beschreibung, Icon (Emoji), Ablauf in Stunden, Opt-in-Checkbox "Im Mesh senden"

  • SendWaypointAsync() broadcastet Waypoint auf PortNum 8

  • Waypoint-Proto-Felder (W3 / Bugfix 4)

  • fixed a lot of translations

  • a lot

  • very much

  • snr window for traceroute-segments

  • mqtt traces in lightning form

  • legend for map

  • messages in message window now copyable

  • adjusted mesh health indicators

  • fix for issue #26

  • fix for issue #25

  • copy function for messages

  • hyperlink handling

  • message reply functionality

v1.5.5

v1.5.5 – Telemetrie, Signal-Analyse & PSKs

Telemetrie & Statistik

  • Telemetrie-Datenbank (telemetry.db, SQLite): Alle Pakete werden lokal gespeichert — SNR, RSSI, Hops, ACK-Status, Batterie, Spannung, Channel-Auslastung, Temperatur, Luftfeuchte, Luftdruck
  • Telemetrie-Fenster pro Node (Rechtsklick → Telemetrie): Signal-, Energie-, Airtime- und Routing-Statistiken mit wählbarem Zeitraum (7 / 30 / 90 / ∞ Tage)
  • Interaktive Zeitreihen-Plots (OxyPlot): SNR/RSSI, Batterie, Temperatur/Feuchte, Channel-Util — mit Zoom & Pan
  • Tag/Nacht-Auswertung via NOAA-Algorithmus (Standort-basiert): Batterie-Nachtabfall, Energie-Trend sichtbar
  • Datenbank-Retention: konfigurierbar in den Einstellungen (Standard 90 Tage, 0 = unbegrenzt)

Signal-Analyse & LED-Ampeln

  • Globale Status-Leiste (immer sichtbar): 4 LEDs für Wetter-Signal, Antennen-Qualität, Nachbar-Stabilität und Pfad-Stabilität + Mesh-Health-Score (0–100%)
  • Node-Liste: 3-Punkte-Matrix pro Node (Signal-Qualität | Signal-Trend | Batterie-Status) — grau = kein Datensatz, farbig = live bewertet
  • Per-Node Ampel im Telemetrie-Fenster: Signal, Energie, ACK, Kanal-Auslastung

PKI-Entschlüsselung

  • X25519 ECDH + AES-256-CTR: Verschlüsselte Direkt-Nachrichten (pki_encrypted) werden automatisch entschlüsselt
  • Private Key RAM-only: wird beim Disconnect sicher aus dem Speicher gelöscht (ZeroMemory), nie auf Disk geschrieben
  • Public-Key-Datenbank (node_keys.csv): automatisch befüllt; bei Key-Wechsel konfigurierbar: Warnen / Überschreiben / Nachfragen
  • Key-Spalte in der Node-Liste zeigt ob der Public Key eines Nodes bekannt ist

Hardware & Firmware

  • Firmware-Version und Board-Modell werden beim Connect automatisch abgerufen und im Node-Info-Fenster angezeigt
  • Board-Erkennung gefixt: Heltec v3 wurde fälschlicherweise als EbyteEsp32S3 erkannt (und weitere betroffene Boards)

UI / UX

  • Tooltip-Delay: 400ms → 150ms, Anzeigedauer auf 20 Sekunden verlängert
  • DPI-Clipping der LEDs bei hoher Bildschirmskalierung behoben (SnapsToDevicePixels, UseLayoutRounding)
  • Dark-Mode: LED-Dots in der Node-Liste jetzt grau statt unsichtbar, wenn kein Status vorhanden
  • NodeKeyMismatchDialog: Buttons "Übernehmen"/"Ignorieren" wurden bei langen Labels abgeschnitten — gefixt

Meshhessen Client v1.5.5

05 Mar 20:23
574c20b

Choose a tag to compare

Important

Wir nutzen nun meinen eigenen Karten-Tile Server (der Server der die Karten bereitstellt) - da Open Streetmap in ihren Policies leider verbietet, dass man Kartendaten für offline Nutzung speichert.
je nachdem wie hier die Abfragemenge ist, kann es sein dass ihr beim ersten Abruf von Kartendaten länger warten müsst. Wenn der Server die Karten vorgerndert hat, geht auch der abruf schneller.

Full Changelog: https://github.com/SMLunchen/mh_windowsclient/commits/v1.5.5

🚀 Schnellstart

.NET SDK installieren

  1. Download: https://dotnet.microsoft.com/en-us/download/dotnet/thank-you/runtime-desktop-8.0.23-windows-x64-installer

  2. Installer ausführen

  3. Download: Neueste MeshhessenClient.exe aus den Releases herunterladen

  4. Gerät anschließen: Meshtastic-Device per USB anstecken

  5. Starten: Doppelklick auf MeshhessenClient.exe – keine Installation nötig

  6. Verbinden: COM-Port wählen → „Verbinden" klicken

  7. Loslegen: 3–10 Sekunden warten bis Kanäle geladen sind, dann Nachrichten senden

Die App ist vollständig offline-fähig. Keine Cloud, keine Registrierung.

v1.5.5

v1.5.5 – Telemetrie, Signal-Analyse & PSKs

Telemetrie & Statistik

  • Telemetrie-Datenbank (telemetry.db, SQLite): Alle Pakete werden lokal gespeichert — SNR, RSSI, Hops, ACK-Status, Batterie, Spannung, Channel-Auslastung, Temperatur, Luftfeuchte, Luftdruck
  • Telemetrie-Fenster pro Node (Rechtsklick → Telemetrie): Signal-, Energie-, Airtime- und Routing-Statistiken mit wählbarem Zeitraum (7 / 30 / 90 / ∞ Tage)
  • Interaktive Zeitreihen-Plots (OxyPlot): SNR/RSSI, Batterie, Temperatur/Feuchte, Channel-Util — mit Zoom & Pan
  • Tag/Nacht-Auswertung via NOAA-Algorithmus (Standort-basiert): Batterie-Nachtabfall, Energie-Trend sichtbar
  • Datenbank-Retention: konfigurierbar in den Einstellungen (Standard 90 Tage, 0 = unbegrenzt)

Signal-Analyse & LED-Ampeln

  • Globale Status-Leiste (immer sichtbar): 4 LEDs für Wetter-Signal, Antennen-Qualität, Nachbar-Stabilität und Pfad-Stabilität + Mesh-Health-Score (0–100%)
  • Node-Liste: 3-Punkte-Matrix pro Node (Signal-Qualität | Signal-Trend | Batterie-Status) — grau = kein Datensatz, farbig = live bewertet
  • Per-Node Ampel im Telemetrie-Fenster: Signal, Energie, ACK, Kanal-Auslastung

PKI-Entschlüsselung

  • X25519 ECDH + AES-256-CTR: Verschlüsselte Direkt-Nachrichten (pki_encrypted) werden automatisch entschlüsselt
  • Private Key RAM-only: wird beim Disconnect sicher aus dem Speicher gelöscht (ZeroMemory), nie auf Disk geschrieben
  • Public-Key-Datenbank (node_keys.csv): automatisch befüllt; bei Key-Wechsel konfigurierbar: Warnen / Überschreiben / Nachfragen
  • Key-Spalte in der Node-Liste zeigt ob der Public Key eines Nodes bekannt ist

Hardware & Firmware

  • Firmware-Version und Board-Modell werden beim Connect automatisch abgerufen und im Node-Info-Fenster angezeigt
  • Board-Erkennung gefixt: Heltec v3 wurde fälschlicherweise als EbyteEsp32S3 erkannt (und weitere betroffene Boards)

UI / UX

  • Tooltip-Delay: 400ms → 150ms, Anzeigedauer auf 20 Sekunden verlängert
  • DPI-Clipping der LEDs bei hoher Bildschirmskalierung behoben (SnapsToDevicePixels, UseLayoutRounding)
  • Dark-Mode: LED-Dots in der Node-Liste jetzt grau statt unsichtbar, wenn kein Status vorhanden
  • NodeKeyMismatchDialog: Buttons "Übernehmen"/"Ignorieren" wurden bei langen Labels abgeschnitten — gefixt

v1.5.4

  • added traceroute option
  • traceroutes will be stored within traceroutes/
  • traceroutes can be loaded later again
  • traceroutes can be plottet on the map.
  • dashed line -> something in between, where we dont have a position
  • line -> path
  • we will see the starting location from our set position, if node has no position set
  • if target node does not have a position we will see the path ending before that
  • multiple traces can be plotted at once
  • added tap-back reaction for the messages
  • bumped version to v1.5.4
  • changes to emoji-handling
  • update README
  • auto-version check - if we have internet to github.

Meshhessen Client v1.5.5-alpha-Updated 04.03.2026

01 Mar 20:06
5a6a325

Choose a tag to compare

Meshhessen Client v1.5.5-ALPHA-Updated 04.03.2026

non-production Read mit Telemetrieauswertungen

Windows-Client für Meshtastic-Geräte – entwickelt von der Meshhessen Community.

Download

👇 Einfach MeshhessenClient.exe herunterladen und starten – keine Installation nötig!

Voraussetzungen

  • Windows 10/11 x64
  • Meshtastic-Gerät mit USB-Anschluss