MrAlders0n
7d759d0a0f
perf: known_routes retention, digest identity, and a working batched reconfirm ( #98 )
...
* fix: cascade channel_messages on packet delete
* rebuild known_routes keyed on (iata, path_key)
* add route retention delete, batch reconfirm, path_key upsert
* compute route path_key in store, add DeleteOldRoutes
* add routes retention config
* wire route retention into cleanup, batch reconfirm
* prune routes in reconfirm task, not cleanup
* expand routes retention docs in example config
2026-08-12 09:30:03 -04:00
Enot (ded) Skelly
b44cae89d7
add neighbor message parsing
...
closes #94
2026-07-30 13:19:18 -07:00
Enot (ded) Skelly
2cbd211e11
add IATA validation checks on ingest
...
closes #89
2026-07-30 13:00:29 -07:00
Enot (ded) Skelly
ae0669ccbe
enrich packet observations
2026-07-27 09:41:11 -07:00
Enot (ded) Skelly
336b734a42
feat: add stats api for new clock drift tracking
...
closes : #91
2026-07-24 14:01:12 -07:00
Enot (ded) Skelly
d8371f04d0
feat: split top adverts into flood/direct
...
closes : #90
2026-07-24 13:49:40 -07:00
Enot (ded) Skelly
3cad2dfda1
feat: process messages for new channels at boot
...
any new channel added to config will get backfilled if there
are any messages to decrypt
closes : #68
2026-07-24 13:27:27 -07:00
Enot (ded) Skelly
572f14b94b
fix: formatting in cache test file
2026-07-24 13:18:14 -07:00
Enot (ded) Skelly
99d7eb0bab
feat: add node stale/delete config
...
closes : #93
2026-07-24 13:09:51 -07:00
Enot (ded) Skelly
3f2506fc8b
feat: add geojson for iatas
...
closes #66
2026-07-24 12:59:48 -07:00
MrAlders0n
cbde3d02da
perf(stats): matview-back top talkers and advertisers
2026-07-24 12:07:05 -07:00
MrAlders0n
b93ce7aba6
serve top observers from a matview instead of scanning per request
2026-07-24 12:07:05 -07:00
MrAlders0n
d8ff7d0542
track payload_type on observations and serve the breakdown from a matview
2026-07-24 12:07:05 -07:00
MrAlders0n
a84112f7fb
fix(traces): review fixes for trace_iatas
...
Refresh last_heard on duplicate observations too, capped at hourly, so
steady traffic can't age a trace out of the filter (dedup key has no
heard_at). Drop the unused last_heard index column so upserts stay HOT,
and share one retention cutoff across the cleanup deletes.
2026-07-24 12:07:05 -07:00
MrAlders0n
457747b353
perf(traces): track trace activity per IATA in its own table
...
The trace list joined every trace packet to ~50M observations to apply
the IATA filter; the parallel hash join overran docker's 64MB /dev/shm
and the filtered list errored. Keep a small trace_iatas table at ingest
(like channel_iatas) and group packets by tag instead. Filtered stats
are now per tag rather than per matching packet.
2026-07-24 12:07:05 -07:00
MrAlders0n
ba0e85c44e
fix(channels): review fixes for channel_iatas
...
Refresh last_heard on duplicate observations too, capped at hourly, so
steady traffic can't age a channel out of the filter while its packets
stay retained (dedup key has no heard_at). Guard the seed join against
the docker /dev/shm cap like the trace one, and drop the unused
last_heard index column so the upserts stay HOT.
2026-07-24 12:07:05 -07:00
MrAlders0n
dff9c6cf00
perf(channels): track channel activity per IATA in its own table
...
The IATA filter ran a correlated EXISTS over packets/observations with
ILIKE, which skipped the iata index and took ~7s live. Keep a small
channel_iatas table at ingest (like node_iatas) and filter against it.
Also honor the iatas= param so multi-site regions stop getting the
global list. Filter now ages out with packet retention rather than
matching any retained packet.
2026-07-24 12:07:05 -07:00
Enot (ded) Skelly
b33ebc007b
feat: add plural value filter params
...
closes #76
2026-07-23 14:26:16 -07:00
Enot (ded) Skelly
8e2798612b
feat: add clock drift tracking
...
closes #71
2026-07-23 13:34:41 -07:00
Enot (ded) Skelly
b38663d3a1
feat: add stats for top advertiser and talkers
...
closes #75
closes #74
2026-07-23 10:41:16 -07:00
Enot (ded) Skelly
0ca28cc6a8
feat: node prefix search
...
pubkeyPrefix takes any even length prefix string case-insensitive
and returns all matches
2026-07-23 10:14:47 -07:00
Enot (ded) Skelly
d8c622316d
fix: radio frequency precision
...
closes #77
2026-07-23 09:58:43 -07:00
Enot (ded) Skelly
d7fe41c4a2
fix: missing db test stub
2026-07-23 09:54:36 -07:00
Enot (ded) Skelly
f07edf9fb6
feat: include source and destination in path data where available
...
realted to #85
2026-07-23 09:44:27 -07:00
Enot (ded) Skelly
7a58a07bbd
fix: trace packet paths
...
closes #86
2026-07-23 09:20:00 -07:00
Enot (ded) Skelly
ac67308f21
fix: dont log empty status from observers
...
closes #79
2026-07-23 08:43:26 -07:00
MrAlders0n
30772da2c5
perf(packets): drive IATA-filtered list from the observation index
...
Quiet sites probed hundreds of thousands of packets to fill a page.
Walk idx_observations_iata_heard per requested site and dedup instead.
Filtered lists now order by site-local recency; the cursor follows.
2026-07-20 09:07:05 -07:00
MrAlders0n
41a3aa4711
feat(config): presence flush interval and packet ttl settings
2026-07-20 08:55:18 -07:00
MrAlders0n
2f12480ec4
feat(presence): coalesce presence writes in memory
...
batches observer/packet last-seen bumps and flushes on an interval instead of one tx per observation
2026-07-20 08:55:18 -07:00
Enot (ded) Skelly
0ca3c95c9e
fix(hub): bug in subscribe logic and a little race condition
2026-07-02 14:19:03 -07:00
Enot (ded) Skelly
975f2f3656
feat(ws): make resolved paths a config toggle in session
2026-07-02 13:54:41 -07:00
Enot (ded) Skelly
ca65ed1d9d
fix(ingest): add more possible heard at timestamp formats
2026-07-02 13:09:26 -07:00
Enot (ded) Skelly
a14a0ac658
feat(paths): included resolved path in ws observation events
...
changes to shared helper for resolve paths
2026-07-02 09:39:10 -07:00
Enot (ded) Skelly
4e2ee62bad
feat(nodes): add ?neighbors to list nodes
...
inlcudes neighbor IDs in node details list
2026-07-02 09:12:23 -07:00
Enot (ded) Skelly
ee2fac1b20
fix(ingest): verify adverts
2026-07-02 08:27:36 -07:00
Enot (ded) Skelly
420a43172b
fix(ingest): dedupe unknown channel hashes
2026-07-02 08:08:54 -07:00
Enot (ded) Skelly
7aa5aa3d3a
feat(neighbors): grab neighbors for nodes in traces w/ snr
2026-06-16 16:07:35 -07:00
Enot (ded) Skelly
f6f94acad8
feat(neighbors): add zero hop advert neighbors for observers w/ snr
2026-06-16 14:47:30 -07:00
Enot (ded) Skelly
fd24a71143
feat(neighbors): add observer neighbor snr on discovery response
2026-06-16 14:26:33 -07:00
Enot (ded) Skelly
7b39160ff5
feat(neighbors): add optional snr column
2026-06-16 12:54:31 -07:00
Enot (ded) Skelly
af6fbf627b
docs(ingest): document other parsed payload structs
2026-06-16 09:48:37 -07:00
Enot (ded) Skelly
b1501dfc1f
feat(ingest): parse discover request and response
2026-06-16 09:47:53 -07:00
Enot (ded) Skelly
2619d0b904
chore: bump meshcore-go v1.0.8
2026-06-16 09:20:52 -07:00
Enot (ded) Skelly
89fde4868f
tests(handlers): few more things to cover
2026-06-15 15:08:38 -07:00
Enot (ded) Skelly
e9d4a336ea
tests(handlers): add some happy path tests everywhere
2026-06-15 15:02:17 -07:00
Enot (ded) Skelly
fea747924d
tests(ingest): add more pure coverage
2026-06-15 14:45:57 -07:00
Enot (ded) Skelly
3105eba8e0
chore(keystore): move entryExists into keystore and add tests
2026-06-15 14:38:48 -07:00
Enot (ded) Skelly
ecde7957f7
feat(config): pull out resolution into package and add tests
...
also adds a string method for pretty config printing
2026-06-15 14:35:14 -07:00
Enot (ded) Skelly
bb989afeec
tests(hub): add hubs tests
...
as much as we can without mocking connections
2026-06-15 14:24:16 -07:00
Enot (ded) Skelly
7141c0a055
tests(ws): add limiter tests
2026-06-15 14:23:39 -07:00