Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Releases: statico/meshtastic-cli

v1.9.5

30 Jan 17:58
872d7f3

Choose a tag to compare

Bug Fixes

Fixed random quit issue with comprehensive exit tracking and logging

This release addresses the issue where the program would randomly quit after running for hours without explanation. Multiple critical fixes were implemented:

Critical Fixes

  • Synchronous log flushing: All exit and error logs now use fsyncSync() to guarantee logs are written to disk before process exits. Previously, async writes could be lost during unexpected exits.
  • Race condition in quit flow: Fixed issue where process.exit() was called immediately after Ink's exit() without allowing cleanup to complete. Added 100ms delay to ensure proper shutdown.
  • Hung iterator detection: Added automatic cleanup if the transport poll loop exits unexpectedly while still marked as running.

New Exit Tracking

  • Exit log (~/.config/meshtastic-cli/exit.log): Every program exit now logged with reason, uptime, memory usage, and full context
  • Heartbeat system (~/.config/meshtastic-cli/heartbeat.log): Updates every 10 seconds to detect silent crashes
  • beforeExit handler: Catches when event loop becomes empty unexpectedly
  • Process warning handler: Logs Node.js warnings (deprecation, experimental features)

Enhanced Logging

  • Transport async iterator operations (queued outputs, pending promises, done signals)
  • Poll loop lifecycle (start, heartbeat, exit with full context)
  • Emit operations (resolver vs queue tracking)
  • Quit dialog interactions (key presses, confirmations, cancellations)
  • All critical operations now logged with detailed context

Debug Files

  • ~/.config/meshtastic-cli/exit.log - Detailed exit tracking
  • ~/.config/meshtastic-cli/heartbeat.log - Process health monitoring
  • ~/.config/meshtastic-cli/error.log - Error tracking (existing)
  • ~/.config/meshtastic-cli/log - Verbose logging with --enable-logging

See the exit log to diagnose why the program quit. Use heartbeat timestamp to detect silent crashes.

v1.9.4

30 Jan 06:20
a9ee4bf

Choose a tag to compare

Bug Fix

  • Fixed "HW null" showing in node list when hardware info is unavailable
  • Now properly hides unknown hardware models instead of showing "HW null" or "HW_*" patterns

This was a regression from the previous release where null hardware values weren't being filtered correctly.

Full Changelog: v1.9.3...v1.9.4

v1.9.3

30 Jan 06:09
2bbf5fe

Choose a tag to compare

Improvements

  • Fixed UI flickering issues in nodes and chat tabs with batched updates and optimized re-renders
  • Reduced re-renders from dozens per second to ~10/second max when packets stream in
  • Fixed React.memo comparisons to properly detect data changes
  • Use terminal height - 1 to prevent Ink's full-height flickering issue
  • Memoized filtered/sorted nodes to avoid recalculation on every render
  • Hide null and unknown hardware info in node list for cleaner display

Technical Details

The flickering fixes include:

  • Batch node updates with 100ms debounce (similar to existing packet batching)
  • Fix React.memo to check array references instead of just length
  • Optimize filtered nodes computation with useMemo

Full Changelog: v1.9.1...v1.9.3

v1.9.1

28 Jan 19:20
e1f7e61

Choose a tag to compare

Performance Improvements

  • Significantly reduced flickering throughout the UI by enabling Ink 6.6.0's incremental rendering and FPS limiting
  • Smoother tab switching - removed forced re-renders when switching between packets/nodes/chat/dm tabs
  • Optimized animations - slowed down animation frame rates to reduce cascade re-renders
    • AnimatedDots: 200ms → 500ms
    • LiveIndicator: 800ms → 1000ms
    • Spinners: 80ms → 120ms

These changes combine to create a much more stable visual experience, especially during initial load and when scrolling through large lists of packets or nodes. The incremental rendering feature only updates changed lines instead of redrawing the entire screen.

Full Changelog: v1.9.0...v1.9.1

Full Changelog: v1.9.0...v1.9.1

v1.9.0

28 Jan 18:58
c1c628d

Choose a tag to compare

