A crash fixed, the window size finally remembered, and the sun and tide now keep time on their own.
Fixed
- Crash during solar flares. NOAA publishes an in-progress X-ray flare with
"max_class": null, and it is the NEWEST entry in the feed — the first one the app reads. nlohmann'svalue(key, default)only falls back on an absent key; a present-but-null key throwstype_error.302. That throw escaped one of the parallel enrichment threads, and an exception escaping astd::threadcallsstd::terminate. Every network string read is now null-tolerant, and all fifteen enrichment fetchers plus the worker loop are exception-guarded — one bad feed loses only its own data. - The window size you set is remembered. Geometry was captured only in the shutdown path, which a tray app almost never reaches (closing the window just hides it — 4 clean shutdowns in 57 launches). It is now saved shortly after a resize ends, and a maximized window reopens maximized without overwriting the windowed size.
Added
- Sun-path catch-up: on open the sun runs from sunrise to its true position, then keeps time along the arc (~1 px every 2.4 min) with a lit trail. Solar noon marked at the apex.
- Live tide level: cosine interpolation between extremes, drawn with a now-marker — "Now ~2.3 ft, rising".
- Motion where things change: loading spinner, toast slide-in, sky-card cross-fade, headline temperature roll, seven-day hover column tint. Each rides frames already being drawn or is a sub-second one-shot, preserving the app's ~95% frame reduction.
- Crash reports now carry the version, build id, thread, decoded exception code and call stack.
./dev.sh debugbuilds with symbols;./dev.sh symbolizeresolves a report or minidump to named functions and refuses a mismatched binary.
130 tests, 2642 checks.
Full details: CHANGELOG · release page · devlog
Windows (portable): unzip and run WeatherDesktop.exe — keep resources\ and the DLLs alongside it. SmartScreen may warn (unsigned): More info → Run anyway.
SHA-256: b109af264ebaaeeb7395a41bdfe79a5a32d585df107a7c70586d25acaf881071