From 2e19b7111fd236e750eacce86c573fe5928e54fe Mon Sep 17 00:00:00 2001 From: Kristjan ESPERANTO <35647502+KristjanESPERANTO@users.noreply.github.com> Date: Sun, 22 Mar 2026 14:35:52 +0100 Subject: [PATCH 1/2] fix(weather): fix weathergov forecast day labels off by one The forecast array started with tomorrow instead of today because slice(1) discarded the first (current) day since 2019. This caused "Today/Tomorrow/Wed" instead of "Today/Mon/Tue". Removing slice(1) fixes the label alignment. Today's entry now shows min/max from the remaining hours of the day, which is the correct behaviour anyway. --- defaultmodules/weather/providers/weathergov.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/defaultmodules/weather/providers/weathergov.js b/defaultmodules/weather/providers/weathergov.js index 691b81045d..5abd314683 100644 --- a/defaultmodules/weather/providers/weathergov.js +++ b/defaultmodules/weather/providers/weathergov.js @@ -349,7 +349,7 @@ class WeatherGovProvider { days.push(weather); } - return days.slice(1); // Skip first incomplete day + return days; } #generateWeatherObjectsFromHourly (forecasts) { From ff40dff75ad9142a1c28fe8c9e233965512b138e Mon Sep 17 00:00:00 2001 From: Kristjan ESPERANTO <35647502+KristjanESPERANTO@users.noreply.github.com> Date: Sun, 22 Mar 2026 16:26:31 +0100 Subject: [PATCH 2/2] test(weather): add regression test for weathergov forecast day skipping --- .../weather/providers/weathergov_spec.js | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/tests/unit/modules/default/weather/providers/weathergov_spec.js b/tests/unit/modules/default/weather/providers/weathergov_spec.js index 81a7edd94f..6326a7fa4b 100644 --- a/tests/unit/modules/default/weather/providers/weathergov_spec.js +++ b/tests/unit/modules/default/weather/providers/weathergov_spec.js @@ -241,6 +241,36 @@ describe("WeatherGovProvider", () => { expect(day).toHaveProperty("weatherType"); expect(day).toHaveProperty("precipitationProbability"); }); + + it("should not skip the first day of forecast data", async () => { + const provider = new WeatherGovProvider({ + lat: 40.71, + lon: -74.0, + type: "forecast" + }); + + const dataPromise = new Promise((resolve) => { + provider.setCallbacks(resolve, vi.fn()); + }); + + server.use( + http.get(WEATHERGOV_FORECAST_URL, () => { + return HttpResponse.json(forecastData); + }) + ); + + await provider.initialize(); + provider.start(); + + const result = await dataPromise; + + // Mock data starts on 2026-02-06 ("This Afternoon"). + // Before the fix, slice(1) dropped today, so result[0] would have been 2026-02-07. + const firstDate = result[0].date; + expect(firstDate.getFullYear()).toBe(2026); + expect(firstDate.getMonth()).toBe(1); // February (0-indexed) + expect(firstDate.getDate()).toBe(6); + }); }); describe("Hourly Parsing", () => {