v0.5.0 — Data foundation: bookmarks, settings, capture annotations
Aetherscope v0.5.0 adds a persistent data layer: bookmarks, settings, and capture annotations.
Bookmarks
- A managed Bookmarks list in the Radio pane replaces the old hardcoded preset
chips. Tune, edit, delete, tag-filter, and add the current frequency. - The previous presets are seeded once into the bookmark library on first run and
are fully editable thereafter. - Save a sweep mark straight to a bookmark from the marks list.
Settings that survive restarts
- Your last mode, frequency, demod, and volume are restored on reload.
Capture annotations
- Captures can be labelled, noted, and tagged; missing files are flagged. Replays
record a last-played time. The capture-time JSON sidecar remains the source of
truth for capture parameters.
Under the hood
- New
backend/store.py: a stdlib-sqlite3data layer (no new dependency) at
AETHERSCOPE_DATA_DIR(default~/.local/share/aetherscope/, 0600, outside the
repo). Thread-safe (one connection, WAL, a lock) and fully parameterized. - Security: parameterized SQL throughout, server-side validation/bounds on
bookmark and capture fields, a settings key allowlist, andescapeHtmlon every
rendered field. Handlers are defensive against malformed payloads. - 8 test suites (the store alone has 16 tests), CI green.
Everything from v0.4.0 carries forward (snap-to-peak auto-tuner, ADS-B colored
trails, docs site, SA tools, NBFM + scanner, IQ replay, telemetry, vendored deps +
CSP, Linux Docker). Install and run are unchanged; see the README.
This is the first of a multi-phase roadmap. Next: close-the-loop recording (WAV
audio + decode-from-IQ + SigMF), then situational-awareness and security-RX
features (AIS, ADS-B enrichment, spectrum-occupancy survey, device inventory).