works with both providers if you switch the content of your laMin/laMax values …
Read the statement by Michael Teeuw here.
Posts
-
RE: MMM-Flights
-
RE: Weekly summary
after some more research I think we are blocked by digitalocean: “SMTP ports 25, 465, and 587 are blocked on Droplets to prevent spam and other abuses on our platform.”
I found another working port so the mail issue should be solved now (until blocked again on the new port …). I was able to send a test mail after the change which failed before.
-
RE: Weekly summary
the forum is running since 10 days and I think I got the mail last weekend, so nothing changed.
But I found errors in the logs
[emailer.send] Error: Connection timeout -
RE: Upgrade docker from 2.33 to 2.36 failure
Thanks for the positive feedback. I found it amusing that you thanked Sam first, since he provides most of the support here — something for which, honestly, I often lack the time and patience…
The problem itself seemed familiar to me; I just had to track down the corresponding issue.
-
RE: MM clock reverted to UTC
Before I could send this another day passed and now they are correct! Docker is still on UTC but the Clock and Agenda are correctly showing times on BST!
Thanks for the feedback. This is expected behavior. If you really need the timezone for other stuff in the container you can set it by adding this in the
compose.yaml:environment: - TZ=Europe/Berlin -
RE: MM clock reverted to UTC
The external url for getting the TZ doesn’t work anymore, I had to switch to another one. Meanwhile this did not work but I pushed new images some minutes ago which should fix this. So please pull the new image and let me know if it works.
-
v2.36.0
Release Notes
Thanks to: @cgillinger, @khassel, @KristjanESPERANTO, @sonnyb9
⚠️ This release needs nodejs version >=22.21.1 <23 || >=24 (no change to previous release)
Compare to previous Release v2.35.0
This release falls outside the quarterly schedule. We opted for an early release due to:
- Security fix for the internal cors proxy
- API change of the weather provider smi
- Several bug fixes
Breaking Changes
The cors proxy is now disabled by default. If required, it must be explicitly enabled in the
config.jsfile. See the documentation.⚠️ Security
You can find several publicly accessible MagicMirror² instances.
This should never be done. Doing so makes your entire configuration, including secrets and API keys, publicly visible. Furthermore, it allows attackers to target the host; this is only prevented beginning with this release.
Public MagicMirror² instances should always run behind a reverse proxy with authentication.
[core]
- Prepare Release 2.36.0 (#4126)
- Allow HTTPFetcher to pass through 304 responses (#4120)
- fix(http-fetcher): fall back to reloadInterval after retries exhausted (#4113)
- config endpoint must handle functions in module configs (#4106)
- fix replaceSecretPlaceholder (#4104)
- restrict replaceSecretPlaceholder to cors with allowWhitelist (#4102)
- fix: prevent crash when config is undefined in socket handler (#4096)
- fix cors function for alpine linux (#4091)
- fix(cors): prevent SSRF via DNS rebinding (#4090)
- add option to disable or restrict cors endpoint (#4087)
- fix: prevent SSRF via /cors endpoint by blocking private/reserved IPs (#4084)
- chore: add permissions section to enforce pull-request rules workflow (#4079)
- update version for develop
[dependencies]
- update dependencies (#4124)
- chore: update dependencies (#4088)
- refactor: enable ESLint rule “no-unused-vars” and handle related issues (#4080)
[modules/newsfeed]
- fix(newsfeed): prevent duplicate parse error callback when using pipeline (#4083)
[modules/updatenotification]
- fix(updatenotification): harden git command execution + simplify checkUpdates (#4115)
- fix(tests): correct import path for git_helper module in updatenotification tests (#4078)
[modules/weather]
- fix(weather): use nearest openmeteo hourly data (#4123)
- fix(weather): avoid loading state after reconnect (#4121)
- weather: fix UV index display and add WeatherFlow precipitation (#4108)
- fix(weather): restore OpenWeatherMap v2.5 support (#4101)
- fix(weather): use stable instanceId to prevent duplicate fetchers (#4092)
- SMHI: migrate to SNOW1gv1 API (replace deprecated PMP3gv2) (#4082)
[testing]
- ci(actions): set explicit token permissions (#4114)
- fix(http_fetcher): use undici.fetch when dispatcher is present (#4097)
- ci(codeql): also scan develop branch on push and PR (#4086)
- refactor: replace implicit global config with explicit global.config (#4085)
-
RE: Magic Mirror Dynamic Calendar and Pirate Sky Forecast Questions
Is this something that could be build into the default module?
we introduced Themes for this use case with the lastest mm release
-
RE: Wayland problems in the April 2026 release
bullseye support ends in 5 month. But I don’t think we will remove the x11 start option because there are many other os which have no wayland support.
This is an electron option, wayland needs an extra param
-ozone-platform=wayland. This is all defined in thepackage.json.So as long as electron supports x11 I see no reason to remove the x11 option from mm.
With the new release we only switched to wayland as default option (when you use
node --run start) because we think the majority is meanwhile using wayland. -
v2.35.0
Release Notes
Thanks to: @angeldeejay, @in-voker, @JHWelch, @khassel, @KristjanESPERANTO, @rejas, @sdetweil
⚠️ This release needs nodejs version >=22.21.1 <23 || >=24 (no change to previous release)
Compare to previous Release v2.34.0
⚠️ We introduced some internal changes with this release, please read this forum post before upgrading!
[core]
- Prepare Release 2.35.0 (#4071)
- docs: add security policy and vulnerability reporting guidelines (#4069)
- refactor: simplify internal
require()calls (#4056) - allow environment variables in cors urls (#4033)
- fix cors proxy getting binary data (e.g. png, webp) (#4030)
- fix: correct secret redaction and optimize loadConfig (#4031)
- change loading config.js, allow variables in config.js and try to protect sensitive data (#4029)
- remove kioskmode (#4027)
- Add dark theme logo (#4026)
- move custom.css from css to config (#4020)
- move default modules from /modules/default to /defaultmodules (#4019)
- update node versions in workflows (#4018)
- [core] refactor: extract and centralize HTTP fetcher (#4016)
- fix systeminformation not displaying electron version (#4012)
- Update node-ical and support it’s rrule-temporal changes (#4010)
- Change default start scripts from X11 to Wayland (#4011)
- refactor: unify favicon for index.html and Electron (#4006)
- [core] run systeminformation in subprocess so the info is always displayed (#4002)
- set next release dev number (#4000)
[dependencies]
- update dependencies (#4068)
- update dependencies incl. electron to v41 (#4058)
- chore: upgrade ESLint to v10 and fix newly surfaced issues (#4057)
- chore: update ESLint and plugins, simplify config, apply new rules (#4052)
- chore: update dependencies + add exports, files, and sideEffects fields to package.json (#4040)
- [core] refactor: enable ESLint rule require-await and handle detected issues (#4038)
- Update node-ical and other deps (#4025)
- chore: update dependencies (#4021)
- chore(eslint): migrate from eslint-plugin-vitest to @vitest/eslint-plugin and run rules only on test files (#4014)
- Update deps as requested by dependabot (#4008)
- update Collaboration.md and dependencies (#4001)
[logging]
- refactor: further logger clean-up (#4050)
- Fix Node.js v25 logging prefix and modernize logger (#4049)
[modules/calendar]
- fix(calendar): make showEnd behavior more consistent across time formats (#4059)
- test(calendar): fix hardcoded date in event shape test (#4055)
- [calendar] refactor: delegate event expansion to node-ical’s expandRecurringEvent (#4047)
- calendar.js: remove useless hasCalendarURL function (#4028)
- fix(calendar): update to node-ical 0.23.1 and fix full-day recurrence lookup (#4013)
- fix(calendar): correct day-of-week for full-day recurring events across all timezones (#4004)
[modules/newsfeed]
- fix(newsfeed): fix full article view and add framing check (#4039)
- [newsfeed] refactor: migrate to centralized HTTPFetcher (#4023)
[modules/weather]
- fix(weather): fix openmeteo forecast stuck in the past (#4064)
- fix(weather): fix weathergov forecast day labels off by one (#4065)
- weather: fixes for templates (#4054)
- weather: add possibility to override njk’s and css (#4051)
- Use getDateString in openmeteo (#4046)
- [weather] refactor: migrate to server-side providers with centralized HTTPFetcher (#4032)
- [weather] feat: add Weather API Provider (#4036)
[testing]
- chore: remove obsolete Jest config and unit test global setup (#4044)
- replace template_spec test with config_variables test (#4034)
- refactor(clientonly): modernize code structure and add comprehensive tests (#4022)
- Switch to undici Agent for HTTPS requests (#4015)
- chore: migrate CI workflows to ubuntu-slim for faster startup times (#4007)
see https://github.com/MagicMirrorOrg/MagicMirror/releases/tag/v2.35.0
-
RE: Upcoming Release April 1, 2026 , breaking changes, some operational changes
the custom*.css files get moved
no, only
css/custom.cssand only if the target specified inconfig.customCssdoesn’t exist.This is the normal setup used by ~95% of the users, we cannot handle every edge case so these users must change it manually.
I’m currently setting the CSS file with customCss: “css/custom3.css”, in the config,
I’ll change that to customCss: “config/custom3.css”, ?
in your setup no file is moved automatically. As you are already using the
config.customCssfeature you can do the changes before next release by- move all the
custom*.cssfile fromcsstoconfig - change
config.customCss: "config/custom3.css"
- move all the
-
RE: MMM-RAIN-MAP
I’m using https://globe.airplanes.live/ and they have a RainViewer Layer which still works when zooming in - maybe they use a license key …

Another approach I played with is using german dwd data (problem: germany only), tested this in my MMM-Flights module:

-
RE: MMM-Universal-PIR - ‘GPIOcommand exited with error!'
@smegbadger said in MMM-Universal-PIR - ‘GPIOcommand exited with error!':
It never occurred to me the container would update things unannounced!
the container does not update things on your host, but the container itself is running debian and (if you are using
karsten13/magicmirror:latest) the debian version of the container image switched from bookworm to trixie … -
RE: MMM-RAIN-MAP
colorSchemeseems to be useless too, the docs only mention2which is the default in the module, if I try other values there is no difference. -
RE: MMM-RAIN-MAP
said in MMM-RAIN-MAP:
but since today, the two lowest of my four zoom levels seem to have stopped working
they are definitely gone …
I used for several years
mapPositions: [ { lat: ${LAT}, lng: ${LON}, zoom: 9, loops: 1 }, { lat: ${LAT}, lng: ${LON}, zoom: 8, loops: 1 }, { lat: ${LAT}, lng: ${LON}, zoom: 7, loops: 1 }, { lat: ${LAT}, lng: ${LON}, zoom: 6, loops: 1 }, ],and now found in their docs
Maximum zoom level is 7.Another restriction is that there is no forecast anymore (as already stated in the module readme).
That’s a shame, it unfortunately devalues the module.
-
RE: MMM-Universal-PIR - ‘GPIOcommand exited with error!'
I had no idea about that, but now that you’re using Docker:
The
gpiomoncommand is called inside the container (doesn’t work) and you call it for testing on the host (does work).So I assume you have the newer version of gpiomon running in the container. So update the command in
config.jsto the new syntax described in the module README and try again (the new command will fail on the host but should work from inside the container). -
RE: MMM-Flights Kartendesign
you can set the
mapUrlin the config:var config = { modules: [ { module: "MMM-Flights", position: "top_left", config: { laMin: 50.0, laMax: 50.21, loMin: 8.4, loMax: 8.8, mapUrl: "https://{a-d}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png", }, }, ], }; -
RE: MMM-Flights Kartendesign
from the README:
As default map openstreetmap is used, other maps are possible, you find a list here.
You also can use maps from mapbox and create own maps with mapbox studio.
With mapbox you have to provide
<username>(e.g.karsten13)<mapid>(e.g.cjp8vd7p807su2rqp8hc4dzoq)<accesstoken>
and set the
mapUrlinconfig.jstohttps://api.mapbox.com/styles/v1/<username>/<mapid>/tiles/{z}/{x}/{y}?access_token=<accesstoken>.