Afri
|
bcfe48502c
|
web: a port-variant registration no longer blocks a peer's federation (#1063)
|
2026-10-18 11:53:49 +02:00 |
|
Afri
|
b17b364f20
|
web,data: hide inactive protocols on the activity card, and serve packets/hour to 3 decimals (#1062)
|
2026-10-18 11:47:12 +02:00 |
|
Afri
|
03ea02f062
|
web: label the community chat link Chat:, as GitHub: (#1061)
|
2026-10-18 11:32:11 +02:00 |
|
Afri
|
87a79bb941
|
web: the armv7 Chromium guard checks every preview package and the message (#1060)
|
2026-10-17 13:42:59 +02:00 |
|
Afri
|
50c30eed70
|
docs: put the unreleased CHANGELOG items under a v1.0.0 header (#1059)
|
2026-10-17 11:30:14 +02:00 |
|
Afri
|
0be4d84bf2
|
web: boot without INSTANCE_DOMAIN, and build the armv7 image without Chromium (#1058)
|
2026-10-17 11:29:38 +02:00 |
|
Afri
|
192204c94c
|
web,data: delete code no input reaches and raise the Ruby floor (#1057)
|
2026-10-17 10:27:59 +02:00 |
|
Afri
|
50e9660109
|
ci: each suite fails when coverage drops below its floor (#1056)
|
2026-10-16 20:32:44 +02:00 |
|
Afri
|
9c91632e2a
|
web: one transaction per ingest batch, skipping a record that fails (#1055)
|
2026-10-16 20:30:56 +02:00 |
|
Afri
|
48cea6c580
|
web: delta reads and empty lists revalidate instead of reusing a cache (#1054)
|
2026-10-16 20:30:39 +02:00 |
|
Afri
|
486657eaff
|
web: specs leave no temp dirs; a leaking spec fails the run (#1053)
|
2026-10-16 20:30:24 +02:00 |
|
Afri
|
54c15042bc
|
web: ingest POSTs take JSON only; no path takes a form body (#1052)
|
2026-10-16 20:30:06 +02:00 |
|
Afri
|
dfbe4680be
|
web: keep federation on https, v1 counts from origin, close timeouts (#1051)
* web: keep federation on https, v1 counts from origin, close timeouts
* web: the dual-address fallback specs pass keywords on to TCPSocket.open
|
2026-10-16 20:29:46 +02:00 |
|
Afri
|
b7ff2c8466
|
web,data: timeout specs hold their jobs on gates, not fixed sleeps (#1050)
|
2026-10-16 09:07:27 +02:00 |
|
Afri
|
2bbcf893ce
|
web: refused streams poll and retry; hidden tabs free their stream (#1046)
|
2026-10-12 09:46:59 +02:00 |
|
Afri
|
fe0f83861c
|
web: warm loads show every row; the cache writes changed rows only (#1045)
|
2026-10-12 09:46:02 +02:00 |
|
Afri
|
0e43f5a859
|
docs: centered README head with the 1.0 screenshot (#1043)
|
2026-10-12 08:38:03 +02:00 |
|
Afri
|
55aa3de15f
|
web: race specs spawn the racing boot and hold its lock until released (#1044)
|
2026-10-12 08:37:45 +02:00 |
|
Afri
|
76a93b3eee
|
web: bound the federation peer set, judge freshness on our clock (#1042)
|
2026-10-12 08:34:20 +02:00 |
|
Afri
|
2d2b7c6bfb
|
web: keep the database open between requests, wait without the GVL (#1041)
|
2026-10-12 08:34:01 +02:00 |
|
Afri
|
7bfe613aa2
|
web: chat history pages join the backfill's idle repaint (#1039)
|
2026-10-11 18:40:29 +02:00 |
|
Afri
|
7b5f6196b3
|
web: serve node public keys on the node read API (#1023)
* web: serve node public keys on the node read API
* web: public key docs match the code, per review (#1019)
|
2026-10-11 13:52:07 +02:00 |
|
Afri
|
582c6d9f5a
|
web: one bounded initial load before the stream, no stale seed (#1037)
|
2026-10-11 13:42:07 +02:00 |
|
Afri
|
03472b151f
|
web: schema upgrades fail loudly, reach parity, index nodes.num (#1036)
|
2026-10-11 13:36:24 +02:00 |
|
Afri
|
7b6d86e76c
|
web,data: Reticulum interface names never carry peer addresses (#1035)
|
2026-10-11 11:59:10 +02:00 |
|
Afri
|
2d4bb23b5a
|
web: route-labelled requests, scrape-time node series, true node count (#1034)
|
2026-10-11 11:54:55 +02:00 |
|
Afri
|
bf5225359d
|
web: the node overlay reads roles from the dashboard's node registry (#1033)
|
2026-10-11 11:05:54 +02:00 |
|
Afri
|
260c229fcd
|
web: canonical aggregate windows, rx_time predicates, bounded keys (#1038)
|
2026-10-11 10:56:53 +02:00 |
|
Afri
|
fe51353f93
|
data: debug capture keeps metadata only and rotates (#1032)
|
2026-10-11 10:56:01 +02:00 |
|
Afri
|
5edf941a4c
|
web: map tooltips build on open, one shared segmenter (#1031)
|
2026-10-11 08:40:38 +02:00 |
|
Afri
|
9dbd027d5f
|
web: bound the Meshtastic payload decoder per request and process (#1027)
|
2026-10-11 08:35:12 +02:00 |
|
Afri
|
1333967f2f
|
web: the node filter repaints once typing pauses (#1030)
|
2026-10-10 18:48:33 +02:00 |
|
Afri
|
91a4bb7d7d
|
web,data: bound neighbor and trace lists, coordinates, and odd sections (#1028)
|
2026-10-10 18:41:30 +02:00 |
|
Afri
|
cbf88a39e4
|
web: atomic instance rows, crawl survives bad entry, keyfile fails loud (#1029)
|
2026-10-10 16:48:48 +02:00 |
|
Afri
|
1bffd87ede
|
web: a reused packet id never rewrites another node's rows (#1026)
|
2026-10-10 16:48:35 +02:00 |
|
Afri
|
f69b711aa9
|
web: CSP and referrer policy, pinned scheme, scrubbed capture env (#1025)
* web: CSP and referrer policy, pinned scheme, scrubbed capture env
* web: inline script finder matches any case and end-tag form (CodeQL)
|
2026-10-10 16:40:51 +02:00 |
|
Afri
|
e3333693fb
|
data: MeshCore contacts post once per connect (#1024)
|
2026-10-10 11:00:43 +02:00 |
|
Afri
|
7986742ad6
|
web: one Log line anatomy, kind words, folded bursts (#1022)
* web: one Log line anatomy, kind words, folded bursts
* web: one visible-text helper for the Log tests (CodeQL)
|
2026-10-09 12:53:23 +02:00 |
|
Afri
|
fa8bb0f44c
|
web: nodes table and static pages fit phones with long words (#1021)
|
2026-10-09 09:08:27 +02:00 |
|
Afri
|
f333f653fd
|
web: banner and meta row keep the gutter, one footer row on desktop (#1020)
|
2026-10-08 23:42:08 +02:00 |
|
Afri
|
d9a459b6d5
|
data: MeshCore scope table adds five German community regions (#1016)
|
2026-10-08 23:35:07 +02:00 |
|
Afri
|
949821d7f3
|
chore: remove the Flutter app and its CI (#1015)
|
2026-10-08 20:51:52 +02:00 |
|
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 |
|