Sestriere · Releases
from GitHub · updated 2026-06-234 releases
v1.8 # 3 months ago · 2026-03-15 22:33 UTC
Sestriere 1.8.0
Native MeshCore LoRa mesh client for Haiku OS.
New features
- Voice messages — push-to-talk via Codec2, compatible with meshcore-sar (Alphaaaaa)
- Image sharing — color WebP over LoRa with chunked transfer and drag-and-drop
- SAR markers — search and rescue pin display in chat and geographic map
- Line-of-Sight analysis — terrain profile between nodes via Open-Meteo elevation API
- Multi-companion support — switch radios without mixing data, DB partitioned per device
- Contact groups and muting — organize sidebar, silence notifications per contact/channel
- Serial Monitor — CLI terminal for repeaters and standalone devices
Improvements
- Telemetry dashboard redesigned with card-based layout
- Mission Control: Ping All, Trace Route quick actions
- Geographic map: zoom/pan/tile state persisted across sessions
- Deskbar replicant: lightweight add-on with Send Advert shortcut
- Inline emoji rendering via Twemoji
- Tile cache: corrupt PNG auto-recovery, 50 MB LRU eviction
- Database: incremental vacuum after pruning, WAL fallback for Haiku compatibility
- 56 automated tests (make test)
Bug fixes
- Fixed thread safety in child window access and database singleton
- Fixed protocol compliance: full 32-byte pubkeys, frequency in kHz, V3 SNR offsets
- Fixed GIF cache miss, image buffer overread, delivery status tracking
- Fixed memory leaks in BMessageRunner and GIF picker threads
- Replaced VLAs and non-reentrant libc calls (localtime_r, strlcpy)
v1.7 # 4 months ago · 2026-03-06 20:49 UTC
Sestriere 1.7 "Marconi"
Native MeshCore LoRa mesh client for Haiku OS
Sestriere is a native Haiku application for communicating over LoRa mesh networks via MeshCore-compatible radios. It provides a Telegram-style interface with real-time messaging, network visualization, telemetry dashboards, and a Wireshark-style packet analyzer — all built with the Be API.
What's new in 1.7
GIF Sharing — Send and receive animated GIFs via GIPHY. The built-in picker shows animated thumbnails in a grid, and only the short GIF ID travels over LoRa (zero overhead). Fully compatible with meshcore-open (Flutter).
Emoji Rendering — Unicode emoji displayed as color PNG sprites with proper alpha blending over chat bubbles.
Image Sharing — Send photos over LoRa using chunked transfer. Images are compressed, transmitted in fragments, auto-fetched on the receiving end, and displayed inline in the chat.
SAR Markers — Search and Rescue markers (meshcore-sar protocol) parsed and displayed in chat and on the geographic map.
OpenStreetMap Tiles — The geographic map now shows real OSM tiles with offline caching, plus world coastline rendering.
Delivery Queue — Messages now use a FIFO queue with automatic retry and clear status (Pending, Sent, Confirmed, Failed).
Ping All — Ping every contact in one click to check who's online.
UI Polish — Compact default layout, flexible panel resizing, contact filter state (Chat/Repeater/Room) persisted across restarts.
Requirements
- Haiku OS R1/beta5 or later (x86_64)
- MeshCore-compatible LoRa radio with USB serial
- pkgman install mosquitto sqlite curl giflib
Feedback and bug reports welcome!
v1.4 # 4 months ago · 2026-02-22 13:41 UTC
Solid as Alpine granite — a stability and code quality release.
No flashy new features this time. Instead, we went deep under the hood to rebuild the foundations for what comes next.
Architecture
- Protocol parsing extracted from MainWindow into a dedicated ProtocolHandler class
- Common utilities consolidated into Utils.h: FormatUptime, FormatTimeAgo, ParseHexPrefix, FormatContactKey
- All magic numbers replaced with named constants across the entire codebase
- Dead code removed: legacy MqttSettingsWindow, StatusBarView, unused message codes
Security
- Hardcoded credentials removed from source
- All database queries migrated to parameterized prepared statements
- User input validated before all protocol operations
- Bounds checks on every incoming protocol frame
Thread Safety
- DatabaseManager singleton protected with mutex
- Child window access guarded by new _LockIfVisible() helper
- MQTT connect/disconnect race condition fixed
- BMessageRunner lifecycle hardened: always NULL after delete, no use-after-free
Protocol Bug Fixes
- CMD_REMOVE_CONTACT and CMD_RESET_PATH now send full 32-byte public key (was 6-byte, causing silent failures)
- CMD_SET_RADIO_PARAMS sends frequency in kHz as V3 spec requires (was Hz)
- Packet Analyzer V3 message text offsets corrected
- localtime() replaced with reentrant localtime_r() throughout
- strtok() replaced with thread-safe strtok_r()
- Blocking snooze() removed from LoginWindow UI thread
UX Polish
- All windows centered on screen (or on parent) instead of hardcoded pixel positions
- Mission Control cards gracefully truncate long text in narrow windows
- MQTT password field with show/hide toggle
- Theme-aware Stats Window using system colors
- Reduced minimum sizes for Telemetry and Packet Analyzer to fit smaller screens
- Unified battery percentage formula across all views
v1.3 # 4 months ago · 2026-02-19 23:19 UTC
Mission Control Dashboard (Cmd+Shift+D)
A unified real-time dashboard consolidating all device, radio, and network metrics into a single window:- Device status card with battery gauge, uptime, and pulsing connection indicator
- Radio health card showing RSSI, SNR, noise floor, TX power, frequency, and bandwidth
- Composite health score arc (0–100) based on connection, battery, signal quality, and contacts
- Dual-axis SNR/RSSI rolling chart (200 points) with color-coded quality zones
- TX/RX packet rate histogram (60 bars, auto-scaling)
- Contact heatmap grid with per-contact signal quality coloring
- Mini network topology with radial node layout and SNR sparklines
- Session timeline showing event markers since connection
- Alert banner for critical conditions (disconnect, low battery, poor signal)
- Quick action buttons: Send Advert, Sync Contacts, Refresh Stats
- Color-coded activity feed with timestamped event log
- Dashboard icon in the toolbar for quick access
Protocol Coverage 11 new MeshCore V3 commands implemented: trace path, raw data exchange, device time read/write, radio tuning parameters, contact sharing, custom variables, advert path query, binary requests, control data, and device PIN.
Admin Panel Repeater/room administration integrated directly into the contact info panel with a tabbed CLI console supporting remote commands (ver, neighbors, clock, clear stats, set name, password) and remote telemetry.
Bug Fixes
- Statistics window now correctly parses and displays all V3 fields: battery voltage, noise floor, SNR (no longer incorrectly divided by 4), and proper flood/direct packet breakdown.