Lands @genericJE's DWD coverage-overlay fix — the per-frame snap-switched mask that kills the cross-fade pulse on the DWD coverage outline.
Originally PR #132; reworked as PR #141 to resolve conflicts against the alpha2/alpha3 work that landed since the original PR opened, and to add the classifyDwdPixel unit-test pin against future DWD palette drift.
Fixed
-
DWD coverage-mask cross-fade pulse. The grey "no-data" wash and magenta coverage outline that DWD's WMS bakes into every Niederschlagsradar / Radar_wn tile were stacking during the per-frame cross-fade — two semi-transparent layers compounded the dim and produced a visible pulse on the boundary every animation tick.
Two-part fix:
- Strip the mask + outline at fetch time via a new
pixelFilteroption onFetchTileOptions. The classifier whitelists DWD palette purples by exact RGB triple so heavy-rain cells aren't mis-classified as outline blends. - Re-render the boundary as a separate snap-switched overlay on a dedicated Leaflet pane (z-index 350) so it doesn't participate in the cross-fade. Per-frame mask layers (rather than a single static one) so radar-station outages track correctly. Tested in the wild against the Feldberg outage at 08:25 UTC.
- Strip the mask + outline at fetch time via a new
Added
-
Two CSS theme variables for the coverage overlay colours — set either to
transparentto hide:--dwd-coverage-dim-color(defaultrgba(0, 0, 0, 1))--dwd-coverage-outline-color(defaultrgba(255, 0, 255, 1))
RGB picks the colour, alpha multiplies the original mask alpha so wash density and outline antialiasing both scale.
Tests
329 → 347 unit tests (+18). New coverage:
- 18 cases for
classifyDwdPixel— opaque palette purples per palette (data), canonical magenta-outline rule, off-palette purple-shape blends (outline), equal-channel grey, canonical radar palette colours that should pass through, brightness-floor and saturation-shape boundary cases that should NOT trigger purple-shape, semi-transparent grey/outline edges, the 15-unit drift threshold for grey detection. - 3 cases for
dwdPaletteFor—Radar_wn-*→ WN palette, default → RV palette, defensive fallback.
Pin against DWD palette drift: if their colour ramp ever changes, the strict-match whitelist will silently mis-classify and these tests catch it.
Coming in 3.6.0-beta1
The wind overlay PR #133 (barbs / arrows / streamlines) is still pending review feedback by @genericJE. It'll land in 3.6.0-beta1, after which 3.6.0 stable will consolidate alpha1 + alpha2 + alpha3 + alpha4 + beta1.
The 3.7 roadmap (per docs/todo.md): Open-Meteo as alternate wind source for global coverage, real-time per-user layer-visibility control with persistent state — design doc for that latter one landed in alpha3 territory at docs/layer-control-design.md.
Full notes: CHANGELOG.md