Skip to content

BowEcho v0.28.0

Choose a tag to compare

@github-actions github-actions released this 02 Jul 01:07
· 858 commits to main since this release

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/s now 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 failures
  • cargo fmt --all --check
  • cargo 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.