Skip to content

v1.8.0 - Automatic Backups, Chained LOS Paths, and Official Decoder Restore

Choose a tag to compare

@yellowcooln yellowcooln released this 29 Mar 20:32
· 65 commits to main since this release
64c81cc

This release adds automatic backups, expands the LOS tool into a chained path workflow, restores the official MeshCore decoder, and improves MeshMapper coverage behavior.

Highlights

  • Added automatic runtime backups as timestamped .tar.gz archives
  • Expanded the LOS tool to support multiple chained pins and full-path elevation profiles
  • Switched the runtime decoder back to the official @michaelhart/meshcore-decoder
  • Improved MeshMapper coverage rendering to better match the displayed coverage footprint
  • Added backup tests covering archive creation and retention pruning
  • Full test suite passes with 84 passed, 2 skipped

Backups

Automatic runtime backups are now supported as timestamped .tar.gz archives. This release also adds backup-specific environment controls, changes the default backup location to /backup, adds retention pruning for older archives, and mounts ./backup:/backup in docker-compose.yaml.

Backups include live-state files such as:

  • state.json
  • device_roles.json
  • device_coords.json
  • neighbor_overrides.json
  • channel_secrets.json
  • map_boundary.json
  • route_history.jsonl
  • coverage_cache.json

New backup environment variables:

  • BACKUP_ENABLED
  • BACKUP_INTERVAL_SECONDS
  • BACKUP_DIR
  • BACKUP_RETENTION_DAYS

LOS Tool

The LOS tool now supports multiple chained pins as part of issue #41. Elevation profiles span the full chained path instead of only the active segment, height inputs are stored per pin, and intermediate pin movement now correctly recalculates both adjacent segments.

This release also removes the old Keep A LOS workflow, adds Remove last pin, and updates helper text and labels to match the chained-pin model.

Decoder

The runtime decoder has been switched back to the official @michaelhart/meshcore-decoder, which now supports the multibyte path decoding needed by the map.

MeshMapper Coverage

MeshMapper coverage rendering now expands returned squares to better match MeshMapper’s displayed footprint. Styling was also tuned to keep the fuller footprint while making coverage easier to read.