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
Enot (ded) Skelly
de997e405a
tests(background): test bg scheduler
2026-06-15 14:23:20 -07:00
Enot (ded) Skelly
ee3ac2d64d
tests(keystore): expand tests
2026-06-15 14:15:17 -07:00
Enot (ded) Skelly
b8472a5504
tests(scopestore): add tests
2026-06-15 14:13:49 -07:00
Enot (ded) Skelly
16b4394b30
chore(tests): add license header to recent test files
2026-06-15 14:13:34 -07:00
Enot (ded) Skelly
fb1a474218
tests(config): add tests for config and seeding
2026-06-15 14:07:58 -07:00
Enot (ded) Skelly
14e3d23b7f
tests(cache): add tests for redis cache
2026-06-15 14:07:31 -07:00
Enot (ded) Skelly
4ebe4c869b
feat: add route and neighbor reconfirmation task
...
prunes stale and ambiguous routes and neighbors
keep that data clean
2026-06-12 10:54:06 -07:00
Enot (ded) Skelly
044aecbd3c
feat: background task scheduler
...
move refresh views and delete tasks to scheduler
add new config for refresh and cleanup intervals
new deployments can set these in minutes to see data faster
2026-06-12 10:28:32 -07:00