This a feature release of the app potato-mesh v0.5.0. It contains a major refactor, changes all defaults (please read carefully below), enables federation between instances and now knows about lora preset, region frequency, and channel names, plus many bug fixes.
- in production, make sure to set an
INSTANCE_DOMAIN=example.com, otherwise we attempt reverse DNS - breaking: streamlined environmental variables for simplicity:
is nowMESH_SERIALCONNECTIONis nowDEFAULT_CHANNELCHANNELis nowDEFAULT_FREQUENCYFREQUENCYare now merged toMAP_CENTER_LATandMAP_CENTER_LONMAP_CENTER="38.761944,-27.090833"is nowMAX_NODE_DISTANCE_KMMAX_DISTANCEis nowMATRIX_ROOMCONTACT_LINKand does not have to be Matrix
- breaking: moved database and config to respective XDG directories (the app has migration built in, but make sure to update your backup scripts)
- turn on
ENERGY_SAVING=1if you want to query remote/solar nodes but don't want to cycle their power too much - add a
/metricsendpoint for prometheus (thanks @nicjansma) - deployed production instances of potato-mesh now talk to each other (turn off with
FEDERATION=0)
What's Changed
- Update changelog by @l5yth in #238
- Add inline documentation to config helpers and frontend scripts by @l5yth in #240
- Add comprehensive coverage tests for mesh ingestor by @l5yth in #241
- docs: add ingestor inline docstrings by @l5yth in #244
- Add tests for helper utilities and asset routes by @l5yth in #243
- Refactor front-end assets into external modules by @l5yth in #245
- Fix mesh ingestor telemetry and neighbor handling by @l5yth in #249
- Add JSDoc documentation across client scripts by @l5yth in #253
- Document Ruby helper methods with RDoc comments by @l5yth in #254
- Handle missing node IDs in Meshtastic nodeinfo packets by @l5yth in #251
- Document mesh ingestor modules with PDoc-style docstrings by @l5yth in #255
- Force dark theme default based on sanitized cookie by @l5yth in #252
- docs: add matrix to readme by @l5yth in #259
- chore: restore apache headers by @l5yth in #260
- Add energy saving cycle to ingestor daemon by @l5yth in #256
- v0.4.0 version string in web UI by @nicjansma in #265
- Relocate JS coverage export script into web directory by @l5yth in #266
- Add fullscreen toggle to map view by @l5yth in #263
- Added prometheus /metrics endpoint by @nicjansma in #262
- Dockerfile fixes by @nicjansma in #268
- Add hourly reconnect handling for inactive mesh interface by @l5yth in #267
- Prometheus metrics updates on startup and for position/telemetry by @nicjansma in #270
- Add targeted API endpoints and expose version metadata by @l5yth in #271
- Document production deployment configuration by @l5yth in #273
- Add configurable instance domain with reverse DNS fallback by @l5yth in #272
- Add persistent federation metadata endpoint by @l5yth in #274
- Fix federation signature handling and IP guard by @l5yth in #276
- Implement federation announcements and instances API by @l5yth in #277
- Improve instance domain detection logic by @l5yth in #278
- Fix production Docker builds for web and ingestor images by @l5yth in #279
- Avoid blocking startup on federation announcements by @l5yth in #281
- Normalize INSTANCE_DOMAIN configuration to require hostnames by @l5yth in #280
- Configure web container for production mode by @l5yth in #282
- Clarify BLE connection description in README by @l5yth in #283
- Ensure mesh ingestor queue resets active flag when idle by @l5yth in #284
- Clarify numeric address requirement for network target parsing by @l5yth in #285
- Ensure Docker config directories are created for non-root user by @l5yth in #286
- Add regression test for queue drain concurrency by @l5yth in #287
- Update default site configuration defaults by @l5yth in #288
- Refactor config and metadata helpers into PotatoMesh modules by @l5yth in #290
- Restore modular app functionality by @l5yth in #291
- Adjust federation announcement interval to eight hours by @l5yth in #292
- Handle federation HTTPS CRL verification failures by @l5yth in #293
- Fix IPv6 instance domain canonicalization by @l5yth in #294
- Update workflows for ingestor, sinatra, and frontend by @l5yth in #295
- Add Apache license headers to missing sources by @l5yth in #297
- Unify structured logging across application and ingestor by @l5yth in #296
- Ensure JavaScript workflow runs frontend tests by @l5yth in #298
- Handle CRL lookup failures during federation TLS by @l5yth in #299
- Add in-repo Meshtastic protobuf stubs for tests by @l5yth in #300
- Document sanitization and helper modules by @l5yth in #301
- Add comprehensive theme and background front-end tests by @l5yth in #302
- Increase coverage for configuration and sanitizer helpers by @l5yth in #303
- Fix map initialization bounds and add coverage by @l5yth in #305
- Fix map auto-fit handling and add controller by @l5yth in #311
- Add fallback for offline tile rendering errors by @l5yth in #306
- Improve offline tile fallback initialization by @l5yth in #307
- Ensure APIs filter stale data and refresh node details from latest sources by @l5yth in #312
- Adjust map auto-fit padding and default zoom by @l5yth in #315
- refactor: streamline ingestor environment variables by @l5yth in #314
- Adopt XDG base directories for app data and config by @l5yth in #316
- Fix legacy configuration migration to XDG directories by @l5yth in #317
- Refine environment configuration defaults by @l5yth in #318
- Refine stacked short info overlays on the map by @l5yth in #319
- Ensure web Docker image ships application sources by @l5yth in #322
- Ensure frontend reports git-aware version strings by @l5yth in #321
- Fix FrozenError when filtering node query results by @l5yth in #324
- Capture radio metadata for ingestor payloads by @l5yth in #327
- Add channel metadata capture for message tagging by @l5yth in #329
- Add LoRa metadata fields to nodes and messages by @l5yth in #331
- Adjust node table columns responsively by @l5yth in #332
- Ensure node overlays appear above fullscreen map by @l5yth in #333
New Contributors
- @nicjansma made their first contribution in #265
Full Changelog: v0.4.0...v0.5.0