Skip to content

v1.0.0 "reticulum"

Latest

Choose a tag to compare

@l5yth l5yth released this 17 Oct 19:52
· 4 commits to main since this release
v1.0.0
50c30ee

This is the first stable release of the radio-mesh app suite Potato Mesh v1.0.0! 🎉

This release adds experimental Reticulum support along to the existing Meshtastic and Meshcore features. By default it only listens to RNode interfaces but it can be overwritten in environment. (HT @eknuth)

The other noteworthy change is a full interface overhaul. A lot of legacy information and visual overload was removed and in some places complemented by actual useful information (e.g., hops, paths, scope).

The remainder of this release is a lot of bug fixes, security hardening, and performance gains. (HT @tonghuaroot & @CardoSystems)

Take a look: https://potatomesh.net/

What's Changed

  • Add Reticulum protocol support to the web tier by @eknuth in #889
  • Add Reticulum announce ingestor provider by @eknuth in #890
  • fix reticulum protocol loose ends from #888 review by @l5yth in #893
  • web: add reticulum frontend support by @l5yth in #894
  • Derive the Reticulum ingestor's own node id; scope CONNECTION out (#888) by @eknuth in #896
  • data,web: key Reticulum nodes on identity; discover host aspects by @l5yth in #897
  • docs: correct .env.example's reticulum node id derivation (RE8) by @eknuth in #898
  • web: reticulum aspects, identity groups, identity page, honest detail views by @l5yth in #899
  • data,web: Reticulum finalization — radio metadata, chat tags, federation zeros by @l5yth in #900
  • harden: fix SSRF guard bypass via IPv6 transition addresses by @l5yth in #902
  • docs: trim operator docs to instructions, close doc/behavior drift by @l5yth in #904
  • Add MESHCORE_TELEMETRY_POLL_24H_EXEMPT cooldown exemption for telemetry by @nicjansma in #905
  • docker,docs: resync the root Dockerfile and add a security policy by @l5yth in #907
  • data,docs: pipe MESHCORE_TELEMETRY_POLL_24H_EXEMPT through every deployment by @l5yth in #908
  • web: keep the mobile channel select alive across live refreshes (#882) by @l5yth in #910
  • data: listen on both Meshtastic UDP multicast groups by default (#903) by @l5yth in #909
  • matrix: add crates.io package metadata (#879) by @l5yth in #911
  • data,web: honor channel filters on every packet and the node list; add DROP_VIA_MQTT (#784, #884) by @l5yth in #913
  • web,data: stop MeshCore chat text from minting or reviving nodes (#883) by @l5yth in #912
  • web: dedup MeshCore channel copies whose sender resolved differently (#880) by @l5yth in #914
  • ci,deps: run Dependabot for every ecosystem and lock production builds by @l5yth in #915
  • build(deps): bump websocket-driver from 0.8.0 to 0.8.2 in /web by @dependabot[bot] in #940
  • build(deps): bump flutter_svg from 2.2.3 to 2.3.0 in /app by @dependabot[bot] in #936
  • build(deps): bump docker/setup-qemu-action from 3 to 4 by @dependabot[bot] in #931
  • build(deps): bump tokio from 1.49.0 to 1.50.0 in /matrix by @dependabot[bot] in #928
  • build(deps): bump sqlite3 from 2.9.5 to 2.9.6 in /web by @dependabot[bot] in #939
  • build(deps): bump serial_test from 3.3.1 to 4.0.1 in /matrix by @dependabot[bot] in #925
  • build(deps): bump concurrent-ruby from 1.3.6 to 1.3.7 in /web by @dependabot[bot] in #938
  • chore: bump version 0.7.6 by @l5yth in #927
  • build(deps): bump actions/cache from 4 to 6 by @dependabot[bot] in #918
  • build(deps): bump actions/setup-python from 5 to 7 by @dependabot[bot] in #920
  • build(deps): bump tracing-subscriber from 0.3.22 to 0.3.23 in /matrix by @dependabot[bot] in #919
  • build(deps): bump tempfile from 3.24.0 to 3.27.0 in /matrix by @dependabot[bot] in #922
  • build(deps): bump clap from 4.5.54 to 4.5.60 in /matrix by @dependabot[bot] in #924
  • build(deps): bump actions/download-artifact from 4 to 8 by @dependabot[bot] in #929
  • build(deps): bump actions/upload-artifact from 4 to 7 by @dependabot[bot] in #930
  • build(deps): bump flutter_native_splash from 2.4.7 to 2.4.8 in /app by @dependabot[bot] in #932
  • build(deps): bump workmanager from 0.9.0+3 to 0.10.10 in /app by @dependabot[bot] in #934
  • build(deps): bump nokogiri from 1.19.2 to 1.19.4 in /web by @dependabot[bot] in #937
  • build(deps): bump package_info_plus from 9.0.0 to 10.2.2 in /app by @dependabot[bot] in #933
  • build(deps): bump rack-session from 2.1.1 to 2.1.2 in /web by @dependabot[bot] in #941
  • build(deps): bump prometheus-client from 4.2.5 to 5.0.0 in /web by @dependabot[bot] in #923
  • data,ci: run the ingestor image on Python 3.13 and test 3.13 and 3.14 by @l5yth in #942
  • web: honor the node opt-out marker on /api/destinations by @l5yth in #943
  • data: retry the Reticulum host id through the provider every loop by @l5yth in #944
  • app: bump flutter_local_notifications to 22.3.1 by @l5yth in #945
  • chore: bump version to 0.8.0 by @l5yth in #946
  • build(deps): bump erb from 4.0.4 to 6.0.7 in /web by @dependabot[bot] in #916
  • build(deps): bump puma from 7.2.0 to 8.0.2 in /web by @dependabot[bot] in #921
  • build(deps): bump cachix/install-nix-action from 30 to 31 by @dependabot[bot] in #953
  • build(deps): bump anyhow from 1.0.100 to 1.0.104 in /matrix by @dependabot[bot] in #949
  • build(deps): bump docker/build-push-action from 5 to 7 by @dependabot[bot] in #955
  • build(deps): bump serde from 1.0.228 to 1.0.229 in /matrix by @dependabot[bot] in #950
  • build(deps): bump docker/login-action from 3 to 4 by @dependabot[bot] in #960
  • build(deps): bump serde_json from 1.0.149 to 1.0.151 in /matrix by @dependabot[bot] in #948
  • build(deps): bump toml from 0.9.11+spec-1.1.0 to 1.1.6+spec-1.1.0 in /matrix by @dependabot[bot] in #952
  • build(deps): bump shared_preferences from 2.5.3 to 2.5.5 in /app by @dependabot[bot] in #959
  • build(deps): bump rustls from 0.23.36 to 0.23.45 in /matrix by @dependabot[bot] in #962
  • nix: add rns to the flake ingestor and update the nixpkgs pin by @l5yth in #963
  • build(deps): bump shared_preferences_android from 2.4.17 to 2.4.28 in /app by @dependabot[bot] in #956
  • data: ingest only RNode interfaces by default under PROTOCOL=reticulum by @l5yth in #964
  • build(deps): bump codecov/codecov-action from 5 to 7 by @dependabot[bot] in #961
  • build(deps): bump docker/setup-buildx-action from 3 to 4 by @dependabot[bot] in #954
  • data: refresh the Reticulum host's own destinations every hour by @l5yth in #969
  • build(deps): bump shared_preferences_foundation from 2.5.6 to 2.5.7 in /app by @dependabot[bot] in #957
  • build(deps-dev): bump simplecov from 0.22.0 to 1.3.2 in /web by @dependabot[bot] in #926
  • build(deps): bump url_launcher from 6.3.2 to 6.3.3 in /app by @dependabot[bot] in #958
  • tests: make the Reticulum host-id canonicalisation check able to fail by @l5yth in #965
  • docs: scope Reticulum as experimental and announce-only by @l5yth in #966
  • matrix: bump axum to 0.8.9 by @l5yth in #970
  • web,matrix,app: name Reticulum as a known protocol in every consumer by @l5yth in #967
  • build(deps): bump ferrum from 0.17.2 to 0.18.0 in /web by @dependabot[bot] in #917
  • web,data: stop Reticulum destination placeholders from renaming by @l5yth in #968
  • web: add mesh.dmz.pt as a federation seed node by @l5yth in #971
  • web: drop potatomesh.jmrp.io as federation seeds by @l5yth in #972
  • docs: describe the RA10/RE10 placeholder rules where they changed by @l5yth in #973
  • app: use caret ranges for the shared_preferences platform deps by @l5yth in #974
  • ci: upload test results with codecov-action v7 and move to checkout v7 by @l5yth in #975
  • repo: move .claude to the spec tree by @l5yth in #976
  • build(deps): bump mockito from 1.7.1 to 1.7.2 in /matrix by @dependabot[bot] in #977
  • build(deps): bump tower from 0.5.2 to 0.5.3 in /matrix by @dependabot[bot] in #978
  • build(deps): bump actions/setup-node from 4 to 7 by @dependabot[bot] in #979
  • build(deps): bump softprops/action-gh-release from 2 to 3 by @dependabot[bot] in #980
  • web: keep opted-out nodes out of /metrics by @l5yth in #981
  • web: list only protocols in view in the map legend by @l5yth in #983
  • data,web: capture MeshCore message path, RSSI and scope (#765) by @l5yth in #984
  • web: scope Reticulum destination counts and floor /api/destinations by @l5yth in #982
  • web: keep nodes-table rows and their state across live refreshes (#881) by @l5yth in #985
  • web: keep the chat reader's place across live refreshes (#881) by @l5yth in #992
  • web: keep map overlays open and repaint only what changed (#881) by @l5yth in #988
  • web: stack the Reticulum legend group under MeshCore by @l5yth in #986
  • web: keep federation peers for 7 days; pin 24-hour counts by @l5yth in #990
  • web: check relayed federation records against the domain's key by @l5yth in #989
  • data,web: put the Reticulum host on the map from its RNS config by @l5yth in #991
  • data,web: use the receive time when the radio clock is off; cap battery by @l5yth in #987
  • data,web: bind node rows to their key and records to their sender by @l5yth in #998
  • data: check MeshCore RX-log adverts against their signatures by @l5yth in #996
  • web,data: cap ingested strings by column and check node ids by @l5yth in #997
  • web: serve no row of a hidden client in private mode by @l5yth in #993
  • web,matrix: mark name-matched MeshCore senders as unverified by @l5yth in #999
  • web: sandbox the OG capture and harden frontend escaping and lookups by @l5yth in #994
  • data: let operators limit which hosts may send UDP packets by @l5yth in #995
  • web: fetch each federation peer once per crawl and cooldown by @l5yth in #1000
  • data: name MeshCore flood scopes from a built-in region table by @l5yth in #1001
  • data: log why a Reticulum ingestor hears nothing; close failed connects by @l5yth in #1002
  • data: lock mesh.sh venv installs and skip pip when nothing changed by @l5yth in #1003
  • web: hide the unverified marker, show ?? for unknown scope, space legend by @l5yth in #1004
  • data,web: queue uploads per instance and retry each on its own by @l5yth in #1005
  • data: keep CodeQL off a blank UDP group and a test channel name by @l5yth in #1006
  • web: draw the page chrome from one grey family of tokens by @l5yth in #1008
  • data: keep snapshot node ages when the radio clock is off by @l5yth in #1007
  • web: put table units in headers, align node views, fit phones by @l5yth in #1010
  • web: chat lines lead with the time and text; tidier tab bar and panel by @l5yth in #1012
  • web: unpin the phone footer, list pages in the menu, fix banner/header by @l5yth in #1013
  • web: honour hidden, 44px touch targets, focus ring, named live toggle by @l5yth in #1009
  • chore: bump version to 1.0.0 by @l5yth in #1011
  • web: quiet map legend, themed zoom, role words, one overlay chrome by @l5yth in #1014
  • chore: remove the Flutter app and its CI by @l5yth in #1015
  • data: MeshCore scope table adds five German community regions by @l5yth in #1016
  • build(deps): bump rns from 1.5.6 to 1.5.7 in /data by @dependabot[bot] in #1017
  • build(deps-dev): bump black from 26.5.1 to 26.10.0 in /data by @dependabot[bot] in #1018
  • web: banner and meta row keep the gutter, one footer row on desktop by @l5yth in #1020
  • web: nodes table and static pages fit phones with long words by @l5yth in #1021
  • web: one Log line anatomy, kind words, folded bursts by @l5yth in #1022
  • data: MeshCore contacts post once per connect by @l5yth in #1024
  • web: CSP and referrer policy, pinned scheme, scrubbed capture env by @l5yth in #1025
  • web: a reused packet id never rewrites another node's rows by @l5yth in #1026
  • web: atomic instance rows, crawl survives bad entry, keyfile fails loud by @l5yth in #1029
  • web,data: bound neighbor and trace lists, coordinates, and odd sections by @l5yth in #1028
  • web: the node filter repaints once typing pauses by @l5yth in #1030
  • web: bound the Meshtastic payload decoder per request and process by @l5yth in #1027
  • web: map tooltips build on open, one shared segmenter by @l5yth in #1031
  • data: debug capture keeps metadata only and rotates by @l5yth in #1032
  • web: canonical aggregate windows, rx_time predicates, bounded keys by @l5yth in #1038
  • web: the node overlay reads roles from the dashboard's node registry by @l5yth in #1033
  • web: route-labelled requests, scrape-time node series, true node count by @l5yth in #1034
  • web,data: Reticulum interface names never carry peer addresses by @l5yth in #1035
  • web: schema upgrades fail loudly, reach parity, index nodes.num by @l5yth in #1036
  • web: one bounded initial load before the stream, no stale seed by @l5yth in #1037
  • web: serve node public keys on the node read API by @l5yth in #1023
  • web: chat history pages join the backfill's idle repaint by @l5yth in #1039
  • web: keep the database open between requests, wait without the GVL by @l5yth in #1041
  • web: bound the federation peer set, judge freshness on our clock by @l5yth in #1042
  • web: race specs spawn the racing boot and hold its lock until released by @l5yth in #1044
  • docs: centered README head with the 1.0 screenshot by @l5yth in #1043
  • web: warm loads show every row; the cache writes changed rows only by @l5yth in #1045
  • web: refused streams poll and retry; hidden tabs free their stream by @l5yth in #1046
  • build(deps): bump serde_json from 1.0.151 to 1.0.152 in /matrix by @dependabot[bot] in #1047
  • build(deps): bump toml from 1.1.6+spec-1.1.0 to 1.1.8+spec-1.1.0 in /matrix by @dependabot[bot] in #1048
  • build(deps-dev): bump black from 26.10.0 to 26.10.1 in /data by @dependabot[bot] in #1049
  • web,data: timeout specs hold their jobs on gates, not fixed sleeps by @l5yth in #1050
  • web: keep federation on https, v1 counts from origin, close timeouts by @l5yth in #1051
  • web: ingest POSTs take JSON only; no path takes a form body by @l5yth in #1052
  • web: specs leave no temp dirs; a leaking spec fails the run by @l5yth in #1053
  • web: delta reads and empty lists revalidate instead of reusing a cache by @l5yth in #1054
  • web: one transaction per ingest batch, skipping a record that fails by @l5yth in #1055
  • ci: each suite fails when coverage drops below its floor by @l5yth in #1056
  • web,data: delete code no input reaches and raise the Ruby floor by @l5yth in #1057
  • web: boot without INSTANCE_DOMAIN, and build the armv7 image without Chromium by @l5yth in #1058
  • docs: put the unreleased CHANGELOG items under a v1.0.0 header by @l5yth in #1059

New Contributors

Full Changelog: v0.7.5...v1.0.0