BowEcho v0.28.0
BowEcho v0.28.0 — The Trust Release
BowEcho got a full engineering audit: 41 independent review passes over
everything shipped since v0.21, every finding adversarially verified
against the code, then fixed with a regression test that fails on the
old behavior. This release is the result — no big new feature, just a
faster, cleaner, more honest BowEcho.
Data correctness
- Legacy Message-Type-1 spectrum width was decoded with a +63.5 m/s
bias on research/community feeds (KCRI, KBPP, K08D, KXWA…). Fixed per
the ICD; values now match reference decoders. - Clicking a tornado track/report could pick a research feed as the
nearest WSR-88D and fail the archive load. Event jumps now only
target archive-capable sites — and TJUA (San Juan) is no longer
wrongly excluded as a TDWR. - The raw-PTS outlook fallback merged hatched SIG/CIG areas into the
last probability contour; hatched areas are now their own layers
with SPC's published styling. PTS longitude parsing now follows SPC's
documented 55.00°W rule. - ORD latest no longer prefers an hours-old REF+VEL frame over a
fresh REF-only frame during a velocity-lane outage. - Himawari navigation used the GOES sweep-axis convention; AHI
geolocation is now correct (sweep axis selected per satellite). - JMA 10-minute tars with repeated elevations no longer silently drop
the second repetition's velocity during the REF+VEL merge. - Archive model workflows can no longer silently pin to today's model
run when the store lacks a run covering the displayed time. - Outlook rings that fully cross the viewport draw correctly (the
projection-wraparound guard no longer culls legitimate borders).
Honest chrome
- Pane LIVE/STALE chips reflect that pane's own state, not the
primary radar's refresh flag. - Independent panes now live-poll their own radars — the top field
request. Each pane has its own Live toggle (the old checkbox secretly
controlled the primary), its own refresh cadence, and two panes on
the same site share one download/decode. - The Obs-adjusted soundings toggle works again (it silently did
nothing since the v0.27.0 native sounding switch). - MRMS/OPERA composite layers show their real product valid time
and auto-refresh instead of a permanent unlabeled "latest". - Removing the satellite layer sticks while "Map follows player" is on.
- A single loaded archive scan no longer shows today's live mPING/SPC
reports on top of a historical frame. - Loading a radar no longer auto-saves it to favorites — only the
star click does. - One name for the 5-site loop feature: Mosaic 5 (was also
"Nearest 4" and "Sync 5"). Load Loop capability text is now derived
from the provider registry and names all 7 loop-capable providers. - Settings → Display states the effective velocity unit and that it
comes from the active velocity color table (tables declaring
Units: m/snow stay m/s everywhere — colorbar, readouts, Vrot).
Performance
- Releases are built with full fat-LTO optimization again (a CI
linker workaround had quietly downgraded v0.27.1–v0.27.3): ~17%
smaller download, measurably faster decode and rendering. - New
bowecho-windows-x64-v3.exe: an AVX2 build for ~2015+ CPUs —
benchmarked ~30% faster reflectivity rendering and ~22% faster
dealiased velocity rendering on the 2013 Moore, OK volume, with
pixel-identical output. The baseline exe still runs everywhere. - Looping an advanced derived product no longer re-derives the whole
volume every frame of every revolution on the UI thread (frames
derive once per load; the loop render cache now hits across
revolutions). - GLM lightning no longer re-reads its store from disk on every
repaint in live mode. - Video/GIF recording memory is bounded with honest dropped-frame
accounting. - The legacy sounding renderer (~100 ms) is gone; the native sounding
pane (~4 ms) is the only path. - Deleted ~4,000 lines of dead/duplicate machinery across the codebase.
Trust and docs
- Added the EUMETNET OPERA + participating national meteorological
services attribution (ORD data is CC BY 4.0) plus the full national
open-data feed list and mPING (NOAA NSSL / University of Oklahoma)
credit — README and in-app guide. - README/SIGNING download and checksum instructions match the assets
releases actually ship. - CI now fails on mojibake byte sequences (two shipped in v0.22–v0.27;
all repaired).
Validation
cargo test --workspace— 1,246 tests, 0 failurescargo fmt --all --checkcargo clippy --workspace --all-targets -- -D warnings- Benchmark determinism: identical pixel checksums across builds and
profiles (crates/bench, KTLX 2013-05-20 Moore volume)
Credits
- Radar data: NOAA NEXRAD; EUMETNET OPERA and participating
national meteorological services (ORD, CC BY 4.0); SMHI; FMI; DWD;
DMI; CHMI; SHMÚ; GeoSphere Austria; Estonian Environment Agency; JMA;
Italy DPC with ARPA Piemonte and ARPA Lombardia; Taiwan CWA;
Australia BOM (via NCI). mPING reports courtesy NOAA NSSL and the
University of Oklahoma. - GURT V3 color tables by ambient330 (MIT). GBW Overlay by
grayskieswx (YouTube).
Every asset ships with a .sha256 checksum — see the README's
antivirus note.