-
-
Notifications
You must be signed in to change notification settings - Fork 4.5k
Release 2.34.0 #3999
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Release 2.34.0 #3999
Conversation
sliceMultiDayEvents occasionally gets the number of events wrong and produces too many rows Math.ceil() rounds up over 1.04 so we get an abnormal count then the calcs for the midnight loop control used different moment() functions, producing different results fixes #3542
I felt like adding a spell checker, but it's okay if you find it superfluous. At least then we could fix the found spell issues. What is still missing is an automatic integration so that the spell checker does not have to be called manually. Would it perhaps make sense to always do it before a release?
… for setting these things from outside (and overriding corresponding config.js properties `config.foreignModulesDir` and `customCss`) - remove elements from index.html when loading script or stylesheet files fails - removed `config.paths.vendor` (could never work because `vendor` is hardcoded in `index.html`) and renamed `config.paths.modules` to `config.foreignModulesDir`. The `config.paths. ...` properties were implemented in the initial commit in `js/defaults.js` but were never functional. - fixes `app.js` which didn't respect `config.paths.modules` before - as `modules/defaults` is directly set in many places in the source code restrict `config.paths.modules` to foreign modules (it has never worked for default modules), now renamed to `config.foreignModulesDir` - adds new `/env` section in `server.js` for getting the new env vars in the browser - fixes TODO in `server.js` so test directories are now only published when running tests These changes allow changing some main paths from outside mm with the new env vars. You now **can** put all user stuff into one directory, e.g. the `config` dir: - `config.js` as before - `custom.css` - foreign modules This would simplify other setups e.g. the docker setup. At the moment we have to deal with 3 directories where 2 of them (`modules` and `css`) contains mixed stuff, which means mm owned files and user files. This can now simplified and leads to cleaner setups (if wanted).
I think it might be a good idea to check the config at every start.
…via `updateDom` (#3535) - [x] Base your pull requests against the `develop` branch. - [x] Include these infos in the description: > - Does the pull request solve a **related** issue? Yes - solves #3534 > - If so, can you reference the issue like this `Fixes #<issue_number>`? Fixes #3534 (also mentioned in commit message) > - What does the pull request accomplish? Use a list if needed. > > - Adds a new notification (`DOM_OBJECTS_UPDATED`) when the DOM is updated via `updateDom` - [x] Please run `npm run lint:prettier` before submitting - [x] Don't forget to add an entry about your changes to the CHANGELOG.md file. More info can be found in #3534, but as a summary: The `updateDom` function is not synchronous - there is an undetermined amount of time between when it completes and when the DOM has actually been re-rendered and is ready for interaction. The existing notification (`MODULE_DOM_CREATED`) only fires once on the initial DOM render. This PR solves the issue of subsequent re-renders by adding a new notification that fires whenever the DOM is ready after an update. This notification falls within expected lifecycle notifications (very similar to other libraries that provide DOM lifecycle notifications).
Only details changes. No functional changes. - remove superfluous colors in Log.error - invert negative if - update ESLint env - use camel case variable name - optimize Log strings
uses newsfeed test after copying this module to config dir addition for #3530
- should now correct itself when one changes from (accidentaly selected) master to develop - also fixes wrong CHANGELOG entry from #3481 - update deps a little
Beside testing against node version `v20.x` and `v22.x` we should also test against the minimal node version, currently `v20.9.0`. This is for seeing changes in dependencies which needs higher node version as with the July-24-release, where we wrote `node >=20` but shipped an `eslint` version which required `node>=20.9.0`.
and ignore `js/positions.js` when linting (because this file is generated at runtime).
Since PR #3551 was not yet complete, I made my own attempt. 1. Update to ESLint v9. 2. Replace deprecated `.eslintrc.json` and `.eslintignore` by flat config `eslint.config.mjs`. 3. Adapt `check_config.js` to use flat config. 4. Since `eslint-plugin-import` still doesn't support ESLint v9 I removed it. We can add it back when it does support v9. 5. Run tests `npm run check:js` and `npm run config:check`. 6. In order not to overload this PR, I have not yet activated more additional rules - there are some useful ones in the new plugin `@eslint/js`. @bugsounet, please don't take it as an offence that I have created a competing PR. The migration to ESLint v9 has been burning under my nails for some time.
This bug is caused by #3543. The calculation for midnight adds a day but for endDate we want the day to be subtracted again.
in addition of #3559 except with node v21: no security updates and EOL
# Update electron-rebuild.yaml * remove onoff library: Not updated since 3 years, don't work with last rpi Os * add node-libgpiod library in replacement
- node-ical use `0.18.0` instead of `^0.18.0` in `package.json` - cleanup `package-lock.json`
…gicMirror root folder (#3576) I discover this bug: When pm2 `sh` script is on MagicMirror root folder, updatenotification is not able to detect pm2 using ``` 0|MagicMirror | [2024-10-02 17:23:09.215] [DEBUG] Version Compare: 2.30.0-develop 2.30.0-develop --> true 0|MagicMirror | [2024-10-02 17:23:09.216] [DEBUG] Status: online 0|MagicMirror | [2024-10-02 17:23:09.216] [DEBUG] PM2 MagicMirror starting from Path: /home/bugsounet/MagicMirror-dev 0|MagicMirror | [2024-10-02 17:23:09.216] [DEBUG] MagicMirror Path /home/bugsounet/MagicMirror-dev/ 0|MagicMirror | [2024-10-02 17:23:09.216] [DEBUG] Compare: false 0|MagicMirror | [2024-10-02 17:23:09.216] [INFO] updatenotification: [PM2] You are not using pm2 ```
Bumps [eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from 50.3.0 to 50.3.1. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/gajus/eslint-plugin-jsdoc/releases">eslint-plugin-jsdoc's releases</a>.</em></p> <blockquote> <h2>v50.3.1</h2> <h2><a href="https://github.com/gajus/eslint-plugin-jsdoc/compare/v50.3.0...v50.3.1">50.3.1</a> (2024-10-01)</h2> <h3>Bug Fixes</h3> <ul> <li><strong><code>check-alignment</code>:</strong> handle zero indent; fixes <a href="https://redirect.github.com/gajus/eslint-plugin-jsdoc/issues/1322">#1322</a> (<a href="https://github.com/gajus/eslint-plugin-jsdoc/commit/34866bc988a1a26fab9c4cf3c89fadb4c7d0494f">34866bc</a>)</li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/gajus/eslint-plugin-jsdoc/commit/34866bc988a1a26fab9c4cf3c89fadb4c7d0494f"><code>34866bc</code></a> fix(<code>check-alignment</code>): handle zero indent; fixes <a href="https://redirect.github.com/gajus/eslint-plugin-jsdoc/issues/1322">#1322</a></li> <li>See full diff in <a href="https://github.com/gajus/eslint-plugin-jsdoc/compare/v50.3.0...v50.3.1">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [helmet](https://github.com/helmetjs/helmet) from 7.1.0 to 8.0.0. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/helmetjs/helmet/blob/main/CHANGELOG.md">helmet's changelog</a>.</em></p> <blockquote> <h2>8.0.0</h2> <h3>Changed</h3> <ul> <li><strong>Breaking:</strong> <code>Strict-Transport-Security</code> now has a max-age of 365 days, up from 180</li> <li><strong>Breaking:</strong> <code>Content-Security-Policy</code> middleware now throws an error if a directive should have quotes but does not, such as <code>self</code> instead of <code>'self'</code>. See <a href="https://redirect.github.com/helmetjs/helmet/issues/454">#454</a></li> <li><strong>Breaking:</strong> <code>Content-Security-Policy</code>'s <code>getDefaultDirectives</code> now returns a deep copy. This only affects users who were mutating the result</li> <li><strong>Breaking:</strong> <code>Strict-Transport-Security</code> now throws an error when "includeSubDomains" option is misspelled. This was previously a warning</li> </ul> <h3>Removed</h3> <ul> <li><strong>Breaking:</strong> Drop support for Node 16 and 17. Node 18+ is now required</li> </ul> <h2>7.2.0 - 2024-09-28</h2> <h3>Changed</h3> <ul> <li><code>Content-Security-Policy</code> middleware now warns if a directive should have quotes but does not, such as <code>self</code> instead of <code>'self'</code>. This will be an error in future versions. See <a href="https://redirect.github.com/helmetjs/helmet/issues/454">#454</a></li> </ul> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/helmetjs/helmet/commit/9a8e6d5322aad6090394b0bb2e81448c5f5b3e74"><code>9a8e6d5</code></a> 8.0.0</li> <li><a href="https://github.com/helmetjs/helmet/commit/6562cd7074e1b04c7abc6fcab351e4458f04dde2"><code>6562cd7</code></a> CSP: speed up <code>getDefaultDirectives</code></li> <li><a href="https://github.com/helmetjs/helmet/commit/a8befb3b9d7a1eadfd9974d26f3102e4d6ed8879"><code>a8befb3</code></a> <code>getDefaultDirectives</code> should do a deep copy</li> <li><a href="https://github.com/helmetjs/helmet/commit/558ef2ce9085e882a7a8cad4fa4ab911c9e811e3"><code>558ef2c</code></a> HSTS: throw when misspelling "includeSubDomains" option</li> <li><a href="https://github.com/helmetjs/helmet/commit/73e75952fe3538969a63aa3111a9c87652ddbb8e"><code>73e7595</code></a> Content-Security-Policy: throw if directive value lacks necessary quotes</li> <li><a href="https://github.com/helmetjs/helmet/commit/76410e1093a79ac47706144c30d1d4044f2aba22"><code>76410e1</code></a> Content-Security-Policy can now use Object.hasOwn</li> <li><a href="https://github.com/helmetjs/helmet/commit/293bd18bf5f9884e1e5a60b6ab2259196d9107de"><code>293bd18</code></a> Strict-Transport-Security: increase max-age to 1 year</li> <li><a href="https://github.com/helmetjs/helmet/commit/898cdc4c61b5dd45eb6eb8d1f59e3fa9ce014882"><code>898cdc4</code></a> Require Node 18+</li> <li><a href="https://github.com/helmetjs/helmet/commit/7e2b06947fbe2507625e572effa2714e7d1245e6"><code>7e2b069</code></a> 7.2.0</li> <li><a href="https://github.com/helmetjs/helmet/commit/7bea9158d4de24ef37666ace82d7688aabd423f6"><code>7bea915</code></a> Update changelog for 7.2.0 release</li> <li>Additional commits viewable in <a href="https://github.com/helmetjs/helmet/compare/v7.1.0...v8.0.0">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
The old `stale.yaml` seems not to work anymore, so I set up the same content in a new github workflow. I think we should use it again to get rid of old issues.
When a library is missing on an 3rd party module, MM² stop loading and display a black screen. (I'm sure it's happened to everyone.) So, I have added a try/catch block and it's avoid black screen, display errors and allow continue loading with next module
…PT strings (#3965) - Added new pt.json and pt-br.json in alert/translations - Updated main pt.json (global translations) - Updated alert.js to load new languages - Added entry to CHANGELOG.md --------- Co-authored-by: veeck <gitkraken@veeck.de>
…fresh url (#3967) Checks if `this.config.remoteFile.includes` already contains a `?` - If it does, uses `&` to append the dummy parameter - If it doesn't, uses `?` to start a new query string
The pattern `modules` was too broad and prevented tracking files in `modules/default/` despite the negation pattern. Changed to `modules/*` to properly exclude only the content of the modules directory while allowing the default modules to be tracked. This issue was likely introduced during the cleanup in #3952. Without this change there are now warn messages like this: ```bash kristjan@debian:~/MagicMirror$ git add modules/default/compliments/compliments.js The following paths are ignored by one of your .gitignore files: modules hint: Use -f if you really want to add them. hint: Disable this message with "git config advice.addIgnoredFile false" ```
fix: set compliments remote file minimum delay to 15 minutes..extra *60 in there was making it 15 hours.
…unit tests (#3969) ## Changes - Replace `indexOf()` with `startsWith()` for cleaner protocol detection - Use `URL` API for robust cache-busting parameter handling - Add HTTP response validation and improved error logging - Add JSDoc type annotations for better documentation - Remove unused `urlSuffix` instance variable - Add unit tests - Fix `.gitignore` pattern ## Motivation After merging #3967, I noticed some potential for improving reliability and user experience related to the method `loadComplimentFile`. With these changes the method now validates URLs upfront to catch configuration errors early, checks HTTP status codes to detect server issues (404/500), and provides specific error messages that help users troubleshoot problems. The complexity of the code does not really increase with the changes. On the contrary, the method should now be more intuitive to understand. ## Testing Added unit tests for `loadComplimentFile()` to validate the improvements: - HTTP error handling - Cache-busting Since E2E tests already cover the happy path, these unit tests focus on error cases and edge cases. ## Additional Fix While adding the test file, I discovered that the `.gitignore` pattern `modules` was incorrectly matching `tests/unit/modules/`, preventing test files from being tracked. Changed to `/modules` to only match the root directory.
Bumps [actions/checkout](https://github.com/actions/checkout) from 5 to 6. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/checkout/releases">actions/checkout's releases</a>.</em></p> <blockquote> <h2>v6.0.0</h2> <h2>What's Changed</h2> <ul> <li>Update README to include Node.js 24 support details and requirements by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2248">actions/checkout#2248</a></li> <li>Persist creds to a separate file by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2286">actions/checkout#2286</a></li> <li>v6-beta by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2298">actions/checkout#2298</a></li> <li>update readme/changelog for v6 by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2311">actions/checkout#2311</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/checkout/compare/v5.0.0...v6.0.0">https://github.com/actions/checkout/compare/v5.0.0...v6.0.0</a></p> <h2>v6-beta</h2> <h2>What's Changed</h2> <p>Updated persist-credentials to store the credentials under <code>$RUNNER_TEMP</code> instead of directly in the local git config.</p> <p>This requires a minimum Actions Runner version of <a href="https://github.com/actions/runner/releases/tag/v2.329.0">v2.329.0</a> to access the persisted credentials for <a href="https://docs.github.com/en/actions/tutorials/use-containerized-services/create-a-docker-container-action">Docker container action</a> scenarios.</p> <h2>v5.0.1</h2> <h2>What's Changed</h2> <ul> <li>Port v6 cleanup to v5 by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2301">actions/checkout#2301</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/checkout/compare/v5...v5.0.1">https://github.com/actions/checkout/compare/v5...v5.0.1</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/actions/checkout/blob/main/CHANGELOG.md">actions/checkout's changelog</a>.</em></p> <blockquote> <h1>Changelog</h1> <h2>V6.0.0</h2> <ul> <li>Persist creds to a separate file by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2286">actions/checkout#2286</a></li> <li>Update README to include Node.js 24 support details and requirements by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2248">actions/checkout#2248</a></li> </ul> <h2>V5.0.1</h2> <ul> <li>Port v6 cleanup to v5 by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2301">actions/checkout#2301</a></li> </ul> <h2>V5.0.0</h2> <ul> <li>Update actions checkout to use node 24 by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2226">actions/checkout#2226</a></li> </ul> <h2>V4.3.1</h2> <ul> <li>Port v6 cleanup to v4 by <a href="https://github.com/ericsciple"><code>@ericsciple</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2305">actions/checkout#2305</a></li> </ul> <h2>V4.3.0</h2> <ul> <li>docs: update README.md by <a href="https://github.com/motss"><code>@motss</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1971">actions/checkout#1971</a></li> <li>Add internal repos for checking out multiple repositories by <a href="https://github.com/mouismail"><code>@mouismail</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1977">actions/checkout#1977</a></li> <li>Documentation update - add recommended permissions to Readme by <a href="https://github.com/benwells"><code>@benwells</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2043">actions/checkout#2043</a></li> <li>Adjust positioning of user email note and permissions heading by <a href="https://github.com/joshmgross"><code>@joshmgross</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2044">actions/checkout#2044</a></li> <li>Update README.md by <a href="https://github.com/nebuk89"><code>@nebuk89</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2194">actions/checkout#2194</a></li> <li>Update CODEOWNERS for actions by <a href="https://github.com/TingluoHuang"><code>@TingluoHuang</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2224">actions/checkout#2224</a></li> <li>Update package dependencies by <a href="https://github.com/salmanmkc"><code>@salmanmkc</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/2236">actions/checkout#2236</a></li> </ul> <h2>v4.2.2</h2> <ul> <li><code>url-helper.ts</code> now leverages well-known environment variables by <a href="https://github.com/jww3"><code>@jww3</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1941">actions/checkout#1941</a></li> <li>Expand unit test coverage for <code>isGhes</code> by <a href="https://github.com/jww3"><code>@jww3</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1946">actions/checkout#1946</a></li> </ul> <h2>v4.2.1</h2> <ul> <li>Check out other refs/* by commit if provided, fall back to ref by <a href="https://github.com/orhantoy"><code>@orhantoy</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1924">actions/checkout#1924</a></li> </ul> <h2>v4.2.0</h2> <ul> <li>Add Ref and Commit outputs by <a href="https://github.com/lucacome"><code>@lucacome</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1180">actions/checkout#1180</a></li> <li>Dependency updates by <a href="https://github.com/dependabot"><code>@dependabot</code></a>- <a href="https://redirect.github.com/actions/checkout/pull/1777">actions/checkout#1777</a>, <a href="https://redirect.github.com/actions/checkout/pull/1872">actions/checkout#1872</a></li> </ul> <h2>v4.1.7</h2> <ul> <li>Bump the minor-npm-dependencies group across 1 directory with 4 updates by <a href="https://github.com/dependabot"><code>@dependabot</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1739">actions/checkout#1739</a></li> <li>Bump actions/checkout from 3 to 4 by <a href="https://github.com/dependabot"><code>@dependabot</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1697">actions/checkout#1697</a></li> <li>Check out other refs/* by commit by <a href="https://github.com/orhantoy"><code>@orhantoy</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1774">actions/checkout#1774</a></li> <li>Pin actions/checkout's own workflows to a known, good, stable version. by <a href="https://github.com/jww3"><code>@jww3</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1776">actions/checkout#1776</a></li> </ul> <h2>v4.1.6</h2> <ul> <li>Check platform to set archive extension appropriately by <a href="https://github.com/cory-miller"><code>@cory-miller</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1732">actions/checkout#1732</a></li> </ul> <h2>v4.1.5</h2> <ul> <li>Update NPM dependencies by <a href="https://github.com/cory-miller"><code>@cory-miller</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1703">actions/checkout#1703</a></li> <li>Bump github/codeql-action from 2 to 3 by <a href="https://github.com/dependabot"><code>@dependabot</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1694">actions/checkout#1694</a></li> <li>Bump actions/setup-node from 1 to 4 by <a href="https://github.com/dependabot"><code>@dependabot</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1696">actions/checkout#1696</a></li> <li>Bump actions/upload-artifact from 2 to 4 by <a href="https://github.com/dependabot"><code>@dependabot</code></a> in <a href="https://redirect.github.com/actions/checkout/pull/1695">actions/checkout#1695</a></li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/actions/checkout/commit/1af3b93b6815bc44a9784bd300feb67ff0d1eeb3"><code>1af3b93</code></a> update readme/changelog for v6 (<a href="https://redirect.github.com/actions/checkout/issues/2311">#2311</a>)</li> <li><a href="https://github.com/actions/checkout/commit/71cf2267d89c5cb81562390fa70a37fa40b1305e"><code>71cf226</code></a> v6-beta (<a href="https://redirect.github.com/actions/checkout/issues/2298">#2298</a>)</li> <li><a href="https://github.com/actions/checkout/commit/069c6959146423d11cd0184e6accf28f9d45f06e"><code>069c695</code></a> Persist creds to a separate file (<a href="https://redirect.github.com/actions/checkout/issues/2286">#2286</a>)</li> <li><a href="https://github.com/actions/checkout/commit/ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493"><code>ff7abcd</code></a> Update README to include Node.js 24 support details and requirements (<a href="https://redirect.github.com/actions/checkout/issues/2248">#2248</a>)</li> <li>See full diff in <a href="https://github.com/actions/checkout/compare/v5...v6">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Remove `--enable-features=UseOzonePlatform` and `--ozone-platform=wayland` flags as Electron 38+ changed the default `--ozone-platform` to `auto`, which automatically detects and uses Wayland when running in a Wayland session. Source: https://www.electronjs.org/blog/electron-38-0#removed-electron_ozone_platform_hint-environment-variable.
Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: veeck <gitkraken@veeck.de> Co-authored-by: Kristjan ESPERANTO <35647502+KristjanESPERANTO@users.noreply.github.com>
…tor `calendarfetcherutils.js` (#3976) The bottom line of this PR is, that it fixes an issue and simplifies the code by dealing with the TODOs in the code. For review, I suggest looking at each commit individually. If there are too many changes for a PR, let me know and I'll split it up :slightly_smiling_face: ## 1. [fix(calendar): prevent excessive fetching with smart refresh strategy](8892cd3) - Add lastFetch timestamp tracking to CalendarFetcher - Add shouldRefetch() method with configurable minimum interval (default: 3 minutes) - When reusing existing fetcher: fetch if data is stale (>3 min), otherwise broadcast cached events - Prevents double broadcasts to consuming modules while maintaining fresh data - Balances rate limit prevention (Issue #3971) with data freshness on user reload - Prevents excessive fetching during rapid reloads (e.g., Fully Kiosk screensaver use case) - Allows fresh calendar data when enough time has passed since last fetch ## 2. [refactor(calendar): simplify event exclusion logic](d507aba) - Extract filtering logic from `shouldEventBeExcluded` into new helper `checkEventAgainstFilter` - Simplify the main loop in `shouldEventBeExcluded It resolves a TODO from the comments in the code: * `This seems like an overly complicated way to exclude events based on the title.` ## 3. [refactor(calendar): extract recurring event expansion logic](d510160) This change separates the expansion of recurring events from the main filtering loop into a new helper function 'expandRecurringEvent'. It resolves two TODOs from the comments in the code: - `This should be a separate function` - `This should create an event per moment so we can change anything we want` This improves code readability, reduces complexity in 'filterEvents', and allows for cleaner handling of individual recurrence instances. ## 4. [refactor(calendar): simplify recurring event handling](b04f716) - Simplify 'getMomentsFromRecurringEvent' using modern syntax - Improve handling of full-day events across different timezones ## 5. [test(calendar): fix UNTIL date in fullday_until.ics fixture](1d762b2) The issue was with the UNTIL date being May 4th while DTSTART was May 5th. This created an invalid recurrence rule where the end date came before the start date. The fix only adjusts the UNTIL date from May 4th to May 5th, so it matches the start date.
and remove CHANGELOG.md logic. This is my attempt to create a draft release instead of editing a changelog, see discussion on discord. Logic: - new github workflow `.github/workflows/release-notes.yaml` - runs with every push on `develop` (so after PR's are merged) - collects the commits on `develop` which are newer than the latest tag - searches the commit messages for keywords defined in an array and group the messages into categories (this is a first shot, we will update this ...) - creates markdown content - looks for an untagged and unpublished draft release with name `unreleased`, if it exists, it will be deleted - creates an untagged and unpublished draft release with name `unreleased` with markdown content created above Example created on my fork (this caused having `MagicMirrorOrg` in the PR-Links): <img width="952" height="1804" alt="grafik" src="https://github.com/user-attachments/assets/38687bed-f5da-4dcb-93eb-242c317769df" /> Please review this PR, it is a draft release at the moment because I got problems in my fork where I tested this: The created draft release is not visible at the moment (they are visible via api). AFAIS this is a queue problem on GitHub, maybe I flooded their queue while testing ... So I will test this tomorrow again before removing `draft` here.
With this update the workflow file from inside the feature branch is used, not the old stuff coming from `master` as before. This does not help for the currently failing job which still comes from `master` (we have to live with this until next release), but this will help in the future to prevent such errors. Tested this on my fork: - base against `develop`: workflow is skipped - base against `master`: workflow fails - base against `master` with label `mastermerge`: workflow is skipped I took this new workflow from the same repo where the previous workflows was taken (see diff for the link) so this is the further development.
…and support (#3989) The Electron 38+ auto-detection of ozone-platform does not work reliably in all environments (e.g., Docker containers) because it depends on environment variables like XDG_SESSION_TYPE which may not be set. Since `start:wayland` is explicitly called for Wayland sessions, it makes sense to explicitly specify the platform flag for maximum reliability. The `--enable-features=UseOzonePlatform` flag remains removed as it is no longer needed since Electron 38. Fixes Docker compatibility issue reported in #3974
The config checker previously only allowed Node.js globals, but since the config file runs also in the browser context, users should be able to access browser APIs like `document` or `window` when needed. This was incorrectly flagged as an error by the `no-undef` ESLint rule. The fix adds browser globals to the allowed globals in the linter config. Fixes #3990.
add demo.gif to README.md
update dependencies before next release --------- Co-authored-by: Kristjan ESPERANTO <35647502+KristjanESPERANTO@users.noreply.github.com>
starting 2.34.0 release
|
why do we have these merge conflicts.. almost like incoming base is wrong.. I JUST cloned MM again, so I was sure to have good base.. no issues on prep to develop |
|
need some minutes to take a look |
|
getting the same conflicts, if it is o.k. for you I can resolve this locally by merging first master into develop and then push develop. After this your PR should have no conflicts anymore. So let me know if I should do this. |
|
yes, go ahead |
|
so looks good now, you can proceed ... |

Thanks to: @Blackspirits, @Crazylegstoo, @jarnoml, @jboucly, @JHWelch, @khassel, @KristjanESPERANTO, @rejas, @sdetweil, @xsorifc28
Compare to previous Release v2.33.0
[core]
Prepare Release 2.34.0 (#3998)
dependency update + adjust Playwright setup + fix linter issue (#3994)
demo with gif (#3995)
[core] fix: allow browser globals in config files (#3992)
[core] fix: restore --ozone-platform=wayland flag for reliable Wayland support (#3989)
[core] auto create release notes with every push on develop (#3985)
[core] chore: simplify Wayland start script (#3974)
[gitignore] restore the old Git behavior for the default modules (#3968)
[core] configure cspell to check default modules only and fix typos (#3955)
[gitignore] restoring the old Git behavior for the CSS directory (#3954)
feat(core): add server:watch script with automatic restart on file changes (#3920)
[check_config] refactor: improve error handling (#3927)
refactor: replace express-ipfilter with lightweight custom middleware (#3917)
refactor: replace module-alias dependency with internal alias resolver (#3893)
[dependencies]
[chore] update dependencies and min. node version (#3986)
[core] bump dependencies into december (#3982)
Bump actions/checkout from 5 to 6 (#3972)
Update deps, unpin parse5 (#3934)
[core] Update deps and pin jsdom to v27.0.0 (#3925)
chore: update dependencies (#3921)
update deps, exclude node v23 (#3916)
remove eslint warnings, add npm publish process to Collaboration.md (#3913)
feat: add ESlint rule no-sparse-arrays for config check (#3911)
chore: bump dependencies into october (#3909)
[logging]
logger: add calling filename as prefix on server side (#3926)
[logger] Add prefixes to most Log messages (#3923)
[modules/alert]
Add new pt and pt-BR translations for Alert module and update global PT strings (#3965)
[modules/calendar]
add checksum to test whether calendar event list changed (#3988)
[calendar] fix: prevent excessive fetching on client reload and refactor calendarfetcherutils.js (#3976)
[calendar] refactor: migrate CalendarFetcher to ES6 class and improve error handling (#3959)
[calendar] Show repeatingCountTitle only if yearDiff > 0 (#3949)
[tests] suppress debug logs in CI environment + improve calendar symbol test stability (#3941)
[calendar] chore: remove requiresVersion: "2.1.0" (#3932)
[calendar] test: remove "Recurring event per timezone" test (#3929)
[modules/compliments]
[compliments] refactor: optimize loadComplimentFile method and add unit tests (#3969)
fix: set compliments remote file minimum delay to 15 minutes (#3970)
[compliments] fix: duplicate query param "?" in compliments module refresh url (#3967)
[modules/newsfeed]
[newsfeed] fix header layout issue (#3946)
[modules/weather]
[weatherprovider] update subclass language use override (#3914)
[weather] fix wind-icon not showing in pirateweather (#3957)
[weather] add error handling to weather fetch functions, including cors (#3791)
remove deprecated ukmetoffice datapoint provider, cleanup .gitignore (#3952)
fixes problems with daylight-saving-time in weather provider openmeteo (#3931)
Fix for envcanada Provider to use updated Env Canada URL (#3919)
[weather] feat: add configurable forecast date format option (#3918)
[testing]
testing: update "Enforce Pull-Request Rules" workflow (#3987)
[core] refactor: replace XMLHttpRequest with fetch and migrate e2e tests to Playwright (#3950)
[test] replace node-libgpiod with serialport in electron-rebuild workflow (#3945)
[ci] Add concurrency to automated tests workflow to cancel outdated runs (#3943)
[tests] migrate from jest to vitest (#3940)