MrAlders0n
0dca03cd4d
release: v2.0.1 ( #209 )
...
- fix(meshmapper): refresh the longest-waiting scope catalogue first
- feat(config): default scope catalogue refresh to 24h
- chore: bump version
2026-10-03 16:51:11 -04:00
MrAlders0n
1f83df8583
docs: move operator docs to beacon-docs ( #206 )
...
* docs: keep only server-specific contributor notes
* docs: trim README to the code and link to beacon-docs
* chore: strip tracking parameters from two airport website URLs
2026-10-02 21:43:03 -04:00
MrAlders0n
be35b36679
docs: condense backup, README and contributor docs ( #205 )
2026-10-02 21:42:17 -04:00
MrAlders0n
af20bebfe5
docs: document route cursorId and activity coverage fields
2026-10-02 19:03:46 -04:00
MrAlders0n
5b49356437
docs: update for 2.0.0
2026-10-02 16:53:32 -04:00
MrAlders0n
951e0b0de6
docs: regenerate swagger
2026-10-02 16:53:32 -04:00
MrAlders0n
2f4f92e31e
fix(db): tie-safe trace paging, atomic migrations and honest stats windows
...
GET /traces takes an optional cursorTag so tags sharing a millisecond survive
paging. Migrations run under an advisory lock and record each file in the
same implicit transaction, so a crash can't strand a fresh database.
Overview windowHours counts the hours it covers, hourly observer activity
fills unrolled hours from raw rows, and integration fixtures are UTC.
2026-10-02 16:53:32 -04:00
MrAlders0n
2042c1617f
feat(stats): roll hourly scope observers and advertising nodes
2026-10-02 15:24:33 -04:00
MrAlders0n
53d9f86dd4
feat(stats): split /stats/scopes packet counts by hour
2026-10-02 13:57:54 -04:00
MrAlders0n
3e0b6c074c
feat(stats): report the longest path per hour in /stats/paths
2026-10-02 13:57:54 -04:00
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
119be44c0d
feat(channels): filter channel list by keyKnown
...
Also seed the cursor integration test with MeshMapper membership; it still
used channel_iatas after channel lists moved to region scoping.
2026-10-01 09:06:50 -04:00
MrAlders0n
f8ee1ac884
feat(meshmapper): import regional channels and scope channel lists by region
2026-09-30 23:09:40 -04:00
MrAlders0n
e2b64f2a36
chore: version bump v2.0.0
2026-09-30 22:14:11 -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
f6fe177a4e
docs: regenerate swagger
2026-09-30 10:31:08 -04:00
n30nex
6bf58acb80
fix: address maintainer review for #176
2026-09-30 07:19:03 -04:00
n30nex
2abed6c195
feat(channels): expose recorded packet scope in message delivery
2026-09-30 07:19:03 -04:00
n30nex
7e01abf5a0
docs(api): refresh generated contract after stack update
2026-09-30 07:19:03 -04:00
n30nex
574bba4e13
fix: address maintainer review for #174
2026-09-30 07:19:03 -04:00
n30nex
c18e059e0d
feat(scopes): import cached regional MeshMapper catalogues
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
551f061f9c
docs(api): refresh generated contract after stack update
2026-09-30 07:19:02 -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
c02317a4ac
feat(packets): summarize ACK and trace references ( #161 )
2026-09-23 20:18:48 -04:00
n30nex
20691dc5a3
feat(backup): verify native archives offline without extraction ( #160 )
2026-09-23 20:18:45 -04:00
n30nex
8a3fa7e6bf
feat(stats): add bounded path and hash-width analytics ( #159 )
2026-09-23 20:18:41 -04:00
n30nex
6107578c25
feat(stats): add bounded reception signal analytics ( #157 )
2026-09-23 20:16:22 -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
c7ace0ce0e
feat(ws): limit connection attempts and signal capacity shedding ( #141 )
2026-09-19 13:28:47 -04:00
n30nex
cf5ff7a974
feat(stats): compare flood packets reported by two observers ( #152 )
...
* feat(stats): compare distinct flood packets across observers
* test(stats): use the migrated observation deduplication key
2026-09-19 10:36:39 -04:00
n30nex
6540b9253d
feat(admin): expose selected startup configuration ( #147 )
2026-09-19 10:36:30 -04:00
n30nex
595ef4442b
feat(api): rate limit REST requests by trusted client IP ( #140 )
2026-09-19 08:43:24 -04:00
n30nex
85b1c3961d
feat(packets): populate advert summaries in history and live events ( #143 )
2026-09-18 06:18:19 -04:00
n30nex
bcdea76c26
feat(stats): filter scope counts by IATA and region ( #142 )
...
* feat(stats): filter scope counts by IATA and region
* perf(stats): aggregate region observations before counting scopes
2026-09-18 06:18:06 -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
MrAlders0n
d202205659
fix(observers): rename telemetry airtime fields to seconds ( #136 )
2026-09-10 07:17:29 -04:00
MrAlders0n
b66573b3b7
feat(observers): per-observer activity endpoint ( #135 )
2026-09-10 06:53:00 -04:00
n30nex
f390086058
fix(channels): preserve timestamp ties in page cursors ( #132 )
2026-09-09 20:25:07 -04:00
n30nex
04fc0266d1
fix(packets): preserve captured endpoint names in history ( #128 )
2026-09-09 18:45:52 -04:00
n30nex
30327cd98d
fix(api): bound list limits consistently ( #112 )
2026-09-06 10:20:45 -04: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
201cd9e364
chore: version bump v1.6.0
2026-07-24 13:31:23 -07:00
Enot (ded) Skelly
99d7eb0bab
feat: add node stale/delete config
...
closes : #93
2026-07-24 13:09:51 -07:00