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
Enot (ded) Skelly
c86bad3875
chore: typo in refresh view comment and add note about node type func
...
NodeTypeName is fine as is with possible concatenation
of the value as there is unlikely to be more than 256
node types
2026-06-12 08:49:41 -07:00
Enot (ded) Skelly
b6e33ca460
docs(routes api): correct list handler cursor docs
2026-06-12 08:31:59 -07:00
Enot (ded) Skelly
5315af205c
feat(traces): embed max-hop observation path and SNR in list response
2026-06-11 15:45:08 -07:00
Enot (ded) Skelly
b58e5a1edc
feat(api): differentiate traces and pings
2026-06-11 14:52:31 -07:00
Enot (ded) Skelly
73fa0be858
fix(routes): don't store single hop routes
...
migration to remove old single hop routes included
2026-06-11 14:09:10 -07:00
Enot (ded) Skelly
ad8e410856
feat(api): add knownNeighborCount to nodesummary and publicKey to node neighbor
2026-06-11 13:47:58 -07:00
Enot (ded) Skelly
205eaafbe9
feat(stats): add node type breakdown
...
/stats/node-types w/ filters for iata/region
closes #55
2026-06-10 13:18:26 -07:00
Enot (ded) Skelly
a0a687b6f8
tests(handlers): add validation tests for stats endpoints
2026-06-10 09:57:54 -07:00
Enot (ded) Skelly
a9b0025b1d
fix(stats): support multiple IATAs and region filtering on all stats endpoints
...
closes : #53 and #54
2026-06-10 09:52:02 -07:00
Enot (ded) Skelly
a5bd8ccaf0
feat: add cors support
...
optionally control cross origin requests by origin and
method
2026-06-09 14:54:00 -07:00
Enot (ded) Skelly
b574ec5c30
feat: add redis
2026-06-09 14:12:58 -07:00
Enot (ded) Skelly
983ebe126b
fix: make hex query params case-insensitive
2026-06-09 10:49:55 -07:00
Enot (ded) Skelly
9716326d3d
fix(security): incorrect int conversion
...
changes from strconv.Atoi without bounds checks to
strconv.ParseInt
2026-06-09 09:20:54 -07:00
Enot (ded) Skelly
2333468f92
feat(traces): include raw path hashes as well as resolved
...
closes #43
2026-06-09 08:31:04 -07:00
Enot (ded) Skelly
e2b22aa477
fix: typo in subscribeScope struct
2026-06-09 08:29:55 -07:00
Enot (ded) Skelly
cda4905815
docs: update SPDX license lines
2026-06-08 16:08:39 -07:00
Enot (ded) Skelly
14cb9e6e2d
docs: add APGL3 license
2026-06-08 15:46:01 -07:00
Enot (ded) Skelly
27449e7725
tests(api): add handler validation for nodes, packets, routes & channels
2026-06-08 14:56:23 -07:00
Enot (ded) Skelly
205c82f9a2
test(api): add stub reader and observery tele validation tests
2026-06-08 14:52:13 -07:00
Enot (ded) Skelly
62c05e7ab8
test(api): handler response helpers
2026-06-08 14:49:37 -07:00
Enot (ded) Skelly
08ff520bf0
test(keystore): add derive hashtag key and fingerprint tests
2026-06-08 13:54:41 -07:00
Enot (ded) Skelly
98185b54e2
test(api): packet payload and route type names
2026-06-08 13:54:14 -07:00
Enot (ded) Skelly
a4b0ff0366
test(ingest): add helper tests
2026-06-08 13:45:53 -07:00
Enot (ded) Skelly
04877b2eb2
test(api): add parse iatas test
2026-06-08 13:39:31 -07:00
Enot (ded) Skelly
c2662598a6
test(config): add normalizedScope and deriveScopeKey
2026-06-08 13:39:11 -07:00
Enot (ded) Skelly
9f6046586f
chore(tests): add node type/name helper test
2026-06-08 13:30:04 -07:00
Enot (ded) Skelly
dab8f6e6b3
feat(ws): add regionSlugs support to subscribe scope
2026-06-08 13:24:35 -07:00
Enot (ded) Skelly
bd605c8565
chore(tests): add tests for hub/scopeMatches
2026-06-08 13:10:39 -07:00
Enot (ded) Skelly
4147a93e8b
feat(observers): add telemetry bucketing to rest api
...
closes #37
2026-06-08 12:32:22 -07:00
Enot (ded) Skelly
cace46b004
feat(ingest): status and nodeUpdate events on par with summary analogies
...
observer status updates are now at data parity with
observer summary and node update events are at data
parity with node summaries
closes #38
2026-06-08 12:17:16 -07:00
Enot (ded) Skelly
fef8c8d7b6
docs: improve reader interface comment readability
2026-06-08 11:47:38 -07:00
Enot (ded) Skelly
149452f066
feat(routes): add resolved hop nodes to known routes API
...
closes #44
2026-06-08 11:30:26 -07:00
Enot (ded) Skelly
68c254ce04
feat: add observation count to routes
2026-06-08 10:59:46 -07:00
Enot (ded) Skelly
32e6e9939a
feat: cross iata routes
...
adds cross iata route finding
closes #42
2026-06-08 10:30:49 -07:00
Enot (ded) Skelly
7d25b8480f
feat: node neighbors
...
limited to repeaters and room servers
stores high confidence matches from the nodes advert
packet path first hops
2026-06-08 09:36:20 -07:00
Enot (ded) Skelly
533225b46a
hack: use server time for suspicious timestamps
...
i don't like it but multiple observer softwares are
sending the heard at timestamp with time zone errors
when it should be unix epoch ms
2026-06-08 08:20:03 -07:00
Enot (ded) Skelly
610b941afb
feat: include snr in trace route hops
...
closes : #43
2026-06-06 13:30:59 -07:00
Enot (ded) Skelly
5247e4c3a8
fix: capture node preset only on 0 hop
...
previously could be observed after a bridge node
2026-06-06 13:18:04 -07:00
Enot (ded) Skelly
c792029d3d
fix: routes pagination cursor
...
closes #41
2026-06-06 11:14:13 -07:00
Enot (ded) Skelly
65cb8c9d61
add routes api
...
any route observer where all hops are high confidence
are now stored and available at /routes
you can also search for a src dest route and it will
return any recored route subset that can link the src
and dest hash
2026-06-05 15:57:08 -07:00
Enot (ded) Skelly
f0c57fde45
add traces endpoint
2026-06-05 15:20:53 -07:00
Enot (ded) Skelly
8b23f8a4a2
change: channel messages descending
...
this changes channel messages fetched over the api to
return newest first so users can fetch back through time
2026-06-05 12:40:47 -07:00
Enot (ded) Skelly
ae14d948d0
add scopes api
2026-06-05 12:31:35 -07:00
Enot (ded) Skelly
588b3705c9
add packet and message backfill api
...
/packets/backfill, /messages/backfill
both take afterId and limit. the id is the message or
packet observation last received to backfill after
2026-06-05 12:05:24 -07:00
Enot (ded) Skelly
882067455d
add scope to ws packet events
2026-06-05 11:09:52 -07:00
Enot (ded) Skelly
fdbcad28d8
add decrypted channel msg to packet details
...
also caught a bug where we never set the packet as
being decrypted even when it had been
2026-06-05 11:06:02 -07:00
Enot (ded) Skelly
7aecf2b6b9
fix formatting
...
allegedly
2026-06-05 10:32:00 -07:00
Enot (ded) Skelly
9a1b1d27ee
add very basic tests and action
...
includes action for build. plus tests, fmt and vet
2026-06-05 10:26:49 -07:00