From aebb5644bde97a559c933d502aeaeab93fdcdb79 Mon Sep 17 00:00:00 2001 From: serversdown Date: Tue, 4 Aug 2026 21:42:41 +0000 Subject: [PATCH] =?UTF-8?q?chore(release):=20v0.23.0=20=E2=80=94=20per-cha?= =?UTF-8?q?nnel=20ZC=20frequency=20in=20events=20store?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) Claude-Session: https://claude.ai/code/session_01YDXjZCr4RqT2U3QvMDhgzf --- CHANGELOG.md | 34 ++++++++++++++++++++++++++++++++++ pyproject.toml | 2 +- sfm/server.py | 2 +- 3 files changed, 36 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4983325..914b4ad 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,40 @@ All notable changes to seismo-relay are documented here. --- +## v0.23.0 — 2026-08-04 + +**Per-channel ZC frequency in the events store.** The `events` table and the +`/db/events` feed now carry per-channel zero-crossing frequency, so consumers +(Terra-View's Vibration Summary) get frequency in bulk instead of one sidecar +fetch per event. + +### Added + +- **`events` columns** `tran_zc_freq`, `vert_zc_freq`, `long_zc_freq`, `mic_zc_freq` + (Hz) + `*_zc_above_range` flags (the Blastware `>N Hz` device-ceiling case). Added + via the existing incremental `_migrate` ADD COLUMN pass — **auto-migrates on + `SeismoDb()` construction, no manual migration**. `query_events` / `get_event` + (and thus `/db/events`) return them automatically (`SELECT *`). +- **Populated at ingest** — `PeakValues` gains the ZC-freq fields; both + `apply_report_to_event` and `apply_bw_report_dict_to_event` copy per-channel + `zc_freq_hz` / `zc_freq_above_range` from the parsed report onto them, and + `insert_events` persists them on INSERT and UPSERT. +- **Backfill** `scripts/backfill_event_zc_freq.py` — fills the columns for existing + events from their `.sfm.json` sidecars (idempotent, UPDATE-only). + +### Fixed + +- `sfm/server.py` app-version string was stale at `0.17.0`; now tracks the real version. + +### Upgrade Notes + +Run the backfill once after deploying, against the events DB + waveform store: +`python3 scripts/backfill_event_zc_freq.py --db-path --store-root ` +Events whose sidecar carries no frequency (or that have no sidecar) stay NULL and +render "—" downstream. + +--- + ## v0.22.0 — 2026-07-03 Full-snapshot bundle support (SFM side). Adds the DB-snapshot, recent-waveform, diff --git a/pyproject.toml b/pyproject.toml index 313e73d..11f37d4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "seismo-relay" -version = "0.22.0" +version = "0.23.0" description = "Python client and REST server for MiniMate Plus seismographs" requires-python = ">=3.10" dependencies = [ diff --git a/sfm/server.py b/sfm/server.py index f41098f..81041c4 100644 --- a/sfm/server.py +++ b/sfm/server.py @@ -90,7 +90,7 @@ app = FastAPI( "Implements the minimateplus RS-232 protocol library.\n" "Proxied by terra-view at /api/sfm/*." ), - version="0.17.0", + version="0.23.0", ) # Allow requests from the waveform viewer opened as a local file (file://)