Features

  • pcap export: Added --pcap flag to write all packets to a pcap file for analysis with Wireshark (#10)

Bug Fixes

  • Fixed argument parsing issues including bounds checks, multiple address rejection, and better error handling (thanks @davmonk for reporting #1, #2, #4, #5, #6)
  • Fixed direct ping to properly send with 0 hops by setting wantAck=false when hopLimit=0 (thanks @esev for reporting #9)

Documentation

  • Added guidance on crediting issue authors in release notes

Full Changelog: v1.8.2...v1.9.0

v1.8.2

16 Jan 21:34
15f1b62

Choose a tag to compare

Performance Improvements

This release focuses on reducing UI flickering and improving overall performance through comprehensive component memoization.

✨ Features

  • Memoized Components: All major UI components are now memoized to prevent unnecessary re-renders

    • NodesPanel and LogPanel with custom comparison functions
    • DMPanel components including AnimatedDots and MessageRow
    • PacketList, ChatPanel, PacketRow, and MessageRow components
    • LiveIndicator component to isolate animation state
  • Batched Updates: Implemented 100ms debounce for packet updates to reduce render frequency

  • Animation State Isolation: Isolated animation state in AnimatedDots and LiveIndicator to prevent cascading re-renders

📊 Impact

This release significantly reduces UI flickering when:

  • Packets load or update
  • Animations update
  • Status indicators change

All Priority 1 and Priority 2 improvements from the flickering improvement plan have been completed.

Full Changelog: v1.8.1...v1.8.2

v1.8.1

15 Jan 21:21
ee215fc

Choose a tag to compare

Bug Fixes

This release fixes a critical connection regression that broke connections to devices on the default HTTP port.

🐛 Fixed

  • Connection Regression: Restored default HTTP port 80 behavior

    • Fixed port handling to only add port if explicitly provided via --port flag
    • Restored old behavior where addresses without ports use default HTTP port (80)
    • Fixed issue where connections to devices on default HTTP port (80) were broken after commit 02865a4 which incorrectly defaulted to port 4403
  • Connection Status Improvements:

    • Keep status as 'connecting' while actively retrying instead of immediately showing 'disconnected'
    • Show error reason in footer when disconnected
    • Fixed missing dependencies in connection effect (useTls, httpPort, insecure)
    • Restored initial connection test for immediate feedback

🔧 Technical Details

This release addresses a regression introduced in a previous commit that incorrectly changed the default port behavior, breaking connections to many devices that use the standard HTTP port 80.

Full Changelog: v1.8.0...v1.8.1

v1.8.0

15 Jan 06:30
897fad5

Choose a tag to compare

🤩 Special thanks to de@n for beta testing! 🤩

New Features

  • Add --port/-P flag to specify custom HTTP port
  • Add --tls/-T flag to use HTTPS instead of HTTP
  • Add --insecure/-k flag to accept self-signed SSL certificates
  • Support connecting to meshtasticd HTTP API (port 8080 with HTTPS)

Changes

  • Default port remains 4403 (original behavior preserved)
  • Self-signed certificates are automatically accepted for localhost connections
  • Updated README with examples for meshtasticd connections

Usage Examples

# Connect to a Meshtastic device (default)
meshtastic-cli 192.168.0.123

# Connect to meshtasticd HTTP API
meshtastic-cli 127.0.0.1 --port 8080 --tls --insecure

Full Changelog: v1.7.1...v1.8.0

v1.7.1

15 Jan 03:52
bfc64cd

Choose a tag to compare

Bug Fixes

  • Fix database pruning race condition with promise queue
  • Add validation for lat/lon before URL construction
  • Move rate limit reset logic before rate limit checks
  • Add fallback error handling in ErrorBoundary

Improvements

  • Make MeshView rate limits configurable via environment variables
  • Use URLSearchParams for all MeshView API query parameters
  • Clean up documentation (removed validation reports)

Full Changelog: v1.7.0...v1.7.1

v1.7.0

14 Jan 19:50
6abb8b3

Choose a tag to compare

Improvements

  • Type Safety: Replaced 'as any' with proper null checks throughout the codebase
  • Database: Improved migration system with version tracking and better cleanup handling
  • Error Handling: Added error boundaries for major UI sections and improved async error handling
  • Security: Replaced exec() with safe spawn() to prevent command injection vulnerabilities
  • Performance: Added rate limiting constants and fixed missing meshViewRequestRef
  • Memory Management: Prevented memory leaks in HTTP transport and fixed race conditions in packet pruning
  • Input Validation: Added comprehensive input validation and safe JSON parsing
  • URL Handling: Improved URL construction with URLSearchParams
  • Analysis: Added validation report for analysis plan

Full Changelog: v1.6.4...v1.7.0