Thanks to: @xsorifc28, @HeikoGr, @bugsounet, @khassel, @KristjanESPERANTO, @rejas, @sdetweil.
Added [core] Add wayland and windows start options to package.json (#3594) [docs] Add step for npm publishing in release process (#3595) [core] Add GitHub workflow to run spellcheck a few days before each release (#3623) [core] Add test flag to index.html to pass to module js for test mode detection (needed by #3630) [core] Add export on animation names (#3644) [compliments] Add support for refreshing remote compliments file, and test cases (#3630) [linter] Re-add eslint-plugin-importnow that it supports ESLint v9 (#3586) [linter] Re-activate eslint-plugin-package-json to lint package.json (#3643) [linter] Add linting for markdown files (#3646) [linter] Add some handy ESLint rules. [calendar] Add ability to display end date for full date events, where end is not same day (showEnd=true) (#3650) [core] Add text to the config.js.sample file about the locale variable (#3654, #3655) [core] Add fetch timeout for all node_helpers (thru undici, forces node 20.18.1 minimum) to help on slower systems. (#3660) (3661) Changed [core] Run code style checks in workflow only once (#3648) [core] Fix animations export #3644 only on server side (#3649) [core] Use project URL in fallback config (#3656) [core] Fix Access Denied crash writing js/positions.js (on synology nas) #3651. new message, MM starts, but no modules showing (#3652) [linter] Switch to ‘npx’ for lint-staged in pre-commit hook (#3658) Removed [tests] Remove node-pty and drivelist from rebuilded test (#3575) [deps] Remove @eslint/js dependency. Already installed with eslint in deep (#3636) Updated [repo] Reactivate stale.yaml as GitHub action to mark issues as stale after 60 days and close them 7 days later (if no activity) (#3577, #3580, #3581) [core] Update electron dependency to v32 (test electron rebuild) and all other dependencies too (#3657) [tests] All test configs have been updated to allow full external access, allowing for easier debugging (especially when running as a container) [core] Run and test with node 23 (#3588) [workflow] delete exception allow-ghsas: GHSA-8hc4-vh64-cxmj in dep-review.yaml (#3659) Fixed [updatenotification] Fix pm2 using detection when pm2 script is inside or outside MagicMirror root folder (#3576) (#3605) (#3626) (#3628) [core] Fix loading node_helper of modules: avoid black screen, display errors and continue loading with next module (#3578) [weather] Change default value for weatherEndpoint of provider openweathermap to “/onecall” (#3574) [tests] Fix electron tests with mock dates, the mock on server side was missing (#3597) [tests] Fix testcases with hard coded Date.now (#3597) [core] Fix missing basePath where location.host is used (#3613) [compliments] croner library changed filenames used in latest version (#3624) [linter] Fix ESLint ignore pattern which caused that default modules not to be linted (#3632) [core] Fix module path in case of sub/sub folder is used and use path.resolve for resolve moduleFolder and defaultModuleFolder in app.js (#3653) [calendar] Update to resolve issues #3098 #3144 #3351 #3422 #3443 #3467 #3537 related to timezone changes [calendar] Fix #3267 (styles array), also fixes event with both exdate AND recurrence(and testcase) [calendar] Fix showEndsOnlyWithDuration not working, #3598, applies ONLY to full day events [calendar] Fix showEnd for Full Day events (#3602) [tests] Suppress “module is not defined” in e2e tests (#3647) [calendar] Fix #3267 (styles array, really this time!) [core] Fix #3662 js/positions.js created incorrectly⚠️ This release needs nodejs version v20 or v22 or higher, minimum version is v20.18.1
https://github.com/MagicMirrorOrg/MagicMirror/releases/tag/v2.30.0