github Makin-Things/weather-radar-card v3.6.1
v3.6.1 — wind sources (experimental) + radar opacity / ghost trail fixes

5 hours ago

3.6.1 promotes 3.6.1-rc1 to stable after a short bake. Two new things since rc1: a fix for ghost trails during initial radar load (contributed by @genericJE) and a build-time security bump for serialize-javascript.

The wind source registry keeps its Experimental tag for one more release. If you want to pin pre-3.6.1 wind behaviour, set wind_source: 'dwd_icon' in your card YAML (or pick it via the editor's Wind Data Source dropdown).

Bug fixes

  • Shadow clouds / flicker at radar_opacity < 1 (#151). With per-layer opacity set to radar_opacity, two semi-transparent radar layers stacked during the crossfade and the alpha-over composite brightened during the overlap window — visible as "shadow clouds" (rain from both frames showing through where they didn't perfectly align) and a flicker on every animation tick. Moved all radar tile layers into a dedicated wrcRadar Leaflet pane (z-index 240) and applied radar_opacity on the pane. Individual layers crossfade between 0 and 1, so the composite α inside the pane stays at 1 throughout the overlap.
  • Ghost trails of stacked radar frames during initial load (#155). While the card was still fetching frames on initial load, the playback showed a growing trail of overlapping past frames stacked under the current one — small rain cells looked smeared until the loop completed a full cycle. Cause was a missing companion bump: _currentSlot was shifted when a new older frame prepended _loadedSlots, but _prev1Slot wasn't, so the wrong layer faded out on the next tick. Fixed by shifting both indices together. Contributed by @genericJE.

Security

  • serialize-javascript bumped 6.0.2 → 7.0.5 to remediate two advisories:
  • Build-time dependency only (terser/rollup chain) — the shipped card bundle never executed serialize-javascript, so end users were not exposed. Remediation is for build-environment safety.

What's new — Experimental (from 3.6.1-rc1)

Wind source registry (wind_source config field)

Three options — pick the forecast model behind the barbs / arrows / streamline overlays:

  • 'dwd_aicon' (new default for non-US) — DWD's AI-augmented variant of ICON-D2. Same 0.25° global grid (~28 km) and hourly cadence as ICON-D2, served from the same WCS endpoint; visibly better short-range accuracy at zero behaviour cost. Configs without wind_source set silently upgrade from ICON to AICON on first reload.
  • 'dwd_icon' — Raw DWD ICON-D2 numerical model (the previous default). 0.25° global grid, hourly anchor, +48 h forecast, new model run every 3 h. Opt-in for users who prefer the unadjusted model output.
  • 'ndfd_wind' (new default for fresh installs in US locations) — NWS National Digital Forecast Database (forecaster blend of HRRR + RAP + NAM + GFS). 2.5 km over CONUS / AK / HI / PR, hourly updates, 3-hourly forecast steps out to 7+ days. The same source api.weather.gov gridpoint forecasts come from, but as a raster grid the bulk-fetch pipeline can consume in one WCS call.

Editor's Wind Overlay subpage has a new Wind Data Source dropdown above the Style picker; cadence helper line under it switches per-source.

Fresh-install auto-default by location

When you add the card to a new dashboard via the picker, wind_source is auto-set based on HA's location:

  • hass.config.country === 'US''ndfd_wind'
  • Otherwise, lat/lon bbox check against CONUS / AK / HI / PR — match → 'ndfd_wind'
  • Else → 'dwd_aicon' (the new global default)

Existing configs are untouched — they don't have wind_source set, and absent-field resolves at runtime to 'dwd_aicon'.

Silent NDFD → AICON fallback

When wind_source: 'ndfd_wind' but the viewport centre pans outside US coverage (e.g., US user panning over the Atlantic or Pacific), the fetcher silently dispatches to AICON for that bbox so you still see real wind data instead of fill values. Configured source is unchanged in your config; one info log per session announces the auto-switch.

Example configs

# Pin pre-3.6.1 wind behaviour:
type: custom:weather-radar-card
dwd_wind_flow: true
wind_source: dwd_icon
# US user, high-res NDFD arrows:
type: custom:weather-radar-card
dwd_wind: arrows
wind_source: ndfd_wind

Known limitations of the experimental wind work

  • Bilinear sampling near NDFD coverage boundaries may produce slightly attenuated wind values within ~1 cell of the coast — mostly visible at AK / HI coastlines. The 9999.0 fill sentinel is detected and treated as calm so particles don't teleport, but the bilinear blend across a valid/fill cell pair still attenuates.
  • Silent fallback uses bbox-centre decision point — a panning user who half-crosses the coast sees the source flip on the next refetch (transient mid-pan visuals are unaffected).
  • 11 locale files have [en]-prefixed English fallbacks for the new editor strings (Wind Data Source dropdown / cadence notes). Real translations land in a follow-up.

Upgrade notes

No config migration runs. Existing configs work unchanged.

  • Wind users on non-US locales: your wind overlay will look slightly different on first reload — that's the silent ICON → AICON default flip. Same provider, same grid resolution; AICON is the AI-augmented post-processing variant. If you prefer the raw model, set wind_source: 'dwd_icon'.
  • Wind users in the US: existing configs without wind_source continue to use AICON globally (not NDFD). To switch to NDFD over US regions, add wind_source: 'ndfd_wind' or pick it via the editor.
  • Fresh installs in US locations get NDFD automatically.

Internal

  • Tests: 403 → 440 across the 3.6.1 line (US-detection bbox edges, country-code precedence, AICON / NDFD URL shapes, NDFD Mercator / speed-dir parsing, fill-value sentinel handling, silent-fallback dispatch with cache-key isolation).
  • New file src/wind-source-caps.ts holds the source registry + US-detection helpers.

Full Changelog: v3.6.0...v3.6.1

Don't miss a new weather-radar-card release

NewReleases is sending notifications on new releases.