<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[v2.38.0]]></title><description><![CDATA[<h2>Release Notes</h2>
<p dir="auto">Thanks to: <a class="plugin-mentions-user plugin-mentions-a" href="/user/ago1776" aria-label="Profile: ago1776">@<bdi>ago1776</bdi></a>, <a class="plugin-mentions-user plugin-mentions-a" href="/user/alkank" aria-label="Profile: alkank">@<bdi>alkank</bdi></a>, @Antra, @Blackspirits, @deBasMan21, @flightlesstux, <a class="plugin-mentions-user plugin-mentions-a" href="/user/i-xul" aria-label="Profile: i-xul">@<bdi>i-xul</bdi></a>, @jamalkamaladdin, @khassel, <a class="plugin-mentions-user plugin-mentions-a" href="/user/kristjanesperanto" aria-label="Profile: KristjanESPERANTO">@<bdi>KristjanESPERANTO</bdi></a>, @MannXo, @pascalpfammatter, <a class="plugin-mentions-user plugin-mentions-a" href="/user/rejas" aria-label="Profile: rejas">@<bdi>rejas</bdi></a></p>
<blockquote>
<p dir="auto">⚠️ This release needs nodejs version &gt;=22.22.2 &lt;23 || &gt;=24</p>
</blockquote>
<p dir="auto"><a href="https://github.com/MagicMirrorOrg/MagicMirror/compare/v2.37.0...v2.38.0" target="_blank" rel="noopener noreferrer nofollow ugc">Compare to previous Release v2.37.0</a></p>
<h3>[core]</h3>
<ul>
<li>Prepare Release 2.38.0 (#4285)</li>
<li>fix: let Electron select the Wayland display (#4268)</li>
<li>fix(http): improve access error messages (#4281)</li>
<li>fix: always redact client configuration (#4275)</li>
<li>refactor: migrate browser scripts to ESM (#4272)</li>
<li>refactor: convert animateCSS to ES module (#4266)</li>
<li>use filter instead of find to get all allowed secrets when multiple instances of a module are active (#4265)</li>
<li>refactor: convert notificationFx to ES module (#4263)</li>
<li>refactor: enforce function expression style (#4262)</li>
<li>fix: validate client IP behind trusted proxies (#4261)</li>
<li>prefer arrow over function (#4252)</li>
<li>refactor(utils): simplify configuration validation and error handling (#4240)</li>
<li>fix(server): validate request origins (#4234)</li>
<li>remove codeql warning (#4231)</li>
<li>refactor(socket): use direct ESM import in main (#4225)</li>
<li>refactor(socket): load <a href="http://Socket.IO" target="_blank" rel="noopener noreferrer nofollow ugc">Socket.IO</a> client via ESM (#4224)</li>
<li>style: simplify Electron startup checks (#4213)</li>
<li>refactor: consolidate electron bootstrap into async function (#4210)</li>
<li>refactor(module): simplify and fix configMerge (#4203)</li>
<li>refactor: convert Translator to ES module (#4202)</li>
<li>docs: add CodeQL review steps and restructure after-release checklist (#4200)</li>
<li>refactor: centralize server port resolution (#4198)</li>
<li>refactor: use const instead of let for variable declarations (#4196)</li>
<li>refactor: replace Loader object with named exports (#4195)</li>
<li>set next release dev number</li>
<li>refactor(eslint): enforce prefer-arrow-callback rule (#4251)</li>
<li>refactor(http_fetcher): make dynamic URL handling explicit (#4282)</li>
<li>refactor: use explicit global config (#4233)</li>
<li>expand logic of hideConfigSecrets, add more tests (#4229)</li>
<li>refactor: make browser startup more explicit (#4214)</li>
</ul>
<h3>[dependencies]</h3>
<ul>
<li>update dependencies (#4276)</li>
<li>update dependencies incl. electron to v44 (#4250)</li>
<li>chore: update eslint incl. plugins + review rules (#4236)</li>
<li>Bump actions/stale from 10 to 11 (#4215)</li>
<li>update dependencies (#4221)</li>
<li>Bump actions/setup-node from 6 to 7 (#4204)</li>
<li>chore: update dependencies (#4201)</li>
<li>Bump electron from 42.5.2 to 43.0.0 (#4192)</li>
</ul>
<h3>[modules/alert]</h3>
<ul>
<li>Move alert translations into common translations (#4284)</li>
</ul>
<h3>[modules/calendar]</h3>
<ul>
<li>Fixes issue 4243: Ensure while loop in calendar module does not get stuck when no entries (#4244)</li>
<li>fix(calendar): escape HTML in event title and location (#4260)</li>
<li>calendar: allow custom events to override symbol class (#4257)</li>
<li>Fix calendar crash when yearmatchgroup regex does not match (#4239)</li>
<li>fix(calendar): keep yearly events in DTSTART’s month when BYMONTH is missing (#4222)</li>
<li>fix(calendar): correct multi-day slice day counts (#4232)</li>
<li>chore: update dependencies + adapt calendar tests (#4211)</li>
<li>fix(calendar): sliced multi-day events start at 00:00, not 23:59 (#4208)</li>
</ul>
<h3>[modules/newsfeed]</h3>
<ul>
<li>newsfeed: don’t use cors url in njk template (#4279)</li>
<li>refactor(newsfeed): extract feed item normalization into feeditem.js (#4271)</li>
<li>refactor(newsfeed): replace feedme lib with feedparser (#4269)</li>
<li>newsfeed: fix allowedBasicHtmlTags (#4258)</li>
<li>newsfeed: update checkArticleUrl (#4256)</li>
</ul>
<h3>[modules/updatenotification]</h3>
<ul>
<li>feat(updatenotification): implement trusted module configuration for update commands (#4259)</li>
</ul>
<h3>[modules/weather]</h3>
<ul>
<li>feat: add FMI weather provider (#4278)</li>
<li>feat(weather): enable CSS ordering for forecast and hourly columns (#4118)</li>
<li>fix(weather): respect initial load delay (#4254)</li>
<li>fix(weather): restrict provider loading to the providers directory (#4235)</li>
<li>refactor(weather): extract WeatherProvider base class (#4228)</li>
</ul>
<h3>[testing]</h3>
<ul>
<li>ci: fail lint on warnings (#4230)</li>
<li>add test if install works for minimal node version (#4197)</li>
</ul>
<h3>[translation]</h3>
<ul>
<li>feat(i18n): add Azerbaijani translation (#4283)</li>
<li>feat(i18n): complete Turkish translations (#4277)</li>
<li>Improve Portuguese translations (#4274)</li>
</ul>
]]></description><link>https://forum.magicmirror.builders/topic/20375/v2.38.0</link><generator>RSS for Node</generator><lastBuildDate>Thu, 01 Oct 2026 23:15:36 GMT</lastBuildDate><atom:link href="https://forum.magicmirror.builders/topic/20375.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 01 Oct 2026 15:16:48 GMT</pubDate><ttl>60</ttl></channel></rss>