When a server responds with 304 (nothing changed since last fetch), the
response has no body. Several modules were trying to parse that empty
body anyway - which either cleared their cached data or threw an
exception. The result: a blank calendar, empty newsfeed, or missing
weather data after the next refresh cycle.
This was reported in the forum:
https://forum.magicmirror.builders/topic/20250/calendar-events-broadcasting-nothing-showing
The bug was "introduced" by #4120, which correctly started forwarding
304s to consumers - but not all were ready for it.
### Fix
Skip parsing on 304 and keep the existing data as-is:
- **calendar** - re-broadcasts cached events
- **newsfeed** - re-broadcasts cached items
- **buienradar, openmeteo, weatherflow, weathergov** - return early
before calling `response.json()`
This adds the weather provider Buienradar for the Netherlands and
Belgium without requiring an API key.
In MagicMirrorOrg/MagicMirror-Documentation#380 @plebcity shared his
implementation for the old browser-side architecture. I used it as a
reference to build this server-side implementation.
### Example screenshot
<img width="969" height="578" alt="Ekrankopio de 2026-05-20 20-38-36"
src="https://github.com/user-attachments/assets/56623ad8-7439-4047-abad-452ba2ebdcb2"
/>
### Example config
```js
{
module: "weather",
position: "top_left",
header: "Buienradar - Current",
config: {
weatherProvider: "buienradar",
type: "current",
locationId: 2747891
}
},
{
module: "weather",
position: "top_right",
header: "Buienradar - Forecast",
config: {
weatherProvider: "buienradar",
type: "forecast",
locationId: 2747891
}
},
{
module: "weather",
position: "bottom_left",
header: "Buienradar - Hourly",
config: {
weatherProvider: "buienradar",
type: "hourly",
locationId: 2747891
}
},
```
----
When this is accepted and merged I'll update the weather docs.