MrAlders0n
98006a9364
feat(stats): serve historical stats from hourly rollups
...
Stats endpoints read hourly rollup tables filled once per closed hour by one
advisory-locked task, instead of materialized views that re-scanned every
observation on each refresh. IATA-set tables give exact distinct counts for any
IATA set or region. Cleanup holds raw rows for unrolled hours (up to 24h).
Adds /stats/series; ingest keeps packet observation counts, observer last IATA,
channel message counts and trace tag summaries. 001_baseline.sql is rewritten,
so pre-release 2.0 databases must be recreated. See docs/historical-stats.md.
2026-10-02 07:43:56 -04:00
MrAlders0n
f8ee1ac884
feat(meshmapper): import regional channels and scope channel lists by region
2026-09-30 23:09:40 -04:00
MrAlders0n
a970484b00
feat(meshmapper): import zone groups as regions
2026-09-30 22:56:10 -04:00
MrAlders0n
bfda0d5281
feat(meshmapper): discover scope sources from the zone list
2026-09-30 22:46:00 -04:00
MrAlders0n
7267b8bca3
feat(meshmapper): accept scope sources outside configured regions
2026-09-30 22:27:36 -04:00
MrAlders0n
9a4e17b270
feat(meshmapper): import zones for every known IATA
2026-09-30 22:23:37 -04:00
MrAlders0n
11e0ed7353
docs(config): surface MeshMapper integrations first
2026-09-30 22:13:31 -04:00
MrAlders0n
2f49ffb3a3
feat(api): filter scope lists by region and catalogue membership
...
Region-filtered /scopes and /stats/scopes now list manual scopes configured
for the region and imported scopes whose MeshMapper catalogue includes the
IATA, instead of inferring membership from observed traffic. Filtered
/scopes returns string[] like the unfiltered call.
Manual scopes now require a region in config.
2026-09-30 22:05:04 -04:00
MrAlders0n
da6de40b58
ci: tie latest image tag to main
...
Drop the deployment-specific rollout notes from the README.
2026-09-30 19:34:14 -04:00
n30nex
18f5925876
ci: reserve latest images for stable releases
2026-09-30 19:34:14 -04:00
MrAlders0n
689bc2326a
fix(ingest): clear a node's location on an explicit 0/0 advert
...
A repeater that advertises 0/0 is hiding its position. It was stored as a literal 0/0 that every consumer had to special-case; now the stored latitude, longitude and location source are cleared, an omitted location still preserves the stored one, and the nodeUpdate event sends explicit null lat/lng so clients can clear too. Migration 043 drops rows stored as 0/0 before this change.
2026-09-30 11:29:01 -04:00
MrAlders0n
c9b7010082
chore: regenerate sqlc and document saved-route evidence
2026-09-30 07:48:21 -04:00
n30nex
831148ff5f
fix: address release review follow-ups for #172
2026-09-30 07:19:03 -04:00
n30nex
c448a04ea0
feat(routes): add bounded retained observation evidence
2026-09-30 07:19:03 -04:00
n30nex
d3c330e8fb
fix: address maintainer review for #169
2026-09-30 07:19:02 -04:00
n30nex
5fbba24a4a
fix(observers): separate packet metrics from presence updates
2026-09-30 07:19:02 -04:00
n30nex
fd7c6b3eb7
feat(db): retain 30-day analytics independently of packet expiry ( #167 )
2026-09-30 07:16:27 -04:00
MrAlders0n
3dee2098ba
perf(db): batch retention deletes and tune autovacuum ( #162 )
...
Default packets.retention drops to 7 days.
2026-09-25 11:38:04 -04:00
n30nex
a25e2675c8
feat(backup): add protected database and config download ( #154 )
2026-09-23 20:13:40 -04:00
n30nex
4d2642abec
feat(admin): add protected account lifecycle endpoints ( #149 )
2026-09-23 20:10:35 -04:00
n30nex
6aba17c75e
feat(nodes): indicate repeaters outside configured local borders ( #153 )
2026-09-19 15:27:34 -04:00
n30nex
775aedfd2a
feat(admin): update runtime CORS origins consistently ( #150 )
...
* feat(admin): update runtime CORS origins consistently
* test(admin): preserve rate-limit headers after CORS updates
* test(admin): preserve router connection budget after rebase
2026-09-19 15:27:25 -04:00
n30nex
6540b9253d
feat(admin): expose selected startup configuration ( #147 )
2026-09-19 10:36:30 -04:00
n30nex
dab228e9bb
feat(logging): configure levels and structured runtime output ( #144 )
...
* feat(logging): configure levels and structured runtime output
* fix(logging): bound request-derived log fields
* fix(logging): retain malformed IATA source attributes safely
* test(logging): capture structured REST rate-limit records
2026-09-19 10:36:26 -04:00
n30nex
93f85cab51
feat(auth): protect the admin subtree with a bearer key ( #146 )
2026-09-18 06:18:27 -04:00
n30nex
9164659544
feat(backup): export private database and saved-config bundles ( #151 )
...
* feat(backup): export bounded database and saved-config bundles
* test(backup): preserve synthetic channel keys in exports
* fix(backup): check writable file closure before publication
2026-09-18 06:17:52 -04:00
n30nex
88bc0dc88a
feat(retention): age out unreferenced observers when enabled ( #126 )
2026-09-09 18:45:08 -04:00
Enot (ded) Skelly
3799242bce
docs: update for v1.6.0
2026-07-24 13:40:57 -07:00
MrAlders0n
41a3aa4711
feat(config): presence flush interval and packet ttl settings
2026-07-20 08:55:18 -07:00
Enot (ded) Skelly
975f2f3656
feat(ws): make resolved paths a config toggle in session
2026-07-02 13:54:41 -07:00
MrAlders0n
2618f7b233
fix: github workflow, post images publically
2026-06-20 13:18:39 -04:00
Enot (ded) Skelly
9ab79684c5
maint: change to dedicated codeql action
...
beat it m$
2026-06-12 08:59:15 -07:00
Enot (ded) Skelly
f143ff1b0a
fix: broken readme api ref
2026-06-11 17:41:36 -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
432122fee4
docs: update readme re: redis
2026-06-09 14:25:02 -07:00
Enot (ded) Skelly
b574ec5c30
feat: add redis
2026-06-09 14:12:58 -07:00
Enot (ded) Skelly
288e28ca29
fix: coverage badge url
2026-06-09 09:57:53 -07:00
Enot (ded) Skelly
7c993390d3
chore: add code coverage as badge
2026-06-09 09:52:04 -07:00
Enot (ded) Skelly
29665e1a02
chore: add codeql
2026-06-08 16:28:05 -07:00
Enot (ded) Skelly
9c822aff30
docs: add contributors.md
2026-06-08 15:48:40 -07:00
Enot (ded) Skelly
ce33e4d728
docs: update readme and contribution
2026-06-08 15:39:38 -07:00
Enot (ded) Skelly
ff6d3a160d
docs: add ci and dcoker badges to readme
2026-06-08 15:01:48 -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
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
8c4196d80e
add note about cold start
2026-06-05 16:36:23 -07:00
Enot (ded) Skelly
1972ff4d9c
add SHOULDERS.md
2026-06-05 16:20:05 -07:00
Enot (ded) Skelly
fa345208eb
update readme
2026-06-05 15:57:14 -07:00
Enot (ded) Skelly
a943660778
rename to beacon
2026-06-05 08:10:43 -07:00
Enot (ded) Skelly
b72ce41606
add iata ingest filter
...
generated code, reviewed and tested
this adds an optional lookup table for allowed IATA based on either country,
conintent or both. if the IATA is in either it is allowed.
gives operators the option to consume from global mqtt brokers but filter
to their area of interest
2026-06-04 15:24:34 -07:00
Enot (ded) Skelly
7b79db1f3f
update comments and readme after refactor
...
also typo bug on field in ListNodes and GetNode store functions
2026-06-04 14:38:25 -07:00