Skip to content

v1.1.0

Choose a tag to compare

@GDKeller GDKeller released this 02 Mar 17:49
· 26 commits to main since this release

What's New

OTA Firmware Updates via GitHub Releases

MiniPulse now checks for firmware updates directly from GitHub Releases over HTTPS. The captive portal shows your current version, checks for available updates, and can flash new firmware over-the-air — no USB cable needed.

Spacecraft Filtering

A curated list of 44 high-priority missions (Voyager, JWST, Perseverance, Europa Clipper, etc.) is now the default display mode. Non-priority spacecraft are still recognized but filtered out to keep the display focused on active deep space missions. This can be toggled via the useApprovedOnly config flag.

Portal Improvements

  • New Spacecraft page listing all recognized craft (non-priority missions shown dimmed)
  • NASA JPL logo in the portal header
  • Firmware version check is now cached to prevent device crashes from repeated page loads
  • Manual "Check for Updates" button for on-demand version checks
  • Improved button layout and menu ordering

Bug Fixes

  • 10 critical and short-term stability fixes — queue initialization order, semaphore flag assignment, pointer-to-pointer queue send, pool allocator rewrite, WiFi connection check, uninitialized variables, dangling pointers, null-termination, display timer reset, and inverted startup logic
  • Binary up signal detection — simplified from unreliable rate-based heuristic to binary presence detection
  • Semver parsing — handles v prefix from GitHub tags and correctly compares pre-release vs stable versions
  • Null root element guard in XML parser prevents crash on malformed DSN data
  • Portal input validation — hardened checkbox parsing, brightness mapping, and division-by-zero guard

Performance

  • 30 FPS frame limiter with render time and heap diagnostics
  • Eliminated LittleFS round-trip in data fetch pipeline — spacecraft data served from memory
  • Replaced std::map with strcmp chain in termColor() for lower overhead
  • Reduced semaphore hold time from seconds to microseconds
  • Optimized boot sequence — skip flash writes when firmware version unchanged

Security & Reliability

  • All library dependency versions pinned for reproducible builds
  • Serial output gated behind showSerial config flag (off by default)
  • Added .catch() handlers to all portal fetch calls
  • 43-spacecraft fallback dataset from real DSN observations replaces dummy XML

Full Changelog: v1.0.4...v1.1.0