Commit Graph
100 Commits
Author SHA1 Message Date
Afri 488f4c0f49 web: quiet map legend, themed zoom, role words, one overlay chrome (#1014) 2026-10-08 18:18:44 +02:00
Afri f4daac7b8d chore: bump version to 1.0.0 (#1011) 2026-10-08 17:15:16 +02:00
Afri ff278b6147 web: honour hidden, 44px touch targets, focus ring, named live toggle (#1009) 2026-10-08 17:14:52 +02:00
Afri a8fe2962c0 web: unpin the phone footer, list pages in the menu, fix banner/header (#1013) 2026-10-08 17:14:31 +02:00
Afri 6fad2c81c1 web: chat lines lead with the time and text; tidier tab bar and panel (#1012) 2026-10-08 17:14:06 +02:00
Afri b06238119a web: put table units in headers, align node views, fit phones (#1010) 2026-10-08 17:13:39 +02:00
Afri ddae287ee6 data: keep snapshot node ages when the radio clock is off (#1007)
* data: keep snapshot node ages when the radio clock is off

* data: add the snapshot clock unit tests left out of the first commit
2026-10-08 15:55:12 +02:00
Afri d11e84862d web: draw the page chrome from one grey family of tokens (#1008) 2026-10-08 15:47:08 +02:00
Afri 86c7f52a69 data: keep CodeQL off a blank UDP group and a test channel name (#1006) 2026-10-08 15:41:08 +02:00
Afri 6c9e0bad52 data,web: queue uploads per instance and retry each on its own (#1005) 2026-10-08 15:39:44 +02:00
Afri 7c82ff655c web: hide the unverified marker, show ?? for unknown scope, space legend (#1004) 2026-10-08 12:32:47 +02:00
Afri 0a9764e3f7 data: lock mesh.sh venv installs and skip pip when nothing changed (#1003) 2026-10-08 12:25:48 +02:00
Afri 7426276964 data: log why a Reticulum ingestor hears nothing; close failed connects (#1002) 2026-10-08 12:25:31 +02:00
Afri 438596c6d2 data: name MeshCore flood scopes from a built-in region table (#1001) 2026-10-08 10:14:15 +02:00
Afri 1dbcdc3606 web: fetch each federation peer once per crawl and cooldown (#1000) 2026-10-08 00:35:43 +02:00
Afri 49323d3809 data: let operators limit which hosts may send UDP packets (#995) 2026-10-08 00:35:19 +02:00
Afri cc75dd0088 web: sandbox the OG capture and harden frontend escaping and lookups (#994) 2026-10-08 00:35:02 +02:00
Afri 597dda7357 web,matrix: mark name-matched MeshCore senders as unverified (#999) 2026-10-08 00:34:44 +02:00
Afri e52797a78b web: serve no row of a hidden client in private mode (#993) 2026-10-08 00:34:26 +02:00
Afri 95ff69f6cb web,data: cap ingested strings by column and check node ids (#997) 2026-10-08 00:34:08 +02:00
Afri 5e0deb8a46 data: check MeshCore RX-log adverts against their signatures (#996) 2026-10-08 00:33:48 +02:00
Afri 3a07231e6e data,web: bind node rows to their key and records to their sender (#998) 2026-10-08 00:33:21 +02:00
Afri 501662ab58 data,web: use the receive time when the radio clock is off; cap battery (#987) 2026-10-07 10:59:50 +02:00
Afri 586545fa4b data,web: put the Reticulum host on the map from its RNS config (#991) 2026-10-07 10:59:33 +02:00
Afri 861379b4c8 web: check relayed federation records against the domain's key (#989) 2026-10-07 10:59:16 +02:00
Afri db792318a3 web: keep federation peers for 7 days; pin 24-hour counts (#990) 2026-10-07 10:58:52 +02:00
Afri 53f36fe697 web: stack the Reticulum legend group under MeshCore (#986) 2026-10-07 10:58:34 +02:00
Afri eae3f75162 web: keep map overlays open and repaint only what changed (#881) (#988) 2026-10-07 10:57:58 +02:00
Afri aeabeec7e3 web: keep the chat reader's place across live refreshes (#881) (#992) 2026-10-07 10:57:25 +02:00
Afri bc92cb5ab7 web: keep nodes-table rows and their state across live refreshes (#881) (#985)
* web: keep nodes-table rows and their state across live refreshes (#881)

* web: keep the test DOM parser's tag regex linear
2026-10-07 10:57:02 +02:00
Afri 1aaee489d2 web: scope Reticulum destination counts and floor /api/destinations (#982) 2026-10-06 18:45:23 +02:00
Afri 9f988d2d90 data,web: capture MeshCore message path, RSSI and scope (#765) (#984) 2026-10-06 18:41:35 +02:00
Afri 88900e6689 web: list only protocols in view in the map legend (#983) 2026-10-06 18:36:52 +02:00
Afri 4b318129e9 web: keep opted-out nodes out of /metrics (#981) 2026-10-06 18:36:22 +02:00
Afri e2b33a1cf9 repo: move .claude to the spec tree (#976) 2026-10-06 15:28:17 +02:00
Afri ea8d618489 ci: upload test results with codecov-action v7 and move to checkout v7 (#975) 2026-10-06 15:27:55 +02:00
Afri 2f4330b629 app: use caret ranges for the shared_preferences platform deps (#974) 2026-10-06 15:27:47 +02:00
Afri 61072fde6f docs: describe the RA10/RE10 placeholder rules where they changed (#973) 2026-10-06 14:46:47 +02:00
Afri da1fdda104 web: drop potatomesh.jmrp.io as federation seeds (#972)
* web: add mesh.dmz.pt as a federation seed node

* web: drop potatomesh.jmrp.io as federation seeds
2026-10-06 11:26:02 +00:00
Afri 4835fe06ef web: add mesh.dmz.pt as a federation seed node (#971) 2026-10-06 13:13:28 +02:00
Afri 27eac3d4e5 web,data: stop Reticulum destination placeholders from renaming (#968) 2026-10-06 13:06:43 +02:00
Afri 326a6ab608 web,matrix,app: name Reticulum as a known protocol in every consumer (#967) 2026-10-06 12:56:25 +02:00
Afri 18178e7939 matrix: bump axum to 0.8.9 (#970) 2026-10-06 12:54:00 +02:00
Afri c681fb2cd7 docs: scope Reticulum as experimental and announce-only (#966) 2026-10-06 12:44:57 +02:00
Afri 1aa45073a2 tests: make the Reticulum host-id canonicalisation check able to fail (#965) 2026-10-06 12:44:10 +02:00
Afri 0831912dfa data: refresh the Reticulum host's own destinations every hour (#969) 2026-10-06 12:29:24 +02:00
Afri fe9e46ef67 data: ingest only RNode interfaces by default under PROTOCOL=reticulum (#964) 2026-10-06 08:57:10 +02:00
Afri 5f03f7d024 nix: add rns to the flake ingestor and update the nixpkgs pin (#963) 2026-10-06 08:56:09 +02:00
Afri d3cbb1443b chore: bump version to 0.8.0 (#946) 2026-10-05 13:34:05 +02:00
Afri 9ff4c32c96 app: bump flutter_local_notifications to 22.3.1 (#945) 2026-10-05 13:32:47 +02:00
Afri c1a4cf9e9b data: retry the Reticulum host id through the provider every loop (#944) 2026-10-05 12:56:17 +02:00
Afri 0eacbf5cfd web: honor the node opt-out marker on /api/destinations (#943) 2026-10-05 12:55:59 +02:00
Afri ce0fdd4391 data,ci: run the ingestor image on Python 3.13 and test 3.13 and 3.14 (#942) 2026-10-05 12:55:39 +02:00
Afri af4e939a34 chore: bump version 0.7.6 (#927) 2026-10-05 10:27:08 +02:00
Afri 186b2ad0bd ci,deps: run Dependabot for every ecosystem and lock production builds (#915)
* ci,deps: run Dependabot for every ecosystem and lock production builds

* web,ci: run the web image on Ruby 3.4 and drop the Ruby 3.3 CI leg
2026-10-05 00:27:11 +02:00
Afri 7b0176df93 web: dedup MeshCore channel copies whose sender resolved differently (#880) (#914) 2026-10-04 21:25:57 +02:00
Afri b144b44e82 web,data: stop MeshCore chat text from minting or reviving nodes (#883) (#912) 2026-10-04 16:41:58 +02:00
Afri a59bd33e02 data,web: honor channel filters on every packet and the node list; add DROP_VIA_MQTT (#784, #884) (#913) 2026-10-04 16:39:17 +02:00
Afri 816ae1c1d1 matrix: add crates.io package metadata (#879) (#911) 2026-10-04 16:34:23 +02:00
Afri 44fab19bf3 data: listen on both Meshtastic UDP multicast groups by default (#903) (#909) 2026-10-04 15:51:58 +02:00
Afri 58ca8350c5 web: keep the mobile channel select alive across live refreshes (#882) (#910) 2026-10-04 15:39:59 +02:00
Afri c83ca0c301 data,docs: pipe MESHCORE_TELEMETRY_POLL_24H_EXEMPT through every deployment (#908) 2026-10-04 15:38:58 +02:00
Afri c831e86bfe docker,docs: resync the root Dockerfile and add a security policy (#907) 2026-10-04 15:18:55 +02:00
l5y 3d89366e89 docs: trim operator docs to instructions, close doc/behavior drift (#904)
* docs: trim operator docs to instructions, close doc/behavior drift

* docs: strip em-dashes and bold from operator docs; trim changelog
2026-09-06 13:04:20 +02:00
l5y deaf89b1bd web: fix SSRF guard bypass via IPv6 transition addresses (#902) 2026-09-01 10:26:28 +02:00
l5y 39e5d01d26 data,web: Reticulum finalization — radio metadata, chat tags, federation zeros (#900)
* data,web: Reticulum finalization — radio metadata, chat tags, federation zeros

* web: purge destinations with their nodes
2026-08-31 12:01:36 +02:00
l5y d61cca93c0 web: reticulum aspects, identity groups, identity page, honest detail views (#899)
* web: reticulum aspects, identity groups, identity page, honest detail views

* web,data: fix staging findings, naming, row controls, transport gate

* web,data: fix Reticulum naming, row controls, and the transport gate

* web,data: fix Reticulum naming, row controls, and the transport gate

* web: cover the identity-group wiring and destination fetchers
2026-08-29 17:13:35 +02:00
l5y 96e0dbfd05 data,web: key Reticulum nodes on identity; discover host aspects (#897)
* data,web: key Reticulum nodes on destinations; fix e2e field findings (#888)

* data,web: key Reticulum nodes on identity; discover host aspects

* data,web: restore announced names and interfaces on host destinations

* data,web,docs: fix review findings on identity-keyed Reticulum nodes
2026-08-28 21:11:31 +02:00
l5y 5294261892 web: add reticulum frontend support (#894)
* web: add reticulum frontend support

* docs: update readme

* web: address ui review comments
2026-08-27 12:15:05 +02:00
l5y 4b586316ae fix reticulum protocol loose ends from #888 review (#893)
* fix reticulum protocol loose ends from #888 review

* data: fix quoted Compose defaults blacking out every channel

* data,web: fix four defects found reviewing this PR
2026-08-27 08:04:08 +02:00
l5y 40dfa14dfa chore: release 0.7.5 (#892)
* chore: release 0.7.5

* app: raise iOS deployment target to 15.0; stop mobile CI failing fast
2026-08-24 19:48:29 +02:00
l5y 24a9226df4 data: gate every ingestor transmission behind TX_ENABLED/TX_ANNOUNCE (#891) 2026-08-24 17:18:19 +02:00
l5y f43270d351 web: fix waypoints shipped-review audit findings (#878) 2026-07-30 21:58:43 +02:00
l5y 179cc5c198 web: LCP critical-path refinements (icon caching, preconnect, chat-tabs reflow) (#877) 2026-07-30 19:48:50 +02:00
l5y 882bbc4d97 web: bump sqlite3 to 2.9.5 for use-after-free advisory (#876) 2026-07-30 09:50:48 +02:00
l5y 0b93eb8169 web,docker: bake git APP_VERSION into image for immutable asset caching (#875)
* web,docker: bake git APP_VERSION into image for immutable asset caching

* web,docker: bake git version + uniform v-prefixed APP_VERSION
2026-07-29 18:59:26 +02:00
l5y a676a2997e data,web: Meshtastic waypoints as a first-class POI layer (#874)
* data,web: Meshtastic waypoints as a first-class POI layer

* web: re-roll waypoint UI to signed-off variants + node-page section

* web: reconcile stats-pushdown plan spec with the five-table W9 umbrella

* web: legend waypoint sample follows the 1c-B teardrop marker
2026-07-29 18:22:08 +02:00
l5y ad1dd5843b perf(web): index-seek /api/stats telemetry umbrella to end GVL stall (#873) 2026-07-29 13:20:16 +02:00
l5y f6945e5a08 web: immutable cache-control for versioned assets + configurable stats TTL (#868)
* web: immutable cache-control for versioned assets + configurable stats TTL

* web: address #868 review — git-gate immutable, scope to JS/CSS

* fix(spec): make the asset Cache-Control test mode-aware
2026-07-29 00:20:25 +02:00
l5y 4fb11d237c web: cap the node table render to the top N with a show all control (#869)
* web: cap the node table render to the top N with a show all control

* web: address #869 review — style the show-all control, fix hover, re-arm cap
2026-07-28 22:36:57 +02:00
l5y c5bde6280b docs: document reverse-proxy deployment, asset caching, and scaling (#872) 2026-07-28 21:57:00 +02:00
l5y 5d2790bb48 data: harden MeshCore subscribe against unknown EventType (#867) 2026-07-28 12:55:55 +02:00
l5y d501aeb4eb web: frontent performance fixes (#864)
* web: de-jank cold-load backfill + scope module preload to the view

* web: defer Leaflet, lazy-load node overlay, skip data pipeline off-dashboard

* web: address review of frontend-perf fix
2026-07-28 09:15:14 +02:00
l5y e0b9c22fab chore: bump version to 0.7.4 (#863) 2026-07-27 17:06:12 +02:00
l5y f0045c984f matrix: tolerate compacted /api/messages rows (#862) 2026-07-27 15:55:30 +02:00
l5y cd771c4eea data: count every MeshCore RX-log frame; stamp position radio metadata (#861) 2026-07-27 11:21:16 +02:00
l5y 207150f235 web: mesh activity map card (#860)
* data,web: /api/stats packets rate as <scope>.packets.hour

* data,web: /api/stats packets as <scope>.packets.hour; total sums protocols

* web: mesh activity map card - packets/h total + per-protocol split

* web: /api/stats/activity bucketed packets/hour time-series

* web: mesh activity card draws the real 24h sparkline

* web: /charts mesh-activity figure, mobile card strip, legend-toggle fix

* web: mesh-activity design-review remediation

* web: /api/stats total sums rounded per-protocol rates + doc fixes
2026-07-26 20:59:26 +02:00
l5y b52f3949e4 data,web: mesh activity reporting & announcements (#859) 2026-07-26 09:09:28 +02:00
l5y 86f49506ff web: remediate frontend design & UX audit (#855)
* web: remediate frontend design & UX audit

* web: remediate design UX review follow-up

* web: remediate post-deploy design review (detail view, footer, marker recency)

* web: drop single-pass tag-strip in isReportedField

* web: legend shape key + pressed state + chat overflow
2026-07-25 22:06:59 +02:00
l5y 8d25dd42cd fix(docker): bump ingestor base to python 3.12.10 for cryptography's Rust MSRV (#858) 2026-07-25 19:34:22 +02:00
l5y b013faf13d web,data: reconcile MeshCore stale same-name node duplicates (#857)
* web,data: reconcile MeshCore stale same-name node duplicates

* data: MeshCore roster sync must not warm last_heard
2026-07-24 23:25:48 +02:00
l5y 8b095669cf web: stack HOT over CARTO basemap layers, drop per-tile timeout (#856) 2026-07-24 22:06:37 +02:00
l5y 3d43061fff web: live relative-time tick - last-seen/updated ages count up in place (#851) 2026-07-23 12:03:13 +02:00
l5y 3878597c8d data,web: ingest every telemetry family from both protocols (#850)
* data,web: ingest every telemetry family from both protocols

* data: 24h per-node telemetry poll cooldown; RX_ONLY ingestor switch
2026-07-23 11:51:30 +02:00
l5y 22c470d9e6 data: meshcore rf metrics rssi/snr/hops/path (#849) 2026-07-22 21:41:57 +02:00
l5y 5b6d45e25e web: node table keeps latest telemetry of every type (per-field merge) (#847) 2026-07-22 16:14:17 +02:00
l5y 6fefce73e1 web: blend basemap providers to fix HOT/CARTO tile checkerboard (#846) 2026-07-22 13:02:39 +02:00
l5y 0cd2b2c4d4 Bump all packages to 0.7.3 (#845)
* Bump all packages to 0.7.3

* ci: disable Flutter mobile release workflow
2026-07-18 12:11:49 +02:00
l5y ebd500981d web: HOT primary basemap (dark-filtered) with per-tile CARTO fallback (#844) 2026-07-18 11:58:05 +02:00
l5y ea5560f9aa fix(docker): armv7 ingestor build toolchain; disable matrix fail-fast (#842) 2026-07-07 19:42:33 +02:00