Skip to content

MeshChat for Windows v0.2.0-alpha

Pre-release
Pre-release

Choose a tag to compare

@hardcoreerik hardcoreerik released this 06 Aug 05:05
· 8 commits to main since this release

What's new in v0.2.0

Auto-reconnect with saved profiles (Phase 1)

MeshChat now automatically reconnects when the radio link drops, and remembers your last-used connection so you don't have to retype it every launch.

Auto-reconnect

  • When a connected radio goes away (power cycle, USB unplug, network hiccup), MeshChat detects the loss and retries in the background using exponential backoff: 2 s → 5 s → 15 s → 30 s → 60 s, then every 60 s until it succeeds or you press Disconnect
  • The status bar shows Reconnecting… (attempt N) while retrying — no modal dialogs
  • Auto-retry only fires after a radio was successfully connected at least once this session, so a mistyped host or unpaired BLE device doesn't trigger a retry loop
  • Pressing Disconnect at any point cancels the retry immediately

Saved connection profiles

  • Your last-used transport, host/port, BLE address, or COM port is persisted to the local database and pre-filled in the connection bar on the next launch
  • No separate settings screen needed — it just works from the normal connect flow

Under the hood

  • New ConnectionSupervisor class wires the backoff timer, profile persistence, and controller signal handling together cleanly
  • The RECONNECTING connection state (defined since v0.1.0 but never emitted) is now active — the status indicator and connection bar reflect it correctly
  • app_settings SQLite table (present since v0.1.0, never used) is now the persistent store for all key/value settings

Stability improvements (Phase 0, shipped since v0.1.1)

Write-queue durability (#16)

  • Each database write is now isolated in its own SAVEPOINT — a bad row can't roll back the rest of a batch
  • Transient SQLite lock errors are retried with bounded backoff; truly unrecoverable failures are tracked and reported, not silently dropped
  • Fixed an outermost-transaction bug where batch efficiency was being destroyed by incorrect SAVEPOINT/BEGIN ordering

Schema migrations (#17)

  • Database schema is now versioned with PRAGMA user_version
  • Upgrades from any previous schema version run automatically at startup with a pre-migration backup and post-migration integrity check
  • Safe to update without losing existing data

DB maintenance tools (#18)

  • check_integrity() — runs SQLite's integrity check on the live database
  • backup() — flushes all pending writes, checkpoints the WAL, and copies the DB to a timestamped file
  • vacuum_async() — reclaims disk space after pruning, queued through the writer thread

Chat history & zero-value fixes (#15)

  • Chat history now loads the 200 most-recent messages on startup (was loading all, then rendering all; large histories caused a slow start)
  • Fixed node_num == 0 being treated as falsy in several places — Meshtastic radio 0 is a valid node

Known issues

  • Bluetooth on Heltec V4: Windows requires the device to be paired in Settings → Bluetooth before MeshChat can connect. Try PIN 123456 if prompted. See #19 for details and workarounds.

Upgrade

Close the previous version and run the new one — the database upgrades automatically on first launch.