Compare commits

...

264 Commits

Author SHA1 Message Date
Veeck
1b31cf19e9 Thoroughly check for precipitationAmount values in weathergov provider (#3859)
Fixes #3856

---------

Co-authored-by: veeck <gitkraken@veeck.de>
2025-08-16 20:56:52 +02:00
Veeck
0ca7d23b69 update github actions (#3858)
actions/checkout got updated last night

---------

Co-authored-by: veeck <gitkraken@veeck.de>
2025-08-12 21:14:41 +02:00
Veeck
839d074df1 Update dependencies (#3857)
Just some normal maintainance after the holidays

---------

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>
2025-08-11 12:49:03 +02:00
Karsten Hassel
e34ef0cb6e update dependencies (#3849) 2025-07-22 22:09:29 +02:00
Karsten Hassel
3fa2b96054 cleanup and try to stabilize weather e2e tests (#3848)
The weather e2e tests are failing sometimes, failing is not really
reproducable.

After changing `updateDom(0)` to `updateDom(300)` in `weather.js` it
seems to work (we will se if it really works in the long term).

This PR contains some other weather e2e changes/cleanups/simplifying.
2025-07-20 08:23:52 +02:00
Karsten Hassel
e7b669af34 e2e: decrease stop app waitTime (#3847) 2025-07-16 23:54:02 +02:00
Karsten Hassel
54752f10e8 replace console with Log in calendar debug.js (#3846)
to avoid exception in eslint config.

Background: If someone has a copy of the `modules` folder in his setup
eslint fails because the file `debug.js` uses `console` statements. I
need the `modules` folder renamed in my docker setup so this test always
fails. I think this is a simple solution which has no impact.
2025-07-16 00:38:03 +02:00
Kristjan ESPERANTO
02e76da196 refactor: extract constants for weather electron tests (#3845)
I find the tests with clear variable names much easier to understand.
2025-07-15 00:27:35 +02:00
Kristjan ESPERANTO
7f8935a34c refactor: simplify jest config (#3844)
- changed export from async to sync function - this removes unnecessary
complexity
- reformatted `collectCoverageFrom` to use `<rootDir>` for each pattern
and switch to multi-line style - this is just harmonization
2025-07-13 21:32:58 +02:00
Kristjan ESPERANTO
931fe55022 refactor: optimize system information logging (#3843)
Additionally to #3839 did some rework on the system logging.

- feat: include MagicMirror version (like Sam suggested in #3839)
- refactor: use more variables to get the string array less complex
- refactor: get `installedNodeVersion` from si.versions (with that it
was possible to drop the import of `execSync`)
- fix: `used node` was always the same as the installed one. Since
Electron comes with its own node version, this can differ. This is now
shown correctly (again?) with the use of `process.version`.
- a bit formatting

I think these changes make the code easier to understand and therefore
easier to maintain. Except for showing the MM version there is no big
difference for the user.

## before

```bash
#####  System Information  #####
- SYSTEM:    manufacturer: Notebook; model: N650DU; virtual: false; timeZone: Europe/Berlin
- OS:        platform: linux; distro: Debian GNU/Linux; release: 12; arch: x64; kernel: 5.10.0-20-amd64
- VERSIONS:  electron: 36.3.2; used node: 22.15.0; installed node: 22.15.0; npm: 10.9.0; pm2: 6.0.6
- ENV:       XDG_SESSION_TYPE: wayland; MM_CONFIG_FILE: config/config_MMM-PublicTransportHafas.js;
             WAYLAND_DISPLAY:  wayland-0; DISPLAY: :0; ELECTRON_ENABLE_GPU: undefined
- RAM:       total: 15925.45 MB; free: 2716.90 MB; used: 13209.04 MB
- UPTIME:    259 minutes 
```

## after

```bash
####  System Information  ####
- SYSTEM:   manufacturer: Notebook; model: N650DU; virtual: false; MM: 2.33.0-develop
- OS:       platform: linux; distro: Debian GNU/Linux; release: 12; arch: x64; kernel: 5.10.0-20-amd64
- VERSIONS: electron: 36.3.2; used node: 22.15.1; installed node: 22.15.0; npm: 10.9.0; pm2: 6.0.6
- ENV:      XDG_SESSION_TYPE: wayland; MM_CONFIG_FILE: config/config_MMM-PublicTransportHafas.js
            WAYLAND_DISPLAY:  wayland-0; DISPLAY: :0; ELECTRON_ENABLE_GPU: undefined
- RAM:      total: 15925.45 MB; free: 2814.49 MB; used: 13110.96 MB
- OTHERS:   uptime: 260 minutes; timeZone: Europe/Berlin 
```
2025-07-12 08:24:09 +02:00
Karsten Hassel
a05eb23306 refactor default modules: move scheduleTimer to one place (#3837)
see #3819

---------

Co-authored-by: Kristjan ESPERANTO <35647502+KristjanESPERANTO@users.noreply.github.com>
Co-authored-by: Veeck <github@veeck.de>
2025-07-10 08:12:09 +02:00
Kristjan ESPERANTO
e115475a9d feat: enhance system information logging format and include additional env and RAM details (#3839)
When we introduced the system information, I selected `###` as the
prefix for each line. While this doesn't cause any problems in the
terminal, when someone copies the output to an issue or the forum, every
line is formatted as a heading, which is not ideal. That's why I made
some rework and suggest these changes.

In addition to the formatting changes, I added some env and RAM details
plus the uptime. These are just suggestions – if you don't think they're
worth adding, I'm happy to remove them. We wanted to keep this block
compact.

@sdetweil, since you are often on the front line with the error messages
from users: Is there any information missing in the system block that
you often have to request additionally?

Feel free to request changes!

-----

## in the terminal

### before

```
[2025-07-09 21:58:36.943] [INFO]  System information:
### SYSTEM:   manufacturer: Notebook; model: N650DU; virtual: false
### OS:       platform: linux; distro: Debian GNU/Linux; release: 12; arch: x64; kernel: 5.10.0-20-amd64
### VERSIONS: electron: 36.3.2; used node: 24.2.0; installed node: 24.2.0; npm: 10.9.0; pm2: 6.0.6
### OTHER:    timeZone: Europe/Berlin; ELECTRON_ENABLE_GPU: undefined 
```

-----

### after

```
[2025-07-09 21:57:47.604] [INFO]  
#####  System Information  #####
- SYSTEM:    manufacturer: Notebook; model: N650DU; virtual: false; timeZone: Europe/Berlin
- OS:        platform: linux; distro: Debian GNU/Linux; release: 12; arch: x64; kernel: 5.10.0-20-amd64
- VERSIONS:  electron: 36.3.2; used node: 24.2.0; installed node: 24.2.0; npm: 10.9.0; pm2: 6.0.6
- ENV:       XDG_SESSION_TYPE: wayland; MM_CONFIG_FILE: undefined;
             WAYLAND_DISPLAY:  wayland-0; DISPLAY: :0; ELECTRON_ENABLE_GPU: undefined
- RAM:       total: 15925.45 MB; free: 967.75 MB; used: 14957.70 MB
- UPTIME:    172 minutes 
```

-----

## as markdown (in an issue or the forum)

### before

[2025-07-09 21:58:36.943] [INFO]  System information:
### SYSTEM:   manufacturer: Notebook; model: N650DU; virtual: false
### OS: platform: linux; distro: Debian GNU/Linux; release: 12; arch:
x64; kernel: 5.10.0-20-amd64
### VERSIONS: electron: 36.3.2; used node: 24.2.0; installed node:
24.2.0; npm: 10.9.0; pm2: 6.0.6
### OTHER:    timeZone: Europe/Berlin; ELECTRON_ENABLE_GPU: undefined 

-----

### after

[2025-07-09 21:57:47.604] [INFO]  
#####  System Information  #####
- SYSTEM: manufacturer: Notebook; model: N650DU; virtual: false;
timeZone: Europe/Berlin
- OS: platform: linux; distro: Debian GNU/Linux; release: 12; arch: x64;
kernel: 5.10.0-20-amd64
- VERSIONS: electron: 36.3.2; used node: 24.2.0; installed node: 24.2.0;
npm: 10.9.0; pm2: 6.0.6
- ENV:       XDG_SESSION_TYPE: wayland; MM_CONFIG_FILE: undefined;
WAYLAND_DISPLAY: wayland-0; DISPLAY: :0; ELECTRON_ENABLE_GPU: undefined
- RAM:       total: 15925.45 MB; free: 967.75 MB; used: 14957.70 MB
- UPTIME:    172 minutes
2025-07-10 07:39:23 +02:00
Veeck
e4ec8c3589 Fix missing icons in clock module (#3834)
Fixes #3818

---------

Co-authored-by: veeck <gitkraken@veeck.de>
2025-07-05 22:47:38 +02:00
Koen Konst
d9e2e0272f Fix calendar unit test so it uses 1 day more than a full year for yearly recurring events test (#3833) 2025-07-02 22:03:41 +02:00
dathbe
3a2a52c864 Add CSS to clock module to prevent line breaking of sunrise/sunset information (#3816)
1. Base your pull requests against the `develop` branch.
Done
2. Include these infos in the description:
- Does the pull request solve a **related** issue?
No
- If so, can you reference the issue like this `Fixes #<issue_number>`?
N/A
- What does the pull request accomplish? Use a list if needed.
With some combinations of sunrise and sunset times (usually when the
time till rise/set is >9:59), the information will break across multiple
lines. This prevents that by adding CSS.
- If it includes major visual changes please add screenshots.
I don't consider it major.
3. Please run `npm run lint:prettier` before submitting so that style
issues are fixed.
Done
4. Don't forget to add an entry about your changes to the CHANGELOG.md
file.
Done

---------

Co-authored-by: veeck <gitkraken@veeck.de>
2025-07-02 19:20:03 +02:00
Karsten Hassel
855b1d7cbf update dependencies incl. electron to v37, remove one failing unit test (#3831)
- see title and #3820
- remove failing unit calendar test until solved, see
https://github.com/MagicMirrorOrg/MagicMirror/issues/3830
2025-07-01 22:38:40 +02:00
Karsten Hassel
106b505f2c Prepare 2.33.0-develop 2025-07-01 00:22:16 +02:00
Karsten Hassel
b506bbb10b Merge remote-tracking branch 'origin/master' into develop 2025-07-01 00:15:11 +02:00
Karsten Hassel
26809725e5 Prepare Release 2.32.0 (#3825) 2025-06-30 23:52:58 +02:00
Karsten Hassel
5e506ea856 last dependency update before release (#3823) 2025-06-29 19:47:21 +02:00
Karsten Hassel
1e11d28224 fixes e2e tests (#3817)
- fix newsfeed and calendar e2e tests so they don't need `--forceExit`
anymore
- `--forceExit` should stay in test runs to avoid running until test
limit in case of errors
- remove mocking console, not needed anymore
- configFactory-stuff should not run in browser (otherwise we get errors
`[ReferenceError: exports is not defined]`)
2025-06-25 08:27:52 +02:00
Karsten Hassel
d2d4d7b37f update jest to v30 (#3815)
e2e:
- needed window.close(), otherwise the objects are not destroyed
- add missing `await` in clock test
- set maxListeners for all tests

remaining todo (comes with another PR if I find the problem):
- calendar e2e is now the only test which still needs `--forceExit`
2025-06-21 13:40:10 +02:00
Kristjan ESPERANTO
2809ed1750 [tests] Review and refactor translation tests (#3792)
I have refactored the translations tests, they should now be clearer and
easier to understand. There should be no functional impact.

I have discarded the original approach of also replacing
`XMLHttpRequest` with `fetch` in the file `js/translator.js`. I had
managed to get it to work functionally, but I couldn't get the tests to
work.
2025-06-21 00:37:15 +02:00
Bugsounet - Cédric
c7c0e67c1d review logger factory code part: use switch/case (#3812)
Styling code of `logger.js`:

Just use `switch/case` instead of `if/else if`

---------

Co-authored-by: Veeck <github@veeck.de>
2025-06-20 17:12:24 +02:00
Bugsounet - Cédric
9a3f4f098b Update package type to commonjs (#3814)
related to #3804 

added type to `commonjs` in package.json
2025-06-20 14:26:33 +02:00
Karsten Hassel
ee874836fe update deps and fix animateCSS_spec test (#3811)
- animateCSS_spec test did throw errors at least with newest
dependencies (running locally or on gitlab)
- dependency updates: New jest v30 breaks our tests so we have to stay
with v29 until fixed (will take a look)
2025-06-19 07:35:42 +02:00
Kristjan ESPERANTO
6501aabd2d [linter] Enable ESLint rule no-console (#3810)
In PR #3806 I noticed that ESLint did not complain about the use of
`console`. Then I realised that the rule `no-console` was not activated.
I have now changed this and replaced a few places where `console` was
used.

We can't apply the rule to all .js files because not all of them use our
logger. Therefore I had to add an extra config block for it.
2025-06-09 16:43:45 +02:00
Kristjan ESPERANTO
2194ffd929 [tests] Fix and refactor e2e test "Same keys" in "translations_spec.js" (#3809)
While working on the translations (in #3792 and #3794) I realised that
the e2e "Same keys" tests were not working entirely. There was also a
TODO entry for this in the test, as well as a try-catch-block
workaround. I therefore fixed and refactored it.

I also sorted the translations in `translations/translations.js`, so
that the test outputs are alphabetically.
2025-06-09 12:56:22 +02:00
Koen Konst
faf15ad211 Refactored calendarfetcherutils to fix many of the timezone and DST related issues and make debugging way easier (#3806)
Refactored calendarfetcherutils to remove as many of the date
conversions as possible and use moment tz when calculating recurring
events, this will make debugging a lot easier and fixes problems from
the past with offsets and DST not being handled properly. Also added
some tests to test the behavior of the refactored methodes to make sure
the correct event dates are returned.

Refactored calendar.js aswell to make sure the unix UTC start and end
date of events are properly converted to a local timezone and displayed
correctly for the user.

This PR relates to:
https://github.com/MagicMirrorOrg/MagicMirror/issues/3797

---------

Co-authored-by: Koen Konst <c.h.konst@avisi.nl>
Co-authored-by: Kristjan ESPERANTO <35647502+KristjanESPERANTO@users.noreply.github.com>
2025-06-07 14:13:01 +02:00
Karsten Hassel
052ec1ca26 remove existing folders fonts and vendor from local installations (#3805)
see discussions
[here](https://github.com/MagicMirrorOrg/MagicMirror/pull/3795#issuecomment-2927804743).

The used command should work under windows too. I'm open to better
solutions.

Co-authored-by: Veeck <github@veeck.de>
2025-06-07 13:20:01 +02:00
Kristjan ESPERANTO
302b24c647 [l10n] Complete translations (#3794)
**Short description**: I completed the translations with the help of
translation tools.

**Long description**: I'm currently looking at the translation-tests and
I noticed the e2e-test `${language} should contain all base keys, ()`.
It is supposed to check whether all keys are present in each translation
file, but it doesn't actually work that way. When I fix it, a lot of
missing translations are reported. I have completed these translations
with the help of translation tools and packed them into this PR. I have
left out the modified test so that we can focus on the question if we
accept such amount of automatic translations or not.

rejas has already expressed in another PR
(https://github.com/MagicMirrorOrg/MagicMirror/pull/3775#discussion_r2083099252)
that he prefers human translators. I basically do too, but I don't see
how we can manage to have all translations completed by humans. And even
if a few translations are not correct, hopefully a user will get in
touch.

If we decide against the translations, we should at least remove the
test. If we go for the tranlsations, I'll add the test.

What do you think?

---------

Co-authored-by: Magnus <34011212+MagMar94@users.noreply.github.com>
2025-06-05 10:18:12 +02:00
Karsten Hassel
975ee9c97d update dependencies (#3804)
and add now required "type" to `package.json`
2025-06-01 17:51:31 +02:00
Karsten Hassel
c8625ff506 simplify install and maintaining dependencies (#3795)
I was always unhappy when maintaining dependency updates to have 3
`package.json` files.

This PR moves all deps into the main `package.json` and removes the
folders `fonts` and `vendor`.

If accepted I will update the docs too.

---------

Co-authored-by: Kristjan ESPERANTO <35647502+KristjanESPERANTO@users.noreply.github.com>
2025-06-01 17:03:11 +02:00
Kristjan ESPERANTO
e26aed927d [refactor] Replace ansis with built-in function util.styleText (#3793)
> What does the pull request accomplish?

One external dependency less.
2025-05-27 22:36:02 +02:00
Kristjan ESPERANTO
85b4ece767 [refactor] Replace deprecated constants (#3789)
`fs.F_OK` and `fs.R_OK` are [deprecated since a while node
20.8.0](https://nodejs.org/api/deprecations.html#DEP0176).

Node 24 now complains about them when running server mode (`node --run
server`):

```bash
[2025-05-23 23:11:44.932] [ERROR] (node:37733) [DEP0176] DeprecationWarning: fs.F_OK is deprecated, use fs.constants.F_OK instead
(Use `node --trace-deprecation ...` to show where the warning was created) 
```

The replacements have been in place for a while, and this change should
work without any issues.
2025-05-23 23:57:50 +02:00
Kristjan ESPERANTO
4e3821c2ff [workflow] Replace Node.js version v23 with v24 (#3770)
node v24 was released today and v23 will have reached EOL with our next
release.
2025-05-23 19:34:43 +02:00
Karsten Hassel
d07912d4b2 update dependencies incl. electron to v36 (#3788) 2025-05-23 06:52:28 +02:00
Karsten Hassel
d179051329 fix roboto.css to avoid error message (#3787) 2025-05-20 06:48:10 +02:00
BugHaver
2f9f4b6253 [feature] implement short syntax for clock week (#3775)
Hello and thank you for wanting to contribute to the MagicMirror²
project!

**Please make sure that you have followed these 4 rules before
submitting your Pull Request:**

> 1. Base your pull requests against the `develop` branch.
> 2. Include these infos in the description: implement short syntax for
clock week
>
> - Does the pull request solve a **related** issue? n/a
> - If so, can you reference the issue like this `Fixes
#<issue_number>`?
> - What does the pull request accomplish? Use a list if needed.
> - If it includes major visual changes please add screenshots.
>
> 3. Please run `npm run lint:prettier` before submitting so that
>    style issues are fixed.
> 4. Don't forget to add an entry about your changes to
>    the CHANGELOG.md file.


![image](https://github.com/user-attachments/assets/e6c16981-de0a-45be-b553-7a7a67977d55)


![image](https://github.com/user-attachments/assets/ebae32e7-e6fb-41aa-971a-908880acc7b9)


**Note**: Sometimes the development moves very fast. It is highly
recommended that you update your branch of `develop` before creating a
pull request to send us your changes. This makes everyone's lives
easier (including yours) and helps us out on the development team.

Thanks again and have a nice day!

---------

Co-authored-by: BugHaver <43462320+lsaadeh@users.noreply.github.com>
2025-05-16 08:04:18 +02:00
Kristjan ESPERANTO
554bb0ed5c [feat] Add rule no-undef in config file validation (#3786)
This should solve the problem #3785.
2025-05-15 00:15:54 +02:00
Kristjan ESPERANTO
965e935881 [linter] Review linter setup (#3783)
- [2b395b9f] Fix command to lint markdown in `CONTRIBUTING.md`
- [fed4c86c] Re-activate JSDoc ESLint plugin and fix linting issues (As
far as I remember, we deactivated it when we upgraded to ESLint 9
because it was not compatible with it. But its now.)
- [a3d2064b] Refactor ESLint config to use `defineConfig` and
`globalIgnores` ([these are like new
defaults](https://eslint.org/blog/2025/03/flat-config-extends-define-config-global-ignores/))
- [a3d2064b] Replace `eslint-plugin-import` with
`eslint-plugin-import-x`
(https://github.com/es-tooling/module-replacements/blob/main/docs/modules/eslint-plugin-import.md)
- [86a185b6] Switch Stylelint config to flat format and simplify
Stylelint scripts (like we already did for ESLint and prettier)
  - [f5a2c541] Fix some typos
2025-05-12 23:40:05 +02:00
sam detweiler
2422e847b1 Fix calendar rrule until where event is fullday but rrule until has a non-0 time (#3782)
This fixes #3781 

tests supplied

see
https://forum.magicmirror.builders/topic/19637/issue-with-outlook-recurring-events
2025-05-12 23:39:36 +02:00
dependabot[bot]
ed419ce5b3 Bump pm2 from 5.4.3 to 6.0.5 (#3776)
Bumps [pm2](https://github.com/Unitech/pm2) from 5.4.3 to 6.0.5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Unitech/pm2/releases">pm2's
releases</a>.</em></p>
<blockquote>
<h2>v6.0.5</h2>
<h1>6.0.5</h1>
<ul>
<li>Bun support - Fixes <a
href="https://redirect.github.com/Unitech/pm2/issues/5893">#5893</a> <a
href="https://redirect.github.com/Unitech/pm2/issues/5774">#5774</a> <a
href="https://redirect.github.com/Unitech/pm2/issues/5682">#5682</a> <a
href="https://redirect.github.com/Unitech/pm2/issues/5675">#5675</a> <a
href="https://redirect.github.com/Unitech/pm2/issues/5777">#5777</a></li>
<li>Disable git parsing by default <a
href="https://redirect.github.com/Unitech/pm2/issues/5909">#5909</a> <a
href="https://redirect.github.com/Unitech/pm2/issues/2182">#2182</a> <a
href="https://redirect.github.com/Unitech/pm2/issues/5801">#5801</a> <a
href="https://redirect.github.com/Unitech/pm2/issues/5051">#5051</a> <a
href="https://redirect.github.com/Unitech/pm2/issues/5696">#5696</a></li>
<li>Add WEBP content type for pm2 serve <a
href="https://redirect.github.com/Unitech/pm2/issues/5900">#5900</a> <a
href="https://github.com/tbo47"><code>@​tbo47</code></a></li>
<li>Enable PM2 module update from tarball <a
href="https://redirect.github.com/Unitech/pm2/issues/5906">#5906</a> <a
href="https://github.com/AYOKINYA"><code>@​AYOKINYA</code></a></li>
<li>Fix treekil on FreeBSD <a
href="https://redirect.github.com/Unitech/pm2/issues/5896">#5896</a> <a
href="https://github.com/skeyby"><code>@​skeyby</code></a></li>
<li>fix allowing to update namespaced pm2 NPM module
(<code>@​org/module-name</code>) <a
href="https://redirect.github.com/Unitech/pm2/issues/5915">#5915</a> <a
href="https://github.com/endelendel"><code>@​endelendel</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/Unitech/pm2/blob/master/CHANGELOG.md">pm2's
changelog</a>.</em></p>
<blockquote>
<h2>6.0.5</h2>
<ul>
<li>Bun support - Fixes <a
href="https://redirect.github.com/Unitech/pm2/issues/5893">#5893</a> <a
href="https://redirect.github.com/Unitech/pm2/issues/5774">#5774</a> <a
href="https://redirect.github.com/Unitech/pm2/issues/5682">#5682</a> <a
href="https://redirect.github.com/Unitech/pm2/issues/5675">#5675</a> <a
href="https://redirect.github.com/Unitech/pm2/issues/5777">#5777</a></li>
<li>Disable git parsing by default <a
href="https://redirect.github.com/Unitech/pm2/issues/5909">#5909</a> <a
href="https://redirect.github.com/Unitech/pm2/issues/2182">#2182</a> <a
href="https://redirect.github.com/Unitech/pm2/issues/5801">#5801</a> <a
href="https://redirect.github.com/Unitech/pm2/issues/5051">#5051</a> <a
href="https://redirect.github.com/Unitech/pm2/issues/5696">#5696</a></li>
<li>Add WEBP content type for pm2 serve <a
href="https://redirect.github.com/Unitech/pm2/issues/5900">#5900</a> <a
href="https://github.com/tbo47"><code>@​tbo47</code></a></li>
<li>Enable PM2 module update from tarball <a
href="https://redirect.github.com/Unitech/pm2/issues/5906">#5906</a> <a
href="https://github.com/AYOKINYA"><code>@​AYOKINYA</code></a></li>
<li>Fix treekil on FreeBSD <a
href="https://redirect.github.com/Unitech/pm2/issues/5896">#5896</a> <a
href="https://github.com/skeyby"><code>@​skeyby</code></a></li>
<li>fix allowing to update namespaced pm2 NPM module
(<code>@​org/module-name</code>) <a
href="https://redirect.github.com/Unitech/pm2/issues/5915">#5915</a> <a
href="https://github.com/endelendel"><code>@​endelendel</code></a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/Unitech/pm2/commits/v6.0.5">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pm2&package-manager=npm_and_yarn&previous-version=5.4.3&new-version=6.0.5)](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>
2025-05-09 22:47:20 +02:00
Karsten Hassel
53bff7243d update dependencies (#3774) 2025-05-09 22:35:09 +02:00
Bugsounet - Cédric
2831ae985c [Feature Request] Allow to make an display order of module position in config (#3762)
My proposal for #3761 

* I use `flex` box for create region container
* I have moved `container` definition to `main.css` (for css tunning,
maybe it can be useful)
* I create `order` in module config for define module order display from
position

# Advantage:

We don't have to move module config in another place in array of modules

# Another advantage that i did'nt think:

We can change dynamicaly module order of a container:

- So, in this case, for a module config builder, (I won't mention the
name because otherwise I'll get angry...)
It can be usefull for a config preview (before saving config)
--> just change style css `order` module value for see preview

- Or, change `order` value in dev console for testing

# Disadvantages

I don't see any ;)
2025-05-08 10:15:02 +02:00
Kristjan ESPERANTO
7b4d363b07 [fix] Fix start:dev script (#3773)
This will fix #3772 caused by #3764.

Since I work with `start:wayland:dev` instead of `start:dev`, I didn't
notice this, sorry.
2025-05-07 16:06:09 +02:00
Kristjan ESPERANTO
a5b85c4ab6 [workflow] Use LTS node version and split "Run test" step (#3767)
Two small changes to the workflows:

- Run linter and spellcheck workflows with LTS node version. The
advantage of this is that we no longer have to raise the node version
for them.
- Split "Run test" step into two steps for more clarity.
2025-05-07 07:51:01 +02:00
Kristjan ESPERANTO
b9d63d7252 Use "node --run" instead of "npm run" (#3764)
This has the advantage that the package manager is no longer involved
after the installation process.

However, previous start commands such as `npm run start` continue to
work. So we don't even have to adapt the documentation.
2025-05-06 20:33:42 +02:00
BugHaver
ff6682982f [feature] Introduce disableNextEvent to hide next sun event (#3769)
Hello and thank you for wanting to contribute to the MagicMirror²
project!

**Please make sure that you have followed these 4 rules before
submitting your Pull Request:**

> 1. Base your pull requests against the `develop` branch.
> 2. Include these infos in the description:
>
> - Does the pull request solve a **related** issue? No
> - If so, can you reference the issue like this `Fixes
#<issue_number>`? N/A
> - What does the pull request accomplish? Use a list if needed.
Introduce showNextEvent to show/hide next sun event
> - If it includes major visual changes please add screenshots.
>
![image](https://github.com/user-attachments/assets/410f6a82-e4fe-4c40-a477-8249149febf3)
> 3. Please run `npm run lint:prettier` before submitting so that
>    style issues are fixed.
> 4. Don't forget to add an entry about your changes to
>    the CHANGELOG.md file.

**Note**: Sometimes the development moves very fast. It is highly
recommended that you update your branch of `develop` before creating a
pull request to send us your changes. This makes everyone's lives
easier (including yours) and helps us out on the development team.

Thanks again and have a nice day!

---------

Co-authored-by: BugHaver <43462320+lsaadeh@users.noreply.github.com>
2025-04-27 18:37:17 +02:00
Kristjan ESPERANTO
e1a53ef2d5 [refactor] Simplify module loading process (#3766)
While debugging a 3rd party module, I looked at how modules are loaded
and realized that the `loadModules` method can be implemented much
simpler. This refactor makes the method easier to understand and
maintain.
2025-04-24 00:42:48 +02:00
veeck
86934c8375 Prepare v2.32.0-develop 2025-04-01 21:54:00 +02:00
veeck
7938c3a175 Merge branch 'mm_master' into mm_develop 2025-04-01 20:25:52 +02:00
veeck
a2c1daa667 Merge branch 'mm_master' into mm_develop 2025-04-01 19:18:19 +02:00
Veeck
01fd41c191 Prepare 2.31.0 release (#3757)
updated CHANGELOG and release process documentation

---------

Co-authored-by: veeck <gitkraken@veeck.de>
2025-04-01 18:47:56 +02:00
Veeck
f80b1f1321 Update deps before release (#3756)
Co-authored-by: veeck <gitkraken@veeck.de>
2025-04-01 08:33:31 +02:00
Karsten Hassel
e546fedeb1 updatenotification: add param to get modules from modules-dir instead… (#3755)
… from config

implements #3739
2025-03-31 17:57:42 +02:00
Karsten Hassel
2e57d785ac update dependencies (#3754) 2025-03-28 07:31:36 +01:00
OWL4C
6d909d24e9 [weather] add humidity to hourly view, fix spacing error when using UV Index, add config option to hide precipitation entries that are zero [Rebased Version of PR #3526] (#3748)
Fixed Version of PR #3526 since that was against the wrong branch and
had issues.

Original PR Text: 
Basically the title. Just some existing weather data included into
hourly, some config option ("hideZeroes") to hide precipitation when it
is zero (this actually shrinks the entire table, removing columns that
are completely empty), and add a spacing column to fix the UV Index
column.

---------

Co-authored-by: Veeck <github@veeck.de>
2025-03-27 21:23:17 +01:00
Kristjan ESPERANTO
2ddb7859f6 Fix command to run spellcheck (#3753)
The command wasn't correct.
2025-03-27 11:59:59 +01:00
Karsten Hassel
791f77105a fix stale job (#3751)
exclude issues with label `ready (coming with next release)` from stale
job
2025-03-22 21:23:10 +01:00
Karsten Hassel
46d64abb4b update required node version and dependencies (#3747)
see discussion in
https://github.com/MagicMirrorOrg/MagicMirror/pull/3746

As [electron v35 requires node js
v22.14.0](https://www.electronjs.org/blog/electron-35-0) we should
update this here too.
2025-03-21 12:30:08 +01:00
Kristjan ESPERANTO
68ec696c25 Update ESLint and prettier (#3746)
This will fix #3745.
2025-03-18 22:30:20 +01:00
Karsten Hassel
0cfe2730ea newsfeed: add specific ignoreOlderThan value (override) per feed (#3742)
fixes #3360 

superseeds https://github.com/MagicMirrorOrg/MagicMirror/pull/3429

had to open a new PR because getting `permission denied` when trying to
push to the old one.
2025-03-18 10:19:05 +01:00
sam detweiler
51d11bf26c add support for digital clock time color (#3737)
see
https://forum.magicmirror.builders/topic/19440/digital-clock-minutes-darker

changelog added

question.. 

we have a config parm for seconds color, but not hour/minute
I have used css here.. is that too inconsistent?

---------

Co-authored-by: Kristjan ESPERANTO <35647502+KristjanESPERANTO@users.noreply.github.com>
Co-authored-by: Veeck <github@veeck.de>
2025-03-16 15:33:27 +01:00
mixasgr
0afc1ed58d Updated Greek Translations (#3741)
Hello,

we have updated the core Greek translation and added Greek translation
to Alerts module.

Thank you!

---------

Co-authored-by: Savvas Adamtziloglou <savvas-gr@greeklug.gr>
Co-authored-by: Konstantinos <geraki@gmail.com>
Co-authored-by: Veeck <github@veeck.de>
2025-03-15 21:54:20 +01:00
Kristjan ESPERANTO
2adf341fef Add Esperanto translation (#3740)
I've had this on my agenda for a long time 🙂
2025-03-13 13:02:02 +01:00
Karsten Hassel
1fcc028e49 update dependencies incl. electron to v35 (#3733) 2025-03-05 12:28:25 +01:00
Nathan
66b8656595 Fix icons, add hourly support, add other weatherflow changes (#3729)
I have updated weatherflow.js to implement the following changes (as
described in #3728)

- Fixed: Weather icons now show up properly
- Added: Location Name support
- Added: Hourly weather forecast support
- Added to current conditions:
  - "Feels like" temp
- Fixed icon for current conditions to be sourced from current
conditions (rather than daily forecast)
  - UV index
- Added to daily forecast
  - Precipitation amount and UV index (via hourly forecast data)

Before:

![image](https://github.com/user-attachments/assets/cfef043c-75ef-4571-8bdc-462e75d3ed81)

After:

![image](https://github.com/user-attachments/assets/e36118bb-a508-4ab1-a7ad-a775bd7a9bb3)
2025-03-01 10:34:02 +01:00
Veeck
4a398f03eb Fix empty part-of-day logic (#3726)
Fixes #3727

---------

Co-authored-by: veeck <gitkraken@veeck.de>
2025-02-27 19:31:00 +01:00
Kristjan ESPERANTO
28bcee7de6 Update ESLint and simplify config (#3724)
This does not change the rules of ESLint. It's just a little cosmetic
fine-tuning.
2025-02-22 19:12:01 +01:00
DevIncomin
62c22d785c Arabic Translation (#3719)
Hello and thank you for wanting to contribute to the MagicMirror²
project!

**Please make sure that you have followed these 4 rules before
submitting your Pull Request:**

> 1. Base your pull requests against the `develop` branch.
> 2. Include these infos in the description:
>
> - Does the pull request solve a **related** issue?
> - If so, can you reference the issue like this `Fixes
#<issue_number>`?
> - What does the pull request accomplish? Use a list if needed.
> - If it includes major visual changes please add screenshots.
>
> 3. Please run `npm run lint:prettier` before submitting so that
>    style issues are fixed.
> 4. Don't forget to add an entry about your changes to
>    the CHANGELOG.md file.

**Note**: Sometimes the development moves very fast. It is highly
recommended that you update your branch of `develop` before creating a
pull request to send us your changes. This makes everyone's lives
easier (including yours) and helps us out on the development team.

Thanks again and have a nice day!
2025-02-06 10:00:41 +01:00
Veeck
aa20eadca3 Monthly update to dependencies (#3717)
nothing to see here really

---------

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>
2025-02-01 22:24:49 +01:00
Ikko Eltociear Ashimine
e00a666795 chore: update newsfeed.js (#3692)
Therefor -> Therefore

refs: #3690
2025-02-01 07:02:29 +01:00
Karsten Hassel
f34c8f2993 update github workflows (#3709)
to call `sudo apt-get update` before `sudo apt-get install`

I had problems running the tests on my fork, while running the `apt-get
install` command in automated tests workflow I got

```bash
E: Failed to fetch http://security.ubuntu.com/ubuntu/pool/main/m/mesa/libegl-mesa0_24.0.9-0ubuntu0.3_amd64.deb  404  Not Found [IP: 52.147.219.192 80]
```

Found a similar
[Issue](https://github.com/actions/runner-images/issues/10785#issuecomment-2420741561)
with a solution which is to run `sudo apt-get update` before.
2025-01-31 14:54:48 -07:00
Magnus
d6f2e7165f Fix frozen Yr weather-module (#3706)
Fixes #3296 

The problem was that the fetch-methods threw errors when something went
wrong instead of calling `updateAvailable()`. `updateAvailable()` must
be called in order to schedule the next update.

I added some filtering for the hourly forecast that removes hours in the
past. If the API call fails we use the cached data, but we should only
display hours in the future.
2025-01-27 22:41:51 +01:00
sam detweiler
af77b7b628 fix #3701, calculation wrong, added testcase, ics, config (#3702)
fixes #3701 

offset calculation wrong when user looking back at east coast event

added testcase
2025-01-23 08:37:41 +01:00
Kristjan ESPERANTO
53ac31dcf3 Adapt start:x11:dev script (#3700)
This doesn't actually change anything functionally, but with this we use
the same schema as for `start:wayland:dev` and `start:windows:dev`.
2025-01-19 16:29:28 +01:00
Kristjan ESPERANTO
77fe01175c Use different issue templates (#3695)
This PR will introduce different issue templates for bug reports,
feature requests and so on on GitHub. There is still room for
fine-tuning, but it's reached a state to show it to you and get
feedback.

I think that this can lead to better bug reports.

You can see the result in my repo:
https://github.com/KristjanESPERANTO/MagicMirror/issues/new/choose

Feel free to create new issues for testing.

What do you think? Do we want to pursue this further?
2025-01-17 19:03:28 +01:00
Karsten Hassel
6e40c446f4 fix wrong port in log message when starting server only (#3697)
fixes #3696
2025-01-14 22:58:14 +01:00
Karsten Hassel
2400e2045f update dependencies and formatting (#3693)
after updating deps 2 files needed formatting updates
2025-01-13 21:36:44 +01:00
Veeck
99dda821d3 Fix unknown (n/a) icon in openmeteo provider (#3691)
Due to a typo the icon displayed in the openmeteo provider was "N/A" for
a certain weather condition

<img width="284" alt="Bildschirmfoto 2025-01-13 um 16 35 40"
src="https://github.com/user-attachments/assets/e64bf0f8-32d9-44a5-a2b0-42d4f2d6b6df"
/>

---------

Co-authored-by: veeck <gitkraken@veeck.de>
2025-01-13 20:09:33 +01:00
Kristjan ESPERANTO
a7f814d76b Optimize systeminformation calls and output string (#3689)
Since we don't use the `raspberry` information, calling it in `si.get`
is useless.

I also made the string construction in the code a bit more readable. The
output remains the same.
2025-01-12 23:27:31 +01:00
Karsten Hassel
553d2d4a21 electron tests (#3684)
- fix setup to run with xserver and labwc
- remove electronParams from calendar_spec.js (forgotten in
https://github.com/MagicMirrorOrg/MagicMirror/pull/3680)

fixes [running tests locally without labwc
installed](https://github.com/MagicMirrorOrg/MagicMirror/pull/3681#issuecomment-2571736233)

follow up to https://github.com/MagicMirrorOrg/MagicMirror/pull/3680
2025-01-08 11:46:42 +01:00
Kristjan ESPERANTO
b1bc554729 Update year (#3686)
I also added a few new words to the cspell dictionary that were added in
the changelog.

I have not made an extra entry in the changelog for these tiny things.
2025-01-06 21:20:19 +01:00
sam detweiler
5e337f8b5f fix #3267, CORRECTLY, add testcase, add testcase for #3279 (#3681)
fixes #3267 AGAIN, correctly, add testcase
add testcase for #3679 , broadcast clipping incorrectly

I added a test module (tests/testNotification) to catch the notification
and check the count. (one way to configure)
i put this module in the tests folder, and added /tests to the server
paths.
(can't have a module in a nested folder, like tests/modules/xxx)

but I have a problem. i can run the test config (MM_CONFIG_FILE), and
the two modules work correctly,
but in the spec runner, the calendar module times out on the broadcast
test.. there is only local ics file access, no outside hosts

I forced my system date to 1/1/24 (same as runner) and again the manual
testcase works fine

I added two test config.js,(configs/calendar) one works great (symbols)
, one fails (broadcast test)
I added additional delay in the calendarspec runner to try to debug the
module, but it still not long enough.. no messages of trouble when I get
into the browser.. BUT, this may be because of the log being turned
off... (just thought of this)

I created a special ICS (in mocks) that has 12 events, 1 for each
month.. (so I can check clipping and broadcast) the US holidays one is
sensitive to the current date, and I couldn't get it to work on
1/1/2024..

also, in general, is there a mechanism to run test:just_one_runner?
waiting thru the electron test to get to one testcase.. ugh..
2025-01-05 22:25:32 +01:00
Karsten Hassel
8fdd865cb1 electron tests: fixes for running under new github image ubuntu-24.04 (#3680)
and replace xserver with labwc, fixes #3676
2025-01-05 11:07:34 +01:00
Karsten Hassel
0f6efac8e6 clientonly and wayland, hotfix electron tests (#3677)
clientonly:
- did work only with xserver and `DISPLAY` env var
- now checks for `WAYLAND_DISPLAY` or `DISPLAY` env var before running
- if `WAYLAND_DISPLAY` is set now starts with wayland parameters

electron tests see #3676
2025-01-03 21:52:10 +01:00
sam detweiler
75dbe67167 Fix calendar clipping before broadcast (#3679)
-fixes #3678
2025-01-03 19:10:29 +01:00
sam detweiler
6f50a7b3bd Release 2.31.0 (#3674)
begin next release
2025-01-01 10:33:17 -06:00
sam detweiler
9be625c72b ready for release 2.30.0 (#3672)
Update files impacted for release
2025-01-01 15:18:25 +01:00
Veeck
c92fbb8a7e Final dependency updates for v2.30 (#3671)
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>
2025-01-01 14:30:18 +01:00
Kristjan ESPERANTO
143dfd6b67 Add some ESLint rules + minor changes (#3665)
Main point was to enable ESLint `dot-notation` and `no-unneeded-ternary`
rules for more code consistency.

I took the occasion to add two minor commits:
- Fix a problem found by running `test:spelling
- Minor dependency update

It wouldn't be a problem if the PR didn't arrive in the next release,
the changes are cosmetic.
2024-12-30 12:24:51 +01:00
Karsten Hassel
d41ce81469 update dependencies, fix typo in Collaboration.md (#3664)
last dependency update before release
2024-12-28 20:18:45 +01:00
sam detweiler
93a0c24c22 fix #3662 line parse on windows with linux line ends (#3663)
line parse used os.EOL, which failed with linux line ends in index.html,
change to '\n'
2024-12-28 18:57:39 +01:00
Bugsounet - Cédric
9d0501f240 Fix: package-lock.json after PR #3660 (#3661)
continue from #3660 

Fix: package-lock.json (check node engine)
2024-12-27 14:20:24 +01:00
sam detweiler
6a09bc4ec4 add support for fetch timeout control for node_helpers, fix timeouts on armv6l (#3660)
user reporting slow/no connection/timeout errors on armv6l for calendar,
and newsfeed

we can increase the timeout by adding calls to the undici lib, but it
requires node 20.18.1 or above.

this adds the support for timeout
(also environment variable to override if needed,, mmFetchTimeout
(default 30 seconds)

and updates the base node version
2024-12-26 00:28:16 +01:00
Bugsounet - Cédric
2fb51436a5 delete exception allow-ghsas: GHSA-8hc4-vh64-cxmj in dep-review.yaml (#3659)
node needed with new version of `node-ical`
2024-12-24 15:20:29 +01:00
Kristjan ESPERANTO
0b3a04c520 Switch to 'npx' for lint-staged in pre-commit hook (#3658)
This way we get rid of the script entry in the `package.json` and the
whole thing becomes a little less complex.
2024-12-22 07:26:01 +01:00
Bugsounet - Cédric
c485ff670d path resolve and sub/sub folder module (#3653)
Fix:
 - use `path.resolve` for `moduleFolder` and `defaultModuleFolder` path
- Fix module path in case of sub/sub folder is used (sample
`module/test/test`)
 
---
case of module installation on `module/test/test`:

config will be:
```js
 {
    module: "test/test",
    ...
 }
```

module core will be:
```js
Module.register("test", {
...
```
`test.js` is used for module core (no change)

---

case of module installation on `module/test` (no change):
config will be:
```js
 {
    module: "test",
    ...
 }
```

module core will be:
```js
Module.register("test", {
...
```
so `test.js` is used for module core

---

In reality, with this patch, `module` config feature have 2
functionalites:
 -  determinate module path with more precision
 -  allow to use sub/sub folder in modules folder

---------

Co-authored-by: Veeck <github@veeck.de>
2024-12-18 22:07:09 +01:00
Karsten Hassel
b910c60eb2 update dependencies (#3657) 2024-12-18 22:04:16 +01:00
sam detweiler
24d9b70c4c fix access denied fault error writing js/positions.js (#3652)
if the MagicMirror js folder is not writable (synology nas created by
different user than docker container) there is an uncaught throw

```
[ERROR] EACCES: permission denied, open 'js/positions.js' 
```

add try/catch, output new message, console.error
```text
unable to write js/positions.js with the discovered module positions
make the MagicMirror/js folder writeable by the user starting MagicMirror 
```

MM will start, but no modules will show, as no positions were discovered
this file is used to pass the list from the server side to the browser
side

fixes #3651
2024-12-18 17:37:51 +01:00
sam detweiler
786eacf41a update config.js.sample about locale variable (#3655)
add text to config.js.sample about usage of locale variable/property

Co-authored-by: Veeck <github@veeck.de>
2024-12-18 13:43:20 +01:00
Kristjan ESPERANTO
5b3b40da66 Use project URL in fallback config (#3656) 2024-12-18 08:00:00 +01:00
sam detweiler
5232f46d44 fix #3267 again this time, dropped from big cal update (#3650)
this change was dropped from #3267 by mistake
2024-12-08 21:23:53 +01:00
sam detweiler
39ab651319 Show animations, fix export only on server side (#3649)
fix #3644 so only on server side
2024-12-08 16:24:39 +01:00
Kristjan ESPERANTO
76fac78909 Run code style checks in workflow only once (#3648)
It's enough if the code style checks are successful once, it's not
necessary to run them with every node version.

Also, if there is an error, we can see more quickly whether it is a code
style or a test-runner issue.
2024-12-07 18:29:49 +01:00
Kristjan ESPERANTO
5b7b76c877 Add linting for markdown files (#3646)
I also reworked the Linters section in `CONTRIBUTING.md` a bit and
switched the `prettier` config to a flat config.

Co-authored-by: Veeck <github@veeck.de>
2024-12-07 10:12:28 +01:00
sam detweiler
19bd76ab93 Fixcaldates2 fix calendar module date processing, using node-ical@0.20.1 (#3587)
here is an updated test version of the fixes for all kinds of calendar
date problems.

NOTE: the changed branch name
NOTE: this used the node-cal@0.19.0 library UNCHANGED

best to make a new folder and git clone there

git clone https://github.com/sdetweil/MagicMirror
cd MagicMirror
git checkout fixcaldates2 // <------ note this is a changed branch name
npm run install-mm
copy your config.js and custom.css from the prior folder
and the non-default modules you have installed…

this ONLY changes the default calendar
but DOES ship an updated node-ical library too

if you need to fall back, just rename the folders around again so that
your original is called MagicMirror

all the testcases for node-ical and MagicMirror execute successfully.

the ‘BIG’ change here is to get the local NON-TZ dates for the
rrule.between()

all the checking and conversion code is commented out or not used
the node-ical fixes are for excluded dates (exdate) values being
adjusted for DST/STD time… waiting to submit that PR

one fix in calendar.js for checking if a past date was too far back,
but it never checked to see IF the event date was in the past… (before
today) so it chopped off too many

and one change in calendarfetcher.js to put out a better diagnostic
message of the parsed data… (exdate was excluded cause JSON stringify
couldn’t convert the complex structure)

I added the tests you all have documented

please re-pull and checkout the new branch (I deleted the old branch)
and npm run install-mm again

---------

Co-authored-by: Veeck <github@veeck.de>
2024-12-07 09:51:11 +01:00
Kristjan ESPERANTO
291ae8546c Handle "module is not defined" in e2e tests (#3647)
Even in successful tests, there are many module not defined` error
entries. Like this:
https://github.com/MagicMirrorOrg/MagicMirror/actions/runs/12199106844/job/34032254241#step:5:353

I think we can suppress them.
2024-12-07 08:17:04 +01:00
sam detweiler
63178eba72 Export animations (#3644)
I am adding the animateIn/Out support to MMM-Config, but I need the list
of animations..
but they are not visible in js/animateCSS.js (from require)

adding an export satisfies that

side issue, these would go in a dropdown list
what value can I use for the default behavior? none/default?
don't want an error produced..
should I add code to check for this value to prevent error?
2024-12-02 10:17:19 +01:00
Kristjan ESPERANTO
07768c3a88 Reactivate eslint-plugin-package-json (#3643)
Somehow the plugin get lost when we moved to ESLint flat config. Now I
reactivated it.

One rules caused sorting the scripts. If this is not okay, I can undo
this and switch off the rule.

Thank's @bugsounet for the pinging in
https://github.com/MagicMirrorOrg/MagicMirror/pull/3637#issuecomment-2509771362.
2024-12-01 15:26:23 +01:00
dependabot[bot]
8d61336e8b Bump @fortawesome/fontawesome-free from 6.6.0 to 6.7.1 in /vendor (#3641)
Bumps
[@fortawesome/fontawesome-free](https://github.com/FortAwesome/Font-Awesome)
from 6.6.0 to 6.7.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/FortAwesome/Font-Awesome/releases"><code>@​fortawesome/fontawesome-free</code>'s
releases</a>.</em></p>
<blockquote>
<h2>Release 6.7.1</h2>
<p><strong>Change log available at <a
href="https://fontawesome.com/docs/changelog/">https://fontawesome.com/docs/changelog/</a></strong></p>
<h2>Release 6.7.0</h2>
<p><strong>Change log available at <a
href="https://fontawesome.com/docs/changelog/">https://fontawesome.com/docs/changelog/</a></strong></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="3447c58c6b"><code>3447c58</code></a>
Release 6.7.1 (<a
href="https://redirect.github.com/FortAwesome/Font-Awesome/issues/20426">#20426</a>)</li>
<li><a
href="a03a91d681"><code>a03a91d</code></a>
Release 6.7.0 (<a
href="https://redirect.github.com/FortAwesome/Font-Awesome/issues/20418">#20418</a>)</li>
<li>See full diff in <a
href="https://github.com/FortAwesome/Font-Awesome/compare/6.6.0...6.7.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@fortawesome/fontawesome-free&package-manager=npm_and_yarn&previous-version=6.6.0&new-version=6.7.1)](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>
2024-12-01 12:27:20 +01:00
dependabot[bot]
28341d4a54 Bump eslint-plugin-package-json from 0.15.4 to 0.17.0 (#3637)
Bumps
[eslint-plugin-package-json](https://github.com/JoshuaKGoldberg/eslint-plugin-package-json)
from 0.15.4 to 0.17.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/releases">eslint-plugin-package-json's
releases</a>.</em></p>
<blockquote>
<h2>v0.17.0</h2>
<h2>What's Changed</h2>
<ul>
<li>docs: add sasial-dev as a contributor for code by <a
href="https://github.com/allcontributors"><code>@​allcontributors</code></a>
in <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/669">JoshuaKGoldberg/eslint-plugin-package-json#669</a></li>
<li>feat: sort alphabetically with co-located hooks for
<code>scripts</code> by <a
href="https://github.com/sasial-dev"><code>@​sasial-dev</code></a> in <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/632">JoshuaKGoldberg/eslint-plugin-package-json#632</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/compare/v0.16.0...v0.17.0">https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/compare/v0.16.0...v0.17.0</a></p>
<h2>v0.16.0</h2>
<h2>What's Changed</h2>
<ul>
<li>chore(deps): update dependency cspell to v8.16.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/617">JoshuaKGoldberg/eslint-plugin-package-json#617</a></li>
<li>chore(deps): update dependency eslint-plugin-jsonc to v2.17.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/618">JoshuaKGoldberg/eslint-plugin-package-json#618</a></li>
<li>docs: add unique dependencies rule by <a
href="https://github.com/davidlj95"><code>@​davidlj95</code></a> in <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/620">JoshuaKGoldberg/eslint-plugin-package-json#620</a></li>
<li>docs: add rakleed as a contributor for ideas by <a
href="https://github.com/allcontributors"><code>@​allcontributors</code></a>
in <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/622">JoshuaKGoldberg/eslint-plugin-package-json#622</a></li>
<li>docs: add davidlj95 as a contributor for doc by <a
href="https://github.com/allcontributors"><code>@​allcontributors</code></a>
in <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/621">JoshuaKGoldberg/eslint-plugin-package-json#621</a></li>
<li>chore(deps): update dependency eslint-plugin-jsonc to v2.18.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/623">JoshuaKGoldberg/eslint-plugin-package-json#623</a></li>
<li>chore(deps): update dependency knip to v5.36.4 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/624">JoshuaKGoldberg/eslint-plugin-package-json#624</a></li>
<li>chore(deps): update dependency knip to v5.36.5 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/625">JoshuaKGoldberg/eslint-plugin-package-json#625</a></li>
<li>chore(deps): update dependency eslint-plugin-jsonc to v2.18.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/626">JoshuaKGoldberg/eslint-plugin-package-json#626</a></li>
<li>chore(deps): update dependency knip to v5.36.6 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/627">JoshuaKGoldberg/eslint-plugin-package-json#627</a></li>
<li>chore(deps): update dependency
<code>@​typescript-eslint/parser</code> to v8.14.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/628">JoshuaKGoldberg/eslint-plugin-package-json#628</a></li>
<li>chore(deps): update dependency knip to v5.36.7 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/629">JoshuaKGoldberg/eslint-plugin-package-json#629</a></li>
<li>chore(deps): update dependency
<code>@​release-it/conventional-changelog</code> to v9.0.3 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/630">JoshuaKGoldberg/eslint-plugin-package-json#630</a></li>
<li>chore(deps): update dependency eslint-plugin-jsdoc to v50.5.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/631">JoshuaKGoldberg/eslint-plugin-package-json#631</a></li>
<li>chore(deps): update pnpm to v9.13.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/633">JoshuaKGoldberg/eslint-plugin-package-json#633</a></li>
<li>chore(deps): update dependency knip to v5.37.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/634">JoshuaKGoldberg/eslint-plugin-package-json#634</a></li>
<li>chore(deps): update pnpm to v9.13.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/635">JoshuaKGoldberg/eslint-plugin-package-json#635</a></li>
<li>chore(deps): update dependency eslint-plugin-regexp to v2.7.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/636">JoshuaKGoldberg/eslint-plugin-package-json#636</a></li>
<li>chore(deps): update pnpm to v9.13.2 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/637">JoshuaKGoldberg/eslint-plugin-package-json#637</a></li>
<li>chore(deps): update codecov/codecov-action action to v5 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/638">JoshuaKGoldberg/eslint-plugin-package-json#638</a></li>
<li>chore(deps): update dependency knip to v5.37.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/639">JoshuaKGoldberg/eslint-plugin-package-json#639</a></li>
<li>chore(deps): update dependency eslint-plugin-jsonc to v2.18.2 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/640">JoshuaKGoldberg/eslint-plugin-package-json#640</a></li>
<li>chore(deps): update dependency husky to v9.1.7 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/641">JoshuaKGoldberg/eslint-plugin-package-json#641</a></li>
<li>chore(deps): update dependency
<code>@​typescript-eslint/parser</code> to v8.15.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/642">JoshuaKGoldberg/eslint-plugin-package-json#642</a></li>
<li>chore(deps): update dependency <code>@​types/node</code> to v22.9.1
by <a href="https://github.com/renovate"><code>@​renovate</code></a> in
<a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/644">JoshuaKGoldberg/eslint-plugin-package-json#644</a></li>
<li>chore(deps): update pnpm to v9.14.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/645">JoshuaKGoldberg/eslint-plugin-package-json#645</a></li>
<li>chore(deps): update pnpm to v9.14.2 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/646">JoshuaKGoldberg/eslint-plugin-package-json#646</a></li>
<li>chore(deps): update dependency prettier-plugin-packagejson to v2.5.5
by <a href="https://github.com/renovate"><code>@​renovate</code></a> in
<a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/647">JoshuaKGoldberg/eslint-plugin-package-json#647</a></li>
<li>chore(deps): update dependency knip to v5.37.2 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/649">JoshuaKGoldberg/eslint-plugin-package-json#649</a></li>
<li>chore(deps): update dependency typescript to v5.7.2 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/650">JoshuaKGoldberg/eslint-plugin-package-json#650</a></li>
<li>chore(deps): update dependency <code>@​types/node</code> to v22.9.2
by <a href="https://github.com/renovate"><code>@​renovate</code></a> in
<a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/651">JoshuaKGoldberg/eslint-plugin-package-json#651</a></li>
<li>chore(deps): update dependency <code>@​types/node</code> to v22.9.3
by <a href="https://github.com/renovate"><code>@​renovate</code></a> in
<a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/652">JoshuaKGoldberg/eslint-plugin-package-json#652</a></li>
<li>chore(deps): update dependency markdownlint-cli to ^0.43.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/653">JoshuaKGoldberg/eslint-plugin-package-json#653</a></li>
<li>docs: fix jsonc-eslint-parser installation instructions by <a
href="https://github.com/JoshuaKGoldberg"><code>@​JoshuaKGoldberg</code></a>
in <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/654">JoshuaKGoldberg/eslint-plugin-package-json#654</a></li>
<li>chore(deps): update dependency prettier-plugin-packagejson to v2.5.6
by <a href="https://github.com/renovate"><code>@​renovate</code></a> in
<a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/648">JoshuaKGoldberg/eslint-plugin-package-json#648</a></li>
<li>chore(deps): update dependency
<code>@​typescript-eslint/parser</code> to v8.16.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/656">JoshuaKGoldberg/eslint-plugin-package-json#656</a></li>
<li>chore(deps): update dependency <code>@​types/node</code> to v22.9.4
by <a href="https://github.com/renovate"><code>@​renovate</code></a> in
<a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/657">JoshuaKGoldberg/eslint-plugin-package-json#657</a></li>
<li>chore(deps): update dependency <code>@​types/node</code> to v22.10.0
by <a href="https://github.com/renovate"><code>@​renovate</code></a> in
<a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/658">JoshuaKGoldberg/eslint-plugin-package-json#658</a></li>
<li>chore(deps): update dependency knip to v5.38.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/659">JoshuaKGoldberg/eslint-plugin-package-json#659</a></li>
<li>chore(deps): update dependency eslint-plugin-jsdoc to v50.6.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a> in <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/pull/662">JoshuaKGoldberg/eslint-plugin-package-json#662</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/blob/main/CHANGELOG.md">eslint-plugin-package-json's
changelog</a>.</em></p>
<blockquote>
<h1><a
href="https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/compare/v0.16.0...v0.17.0">0.17.0</a>
(2024-11-30)</h1>
<h3>Features</h3>
<ul>
<li>sort alphabetically with co-located hooks for <code>scripts</code>
(<a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/issues/632">#632</a>)
(<a
href="4ccae4f58e">4ccae4f</a>),
closes <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/issues/499">#499</a>
<a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/issues/499">#499</a></li>
</ul>
<h1><a
href="https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/compare/v0.15.6...v0.16.0">0.16.0</a>
(2024-11-30)</h1>
<h3>Features</h3>
<ul>
<li><strong>sort-collections:</strong> should sort
<code>overrides</code> (<a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/issues/668">#668</a>)
(<a
href="18129cd5c4">18129cd</a>),
closes <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/issues/619">#619</a></li>
</ul>
<h2><a
href="https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/compare/v0.15.5...v0.15.6">0.15.6</a>
(2024-11-09)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>add sorting exports field (<a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/issues/615">#615</a>)
(<a
href="116c74be65">116c74b</a>),
closes <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/issues/000">#000</a></li>
</ul>
<h2><a
href="https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/compare/v0.15.4...v0.15.5">0.15.5</a>
(2024-11-06)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>add plugin export (<a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/issues/609">#609</a>)
(<a
href="a2c83b42c2">a2c83b4</a>),
closes <a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/issues/000">#000</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="a16b6ba552"><code>a16b6ba</code></a>
chore: release v0.17.0</li>
<li><a
href="4ccae4f58e"><code>4ccae4f</code></a>
feat: sort alphabetically with co-located hooks for <code>scripts</code>
(<a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/issues/632">#632</a>)</li>
<li><a
href="100ce08a05"><code>100ce08</code></a>
docs: add sasial-dev as a contributor for code (<a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/issues/669">#669</a>)</li>
<li><a
href="79a18e278c"><code>79a18e2</code></a>
chore: release v0.16.0</li>
<li><a
href="18129cd5c4"><code>18129cd</code></a>
feat(sort-collections): should sort <code>overrides</code> (<a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/issues/668">#668</a>)</li>
<li><a
href="36e68b70fb"><code>36e68b7</code></a>
chore(deps): update dependency cspell to v8.16.1 (<a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/issues/667">#667</a>)</li>
<li><a
href="189345dfb9"><code>189345d</code></a>
docs: add rakleed as a contributor for doc (<a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/issues/666">#666</a>)</li>
<li><a
href="3b23f4a054"><code>3b23f4a</code></a>
docs: add <code>Development</code> section in README (<a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/issues/665">#665</a>)</li>
<li><a
href="383fe630b8"><code>383fe63</code></a>
docs: add rakleed as a contributor for tool (<a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/issues/664">#664</a>)</li>
<li><a
href="4a6e3c4c4f"><code>4a6e3c4</code></a>
chore(deps): update dependency knip to v5.38.1 (<a
href="https://redirect.github.com/JoshuaKGoldberg/eslint-plugin-package-json/issues/663">#663</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/JoshuaKGoldberg/eslint-plugin-package-json/compare/v0.15.4...v0.17.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=eslint-plugin-package-json&package-manager=npm_and_yarn&previous-version=0.15.4&new-version=0.17.0)](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>
2024-12-01 12:01:50 +01:00
dependabot[bot]
f417bc0204 Bump prettier from 3.3.3 to 3.4.1 (#3638)
Bumps [prettier](https://github.com/prettier/prettier) from 3.3.3 to
3.4.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/prettier/prettier/releases">prettier's
releases</a>.</em></p>
<blockquote>
<h2>3.4.1</h2>
<p>🔗 <a
href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md#341">Changelog</a></p>
<h2>3.4.0</h2>
<p><a
href="https://github.com/prettier/prettier/compare/3.3.3...3.4.0">diff</a></p>
<p>🔗 <a href="https://prettier.io/blog/2024/11/26/3.4.0.html">Release
note</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/prettier/prettier/blob/main/CHANGELOG.md">prettier's
changelog</a>.</em></p>
<blockquote>
<h1>3.4.1</h1>
<p><a
href="https://github.com/prettier/prettier/compare/3.4.0...3.4.1">diff</a></p>
<h4>Remove unnecessary parentheses around assignment in
<code>v-on</code> (<a
href="https://redirect.github.com/prettier/prettier/pull/16887">#16887</a>
by <a href="https://github.com/fisker"><code>@​fisker</code></a>)</h4>
<!-- raw HTML omitted -->
<pre lang="vue"><code>&lt;!-- Input --&gt;
\&lt;template&gt;
  &lt;button @click=&quot;foo += 2&quot;&gt;Click&lt;/button&gt;
&lt;/template&gt;
<p>&lt;!-- Prettier 3.4.0 --&gt;<br />
&amp;lt;template&gt;<br />
&lt;button <a
href="https://github.com/click"><code>@​click</code></a>=&quot;(foo +=
2)&quot;&gt;Click&lt;/button&gt;<br />
&lt;/template&gt;</p>
<p>&lt;!-- Prettier 3.4.1 --&gt;<br />
&amp;lt;template&gt;<br />
&lt;button <a
href="https://github.com/click"><code>@​click</code></a>=&quot;foo +=
2&quot;&gt;Click&lt;/button&gt;<br />
&lt;/template&gt;<br />
</code></pre></p>
<h1>3.4.0</h1>
<p><a
href="https://github.com/prettier/prettier/compare/3.3.3...3.4.0">diff</a></p>
<p>🔗 <a href="https://prettier.io/blog/2024/11/26/3.4.0.html">Release
Notes</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="37fd1774d1"><code>37fd177</code></a>
Release 3.4.1</li>
<li><a
href="1fb629709a"><code>1fb6297</code></a>
Update ts-api-utils to v1.4.2 (<a
href="https://redirect.github.com/prettier/prettier/issues/16888">#16888</a>)</li>
<li><a
href="f6fccadbc7"><code>f6fccad</code></a>
Remove unnecessary parentheses around assignment in <code>v-on</code>
(<a
href="https://redirect.github.com/prettier/prettier/issues/16887">#16887</a>)</li>
<li><a
href="5fef089377"><code>5fef089</code></a>
Minor improvements in v3.4.0 blog post (<a
href="https://redirect.github.com/prettier/prettier/issues/16886">#16886</a>)</li>
<li><a
href="3542f13845"><code>3542f13</code></a>
3.4 release blog (<a
href="https://redirect.github.com/prettier/prettier/issues/16851">#16851</a>)</li>
<li><a
href="f53791a2c8"><code>f53791a</code></a>
Clean changelog_unreleased</li>
<li><a
href="2b41c937fc"><code>2b41c93</code></a>
Bump Prettier dependency to 3.4.0</li>
<li><a
href="10baab2f57"><code>10baab2</code></a>
Update dependents count</li>
<li><a
href="7999e10265"><code>7999e10</code></a>
Release 3.4.0</li>
<li><a
href="2262d1e4a3"><code>2262d1e</code></a>
chore(config): migrate renovate config (<a
href="https://redirect.github.com/prettier/prettier/issues/16884">#16884</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/prettier/prettier/compare/3.3.3...3.4.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=prettier&package-manager=npm_and_yarn&previous-version=3.3.3&new-version=3.4.1)](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>
2024-12-01 12:00:28 +01:00
dependabot[bot]
3627bebc3a Bump stylelint from 16.10.0 to 16.11.0 (#3639)
Bumps [stylelint](https://github.com/stylelint/stylelint) from 16.10.0
to 16.11.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/stylelint/stylelint/releases">stylelint's
releases</a>.</em></p>
<blockquote>
<h2>16.11.0</h2>
<ul>
<li>Added: <code>--report-unscoped-disables</code> CLI flag and
<code>reportUnscopedDisables</code> option to Node.js API and
configuration object (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8024">#8024</a>)
(<a
href="https://github.com/Mouvedia"><code>@​Mouvedia</code></a>).</li>
<li>Added: <code>ignoreFunctions: []</code> to
<code>media-query-no-invalid</code> (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8060">#8060</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Added: <code>name</code> configuration property under
<code>overrides</code> (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8095">#8095</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>benchmark-rule</code> script to resolve
<code>TypeError</code> (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8090">#8090</a>)
(<a
href="https://github.com/ybiquitous"><code>@​ybiquitous</code></a>).</li>
<li>Fixed: <code>github</code> formatter deprecation warning link to
<code>https://stylelint.io/awesome-stylelint#formatters</code> (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8115">#8115</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>function-calc-no-unspaced-operator</code> false
negatives for <code>calc-size</code> (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8026">#8026</a>)
(<a href="https://github.com/azat-io"><code>@​azat-io</code></a>).</li>
<li>Fixed: <code>max-nesting-depth</code> false positives when the
<code>&amp;</code> selector is being ignored (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8048">#8048</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>media-feature-name-value-no-unknown</code> false
positives for <code>display-mode: picture-in-picture</code> (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8136">#8136</a>)
(<a
href="https://github.com/Mouvedia"><code>@​Mouvedia</code></a>).</li>
<li>Fixed: <code>no-irregular-whitespace</code> reported ranges (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8066">#8066</a>)
(<a
href="https://github.com/romainmenke"><code>@​romainmenke</code></a>).</li>
<li>Fixed: <code>selector-attribute-name-disallowed-list</code> reported
ranges (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8037">#8037</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-attribute-operator-allowed-list</code>
reported ranges (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8038">#8038</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-attribute-operator-disallowed-list</code>
reported ranges (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8039">#8039</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-class-pattern</code> reported ranges (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8042">#8042</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-combinator-allowed-list</code> reported ranges
(<a
href="https://redirect.github.com/stylelint/stylelint/issues/8046">#8046</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-combinator-disallowed-list</code> reported
ranges (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8047">#8047</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-disallowed-list</code> reported ranges (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8067">#8067</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-id-pattern</code> reported ranges (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8045">#8045</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-max-attribute</code> reported ranges (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8052">#8052</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-max-class</code> reported ranges (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8053">#8053</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-max-combinators</code> reported-ranges (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8055">#8055</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-max-compound-selectors</code> reported ranges
(<a
href="https://redirect.github.com/stylelint/stylelint/issues/8056">#8056</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-max-id</code> reported ranges (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8054">#8054</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-max-pseudo-class</code> reported ranges (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8057">#8057</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-max-specificity</code> reported ranges (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8058">#8058</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-max-universal</code> reported ranges (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8059">#8059</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-nested-pattern</code> reported ranges (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8072">#8072</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-no-vendor-prefix</code> reported ranges (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8073">#8073</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-not-notation</code> reported ranges (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8074">#8074</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-pseudo-class-allowed-list</code> reported
ranges (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8061">#8061</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-pseudo-class-disallowed-list</code> reported
ranges (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8062">#8062</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-pseudo-class-no-unknown</code> reported ranges
(<a
href="https://redirect.github.com/stylelint/stylelint/issues/8063">#8063</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-pseudo-element-allowed-list</code> reported
ranges (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8068">#8068</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-pseudo-element-colon-notation</code> reported
ranges (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8069">#8069</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-pseudo-element-disallowed-list</code> reported
ranges (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8070">#8070</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-pseudo-element-no-unknown</code> false
positives for <code>::scroll-marker</code> and
<code>::scroll-marker-group</code> (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8110">#8110</a>)
(<a
href="https://github.com/Mouvedia"><code>@​Mouvedia</code></a>).</li>
<li>Fixed: <code>selector-pseudo-element-no-unknown</code> reported
ranges (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8071">#8071</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-type-no-unknown</code> reported ranges (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8076">#8076</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/stylelint/stylelint/blob/main/CHANGELOG.md">stylelint's
changelog</a>.</em></p>
<blockquote>
<h2>16.11.0</h2>
<ul>
<li>Added: <code>--report-unscoped-disables</code> CLI flag and
<code>reportUnscopedDisables</code> option to Node.js API and
configuration object (<a
href="https://redirect.github.com/stylelint/stylelint/pull/8024">#8024</a>)
(<a
href="https://github.com/Mouvedia"><code>@​Mouvedia</code></a>).</li>
<li>Added: <code>ignoreFunctions: []</code> to
<code>media-query-no-invalid</code> (<a
href="https://redirect.github.com/stylelint/stylelint/pull/8060">#8060</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Added: <code>name</code> configuration property under
<code>overrides</code> (<a
href="https://redirect.github.com/stylelint/stylelint/pull/8095">#8095</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>benchmark-rule</code> script to resolve
<code>TypeError</code> (<a
href="https://redirect.github.com/stylelint/stylelint/pull/8090">#8090</a>)
(<a
href="https://github.com/ybiquitous"><code>@​ybiquitous</code></a>).</li>
<li>Fixed: <code>github</code> formatter deprecation warning link to
<code>https://stylelint.io/awesome-stylelint#formatters</code> (<a
href="https://redirect.github.com/stylelint/stylelint/pull/8115">#8115</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>function-calc-no-unspaced-operator</code> false
negatives for <code>calc-size</code> (<a
href="https://redirect.github.com/stylelint/stylelint/pull/8026">#8026</a>)
(<a href="https://github.com/azat-io"><code>@​azat-io</code></a>).</li>
<li>Fixed: <code>max-nesting-depth</code> false positives when the
<code>&amp;</code> selector is being ignored (<a
href="https://redirect.github.com/stylelint/stylelint/pull/8048">#8048</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>media-feature-name-value-no-unknown</code> false
positives for <code>display-mode: picture-in-picture</code> (<a
href="https://redirect.github.com/stylelint/stylelint/pull/8136">#8136</a>)
(<a
href="https://github.com/Mouvedia"><code>@​Mouvedia</code></a>).</li>
<li>Fixed: <code>no-irregular-whitespace</code> reported ranges (<a
href="https://redirect.github.com/stylelint/stylelint/pull/8066">#8066</a>)
(<a
href="https://github.com/romainmenke"><code>@​romainmenke</code></a>).</li>
<li>Fixed: <code>selector-attribute-name-disallowed-list</code> reported
ranges (<a
href="https://redirect.github.com/stylelint/stylelint/pull/8037">#8037</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-attribute-operator-allowed-list</code>
reported ranges (<a
href="https://redirect.github.com/stylelint/stylelint/pull/8038">#8038</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-attribute-operator-disallowed-list</code>
reported ranges (<a
href="https://redirect.github.com/stylelint/stylelint/pull/8039">#8039</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-class-pattern</code> reported ranges (<a
href="https://redirect.github.com/stylelint/stylelint/pull/8042">#8042</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-combinator-allowed-list</code> reported ranges
(<a
href="https://redirect.github.com/stylelint/stylelint/pull/8046">#8046</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-combinator-disallowed-list</code> reported
ranges (<a
href="https://redirect.github.com/stylelint/stylelint/pull/8047">#8047</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-disallowed-list</code> reported ranges (<a
href="https://redirect.github.com/stylelint/stylelint/pull/8067">#8067</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-id-pattern</code> reported ranges (<a
href="https://redirect.github.com/stylelint/stylelint/pull/8045">#8045</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-max-attribute</code> reported ranges (<a
href="https://redirect.github.com/stylelint/stylelint/pull/8052">#8052</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-max-class</code> reported ranges (<a
href="https://redirect.github.com/stylelint/stylelint/pull/8053">#8053</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-max-combinators</code> reported-ranges (<a
href="https://redirect.github.com/stylelint/stylelint/pull/8055">#8055</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-max-compound-selectors</code> reported ranges
(<a
href="https://redirect.github.com/stylelint/stylelint/pull/8056">#8056</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-max-id</code> reported ranges (<a
href="https://redirect.github.com/stylelint/stylelint/pull/8054">#8054</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-max-pseudo-class</code> reported ranges (<a
href="https://redirect.github.com/stylelint/stylelint/pull/8057">#8057</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-max-specificity</code> reported ranges (<a
href="https://redirect.github.com/stylelint/stylelint/pull/8058">#8058</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-max-universal</code> reported ranges (<a
href="https://redirect.github.com/stylelint/stylelint/pull/8059">#8059</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-nested-pattern</code> reported ranges (<a
href="https://redirect.github.com/stylelint/stylelint/pull/8072">#8072</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-no-vendor-prefix</code> reported ranges (<a
href="https://redirect.github.com/stylelint/stylelint/pull/8073">#8073</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-not-notation</code> reported ranges (<a
href="https://redirect.github.com/stylelint/stylelint/pull/8074">#8074</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-pseudo-class-allowed-list</code> reported
ranges (<a
href="https://redirect.github.com/stylelint/stylelint/pull/8061">#8061</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-pseudo-class-disallowed-list</code> reported
ranges (<a
href="https://redirect.github.com/stylelint/stylelint/pull/8062">#8062</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-pseudo-class-no-unknown</code> reported ranges
(<a
href="https://redirect.github.com/stylelint/stylelint/pull/8063">#8063</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-pseudo-element-allowed-list</code> reported
ranges (<a
href="https://redirect.github.com/stylelint/stylelint/pull/8068">#8068</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-pseudo-element-colon-notation</code> reported
ranges (<a
href="https://redirect.github.com/stylelint/stylelint/pull/8069">#8069</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-pseudo-element-disallowed-list</code> reported
ranges (<a
href="https://redirect.github.com/stylelint/stylelint/pull/8070">#8070</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-pseudo-element-no-unknown</code> false
positives for <code>::scroll-marker</code> and
<code>::scroll-marker-group</code> (<a
href="https://redirect.github.com/stylelint/stylelint/pull/8110">#8110</a>)
(<a
href="https://github.com/Mouvedia"><code>@​Mouvedia</code></a>).</li>
<li>Fixed: <code>selector-pseudo-element-no-unknown</code> reported
ranges (<a
href="https://redirect.github.com/stylelint/stylelint/pull/8071">#8071</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
<li>Fixed: <code>selector-type-no-unknown</code> reported ranges (<a
href="https://redirect.github.com/stylelint/stylelint/pull/8076">#8076</a>)
(<a
href="https://github.com/ryo-manba"><code>@​ryo-manba</code></a>).</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="4385d8fcbf"><code>4385d8f</code></a>
16.11.0</li>
<li><a
href="d24438b924"><code>d24438b</code></a>
Prepare 16.11.0 (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8049">#8049</a>)</li>
<li><a
href="cce8a86596"><code>cce8a86</code></a>
Fix <code>font-family-no-missing-generic-family-keyword</code> false
positives for `font...</li>
<li><a
href="49f32a5089"><code>49f32a5</code></a>
Bump typescript from 5.6.3 to 5.7.2 in the typescript group (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8141">#8141</a>)</li>
<li><a
href="25cf2b306d"><code>25cf2b3</code></a>
Bump rollup from 4.27.2 to 4.27.4 (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8142">#8142</a>)</li>
<li><a
href="4a82b50a1d"><code>4a82b50</code></a>
Fix <code>media-feature-name-value-no-unknown</code> false positives for
`display-mode: ...</li>
<li><a
href="e1460bdbbd"><code>e1460bd</code></a>
Bump <code>@​changesets/cli</code> from 2.27.9 to 2.27.10 in the
changesets group (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8140">#8140</a>)</li>
<li><a
href="aefbb7afb4"><code>aefbb7a</code></a>
Bump rollup from 4.25.0 to 4.27.2 (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8130">#8130</a>)</li>
<li><a
href="3de7212316"><code>3de7212</code></a>
Enable tokenless upload for Codecov (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8131">#8131</a>)</li>
<li><a
href="bda98abd99"><code>bda98ab</code></a>
Bump eslint from 9.14.0 to 9.15.0 in the eslint group (<a
href="https://redirect.github.com/stylelint/stylelint/issues/8128">#8128</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/stylelint/stylelint/compare/16.10.0...16.11.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=stylelint&package-manager=npm_and_yarn&previous-version=16.10.0&new-version=16.11.0)](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>
2024-12-01 11:59:23 +01:00
Bugsounet - Cédric
bd1324cc42 Remove @eslint/js dependency. Already installed with eslint in deep (#3636)
I lint my modules and just see this:

`@eslint/js` is now not needed.
it's installed by `eslint` it self
2024-11-17 13:15:51 +01:00
Kristjan ESPERANTO
15baffdede Adapt to "Keep a Changelog" (#3634)
- Adapt heading and description to "Keep a Changelog" guideline v1.1.0
- Add missing links at the end - with this, users can click on the
version number to see the diffs (I think this was intended from the
beginning)
- Fix two bare URLs

## The link fix
Before (the link on the version number doesn't work):
![Screenshot from 2024-11-14
01-15-07](https://github.com/user-attachments/assets/e0ff4eee-abc8-4ba8-9fb7-f18fd3279ddf)

After (the link on the version number works):
![Screenshot from 2024-11-14
01-15-52](https://github.com/user-attachments/assets/7b2997e7-cf6d-4e23-b4fc-50536174f4c6)
2024-11-14 19:05:41 +01:00
sam detweiler
bd620e0061 Enhance compliments remote file with refresh support (#3630)
add support to refresh the compliments remotefile
add testcases for both without refresh (testcase missing) and with
refresh

doc to be updated
2024-11-13 09:57:55 +01:00
Kristjan ESPERANTO
f1522da153 Fix eslint ignores (#3633)
This will fix #3632.
2024-11-12 21:05:31 +01:00
sam detweiler
56cb536df1 add support for test mode detection in modulename.js via index.html (#3631)
in some cases the modulename.js may need to detect running in test mode
(compliments pr #3630)

window.name is not set  web mode

add a new field to the index.html 
window.intest 
and use the server_function to replace the hard coded string like we do
for window.mmversion=#VERSION#
then change the two  test helpers to set the env variable
app.js detects and sets global.intest=true
server func replace with value of global.intest

then module can use   if(window.intest)
2024-11-12 15:58:36 +01:00
Bugsounet - Cédric
4259d7c075 updatenotification: some fixes (#3628)
continue from #3626 

Is it ok for you ?
2024-11-09 09:59:12 +01:00
Bugsounet - Cédric
cd6f10c843 PM2 Fix (again): add pm2_env.unique_id checking and cleaning (#3626)
#3605 : new purpose code with `pm2_env.unique_id` checking
2024-11-07 11:38:46 +01:00
dependabot[bot]
b250cfa0ee Bump croner from 8.1.2 to 9.0.0 in /vendor (#3614)
Bumps [croner](https://github.com/hexagon/croner) from 8.1.2 to 9.0.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/hexagon/croner/releases">croner's
releases</a>.</em></p>
<blockquote>
<h2>9.0.0</h2>
<h2>Croner 9.0.0</h2>
<p>This major release brings significant changes to Croner, improving
consistency, fixing bugs, and modernizing the codebase.</p>
<h3>Changes</h3>
<ul>
<li>
<p><strong>Bug Fixes:</strong></p>
<ul>
<li>Fixed an issue where &quot;every X seconds&quot; crons would fail
with a &quot;maximum call stack exceeded&quot; error (<a
href="https://redirect.github.com/hexagon/croner/issues/260">#260</a>).</li>
<li>Fixed an issue where types were not supported when using ES module
via <a href="https://jsr.io">jsr.io</a> (<a
href="https://redirect.github.com/hexagon/croner/issues/258">#258</a>).</li>
</ul>
</li>
<li>
<p><strong>API Changes:</strong></p>
<ul>
<li>The <code>new</code> keyword is now mandatory when instantiating
Croner (e.g., <code>new Cron(/* ... */)</code>).</li>
<li>The default export has been removed. You now need to use
<code>import { Cron } from 'croner';</code> or <code>const { Cron } =
require('croner');</code>.</li>
</ul>
</li>
<li>
<p><strong>File Structure Changes</strong> <em>(relevant for direct file
access)</em>:</p>
<ul>
<li>All files in the <code>/dist</code> directory are now minified.
<code>croner.min.js</code> has been renamed to
<code>croner.js</code>.</li>
<li>Typings have been moved from <code>/types</code> to
<code>/dist</code>.</li>
<li>Only the <code>/src</code> directory is exposed in the jsr module <a
href="https://jsr.io/@hexagon/croner">jsr.io/<code>@​hexagon/croner</code></a>.</li>
</ul>
</li>
<li>
<p><strong>Codebase Modernization:</strong></p>
<ul>
<li>The entire codebase has been migrated from JavaScript with JSDoc to
TypeScript.</li>
<li>Deno is now used for formatting, type checking, and linting,
resulting in a cleaner and more maintainable repository. Esbuild is used
to build the <a href="https://www.npmjs.com/package/croner">npm
module</a> and typings.</li>
</ul>
</li>
</ul>
<p><strong>Upgrade Notice:</strong></p>
<p>Due to the API and file structure changes, upgrading from 8.x to 9.x
may require modifications to your existing code. Please review the above
changes carefully before migrating.</p>
<h2>9.0.0-dev.12</h2>
<ul>
<li>Test new release workflow</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="244a439e6e"><code>244a439</code></a>
Merge pull request <a
href="https://redirect.github.com/hexagon/croner/issues/263">#263</a>
from Hexagon/dev</li>
<li><a
href="7e280b5b8a"><code>7e280b5</code></a>
Bump version to 9.0.0 stable</li>
<li><a
href="c99144fe95"><code>c99144f</code></a>
Remove CodeQl. Rename dev release workflow.</li>
<li><a
href="4847b7d097"><code>4847b7d</code></a>
Merge pull request <a
href="https://redirect.github.com/hexagon/croner/issues/262">#262</a>
from Hexagon/dev</li>
<li><a
href="7bfefc49ed"><code>7bfefc4</code></a>
Fix workflow name</li>
<li><a
href="020cf92959"><code>020cf92</code></a>
Bump version.</li>
<li><a
href="40dabf4fa5"><code>40dabf4</code></a>
Fix npm release ci. Improve tsdoc. Refactor build script.</li>
<li><a
href="c45e868a92"><code>c45e868</code></a>
Increase timeout</li>
<li><a
href="df7974a13b"><code>df7974a</code></a>
Re-enable more async tests</li>
<li><a
href="8304e287cf"><code>8304e28</code></a>
Re-add async tests</li>
<li>Additional commits viewable in <a
href="https://github.com/hexagon/croner/compare/8.1.2...9.0.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=croner&package-manager=npm_and_yarn&previous-version=8.1.2&new-version=9.0.0)](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>
2024-11-04 17:50:09 +01:00
sam detweiler
7e6349c093 Fix compliments croner (#3625)
croner changed the filename we need to use in the latest version
fix the alias table in vendor/vendor.js

fixes #3624
2024-11-04 17:41:48 +01:00
Kristjan ESPERANTO
6ce3622c61 Add spelling check to GitHub workflow (#3623)
Besides updating cspell and handling spelling issues, the important
change is adding the spelling check to the GitHub workflow.

I'm not sure if it will bother us too much when people create PRs. But I
wanted to give it a try. Or do you have any other ideas on how we can
run the spelling check on a regular basis?
2024-11-03 21:49:00 +01:00
Veeck
0aae771799 Update dependencies reported by Dependabot (#3621)
... maybe we should group those dependabot PRs someday (see
https://docs.github.com/en/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file#groups)

---------

Co-authored-by: veeck <gitkraken@veeck.de>
2024-11-02 15:58:20 +01:00
Karsten Hassel
9114aefecc fix missing basePath (#3620)
fixes #3613 

wanted to write a test for `basePath` but have no idea at the moment to
simulate this without a reverse proxy.

Here my test setup for documentation:
```yaml
networks:
  proxy:
    driver: bridge

services:
  socket-proxy:
    privileged: true
    image: tecnativa/docker-socket-proxy:edge
    container_name: socket-proxy
    restart: unless-stopped
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
    environment:
      CONTAINERS: 1
    ports:
      - "127.0.0.1:2375:2375"
    networks:
      - proxy

  traefik:
    image: traefik:latest
    container_name: traefik
    restart: unless-stopped
    user: 1000:1000
    command:
      - "--providers.docker=true"
      - "--providers.docker.network=traefik_proxy"
      - "--providers.docker.endpoint=tcp://socket-proxy:2375"
      - "--entryPoints.http.address=:80"
      - "--global.sendAnonymousUsage=false"
      - "--log.level=INFO"
      - "--api=true"
      - "--api.dashboard=true"
#      - "--accessLog=true"
#      - "--accesslog.fields.defaultmode=keep"
#      - "--accesslog.fields.headers.defaultmode=keep"
    networks:
      - proxy
    ports:
      - "80:80"

  magicmirror:
    image: karsten13/magicmirror:develop
    container_name: mm
    restart: unless-stopped
    entrypoint:
      - sleep
      - infinity
    networks:
      - proxy
    labels:
      - "traefik.http.services.karsten13.loadbalancer.server.port=8080"
      - "traefik.http.routers.k13-http.service=karsten13"
      - "traefik.http.routers.k13-http.entrypoints=http"
      - "traefik.http.routers.k13-http.rule=Host(`localhost`) && PathPrefix(`/testbasepath`)"
      - "traefik.http.middlewares.k13-stripprefix.stripprefix.prefixes=/testbasepath"
      - "traefik.http.routers.k13-http.middlewares=k13-stripprefix"
```
2024-11-02 08:22:27 +01:00
Bugsounet - Cédric
399e2ae1da [updatenotification] Fix pm2 using detection when pm2 script is inside or outside MagicMirror root folder (#3605)
This will fix #3576 

@FrankBlackMG: 

I don't use `*env.unique_id` because some others modules can use pm2 too
for starting a service and unique_id is the same (this will make
confusion)
So I check `name` and `pm_id` for found it
2024-10-28 10:32:39 +01:00
sam detweiler
c96326b760 Cleanup testcases that had hard coded Date() values which override the testcase runner (#3601)
cleanup testcases with hard coded Date settings after #3597
2024-10-25 20:52:00 +02:00
Karsten Hassel
cfa5c0d127 fix electron tests mocking dates (#3599)
fixes #3597 

Changes:
- electron tests: add mocking to `electron.js` for mocking the server
side, before only the browser side was mocked
- publish "/tests/configs" and "/tests/mocks" always in `server.js`,
this reverts a change done with latest release, we need this for
debugging (otherwise you get on the screen that your config has errors
but config check is successful ...)
- revert hotfix in
`tests/configs/modules/calendar/show-duplicates-in-calendar.js`
- fix `tests/configs/modules/calendar/custom.js` to allow events in the
past (~~I don't know how this could work before~~ when testing css
classes `yesterday` and `dayBeforeYesterday` --> it worked before
because the server side did not mock and therefore was not in the past)
2024-10-25 11:34:35 +02:00
sam detweiler
6946b49977 Fixtestcase calendar testcase failure (#3596)
fix calendar testcase failing after date change (exposes helper failure)
2024-10-23 23:46:32 +02:00
Kristjan ESPERANTO
aa7e856170 Add wayland and windows start options (#3594)
This PR adds start options for Wayland and Windows.

This would solve issue #3582.

**To Do if this PR is merged:**

- [ ] Adjust [Windows
section](https://docs.magicmirror.builders/getting-started/installation.html#windows)
in documentation
- [ ] Add Wayland section to the documentation
2024-10-23 21:42:29 +02:00
Veeck
b54fc08da7 Add npm publishing step to release process (#3595)
so that the npm version also stays in sync and
https://github.com/MagicMirrorOrg/MagicMirror/issues/2876 can be closed
for good
2024-10-23 20:47:01 +02:00
Kristjan ESPERANTO
0f024cff4e Run and test with node 23 (#3588) 2024-10-19 12:11:20 +02:00
Veeck
fff31068ab Re-add eslint-plugin-import (#3586)
eslint-plugin-import was missing since the switch to
[v9](https://github.com/MagicMirrorOrg/MagicMirror/pull/3558). They
finally
[support](https://github.com/import-js/eslint-plugin-import/pull/2996)
it so we can re-add it.
2024-10-13 15:22:02 +02:00
Karsten Hassel
3d1e8ab849 add address and ipWhitelist to all test configs (#3585)
All test configs have been updated to allow full external access,
allowing for easier debugging (especially when running as a container)
2024-10-12 07:53:58 +02:00
Bugsounet - Cédric
1b80e87563 [core] test electron v32 and electron rebuild (#3584)
test deps: nan v2.22.0 and electron v32
2024-10-11 11:57:34 +02:00
HeikoGr
7489e51a67 Change default for weatherEndpoint according to API 3.0 (#3583)
since API 3.0 is default, weatherEndpoint should be set to "/onecall"
Fixes #3574

ATTENTION: since lat / lon defaults to 0 / 0, the weather plugins works
after this patch, but shows the weather from
https://de.wikipedia.org/wiki/Null_Island if lat / lon is not manually
set.

---------

Co-authored-by: Karsten Hassel <hassel@gmx.de>
Co-authored-by: Pedro Lamas <pedrolamas@gmail.com>
2024-10-11 08:51:00 +02:00
Karsten Hassel
0130dc45ab stale workflow: increase operations-per-run (default=30) so that all … (#3581)
…issues can be processed
2024-10-05 22:41:41 +02:00
Karsten Hassel
c7dcf542cf allow manually running stale workflow (#3580) 2024-10-05 19:47:34 +02:00
Bugsounet - Cédric
961bae637c [core] add try / catch on mode_helper loading (#3578)
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
2024-10-05 15:23:36 +02:00
Karsten Hassel
f51fbe39c4 reactivated stale.yaml as github action (#3577)
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.
2024-10-04 21:47:07 +02:00
dependabot[bot]
f91340ceca Bump helmet from 7.1.0 to 8.0.0 (#3570)
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 &quot;includeSubDomains&quot; 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="9a8e6d5322"><code>9a8e6d5</code></a>
8.0.0</li>
<li><a
href="6562cd7074"><code>6562cd7</code></a>
CSP: speed up <code>getDefaultDirectives</code></li>
<li><a
href="a8befb3b9d"><code>a8befb3</code></a>
<code>getDefaultDirectives</code> should do a deep copy</li>
<li><a
href="558ef2ce90"><code>558ef2c</code></a>
HSTS: throw when misspelling &quot;includeSubDomains&quot; option</li>
<li><a
href="73e75952fe"><code>73e7595</code></a>
Content-Security-Policy: throw if directive value lacks necessary
quotes</li>
<li><a
href="76410e1093"><code>76410e1</code></a>
Content-Security-Policy can now use Object.hasOwn</li>
<li><a
href="293bd18bf5"><code>293bd18</code></a>
Strict-Transport-Security: increase max-age to 1 year</li>
<li><a
href="898cdc4c61"><code>898cdc4</code></a>
Require Node 18+</li>
<li><a
href="7e2b06947f"><code>7e2b069</code></a>
7.2.0</li>
<li><a
href="7bea9158d4"><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 />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=helmet&package-manager=npm_and_yarn&previous-version=7.1.0&new-version=8.0.0)](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>
2024-10-02 18:42:05 +02:00
dependabot[bot]
0eafa19096 Bump eslint-plugin-jsdoc from 50.3.0 to 50.3.1 (#3571)
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="34866bc988">34866bc</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="34866bc988"><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 />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=eslint-plugin-jsdoc&package-manager=npm_and_yarn&previous-version=50.3.0&new-version=50.3.1)](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>
2024-10-02 18:41:36 +02:00
Bugsounet - Cédric
ee98a0c7e5 [UpdateNotification] Fix pm2 using detection when pm2 script is in MagicMirror 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 
```
2024-10-02 18:33:46 +02:00
Bugsounet - Cédric
4c7c859ae6 [Electron rebuild] Removed node-pty and drivelist from rebuilded test (#3575)
Related to #3573 

I think it's better to keep new library node-libgpiod for testing
(library to manage RPI gpio for pir sensor management) and delete others
Only one test is better
2024-10-02 18:31:57 +02:00
Karsten Hassel
d1be92a426 Prepare v2.30.0-develop 2024-10-01 00:09:29 +02:00
Karsten Hassel
15a934641d Merge remote-tracking branch 'origin/master' into develop 2024-10-01 00:06:36 +02:00
Karsten Hassel
d84d612df5 Release 2.29.0 2024-09-30 23:49:05 +02:00
Karsten Hassel
719eca49fe update dependencies, nail down node-ical version to 0.18.0 (#3566)
- node-ical use `0.18.0` instead of `^0.18.0` in `package.json`
- cleanup `package-lock.json`
2024-09-28 15:33:53 -05:00
sam detweiler
d9eefff066 fix double load of positions now that check:config at startup is active (#3565)
after adding check:config to the MM startup process, #3450, we
accidentally discover module positions more than once, and write the
file each time..

add a check to see if we have done this work already
2024-09-28 15:52:09 +02:00
Bugsounet - Cédric
731512c2e5 Electron rebuild tests update (#3563)
# 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
2024-09-26 19:09:39 +02:00
Bugsounet - Cédric
ebaeed935f Engine except on node v21 (#3561)
in addition of #3559 

except with node v21: no security updates and EOL
2024-09-26 19:09:10 +02:00
Marc Landis
2e6e86887b fix calendar showing previous day when using sliceMultiDayEvents (#3555)
This bug is caused by #3543.

The calculation for midnight adds a day but for endDate we want the day
to be subtracted again.
2024-09-25 21:16:43 +02:00
Kristjan ESPERANTO
d3187689f0 Switch to ESLint v9 and flat config (#3558)
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.
2024-09-25 21:05:11 +02:00
Bugsounet - Cédric
5ffdf9af09 Updated minimal needed node version in package.json (currently v20.9.0) (#3559)
Update of package*.json for minimal node verion requirement (v20.9.0)

 * it's an addition to #3556
* According to changelog v2.28.0: `⚠️ This release needs nodejs version
>= v20.9.0`
2024-09-25 09:03:09 +02:00
Karsten Hassel
08116b8e64 fixes for running tests for MM_MODULES_DIR (#3550)
and ignore `js/positions.js` when linting (because this file is
generated at runtime).
2024-09-24 22:38:00 +02:00
Karsten Hassel
fa6a7521b4 add tests for minimal node version (currently v20.9.0) (#3556)
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`.
2024-09-24 22:09:28 +02:00
Veeck
06a8b517aa Cleanup github actions (#3549)
- should now correct itself when one changes from (accidentaly selected)
master to develop
- also fixes wrong CHANGELOG entry from
https://github.com/MagicMirrorOrg/MagicMirror/pull/3481
- update deps a little
2024-09-19 12:25:41 +02:00
Ryan Williams
1823f5a130 Updated to new notification name DOM_OBJECTS_UPDATED -> MODULE_DOM_UPDATED (#3548)
This is an update to #3535. See #3534 for discussion and context. Fixes
#3534 (again).
2024-09-19 07:29:43 +02:00
Karsten Hassel
8f5aa50d79 added test for MM_MODULES_DIR (#3546)
uses newsfeed test after copying this module to config dir

addition for #3530
2024-09-19 07:29:04 +02:00
Karsten Hassel
65d7e2d067 fix CHANGELOG.md 2024-09-18 21:53:18 +02:00
Kristjan ESPERANTO
06f6fbf49b Review config_check.js (#3545)
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
2024-09-18 21:39:02 +02:00
Ryan Williams
c6e05c9fec Added DOM_OBJECTS_UPDATED notification when the DOM is re-rendered 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).
2024-09-18 19:40:46 +02:00
Kristjan ESPERANTO
866419eb95 Check config before starting MM (#3450)
I think it might be a good idea to check the config at every start.
2024-09-18 19:37:25 +02:00
Karsten Hassel
659e0c74cb add new env vars MM_MODULES_DIR and MM_CUSTOMCSS_FILE … (#3530)
… 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).
2024-09-18 19:10:46 +02:00
Kristjan ESPERANTO
d9f9f41e98 Add spell check (#3544)
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?
2024-09-18 07:37:09 +02:00
sam detweiler
ea3a323581 add fix for sliceMultiDayEvents (#3543)
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
2024-09-17 08:01:49 +02:00
Karsten Hassel
0faefd109a fixes calendar test by moving it from e2e to electron with fixed date (#3540)
and refactor tests/electron/modules/calendar_spec.js

fixes #3532
2024-09-15 08:36:11 +02:00
Karsten Hassel
81351fb4cc update dependencies (#3536) 2024-09-14 22:05:20 +02:00
Karsten Hassel
3380314c11 hotfix for calendar_spec.js (used data now returns 20 events) (#3533)
fixes #3532
2024-09-13 16:52:34 -05:00
Kristjan ESPERANTO
bca5d9c845 Ignore positions.js (#3531)
This file is generated when MM is started. As I understand it, it should
not be included in the repository.

Should probably have been part of #3518.
2024-09-11 23:12:34 +02:00
Karsten Hassel
7915de3149 update dependencies (#3527)
We cannot upgrade to electron v32 because electron-rebuild is failing
with epoll, so staying at v31.
2024-08-31 07:14:30 +02:00
sam detweiler
2b97e0d26e add support for custom regions, by detecting what is used in index.html (#3518)
read index.html to discover the regions used, make them the list checked
by app.js and check:config test

fixes #3504   supercedes #3506 

no config.js param required
2024-08-27 22:52:59 +02:00
Panagiotis Skias
56736786fd Bug in Weather Units for Broadcasted Notification (#3519)
This PR resolve Issue number #3419 .

I have added the method `convertWeatherObjectToImperial()` which
converts the units of the `notificationPayload` to imperial if needed,
in order to pass the object in `sendNotification()`.

---------

Co-authored-by: veeck <michael.veeck@nebenan.de>
2024-08-18 10:04:51 +02:00
Ryan Williams
cc1d4ab240 Improve duplicate module filtering. Update SocketIO catch-all API. (#3523)
- [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 #3521

> - If so, can you reference the issue like this `Fixes
#<issue_number>`?
Fixes #3521 (also mentioned in commit message)

> - What does the pull request accomplish? Use a list if needed.

> > - Updates duplicate module filter method (upstream vs downstream -
see #3502)
> > - Updates socket io catchall functionality to new API
[[docs](https://socket.io/docs/v4/listening-to-events/)].

- [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.
2024-08-18 09:25:01 +02:00
Veeck
976c8ae00a Bump stylistic-eslint (#3520)
updates plugin and adjust docs and config for smooth cleaning :-D

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-12 22:52:43 +02:00
sam detweiler
780e4e2e06 Fix loading of multiple instances of node_helper when multiple instances of a module are in config.js (#3517)
adds a check for already loaded/loading for node helper of a each
module, only does once

fixes #3502
2024-08-04 21:28:20 +02:00
Karsten Hassel
76d8f98969 allow custom module positions by setting allowCustomModulePositions… (#3506)
… in `config.js`

fixes #3504, related to
https://github.com/MagicMirrorOrg/MagicMirror/pull/3445
2024-08-01 21:24:16 +02:00
Veeck
4182c2129f Update dependencies (#3515)
its the start of the month so dependabot is waking up :-)
2024-08-01 19:00:36 +02:00
Karsten Hassel
d22d0e1f87 remove raspberry object from systeminformation (#3507)
fixes #3505
2024-07-29 12:22:59 +02:00
sam detweiler
d9665b35df Update compliments with support for cron type date/time for selections, addition to just date. (#3481)
> - What does the pull request accomplish? Use a list if needed.

this change allows uses to configure date/time events for compliments..
also linked site that will build the cron entry..

and example was Happy hour in a pub, on fri/sat between 5 and 7 pm. 

or just after midnight on Halloween (Boooooo!)

I also added testcases for #3478 

(and added support for this in MMM-Config), with a custom, drop down
selection list of the types.. )

|  if this is approved I will update the module doc
2024-07-15 19:51:05 +02:00
Daniel
974a1da9f0 [weather] update provider openweathermap to new apiVersion (#3496)
Co-authored-by: Karsten Hassel <hassel@gmx.de>
2024-07-11 13:37:44 +02:00
jargordon
4d14f4a2c1 Fixes the UK Met Office Datahub provider (#3499)
Fixes #3384

Changed the UKMetOfficeDataHub provider to the new API structure as per
the documentation.

API Base URL updated.
Header information amended to the correct key name.
API Secret no longer required so removed.

Changelog updated to reflect the change.
2024-07-07 16:36:59 -05:00
Karsten Hassel
3b22622054 fixes checks badge in README.md (#3494)
old url: 

![grafik](https://github.com/MagicMirrorOrg/MagicMirror/assets/25914086/025597f2-c1f1-4879-a76c-5a20c7b7099e)


new url:

![grafik](https://github.com/MagicMirrorOrg/MagicMirror/assets/25914086/f3b8850e-3fe4-4cb0-aa07-7525eb8f82eb)
2024-07-04 22:47:21 +02:00
sam detweiler
160d95ac34 Cleanup folders for #3492 (#3493)
remove installer only files. into installer

addresses #3492
2024-07-02 00:09:50 +02:00
Karsten Hassel
f7369a7e85 Prepare v2.29.0-develop 2024-06-30 23:53:28 +02:00
Karsten Hassel
7389a33f80 Merge remote-tracking branch 'origin/master' into develop 2024-06-30 23:50:35 +02:00
Karsten Hassel
795e5c76c1 Release 2.28.0 2024-06-30 23:25:27 +02:00
Karsten Hassel
92ac3895a7 updatenotification: avoid using pm2 when running in docker container (#3484)
related to #3480 

Change module updatenotification so that it can work without `pm2` in a
docker container.

It now tests if file `/.dockerenv` exists and if so `require("pm2")` is
never called.
2024-06-28 22:33:21 +02:00
Jason Stieber
c89c3edf97 Fix weathergov api precipitationLastHour (#3125)
Pull request fixes small big in weathergov api format mismatch #3124

---------

Co-authored-by: Karsten Hassel <hassel@gmx.de>
2024-06-28 22:21:38 +02:00
Karsten Hassel
74c6bb30b0 Update dependencies (#3487)
and minor fixes in changelog.
2024-06-28 22:09:44 +02:00
Bugsounet - Cédric
cfc0bc617f Update CHANGELOG.md (#3486)
Adjust my own ChangeLog entry
2024-06-27 21:37:22 +02:00
Karsten Hassel
4aafa32875 fixes e2e tests running in docker container (#3485)
which needs `address: "0.0.0.0"`

fixes #3479
2024-06-27 10:38:29 +02:00
Bugsounet - Cédric
f28b4bd709 Use latest@version of node for automated-tests.yaml (#3483)
Maybe it's a good idea to use latest@node version for automated-tests

Actually it's an "random" version

Note: it's already used [there in
electronRebuild](https://github.com/MagicMirrorOrg/MagicMirror/blob/develop/.github/workflows/electronRebuild.yaml#L19)
2024-06-26 21:43:41 +02:00
WallysWellies
aefb3a0b6d Update compliments module (#3471)
`Fixes #3465`

Add config option `specialDayUnique` that defaults to `false` and causes
special day compliments to be added to the existing compliments array.
Setting this option to `true` will only show the compliments that have
been configured for that day.

---------

Co-authored-by: Veeck <github@veeck.de>
Co-authored-by: veeck <michael.veeck@nebenan.de>
Co-authored-by: Karsten Hassel <hassel@gmx.de>
2024-06-24 22:40:59 +02:00
Brian O'Connor
3d9d72e64e Open-Meteo: Fix forecast and hourly weather to use real temperatures, not apparent temperatures (#3468)
As discussed in #3466, the Open-Meteo provider is using the apparent
temperature ("Feels like") in the forecast and hourly weather reporting.
This is contrary to expected behavior.

Note: I'm a little unclear on how I should be editing the `CHANGELOG.md`
file with this PR - happy to update this PR with a little guidance. This
is my first attempted PR in this project.

Let me know if there are any questions.

---------

Co-authored-by: veeck <michael.veeck@nebenan.de>
2024-06-24 22:18:49 +02:00
Karsten Hassel
8d20832bc5 [calendar] add config option "showEndsOnlyWithDuration" (#3477)
redo and rebase changes made in PR
https://github.com/MagicMirrorOrg/MagicMirror/pull/2968 by
https://github.com/kleinmantara
2024-06-24 21:52:19 +02:00
Bugsounet - Cédric
e95c144c3e Fix crash possibility if module: <name> is not defined and on mistake position: <position> (#3445)
Fix #3442
2024-06-24 21:51:54 +02:00
Karsten Hassel
4c748a4d32 update config.js.sample to use openmeteo as weather provider (#3476)
which needs no api key.

I think this is a better choice than the old one because new users which
use this config as starting point will now see weather data instead of
`loading...`
2024-06-22 21:23:58 +02:00
Karsten Hassel
9cbd30f296 update dependencies incl. electron v31 (#3473) 2024-06-19 22:21:46 +02:00
Bugsounet - Cédric
bc27c46723 MM² Main core use node >= v20 // delete node v18 from test suite (#3463)
#3462
2024-06-19 22:11:04 +02:00
Karsten Hassel
63324454a9 update dependencies (#3460)
see
https://github.com/MagicMirrorOrg/MagicMirror/pull/3457#issuecomment-2159316713
2024-06-11 06:54:17 +02:00
Karsten Hassel
4bd66cb121 fixed type=daily for provider openmeteo showing nightly icons (#3459)
in forecast when current time is "nightly"

Fixes #3458
2024-06-08 11:48:31 +02:00
Karsten Hassel
cd0bc5b160 fixed type=daily for provider openmeteo having no data … (#3451)
… when running after 23:00

Fixes #3449
2024-05-20 09:36:03 +02:00
Karsten Hassel
d1c17e7fc0 weather module: Fixed precipitationProbability in forecast … (#3448)
…for provider openmeteo, fixed #3446
2024-05-13 22:36:35 +02:00
Karsten Hassel
3b0035760d Update deps (#3439)
- update dependencies including electron to v30
- replace node v21 with v22 in tests
2024-05-01 19:54:38 +02:00
dependabot[bot]
1fa17883bc Bump ansis from 2.3.0 to 3.0.1 (#3417)
Bumps [ansis](https://github.com/webdiscus/ansis) from 2.3.0 to 3.0.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/webdiscus/ansis/releases">ansis's
releases</a>.</em></p>
<blockquote>
<h2>v3.0.0</h2>
<h1>Features</h1>
<ul>
<li>Added detection of color spaces support: TrueColor, 256 colors, 16
colors, no color (black &amp; white).</li>
<li>Added fallback for supported color space: truecolor —&gt; 256 colors
—&gt; 16 colors —&gt; no colors.</li>
<li>Improved  performance for the <code>hex()</code> function.</li>
</ul>
<h1>BREAKING CHANGE</h1>
<p>In the new major version <code>3.x</code> are removed unused styles
and methods.</p>
<blockquote>
<p>⚠️ Warning</p>
<p>Before update, please check your code whether is used deleted styles
and methods.</p>
</blockquote>
<h3>Support Node.js</h3>
<p>Drop supports for Node &lt;= <code>14</code>. Minimal supported
version is <code>15.0.0</code> (Released 2020-10-20).
In the theory the <code>v3</code> can works with Node<code>12</code>,
but we can't test it.</p>
<h3>Deleted styles</h3>
<p>The <code>not widely supported</code> styles are deleted:</p>
<ul>
<li><code>faint</code> (alias for dim), replace in your code with
<code>dim</code></li>
<li><code>doubleUnderline</code>, replace in your code with
<code>underline</code></li>
<li><code>frame</code>, replace in your code with
<code>underline</code></li>
<li><code>encircle</code>, replace in your code with
<code>underline</code></li>
<li><code>overline</code>, replace in your code with
<code>underline</code></li>
</ul>
<h3>Deleted methods</h3>
<p>The methods are deleted:</p>
<ul>
<li><code>ansi</code>, replace in your code with <code>ansi256</code> or
<code>fg</code></li>
<li><code>bgAnsi</code>, replace in your code with
<code>bgAnsi256</code> or <code>bg</code></li>
</ul>
<h3>Deleted clamp in functions</h3>
<p>The clamp (0, 255) for the ANSI 256 codes and RGB values is removed,
because is unused.
You should self check the function arguments.</p>
<p>The affected functions:</p>
<ul>
<li><code>ansi256</code> and <code>fg</code> (alias to ansi256) -
expected a code in the range <code>0 - 255</code></li>
<li><code>bgAnsi256</code> and <code>bg</code> (alias to bgAnsi256) -
expected a code in the range<code>0 - 255</code></li>
<li><code>rgb</code> - expected r, g, b values in the range <code>0 -
255</code></li>
<li><code>bgRgb</code> - expected r, g, b values in the range <code>0 -
255</code></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/webdiscus/ansis/blob/master/CHANGELOG.md">ansis's
changelog</a>.</em></p>
<blockquote>
<h2>3.0.1 (2024-04-01)</h2>
<ul>
<li>refactor: improve code</li>
<li>chore: reduce code bundle size from 3.8 KB to 3.4 KB</li>
<li>chore: update benchmark</li>
<li>chore: update compare tests</li>
<li>test: add more tests</li>
<li>docs: improve readme</li>
</ul>
<h2>3.0.0 (2024-03-29)</h2>
<ul>
<li>feat: add detection of color spaces support: TrueColor, 256 colors,
16 colors, no color</li>
<li>feat: add fallback for supported color space: truecolor —&gt; 256
colors —&gt; 16 colors —&gt; no colors</li>
<li>perform: improve performance for <code>hex()</code> function</li>
<li>chore: size increased from 3.2 KB to 3.8 KB as new features were
added</li>
<li>test: switch from jest to vitest</li>
<li>test: add tests for new features</li>
<li>docs: update readme for color spaces support</li>
</ul>
<h3>BREAKING CHANGE</h3>
<p>In the new major version <code>3.x</code> are removed unused styles
and methods.</p>
<blockquote>
<p>⚠️ Warning</p>
<p>Before update, please check your code whether is used deleted styles
and methods.</p>
</blockquote>
<h3>Support Node.js</h3>
<p>Drop supports for Node &lt;= <code>14</code>. Minimal supported
version is <code>15.0.0</code> (Released 2020-10-20).
In the theory the <code>v3</code> can works with Node<code>12</code>,
but we can't test it.</p>
<h3>Deleted styles</h3>
<p>The <code>not widely supported</code> styles are deleted:</p>
<ul>
<li><code>faint</code> (alias for dim), replace in your code with
<code>dim</code></li>
<li><code>doubleUnderline</code>, replace in your code with
<code>underline</code></li>
<li><code>frame</code>, replace in your code with
<code>underline</code></li>
<li><code>encircle</code>, replace in your code with
<code>underline</code></li>
<li><code>overline</code>, replace in your code with
<code>underline</code></li>
</ul>
<h3>Deleted methods</h3>
<p>The methods are deleted:</p>
<ul>
<li><code>ansi</code>, replace in your code with <code>ansi256</code> or
<code>fg</code></li>
<li><code>bgAnsi</code>, replace in your code with
<code>bgAnsi256</code> or <code>bg</code></li>
</ul>
<h3>Deleted clamp in functions</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/webdiscus/ansis/commits">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ansis&package-manager=npm_and_yarn&previous-version=2.3.0&new-version=3.0.1)](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>
2024-04-01 22:11:52 +02:00
veeck
8aaad8e7ec Prepare v2.28.0-develop 2024-04-01 22:05:54 +02:00
veeck
1981601f0a Merge branch 'mm_master' into mm_develop 2024-04-01 22:03:49 +02:00
Veeck
2a883c393c Remove codecov yaml (#3416)
CodeCov isnt used at the moment and MAYBE this blocks our release
2024-04-01 20:08:31 +02:00
Veeck
53420f5be9 Fix check for mastermerge label (#3415)
Mastermerge label wasnt checked correctly, this PR should hopefully
fixes it for good

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-01 18:16:20 +02:00
veeck
b262bf6144 Release 2.27.0 2024-04-01 12:01:44 +02:00
Karsten Hassel
72ef8235b1 update Collaboration.md (added infos from discord) (#3408) 2024-03-30 23:29:57 +01:00
Paranoid93
e004b33fab Change multiday fullDay Event behaviour (#3396)
Hey!

This PR should change the behaviour of starting fullDay events that last
several days. The goal was to change the behavior of the "Starting
today, ends T" (T=Tomorrow) event, so it should show how many days it
will occur from the first day on

Before situation:

a fullDay event that started 'today' and ends several days later showed
Today on the first day. The rest of the days it showed X days left.


![grafik](https://github.com/MagicMirrorOrg/MagicMirror/assets/6515818/da4e06cf-3122-44d9-b78a-88f9970c57d4)

Y => Yesterday
T => Tomorrow


Target situation with this commit:
a fullDay event that started 'today' shows 'X days left' from the first
day on and 'Today' on the last day.


![grafik](https://github.com/MagicMirrorOrg/MagicMirror/assets/6515818/c42b9a27-35cf-47b7-9a8f-937a6009f904)

---------

Co-authored-by: Veeck <github@veeck.de>
2024-03-28 22:02:22 +01:00
Bugsounet - Cédric
d9926fad79 MM² Icon (#3407)
* Create `MM²` icon
 * Allow to change default electron icon to this icon
2024-03-28 12:37:18 +01:00
Karsten Hassel
fd44445ec3 update deps and package.json's (eslint) (#3406) 2024-03-27 23:13:01 +01:00
Bugsounet - Cédric
be63e365bd Add electron-rebuild to suite test (#3392)
because actually i'm not able to rebuild any libraries to works with
electron v29.x
I write a suite test to check `electron-rebuild`

Note: works with
[v28.x](https://github.com/MagicMirrorOrg/MagicMirror/actions/runs/8122468177/job/22201931385)
2024-03-27 22:45:01 +01:00
Veeck
57549fa19c Fix compliments module bringing mirror to a halt (#3402)
... when no compliments are to be displayed. We shouldnt even try to
randomize when the array has no elements...

Fixes #3385
2024-03-23 12:16:57 +01:00
Paranoid93
52cfbacd4d Changes the layout of the current weather module, targetting indoor values (#3397)
Hi,

this PR should change the layout of the indoor values in the
current_weather module.

Since the Indoor values are being passed into the module via a
notification, I sadly do not know exactly how to write a test for this.
Can you link me an example or tell me, how I can mock indoor values into
this test?

Before:

![grafik](https://github.com/MagicMirrorOrg/MagicMirror/assets/6515818/b1b2afcc-0a35-48c3-9cf8-3e7b041c7727)

After:

![grafik](https://github.com/MagicMirrorOrg/MagicMirror/assets/6515818/311d3051-45e9-450d-afd5-c90a4d4ffd63)
2024-03-23 10:53:42 +01:00
sam detweiler
6de578edb3 move suncalc dependency out of dev, as it is used by the clock module (#3401)
user reported problem with clock module, checking code found dependency
on suncalc library, but it is not loaded in production mode.. move
dependency

---------

Co-authored-by: veeck <michael.veeck@nebenan.de>
2024-03-22 19:49:40 +01:00
vppencilsharpener
d970214a0e Fix for #3345 - precipitation probability not displayed when it is 0% (#3346)
Fixes issue #3345. 

I think I submitted this correctly, but don't do this often so let me
know if anything needs to be corrected.

---------

Co-authored-by: Veeck <github@veeck.de>
2024-03-21 14:11:23 +01:00
Bugsounet - Cédric
c5f90501ef [calendar] deny fetch interval < 60000 and set 60000 in this case (prevent fetch loop failed) (#3382)
Hi, I had the case of some users who set a very small fetchinterval (10
sec for example)
in some cases, it may be that the request did not have time to complete
correctly and that the next one has already been sent (generally on
start of MM²)
I think that lock min fetchInterval to 60000 is a good idea
2024-03-21 13:43:04 +01:00
Bugsounet - Cédric
16af809559 Update .npmrc (#3399)
Don't display `npm WARN <....>`  on install

Only Error will be displayed
2024-03-16 13:06:27 +01:00
jkriegshauser
1a745cfb92 Fix issue 3393 (#3395)
Fix for #3393
2024-03-13 20:59:21 +01:00
dependabot[bot]
90ff3402cb Bump node-ical from 0.17.2 to 0.18.0 (#3387)
Bumps [node-ical](https://github.com/jens-maus/node-ical) from 0.17.2 to
0.18.0.
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/jens-maus/node-ical/commits/0.18.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=node-ical&package-manager=npm_and_yarn&previous-version=0.17.2&new-version=0.18.0)](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>
2024-03-01 20:05:37 +01:00
dependabot[bot]
e5678f0291 Bump playwright from 1.41.2 to 1.42.0 (#3388)
Bumps [playwright](https://github.com/microsoft/playwright) from 1.41.2
to 1.42.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/microsoft/playwright/releases">playwright's
releases</a>.</em></p>
<blockquote>
<h2>v1.42.0</h2>
<h2>New APIs</h2>
<ul>
<li>
<p><strong>Test tags</strong></p>
<p><a href="https://playwright.dev/docs/test-annotations#tag-tests">New
tag syntax</a> for adding tags to the tests (@-tokens in the test title
are still supported).</p>
<pre lang="js"><code>test('test customer login', { tag: ['@fast',
'@login'] }, async ({ page }) =&gt; {
  // ...
});
</code></pre>
<p>Use <code>--grep</code> command line option to run only tests with
certain tags.</p>
<pre lang="sh"><code>npx playwright test --grep @fast
</code></pre>
</li>
<li>
<p><strong>Annotating skipped tests</strong></p>
<p><a
href="https://playwright.dev/docs/test-annotations#annotate-tests">New
annotation syntax</a> for test annotations allows annotating the tests
that do not run.</p>
<pre lang="js"><code>test('test full report', {
  annotation: [
{ type: 'issue', description:
'https://github.com/microsoft/playwright/issues/23180' },
{ type: 'docs', description:
'https://playwright.dev/docs/test-annotations#tag-tests' },
  ],
}, async ({ page }) =&gt; {
  // ...
});
</code></pre>
</li>
<li>
<p><strong>page.addLocatorHandler()</strong></p>
<p>New method <a
href="https://playwright.dev/docs/api/class-page#page-add-locator-handler">page.addLocatorHandler()</a>
registers a callback that will be invoked when specified element becomes
visible and may block Playwright actions. The callback can get rid of
the overlay. Here is an example that closes a cookie dialog when it
appears.</p>
<pre lang="js"><code>// Setup the handler.
await page.addLocatorHandler(
page.getByRole('heading', { name: 'Hej! You are in control of your
cookies.' }),
    async () =&gt; {
      await page.getByRole('button', { name: 'Accept all' }).click();
    });
// Write the test as usual.
await page.goto('https://www.ikea.com/');
await page.getByRole('link', { name: 'Collection of blue and white'
}).click();
await expect(page.getByRole('heading', { name: 'Light and easy'
})).toBeVisible();
</code></pre>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="e7f0635c17"><code>e7f0635</code></a>
cherry-pick(<a
href="https://redirect.github.com/microsoft/playwright/issues/29692">#29692</a>):
docs: better addLocatorHandler example in release notes ...</li>
<li><a
href="8709a3a24b"><code>8709a3a</code></a>
cherry-pick(<a
href="https://redirect.github.com/microsoft/playwright/issues/29687">#29687</a>):
chore: fix docs roll for functions without args follow-u...</li>
<li><a
href="aa9f6fb718"><code>aa9f6fb</code></a>
cherry-pick(<a
href="https://redirect.github.com/microsoft/playwright/issues/29669">#29669</a>):
chore: strengthen linting (<a
href="https://redirect.github.com/microsoft/playwright/issues/29674">#29674</a>)</li>
<li><a
href="f5899c1556"><code>f5899c1</code></a>
chore: set version to 1.42.0 (<a
href="https://redirect.github.com/microsoft/playwright/issues/29671">#29671</a>)</li>
<li><a
href="77e1b02552"><code>77e1b02</code></a>
docs: 1.42 release notes (<a
href="https://redirect.github.com/microsoft/playwright/issues/29666">#29666</a>)</li>
<li><a
href="c1421bc9f2"><code>c1421bc</code></a>
docs: typescript compiler invocation before tests (<a
href="https://redirect.github.com/microsoft/playwright/issues/29667">#29667</a>)</li>
<li><a
href="bd8d044433"><code>bd8d044</code></a>
feat(uimode) uses relative paths to establish websocket connection (<a
href="https://redirect.github.com/microsoft/playwright/issues/29617">#29617</a>)</li>
<li><a
href="56028269bb"><code>5602826</code></a>
devops: add a hint how to create a repro (<a
href="https://redirect.github.com/microsoft/playwright/issues/29665">#29665</a>)</li>
<li><a
href="015a1bcc1c"><code>015a1bc</code></a>
feat(ct): double unmounting component throws error (<a
href="https://redirect.github.com/microsoft/playwright/issues/29650">#29650</a>)</li>
<li><a
href="303d7fdac9"><code>303d7fd</code></a>
chore(ct): vue resolve internal type errors (<a
href="https://redirect.github.com/microsoft/playwright/issues/29649">#29649</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/microsoft/playwright/compare/v1.41.2...v1.42.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=playwright&package-manager=npm_and_yarn&previous-version=1.41.2&new-version=1.42.0)](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>
2024-03-01 20:05:23 +01:00
dependabot[bot]
c7d94a069e Bump express from 4.18.2 to 4.18.3 (#3389)
Bumps [express](https://github.com/expressjs/express) from 4.18.2 to
4.18.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/expressjs/express/releases">express's
releases</a>.</em></p>
<blockquote>
<h2>4.18.3</h2>
<h2>Main Changes</h2>
<ul>
<li>Fix routing requests without method</li>
<li>deps: body-parser@1.20.2
<ul>
<li>Fix strict json error message on Node.js 19+</li>
<li>deps: content-type@~1.0.5</li>
<li>deps: raw-body@2.5.2</li>
</ul>
</li>
</ul>
<h2>Other Changes</h2>
<ul>
<li>Use https: protocol instead of deprecated git: protocol by <a
href="https://github.com/vcsjones"><code>@​vcsjones</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5032">expressjs/express#5032</a></li>
<li>build: Node.js@16.18 and Node.js@18.12 by <a
href="https://github.com/abenhamdine"><code>@​abenhamdine</code></a> in
<a
href="https://redirect.github.com/expressjs/express/pull/5034">expressjs/express#5034</a></li>
<li>ci: update actions/checkout to v3 by <a
href="https://github.com/armujahid"><code>@​armujahid</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5027">expressjs/express#5027</a></li>
<li>test: remove unused function arguments in params by <a
href="https://github.com/raksbisht"><code>@​raksbisht</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5124">expressjs/express#5124</a></li>
<li>Remove unused originalIndex from acceptParams by <a
href="https://github.com/raksbisht"><code>@​raksbisht</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5119">expressjs/express#5119</a></li>
<li>Fixed typos by <a
href="https://github.com/raksbisht"><code>@​raksbisht</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5117">expressjs/express#5117</a></li>
<li>examples: remove unused params by <a
href="https://github.com/raksbisht"><code>@​raksbisht</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5113">expressjs/express#5113</a></li>
<li>fix: parameter str is not described in JSDoc by <a
href="https://github.com/raksbisht"><code>@​raksbisht</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5130">expressjs/express#5130</a></li>
<li>fix: typos in History.md by <a
href="https://github.com/raksbisht"><code>@​raksbisht</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5131">expressjs/express#5131</a></li>
<li>build : add Node.js@19.7 by <a
href="https://github.com/abenhamdine"><code>@​abenhamdine</code></a> in
<a
href="https://redirect.github.com/expressjs/express/pull/5028">expressjs/express#5028</a></li>
<li>test: remove unused function arguments in params by <a
href="https://github.com/raksbisht"><code>@​raksbisht</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5137">expressjs/express#5137</a></li>
<li>use random port in test so it won't fail on already listening by <a
href="https://github.com/rluvaton"><code>@​rluvaton</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5162">expressjs/express#5162</a></li>
<li>tests: use cb() instead of done() by <a
href="https://github.com/kristof-low"><code>@​kristof-low</code></a> in
<a
href="https://redirect.github.com/expressjs/express/pull/5233">expressjs/express#5233</a></li>
<li>examples: remove multipart example by <a
href="https://github.com/riddlew"><code>@​riddlew</code></a> in <a
href="https://redirect.github.com/expressjs/express/pull/5195">expressjs/express#5195</a></li>
<li>Update support Node.js@18 in the CI by <a
href="https://github.com/UlisesGascon"><code>@​UlisesGascon</code></a>
in <a
href="https://redirect.github.com/expressjs/express/pull/5490">expressjs/express#5490</a></li>
<li>Fix favicon-related bug in cookie-sessions example by <a
href="https://github.com/DmytroKondrashov"><code>@​DmytroKondrashov</code></a>
in <a
href="https://redirect.github.com/expressjs/express/pull/5414">expressjs/express#5414</a></li>
<li>Release 4.18.3 by <a
href="https://github.com/UlisesGascon"><code>@​UlisesGascon</code></a>
in <a
href="https://redirect.github.com/expressjs/express/pull/5505">expressjs/express#5505</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/vcsjones"><code>@​vcsjones</code></a>
made their first contribution in <a
href="https://redirect.github.com/expressjs/express/pull/5032">expressjs/express#5032</a></li>
<li><a
href="https://github.com/abenhamdine"><code>@​abenhamdine</code></a>
made their first contribution in <a
href="https://redirect.github.com/expressjs/express/pull/5034">expressjs/express#5034</a></li>
<li><a href="https://github.com/armujahid"><code>@​armujahid</code></a>
made their first contribution in <a
href="https://redirect.github.com/expressjs/express/pull/5027">expressjs/express#5027</a></li>
<li><a href="https://github.com/raksbisht"><code>@​raksbisht</code></a>
made their first contribution in <a
href="https://redirect.github.com/expressjs/express/pull/5124">expressjs/express#5124</a></li>
<li><a href="https://github.com/rluvaton"><code>@​rluvaton</code></a>
made their first contribution in <a
href="https://redirect.github.com/expressjs/express/pull/5162">expressjs/express#5162</a></li>
<li><a
href="https://github.com/kristof-low"><code>@​kristof-low</code></a>
made their first contribution in <a
href="https://redirect.github.com/expressjs/express/pull/5233">expressjs/express#5233</a></li>
<li><a href="https://github.com/riddlew"><code>@​riddlew</code></a> made
their first contribution in <a
href="https://redirect.github.com/expressjs/express/pull/5195">expressjs/express#5195</a></li>
<li><a
href="https://github.com/DmytroKondrashov"><code>@​DmytroKondrashov</code></a>
made their first contribution in <a
href="https://redirect.github.com/expressjs/express/pull/5414">expressjs/express#5414</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/expressjs/express/compare/4.18.2...4.18.3">https://github.com/expressjs/express/compare/4.18.2...4.18.3</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/expressjs/express/blob/master/History.md">express's
changelog</a>.</em></p>
<blockquote>
<h1>4.18.3 / 2024-02-26</h1>
<ul>
<li>Fix routing requests without method</li>
<li>deps: body-parser@1.20.2
<ul>
<li>Fix strict json error message on Node.js 19+</li>
<li>deps: content-type@~1.0.5</li>
<li>deps: raw-body@2.5.2</li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="1b51edac7c"><code>1b51eda</code></a>
4.18.3</li>
<li><a
href="b625132864"><code>b625132</code></a>
build: pin Node 21.x to minor</li>
<li><a
href="e3eca80584"><code>e3eca80</code></a>
build: pin Node 21.x to minor</li>
<li><a
href="23b44b3ddd"><code>23b44b3</code></a>
build: support Node.js 21.6.2</li>
<li><a
href="b9fea12245"><code>b9fea12</code></a>
build: support Node.js 21.x in appveyor</li>
<li><a
href="c259c3407f"><code>c259c34</code></a>
build: support Node.js 21.x</li>
<li><a
href="fdeb1d3176"><code>fdeb1d3</code></a>
build: support Node.js 20.x in appveyor</li>
<li><a
href="734b281900"><code>734b281</code></a>
build: support Node.js 20.x</li>
<li><a
href="0e3ab6ec21"><code>0e3ab6e</code></a>
examples: improve view count in cookie-sessions</li>
<li><a
href="59af63ac2e"><code>59af63a</code></a>
build: Node.js@18.19</li>
<li>Additional commits viewable in <a
href="https://github.com/expressjs/express/compare/4.18.2...4.18.3">compare
view</a></li>
</ul>
</details>
<details>
<summary>Maintainer changes</summary>
<p>This version was pushed to npm by <a
href="https://www.npmjs.com/~ulisesgascon">ulisesgascon</a>, a new
releaser for express since your current version.</p>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=express&package-manager=npm_and_yarn&previous-version=4.18.2&new-version=4.18.3)](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>
2024-03-01 20:05:12 +01:00
dependabot[bot]
2f2d84bb5c Bump electron from 29.0.1 to 29.1.0 (#3390)
Bumps [electron](https://github.com/electron/electron) from 29.0.1 to
29.1.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/electron/electron/releases">electron's
releases</a>.</em></p>
<blockquote>
<h2>electron v29.1.0</h2>
<h1>Release Notes for v29.1.0</h1>
<h2>Features</h2>
<ul>
<li>Added proxy configuring support for requests made with net module
from utility process. <a
href="https://redirect.github.com/electron/electron/pull/41416">#41416</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/41417">30</a>)<!--
raw HTML omitted --></li>
</ul>
<h2>Fixes</h2>
<ul>
<li>Ensured ScreenCaptureKit is used exclusively on macOS 14.4 and
higher to avoid permission prompts. <a
href="https://redirect.github.com/electron/electron/pull/41403">#41403</a>
<!-- raw HTML omitted -->(Also in <a
href="https://redirect.github.com/electron/electron/pull/41404">30</a>)<!--
raw HTML omitted --></li>
</ul>
<h2>Other Changes</h2>
<ul>
<li>Updated Chromium to 122.0.6261.70. <a
href="https://redirect.github.com/electron/electron/pull/41446">#41446</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="2d9c5a62c6"><code>2d9c5a6</code></a>
chore: bump chromium to 122.0.6261.70 (29-x-y) (<a
href="https://redirect.github.com/electron/electron/issues/41446">#41446</a>)</li>
<li><a
href="23f690ffd0"><code>23f690f</code></a>
chore: bump chromium to 122.0.6261.69 (29-x-y) (<a
href="https://redirect.github.com/electron/electron/issues/41425">#41425</a>)</li>
<li><a
href="8f4e94694e"><code>8f4e946</code></a>
chore: fix import from patches.py in script/lib/git.py (<a
href="https://redirect.github.com/electron/electron/issues/41437">#41437</a>)</li>
<li><a
href="af47434dc8"><code>af47434</code></a>
feat: add support for configuring system network context proxies (<a
href="https://redirect.github.com/electron/electron/issues/41416">#41416</a>)</li>
<li><a
href="8ab99e2d8e"><code>8ab99e2</code></a>
refactor: prefer using <code>base::NoDestructor</code> to
`base::{Singleton,LazyInstance...</li>
<li><a
href="ffcccdcf37"><code>ffcccdc</code></a>
perf: omit unnecessary work from
`ElectronRenderFrameObserver::ShouldNotifyCl...</li>
<li><a
href="ce2ac1c0c2"><code>ce2ac1c</code></a>
fix: use ScreenCaptureKit exclusively on macOS 14.4 and higher (<a
href="https://redirect.github.com/electron/electron/issues/41403">#41403</a>)</li>
<li><a
href="1c3feddef8"><code>1c3fedd</code></a>
docs: update breaking changes language (<a
href="https://redirect.github.com/electron/electron/issues/41398">#41398</a>)</li>
<li>See full diff in <a
href="https://github.com/electron/electron/compare/v29.0.1...v29.1.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=electron&package-manager=npm_and_yarn&previous-version=29.0.1&new-version=29.1.0)](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>
2024-03-01 20:04:56 +01:00
dependabot[bot]
313531d623 Bump @stylistic/eslint-plugin from 1.6.2 to 1.6.3 (#3391)
Bumps
[@stylistic/eslint-plugin](https://github.com/eslint-stylistic/eslint-stylistic/tree/HEAD/packages/eslint-plugin)
from 1.6.2 to 1.6.3.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/eslint-stylistic/eslint-stylistic/releases"><code>@​stylistic/eslint-plugin</code>'s
releases</a>.</em></p>
<blockquote>
<h2>v1.6.3</h2>
<h3>   🐞 Bug Fixes</h3>
<ul>
<li>Type error on <code>UnprefixedRuleOptions</code>  -  by <a
href="https://github.com/JstnMcBrd"><code>@​JstnMcBrd</code></a> in <a
href="https://redirect.github.com/eslint-stylistic/eslint-stylistic/issues/284">eslint-stylistic/eslint-stylistic#284</a>
<a
href="https://github.com/eslint-stylistic/eslint-stylistic/commit/f7bc3a9"><!--
raw HTML omitted -->(f7bc3)<!-- raw HTML omitted --></a></li>
</ul>
<h5>    <a
href="https://github.com/eslint-stylistic/eslint-stylistic/compare/v1.6.2...v1.6.3">View
changes on GitHub</a></h5>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="413d1bba7d"><code>413d1bb</code></a>
chore: release v1.6.3</li>
<li><a
href="f7bc3a9817"><code>f7bc3a9</code></a>
fix: type error on <code>UnprefixedRuleOptions</code> (<a
href="https://github.com/eslint-stylistic/eslint-stylistic/tree/HEAD/packages/eslint-plugin/issues/284">#284</a>)</li>
<li>See full diff in <a
href="https://github.com/eslint-stylistic/eslint-stylistic/commits/v1.6.3/packages/eslint-plugin">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=@stylistic/eslint-plugin&package-manager=npm_and_yarn&previous-version=1.6.2&new-version=1.6.3)](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>
2024-03-01 20:04:42 +01:00
Karsten Hassel
73140cdf37 update electron to v29 and other deps (#3386) 2024-02-24 13:04:43 +01:00
sam detweiler
08f8a5107a add error message if config.js appears empty after loading w require() in app.js (#3383)
from forum,
https://forum.magicmirror.builders/topic/18493/node_helper-js-is-not-working
user created own config.js, did not copy the module exports line..

this caused the js/defaults.js list of modules to be processed for
node_helpers
but the physical config.js to be loaded for the web page (hard coded in
index.html)

so user modules needing node_helper didn't have that ..

this adds a warning message in npm start output to help user resolve..
took two days to debug without message
2024-02-13 08:02:02 +01:00
dependabot[bot]
88a96fb529 Bump husky from 9.0.7 to 9.0.10 (#3379)
Bumps [husky](https://github.com/typicode/husky) from 9.0.7 to 9.0.10.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/typicode/husky/releases">husky's
releases</a>.</em></p>
<blockquote>
<h2>v9.0.10</h2>
<ul>
<li>fix: rename index.d.ts to index.d.mts by <a
href="https://github.com/mrkjdy"><code>@​mrkjdy</code></a> in <a
href="https://redirect.github.com/typicode/husky/pull/1379">typicode/husky#1379</a></li>
</ul>
<h2>v9.0.9</h2>
<ul>
<li>refactor: rename files by <a
href="https://github.com/typicode"><code>@​typicode</code></a> in <a
href="https://redirect.github.com/typicode/husky/pull/1378">typicode/husky#1378</a></li>
</ul>
<h2>v9.0.8</h2>
<ul>
<li>docs: update index.md by <a
href="https://github.com/khaledYS"><code>@​khaledYS</code></a> in <a
href="https://redirect.github.com/typicode/husky/pull/1369">typicode/husky#1369</a></li>
<li>Fix tab detection on install command by <a
href="https://github.com/glensc"><code>@​glensc</code></a> in <a
href="https://redirect.github.com/typicode/husky/pull/1376">typicode/husky#1376</a></li>
<li>refactor: reduce file size by <a
href="https://github.com/typicode"><code>@​typicode</code></a> in <a
href="https://redirect.github.com/typicode/husky/pull/1377">typicode/husky#1377</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c042d9b4d4"><code>c042d9b</code></a>
9.0.10</li>
<li><a
href="e5293680b9"><code>e529368</code></a>
fix: rename index.d.ts to index.d.mts (<a
href="https://redirect.github.com/typicode/husky/issues/1379">#1379</a>)</li>
<li><a
href="6219cac421"><code>6219cac</code></a>
9.0.9</li>
<li><a
href="d8377feddc"><code>d8377fe</code></a>
refactor: rename files (<a
href="https://redirect.github.com/typicode/husky/issues/1378">#1378</a>)</li>
<li><a
href="211b80ada3"><code>211b80a</code></a>
9.0.8</li>
<li><a
href="a5a45fc3ce"><code>a5a45fc</code></a>
refactor: reduce file size (<a
href="https://redirect.github.com/typicode/husky/issues/1377">#1377</a>)</li>
<li><a
href="d09132834b"><code>d091328</code></a>
fix: tab detection on install command (<a
href="https://redirect.github.com/typicode/husky/issues/1376">#1376</a>)</li>
<li><a
href="798f1ad7b5"><code>798f1ad</code></a>
docs: update list</li>
<li><a
href="b98985d411"><code>b98985d</code></a>
test: expect init to exit with 0</li>
<li><a
href="3e1365614b"><code>3e13656</code></a>
docs: fix links</li>
<li>Additional commits viewable in <a
href="https://github.com/typicode/husky/compare/v9.0.7...v9.0.10">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=husky&package-manager=npm_and_yarn&previous-version=9.0.7&new-version=9.0.10)](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>
2024-02-01 20:40:12 +01:00
Veeck
db65cd60eb Bundle all Dependabot updates (#3378)
and also node-ical

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-01 18:57:18 +01:00
illimarkangur
5fb5ef6cc7 Improved, fixed and added translations for estonian (#3371)
Improved wording, fixed grammatical errors and added new translations to
the et.json file.

---------

Co-authored-by: Veeck <github@veeck.de>
2024-02-01 12:16:55 +01:00
Ross Younger
57de389e01 [cosmetic] Weather module humidity positioning (#3330)
This PR adds an option to tweak the layout of the weather module. When
set, the humidity appears alongside the temperature:

![Screenshot from 2024-01-03
11-56-55](https://github.com/MagicMirrorOrg/MagicMirror/assets/551990/2a9fdf9a-21e4-49f5-8a48-68ea21902592)
2024-01-29 07:45:49 +01:00
Kristjan ESPERANTO
431bf22adb Update husky and let lint-staged fix ESLint issues (#3370)
The new version of husky makes it possible to simplify the pre-commit
hook a little.

And since prettier no longer takes care of the JavaScript files in our
project, it can no longer come into conflict with ESLint while running
lint-staged. Therefore we can activate the correction of ESLint issues
here.
2024-01-28 23:15:18 +01:00
Veeck
3bf848075d Correct apibase of weathergov weatherprovider to match documentation (#2927)
Fixes part of #2926
2024-01-27 22:31:50 +01:00
Veeck
fb5fab8145 Cleanups (#3369)
- Remove useless css class in clock
- Fix typo in calendar
- Changelog also got a little screwed after last merge
- updated dependencies
2024-01-27 21:11:57 +01:00
jkriegshauser
7f0b8e4054 Better fixes for #3291 and the underlying exdate issues (#3342)
* Worked around several issues in the RRULE library that were causing
deleted calender events to still show, some initial and recurring events
to not show, and some event times to be off an hour. (#3291)
* Renamed variables in *calendarfetcherutils.js* to be more clear about
use of `moment` and js's `Date` class.
* Added calendar config option `forceUseCurrentTime` (default:`false`)
which will ignore overridden `Date.now` in the config in order to keep
some tests consistent.
* Added several unit tests for crossing DST in different timezones with
excluded events.
2024-01-27 07:56:54 +01:00
Karsten Hassel
27f3c86c41 remove all useless header comments (#3363)
see #3358

used command: `find ./ -type f -exec perl -i -0pe
's/\/\*\s*magicmirror.*?\*\/\s*//si' {} \;`

This is a first draft, I think we should preserve some of the comments.
2024-01-24 21:39:06 +01:00
Kristjan ESPERANTO
b0161fe011 Lint package.json files (#3368)
Notable changes in this context:

- simplification of the ESLint calls - there is no longer a combination
of two file/directory lists (one in `package.json` and one in
`.eslintignore`)
- removal of a non-existent path from the `.eslintignore`
- use shorthand declaration for GitHub repository

Normally the new plugin would also sort the scripts in the package.json
alphabetically, but I think the current order is fine, so I deactivated
it.

Is it overkill to introduce a linter plugin just for the `package.json`
files?

In other projects I have seen that such internal changes were marked
with "chore" in the changelog. That's what I've done here. These chore
changes are less interesting for "normal" users.

Please feel free to give me feedback.
2024-01-24 20:43:59 +01:00
dependabot[bot]
f88b92fb1f Bump follow-redirects from 1.15.3 to 1.15.5 (#3367)
Bumps
[follow-redirects](https://github.com/follow-redirects/follow-redirects)
from 1.15.3 to 1.15.5.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="b1677ce001"><code>b1677ce</code></a>
Release version 1.15.5 of the npm package.</li>
<li><a
href="d8914f7982"><code>d8914f7</code></a>
Preserve fragment in responseUrl.</li>
<li><a
href="65858205e5"><code>6585820</code></a>
Release version 1.15.4 of the npm package.</li>
<li><a
href="7a6567e16d"><code>7a6567e</code></a>
Disallow bracketed hostnames.</li>
<li><a
href="05629af696"><code>05629af</code></a>
Prefer native URL instead of deprecated url.parse.</li>
<li><a
href="1cba8e85fa"><code>1cba8e8</code></a>
Prefer native URL instead of legacy url.resolve.</li>
<li><a
href="72bc2a4229"><code>72bc2a4</code></a>
Simplify _processResponse error handling.</li>
<li><a
href="3d42aecdca"><code>3d42aec</code></a>
Add bracket tests.</li>
<li><a
href="bcbb096b32"><code>bcbb096</code></a>
Do not directly set Error properties.</li>
<li>See full diff in <a
href="https://github.com/follow-redirects/follow-redirects/compare/v1.15.3...v1.15.5">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=follow-redirects&package-manager=npm_and_yarn&previous-version=1.15.3&new-version=1.15.5)](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)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/MagicMirrorOrg/MagicMirror/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-22 20:54:29 +01:00
dependabot[bot]
339aaf4c01 Bump actions/dependency-review-action from 3 to 4 (#3366)
Bumps
[actions/dependency-review-action](https://github.com/actions/dependency-review-action)
from 3 to 4.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/dependency-review-action/releases">actions/dependency-review-action's
releases</a>.</em></p>
<blockquote>
<h2>v4.0.0</h2>
<ul>
<li>Update action to Node 20 by <a
href="https://github.com/takost"><code>@​takost</code></a> in <a
href="https://redirect.github.com/actions/dependency-review-action/pull/639">actions/dependency-review-action#639</a></li>
<li>Dependabot updates, see the full changelog for more details.</li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/takost"><code>@​takost</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/dependency-review-action/pull/639">actions/dependency-review-action#639</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/dependency-review-action/compare/v3.1.5...v4.0.0">https://github.com/actions/dependency-review-action/compare/v3.1.5...v4.0.0</a></p>
<h2>3.1.5</h2>
<h2>What's Changed</h2>
<ul>
<li>Smaller <code>per_page</code> when requesting diff by <a
href="https://github.com/hmaurer"><code>@​hmaurer</code></a> in <a
href="https://redirect.github.com/actions/dependency-review-action/pull/649">actions/dependency-review-action#649</a></li>
<li>Update dependencies:
<ul>
<li>Bump <code>@​typescript-eslint/parser</code> from 6.10.0 to 6.13.1
by <a href="https://github.com/dependabot"><code>@​dependabot</code></a>
in <a
href="https://redirect.github.com/actions/dependency-review-action/pull/630">actions/dependency-review-action#630</a></li>
<li>Bump prettier from 3.0.3 to 3.1.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/dependency-review-action/pull/629">actions/dependency-review-action#629</a></li>
<li>Bump <code>@​types/jest</code> from 29.5.8 to 29.5.11 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/dependency-review-action/pull/637">actions/dependency-review-action#637</a></li>
<li>Bump nodemon from 3.0.1 to 3.0.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/dependency-review-action/pull/636">actions/dependency-review-action#636</a></li>
<li>Replace pip -&gt; pypi in PURL examples by <a
href="https://github.com/febuiles"><code>@​febuiles</code></a> in <a
href="https://redirect.github.com/actions/dependency-review-action/pull/638">actions/dependency-review-action#638</a></li>
<li>Bump <code>@​typescript-eslint/eslint-plugin</code> from 6.12.0 to
6.15.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/dependency-review-action/pull/644">actions/dependency-review-action#644</a></li>
<li>Bump eslint from 8.53.0 to 8.56.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/dependency-review-action/pull/640">actions/dependency-review-action#640</a></li>
<li>Bump <code>@​typescript-eslint/parser</code> from 6.13.1 to 6.16.0
by <a href="https://github.com/dependabot"><code>@​dependabot</code></a>
in <a
href="https://redirect.github.com/actions/dependency-review-action/pull/645">actions/dependency-review-action#645</a></li>
<li>Bump prettier from 3.1.0 to 3.1.1 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/dependency-review-action/pull/646">actions/dependency-review-action#646</a></li>
</ul>
</li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/dependency-review-action/compare/v3.1.4...v3.1.5">https://github.com/actions/dependency-review-action/compare/v3.1.4...v3.1.5</a></p>
<h2>3.1.4</h2>
<h2>What's Changed</h2>
<ul>
<li>
<p>Fixed a <a
href="https://redirect.github.com/actions/dependency-review-action/issues/618">bug</a>
with severity filtering when using the <code>allow_ghsas</code> option:
<a
href="https://redirect.github.com/actions/dependency-review-action/pull/623">actions/dependency-review-action#623</a>.</p>
</li>
<li>
<p>Updates dependencies:</p>
<ul>
<li>Bump <code>@​types/node</code> from 16.18.61 to 16.18.62 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/dependency-review-action/pull/619">actions/dependency-review-action#619</a>
action/pull/620</li>
<li>Bump <code>@​typescript-eslint/eslint-plugin</code> from 6.11.0 to
6.12.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/dependency-review-action/pull/625">actions/dependency-review-action#625</a></li>
<li>Bump typescript from 5.2.2 to 5.3.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/dependency-review-action/pull/624">actions/dependency-review-action#624</a></li>
</ul>
</li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/dependency-review-action/compare/v3...v3.1.4">https://github.com/actions/dependency-review-action/compare/v3...v3.1.4</a></p>
<h2>3.1.3</h2>
<h2>What's Changed</h2>
<ul>
<li>Fixes purl &quot;version must be percent-encoded&quot; by <a
href="https://github.com/theztefan"><code>@​theztefan</code></a> in <a
href="https://redirect.github.com/actions/dependency-review-action/pull/617">actions/dependency-review-action#617</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/dependency-review-action/compare/v3...v3.1.3">https://github.com/actions/dependency-review-action/compare/v3...v3.1.3</a></p>
<h2>3.1.2</h2>
<h2>What's Changed</h2>
<ul>
<li>Fix a regression for setups using self-hosted runners behind HTTP
proxies:<a
href="https://github.com/febuiles"><code>@​febuiles</code></a> in <a
href="https://redirect.github.com/actions/dependency-review-action/pull/611">actions/dependency-review-action#611</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="4cd9eb2d23"><code>4cd9eb2</code></a>
Updating docs to point to v4.</li>
<li><a
href="4901385134"><code>4901385</code></a>
bump to 4.0.0</li>
<li><a
href="dbf82a4a5e"><code>dbf82a4</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/dependency-review-action/issues/639">#639</a>
from takost/takost/update-to-node-20</li>
<li><a
href="78aeb2a948"><code>78aeb2a</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/dependency-review-action/issues/663">#663</a>
from actions/dependabot/npm_and_yarn/typescript-eslin...</li>
<li><a
href="4e510006f5"><code>4e51000</code></a>
Bump <code>@​typescript-eslint/parser</code> from 6.18.0 to 6.18.1</li>
<li><a
href="9560737c5e"><code>9560737</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/dependency-review-action/issues/661">#661</a>
from actions/dependabot/npm_and_yarn/typescript-eslin...</li>
<li><a
href="4125f47f7e"><code>4125f47</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/dependency-review-action/issues/660">#660</a>
from actions/dependabot/npm_and_yarn/types/node-16.18.70</li>
<li><a
href="07cc93e0c8"><code>07cc93e</code></a>
Bump <code>@​typescript-eslint/eslint-plugin</code> from 6.18.0 to
6.18.1</li>
<li><a
href="e2c203b8b7"><code>e2c203b</code></a>
Bump <code>@​types/node</code> from 16.18.62 to 16.18.70</li>
<li><a
href="f0b304d0bc"><code>f0b304d</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/dependency-review-action/issues/653">#653</a>
from actions/dependabot/npm_and_yarn/got-14.0.0</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/dependency-review-action/compare/v3...v4">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=actions/dependency-review-action&package-manager=github_actions&previous-version=3&new-version=4)](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>
2024-01-22 19:04:32 +01:00
Bugsounet - Cédric
c75b7d4a70 pm2 update ;) (#3364)
`pm2` just updated to v5.3.1 with `0 vulnerabilities`

let's delete `allow-ghsas` in depsreview and update dependencies
2024-01-20 22:55:01 +01:00
Bugsounet - Cédric
c96ced9137 updatenotification: update_helper.js recode with pm2 library (v2.27.x) (#3332)
#3285

Because there is so many conflit with package,
I have rewrite the code with v2.27.0-develop

For remember:

 * recode: `update_helper.js` with `pm2` library
 * fix: default config -> `updates` is a array
 * delete: `command-exists` library (not used)
 * delete: `PM2_GetList()`  function (not used)
 * add: check `updates.length` (prevent crash)
 * add: `[PM2]` tag in log (for better visibility)
 * add: `pm2` library
 
advantage:
  * we use the pm2 library directly
* avoids weird returns from child_process.exec when requesting a json
format from pm2
  * simplified the code

inconvenient:
  * we have vulnerabilities with axios

240120 Fix:
* use `pm2_env.pm_cwd` instead of `pm2_env.PWD` : prevent using `pm2
restart <id> --update-env` in other directory (for enable GPU rendering
for exemple)
 * resolve packages (again)
2024-01-20 17:38:22 +01:00
dependabot[bot]
995b61b689 Bump follow-redirects from 1.15.3 to 1.15.5 (#3356)
Bumps
[follow-redirects](https://github.com/follow-redirects/follow-redirects)
from 1.15.3 to 1.15.5.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="b1677ce001"><code>b1677ce</code></a>
Release version 1.15.5 of the npm package.</li>
<li><a
href="d8914f7982"><code>d8914f7</code></a>
Preserve fragment in responseUrl.</li>
<li><a
href="65858205e5"><code>6585820</code></a>
Release version 1.15.4 of the npm package.</li>
<li><a
href="7a6567e16d"><code>7a6567e</code></a>
Disallow bracketed hostnames.</li>
<li><a
href="05629af696"><code>05629af</code></a>
Prefer native URL instead of deprecated url.parse.</li>
<li><a
href="1cba8e85fa"><code>1cba8e8</code></a>
Prefer native URL instead of legacy url.resolve.</li>
<li><a
href="72bc2a4229"><code>72bc2a4</code></a>
Simplify _processResponse error handling.</li>
<li><a
href="3d42aecdca"><code>3d42aec</code></a>
Add bracket tests.</li>
<li><a
href="bcbb096b32"><code>bcbb096</code></a>
Do not directly set Error properties.</li>
<li>See full diff in <a
href="https://github.com/follow-redirects/follow-redirects/compare/v1.15.3...v1.15.5">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=follow-redirects&package-manager=npm_and_yarn&previous-version=1.15.3&new-version=1.15.5)](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)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/MagicMirrorOrg/MagicMirror/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-20 17:35:49 +01:00
Karsten Hassel
c09338ab80 changed log.debug to log.log in app.js (#3362)
where logLevel is not set because config is not loaded at this time, see
#3353
2024-01-18 19:18:58 +01:00
Ross Younger
b005a8f30e [newsfeed] Fix bug where the newsfeed sometimes stops (#3361)
It appears that #3336 introduced a bug where a newsfeed with >1 items
would stop updating after a while (usually after `activeItem` wraps
around the end of the list). Sorry! My bad, I hadn't tested that case
well enough.
2024-01-18 12:05:26 +01:00
Kristjan ESPERANTO
35e4dfb3fe Ignore all custom css files (#3359)
For experimenting, I sometimes work with different CSS files. I can
imagine that others do this too.

This setting for the css folder corresponds to the setting we already
have for the config folder.
2024-01-16 23:16:47 +01:00
Kristjan ESPERANTO
6dbacbb773 Rework logging colors (#3350)
- Replacing old package `colors` by drop-in replacement `ansis`
- Rework `console-stamp` config to show all Log outputs in same color
(errors = red, warnings = yellow, debug = blue background (only for the
label), info = blue)
- This also fixes `npm run config:check` (broken since
6097547c10)

Feel free to let me know if the PR is too big and you want me to do
individual PRs for the changes.

Before:

![before](https://github.com/MagicMirrorOrg/MagicMirror/assets/35647502/88e48ec3-102c-40f3-9e9b-5d14fe446a43)

After:

![after](https://github.com/MagicMirrorOrg/MagicMirror/assets/35647502/4c8c4bad-08c9-46a3-92c9-14b996c13a7d)

---------

Co-authored-by: Veeck <github@veeck.de>
2024-01-16 21:54:55 +01:00
Karsten Hassel
098757f248 update dependencies including electron to v28 (#3357) 2024-01-16 21:45:04 +01:00
Kristjan ESPERANTO
58bc14e8c0 Request only required information instead of all (#3338)
Hopefully this solves the problem with arm64 (reported in PR #3337).
2024-01-14 09:15:30 +01:00
Karsten Hassel
f890f14df7 ignore strange errors from systeminformation under aarch64 (#3349)
by excluding them from global error handling, see discussions in
https://github.com/MagicMirrorOrg/MagicMirror/pull/3337
2024-01-14 09:13:01 +01:00
Ross Younger
dadc7ba0a2 [newsfeed] Suppress unsightly animation edge cases when there are 0 or 1 active news items (#3336)
When the newsfeed module has an items list of size 1, every
`updateInterval` the animation runs to transition from the active story
to itself. This is unsightly. This PR suppresses that.

To reproduce: configure newsfeed with a single news source,
`ignoreOldItems` true, a short `updateInterval` (e.g. 3000), and a
carefully-chosen small `ignoreOlderThan` lining up with the current
contents of your news source.
2024-01-14 09:12:32 +01:00
Kristjan ESPERANTO
b47600e0d8 Remove lodash (#3339)
Removing lodash dependency by replacing merge by spread operator.

I have also split the return into two variables to make it easier to
understand what is happening.
2024-01-08 20:16:26 +01:00
Kristjan ESPERANTO
4bbd35fa6a Use node prefix for build-in modules (#3340)
It is basically a cosmetic thing, but has the following advantages:

1. Consistency with the official node documentation. The prefix is used
there.
2. It is easier to recognize the build-in modules.
2024-01-08 17:45:54 +01:00
Kristjan ESPERANTO
407072d12d Update system information (#3337)
- Add ELECTRON_ENABLE_GPU
- Remove docker version
- Differentiation between installed and used node version
- Highlight "Ready to go!" for server mode (Since we display system
information in the console, it is easy to overlook this important line.)

## Electron mode

### Before

```bash
[07.01.2024 16:37.30.591] [INFO]  System information:
 ### SYSTEM:   manufacturer: Notebook; model: N650DU; raspberry: undefined; virtual: false
 ### OS:       platform: linux; distro: Debian GNU/Linux; release: 12; arch: x64; kernel: 5.10.0-20-amd64
 ### VERSIONS: electron: 27.2.0; node: 18.17.1; npm: 10.2.4; pm2: 5.3.0; docker: 20.10.24+dfsg1
 ### OTHER:    timeZone: Europe/Berlin
```

### After

```bash
[07.01.2024 16:39.04.736] [INFO]  System information:
### SYSTEM:   manufacturer: Notebook; model: N650DU; raspberry: undefined; virtual: false
### OS:       platform: linux; distro: Debian GNU/Linux; release: 12; arch: x64; kernel: 5.10.0-20-amd64
### VERSIONS: electron: 27.2.0; used node: 18.17.1; installed node: 21.1.0; npm: 10.2.4; pm2: 5.3.0
### OTHER:    timeZone: Europe/Berlin; ELECTRON_ENABLE_GPU: undefined
```

## server mode

### Before

```bash
[07.01.2024 16:36.49.106] [LOG]   
Ready to go! Please point your browser to: http://localhost:8080
[07.01.2024 16:36.49.287] [INFO]  System information:
 ### SYSTEM:   manufacturer: Notebook; model: N650DU; raspberry: undefined; virtual: false
 ### OS:       platform: linux; distro: Debian GNU/Linux; release: 12; arch: x64; kernel: 5.10.0-20-amd64
 ### VERSIONS: electron: undefined; node: 21.1.0; npm: 10.2.4; pm2: 5.3.0; docker: 20.10.24+dfsg1
 ### OTHER:    timeZone: Europe/Berlin
```

### After

```bash
[2024-01-07 16:33:53.804] [INFO]  
>>>   Ready to go! Please point your browser to: http://localhost:8080   <<< 
[2024-01-07 16:33:53.997] [INFO]  System information:
### SYSTEM:   manufacturer: Notebook; model: N650DU; raspberry: undefined; virtual: false
### OS:       platform: linux; distro: Debian GNU/Linux; release: 12; arch: x64; kernel: 5.10.0-20-amd64
### VERSIONS: electron: undefined; used node: 21.1.0; installed node: 21.1.0; npm: 10.2.4; pm2: 5.3.0
### OTHER:    timeZone: Europe/Berlin; ELECTRON_ENABLE_GPU: undefined 
```
2024-01-07 17:28:17 +01:00
Kristjan ESPERANTO
6097547c10 Add systeminfo (#3331)
This is a first attempt to bring additional system information into the
console (see #3328). It's certainly not yet perfect, but with the PR we
have a better basis for discussion.

I tried to keep the output small so that we get as much information as
possible in screenshots.

This is how it looks on my development system.

```bash
[03.01.2024 00:50.19.226] [INFO] System information:
 ### SYSTEM:   manufacturer: Notebook; model: N650DU; raspberry: undefined; virtual: false
 ### OS:       platform: linux; distro: Debian GNU/Linux; release: 12
 ### VERSIONS: MagicMirror: 2.27.0-develop; electron: 27.2.0; kernel: 5.10.0-20-amd64; node: 21.1.0; npm: 10.2.4; pm2: 5.3.0; docker: 20.10.24+dfsg1
 ```
 
 Why is it still a draft:
- [x] I have doubts that utils.js is the right place for the function. What do you think?
=> Update: As long as there is no better idea, it stays there.
- [x] Instead of working through all wishes you expressed in the issue #3328, I only implemented what was easy to achieve. And wanted to hear what you think about this approach.
=> Update: Some added. Of course, more information could be added later, as soon as experience has been gained in productive use.
- [x] I don't quite like the introductory line ("The following lines provide information..."). Should I perhaps simply replace it with "System information:"?
=> Update: Changed to "System information:"
 
 [Here](https://github.com/sebhildebrandt/systeminformation#function-reference-and-os-support) you can see what information we could easily add with the systeminformation package.
 
 It would be interesting how the raspberry field is filled on a raspi system and with docker there should be another line, but I can't easily test that now.
2024-01-04 22:38:53 +01:00
dependabot[bot]
5f7b56e645 Bump eslint-plugin-jsdoc from 46.9.1 to 47.0.2 (#3315)
Bumps
[eslint-plugin-jsdoc](https://github.com/gajus/eslint-plugin-jsdoc) from
46.9.1 to 47.0.2.
<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>v47.0.2</h2>
<h2><a
href="https://github.com/gajus/eslint-plugin-jsdoc/compare/v47.0.1...v47.0.2">47.0.2</a>
(2024-01-01)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>TS:</strong> use flat config; fixes <a
href="https://redirect.github.com/gajus/eslint-plugin-jsdoc/issues/1130">#1130</a>
(<a
href="3677e43322">3677e43</a>)</li>
</ul>
<h2>v47.0.1</h2>
<h2><a
href="https://github.com/gajus/eslint-plugin-jsdoc/compare/v47.0.0...v47.0.1">47.0.1</a>
(2023-12-31)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>TS:</strong> make configs explicit (<a
href="47f316160d">47f3161</a>)</li>
</ul>
<h2>v47.0.0</h2>
<h1><a
href="https://github.com/gajus/eslint-plugin-jsdoc/compare/v46.10.1...v47.0.0">47.0.0</a>
(2023-12-31)</h1>
<h3>Features</h3>
<ul>
<li>expose TS types for index file; fixes <a
href="https://redirect.github.com/gajus/eslint-plugin-jsdoc/issues/1130">#1130</a>
(<a
href="dd9e71daa2">dd9e71d</a>)</li>
</ul>
<h3>BREAKING CHANGES</h3>
<ul>
<li>Adds types</li>
</ul>
<h2>v46.10.1</h2>
<h2><a
href="https://github.com/gajus/eslint-plugin-jsdoc/compare/v46.10.0...v46.10.1">46.10.1</a>
(2023-12-30)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>revert change to engines for now (<a
href="5e6280ffd4">5e6280f</a>)</li>
</ul>
<h2>v46.10.0</h2>
<h1><a
href="https://github.com/gajus/eslint-plugin-jsdoc/compare/v46.9.1...v46.10.0">46.10.0</a>
(2023-12-30)</h1>
<h3>Features</h3>
<ul>
<li>support ESLint 9 (<a
href="eec9d9532b">eec9d95</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="3677e43322"><code>3677e43</code></a>
fix(TS): use flat config; fixes <a
href="https://redirect.github.com/gajus/eslint-plugin-jsdoc/issues/1130">#1130</a></li>
<li><a
href="5f61575951"><code>5f61575</code></a>
chore(lint): handle disable directives in config</li>
<li><a
href="47f316160d"><code>47f3161</code></a>
fix(TS): make configs explicit</li>
<li><a
href="dd9e71daa2"><code>dd9e71d</code></a>
feat: expose TS types for index file; fixes <a
href="https://redirect.github.com/gajus/eslint-plugin-jsdoc/issues/1130">#1130</a></li>
<li><a
href="eb3f4b47e1"><code>eb3f4b4</code></a>
chore(linting): add ignores properly and disable directives for now</li>
<li><a
href="5e6280ffd4"><code>5e6280f</code></a>
fix: revert change to engines for now</li>
<li><a
href="eec9d9532b"><code>eec9d95</code></a>
feat: support ESLint 9</li>
<li><a
href="5c4ccb9752"><code>5c4ccb9</code></a>
chore: update devDeps.</li>
<li>See full diff in <a
href="https://github.com/gajus/eslint-plugin-jsdoc/compare/v46.9.1...v47.0.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=eslint-plugin-jsdoc&package-manager=npm_and_yarn&previous-version=46.9.1&new-version=47.0.2)](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>
2024-01-01 22:36:34 +01:00
Karsten Hassel
bcab8ebd26 skip changelog requirement when running tests for dependency updates (#3326)
solution for #3320
2024-01-01 22:14:05 +01:00
dependabot[bot]
ae1f9d0468 Bump moment-timezone from 0.5.43 to 0.5.44 in /vendor (#3317)
Bumps [moment-timezone](https://github.com/moment/moment-timezone) from
0.5.43 to 0.5.44.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/moment/moment-timezone/releases">moment-timezone's
releases</a>.</em></p>
<blockquote>
<h2>Release 0.5.44</h2>
<ul>
<li>Updated data to IANA TZDB <code>2023d</code>.</li>
<li>Fixed <code>.valueOf()</code> to return <code>NaN</code> for invalid
zoned objects (matching default <code>moment</code>) <a
href="https://redirect.github.com/moment/moment-timezone/pull/1082">#1082</a>.</li>
<li>Performance improvements:
<ul>
<li>Use binary search when looking up zone information <a
href="https://redirect.github.com/moment/moment-timezone/pull/720">#720</a>.</li>
<li>Avoid redundant checks in <code>tz.guess()</code>.</li>
<li>Avoid redundant <code>getZone()</code> calls in
<code>.tz()</code>.</li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/moment/moment-timezone/blob/develop/changelog.md">moment-timezone's
changelog</a>.</em></p>
<blockquote>
<h3><code>0.5.44</code> <em>2023-12-29</em></h3>
<ul>
<li>Updated data to IANA TZDB <code>2023d</code>.</li>
<li>Fixed <code>.valueOf()</code> to return <code>NaN</code> for invalid
zoned objects (matching default <code>moment</code>) <a
href="https://redirect.github.com/moment/moment-timezone/pull/1082">#1082</a>.</li>
<li>Performance improvements:
<ul>
<li>Use binary search when looking up zone information <a
href="https://redirect.github.com/moment/moment-timezone/pull/720">#720</a>.</li>
<li>Avoid redundant checks in <code>tz.guess()</code>.</li>
<li>Avoid redundant <code>getZone()</code> calls in
<code>.tz()</code>.</li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="25f19b6190"><code>25f19b6</code></a>
Build moment-timezone 0.5.44</li>
<li><a
href="4734cb2515"><code>4734cb2</code></a>
Bump version to 0.5.44</li>
<li><a
href="585fabfcbd"><code>585fabf</code></a>
Merge pull request <a
href="https://redirect.github.com/moment/moment-timezone/issues/1085">#1085</a>
from moment/data/2023d</li>
<li><a
href="ece926a59f"><code>ece926a</code></a>
Add test for valueOf behaviour with invalid moments (<a
href="https://redirect.github.com/moment/moment-timezone/issues/1075">#1075</a>)</li>
<li><a
href="341beac0fb"><code>341beac</code></a>
Ensure valueOf returns NaN for invalid instances (<a
href="https://redirect.github.com/moment/moment-timezone/issues/1082">#1082</a>)</li>
<li><a
href="69d856d5aa"><code>69d856d</code></a>
data: Add 2023d</li>
<li><a
href="dc53e6cdec"><code>dc53e6c</code></a>
build(deps): bump <code>@​babel/traverse</code> (<a
href="https://redirect.github.com/moment/moment-timezone/issues/1076">#1076</a>)</li>
<li><a
href="dffed7a8a9"><code>dffed7a</code></a>
perf: Reduce unnecessary getZone() calls in moment.tz()</li>
<li><a
href="f7d8fc2d42"><code>f7d8fc2</code></a>
docs: Add note about maintenance mode in contributing guide</li>
<li><a
href="4b1419b51f"><code>4b1419b</code></a>
docs: Update contributing guide to reflect the latest data process</li>
<li>Additional commits viewable in <a
href="https://github.com/moment/moment-timezone/compare/0.5.43...0.5.44">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=moment-timezone&package-manager=npm_and_yarn&previous-version=0.5.43&new-version=0.5.44)](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>
2024-01-01 22:03:25 +01:00
Kristjan ESPERANTO
367d02f1b6 Update URLs to MagicMirrorOrg (#3321) 2024-01-01 21:56:13 +01:00
Michael Teeuw
5e346e7c0a Start of 2.27.0 develop branch. 2024-01-01 15:43:38 +01:00
28 changed files with 1238 additions and 1249 deletions

View File

@@ -18,7 +18,7 @@ jobs:
timeout-minutes: 15
steps:
- name: "Checkout code"
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: "Use Node.js"
uses: actions/setup-node@v4
with:
@@ -45,7 +45,7 @@ jobs:
sudo apt-get update
sudo apt-get install -y libnss3 libasound2t64 labwc
- name: "Checkout code"
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: "Use Node.js ${{ matrix.node-version }}"
uses: actions/setup-node@v4
with:

View File

@@ -13,6 +13,6 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: "Checkout code"
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: "Dependency Review"
uses: actions/dependency-review-action@v4

View File

@@ -11,7 +11,7 @@ jobs:
node-version: [22.14.0, 22.x, 24.x]
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v5
- name: "Use Node.js ${{ matrix.node-version }}"
uses: actions/setup-node@v4
with:

View File

@@ -15,7 +15,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
uses: actions/checkout@v5
with:
ref: develop
- name: Set up Node.js

View File

@@ -7,6 +7,32 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
❤️ **Donate:** Enjoying MagicMirror²? [Please consider a donation!](https://magicmirror.builders/#donate) With your help we can continue to improve the MagicMirror².
## [2.33.0] - unreleased
planned for 2025-10-01
Thanks to: @dathbe.
### Changed
- [clock] Add CSS to prevent line breaking of sunset/sunrise time display (#3816)
- [core] Enhance system information logging format and include additional env and RAM details (#3839, #3843)
- [refactor] Add new file `js/module_functions.js` to move code used in several modules to one place (#3837)
- [tests] refactor: simplify jest config file (#3844)
- [tests] refactor: extract constants for weather electron tests (#3845)
- [tests] replace `console` with `Log` in calendar `debug.js` to avoid exception in eslint config (#3846)
- [tests] speed up e2e tests, cleanup and stabilize weather e2e tests (#3847, #3848)
### Updated
- [core] Update dependencies including electron to v37 as well as github actions (#3831, #3849, #3857, #3858)
### Fixed
- [calendar] Fixed broken unittest that only broke on the 1st of July and 1st of january (#3830)
- [clock] Fixed missing icons when no other modules with icons is loaded (#3834)
- [weather] Fixed handling of empty values in weathergov providers handling of precipitationAmount (#3859)
## [2.32.0] - 2025-07-01
Thanks to: @bughaver, @bugsounet, @khassel, @KristjanESPERANTO, @plebcity, @rejas, @sdetweil.
@@ -1771,6 +1797,7 @@ It includes (but is not limited to) the following features:
This was part of the blogpost: [https://michaelteeuw.nl/post/83916869600/magic-mirror-part-vi-production-of-the](https://michaelteeuw.nl/post/83916869600/magic-mirror-part-vi-production-of-the)
[2.33.0]: https://github.com/MagicMirrorOrg/MagicMirror/compare/v2.32.0...develop
[2.32.0]: https://github.com/MagicMirrorOrg/MagicMirror/compare/v2.31.0...v2.32.0
[2.31.0]: https://github.com/MagicMirrorOrg/MagicMirror/compare/v2.30.0...v2.31.0
[2.30.0]: https://github.com/MagicMirrorOrg/MagicMirror/compare/v2.29.0...v2.30.0

View File

@@ -88,7 +88,6 @@ export default defineConfig([
files: ["**/*.js"],
ignores: [
"clientonly/index.js",
"modules/default/calendar/debug.js",
"js/logger.js",
"tests/**/*.js"
],

View File

@@ -1,32 +1,37 @@
module.exports = async () => {
return {
verbose: true,
testTimeout: 20000,
testSequencer: "<rootDir>/tests/utils/test_sequencer.js",
projects: [
{
displayName: "unit",
globalSetup: "<rootDir>/tests/unit/helpers/global-setup.js",
moduleNameMapper: {
logger: "<rootDir>/js/logger.js"
},
testMatch: ["**/tests/unit/**/*.[jt]s?(x)"],
testPathIgnorePatterns: ["<rootDir>/tests/unit/mocks", "<rootDir>/tests/unit/helpers"]
const config = {
verbose: true,
testTimeout: 20000,
testSequencer: "<rootDir>/tests/utils/test_sequencer.js",
projects: [
{
displayName: "unit",
globalSetup: "<rootDir>/tests/unit/helpers/global-setup.js",
moduleNameMapper: {
logger: "<rootDir>/js/logger.js"
},
{
displayName: "electron",
testMatch: ["**/tests/electron/**/*.[jt]s?(x)"],
testPathIgnorePatterns: ["<rootDir>/tests/electron/helpers"]
},
{
displayName: "e2e",
testMatch: ["**/tests/e2e/**/*.[jt]s?(x)"],
modulePaths: ["<rootDir>/js/"],
testPathIgnorePatterns: ["<rootDir>/tests/e2e/helpers", "<rootDir>/tests/e2e/mocks"]
}
],
collectCoverageFrom: ["./clientonly/**/*.js", "./js/**/*.js", "./modules/default/**/*.js", "./serveronly/**/*.js"],
coverageReporters: ["lcov", "text"],
coverageProvider: "v8"
};
testMatch: ["**/tests/unit/**/*.[jt]s?(x)"],
testPathIgnorePatterns: ["<rootDir>/tests/unit/mocks", "<rootDir>/tests/unit/helpers"]
},
{
displayName: "electron",
testMatch: ["**/tests/electron/**/*.[jt]s?(x)"],
testPathIgnorePatterns: ["<rootDir>/tests/electron/helpers"]
},
{
displayName: "e2e",
testMatch: ["**/tests/e2e/**/*.[jt]s?(x)"],
modulePaths: ["<rootDir>/js/"],
testPathIgnorePatterns: ["<rootDir>/tests/e2e/helpers", "<rootDir>/tests/e2e/mocks"]
}
],
collectCoverageFrom: [
"<rootDir>/clientonly/**/*.js",
"<rootDir>/js/**/*.js",
"<rootDir>/modules/default/**/*.js",
"<rootDir>/serveronly/**/*.js"
],
coverageReporters: ["lcov", "text"],
coverageProvider: "v8"
};
module.exports = config;

View File

@@ -22,7 +22,7 @@ global.mmTestMode = process.env.mmTestMode === "true";
Log.log(`Starting MagicMirror: v${global.version}`);
// Log system information.
Utils.logSystemInformation();
Utils.logSystemInformation(global.version);
// global absolute root path
global.root_path = path.resolve(`${__dirname}/../`);

18
js/module_functions.js Normal file
View File

@@ -0,0 +1,18 @@
/**
* Schedule the timer for the next update
* @param {object} timer The timer of the module
* @param {bigint} intervalMS interval in milliseconds
* @param {Function} callback function to call when the timer expires
*/
const scheduleTimer = function (timer, intervalMS, callback) {
if (process.env.JEST_WORKER_ID === undefined) {
// only set timer when not running in jest
let tmr = timer;
clearTimeout(tmr);
tmr = setTimeout(function () {
callback();
}, intervalMS);
}
};
module.exports = { scheduleTimer };

View File

@@ -1,4 +1,3 @@
const execSync = require("node:child_process").execSync;
const path = require("node:path");
const rootPath = path.resolve(`${__dirname}/../`);
@@ -14,27 +13,34 @@ const discoveredPositionsJSFilename = "js/positions.js";
module.exports = {
async logSystemInformation () {
async logSystemInformation (mirrorVersion) {
try {
let installedNodeVersion = execSync("node -v", { encoding: "utf-8" }).replace("v", "").replace(/(?:\r\n|\r|\n)/g, "");
const system = await si.system();
const osInfo = await si.osInfo();
const versions = await si.versions();
const staticData = await si.get({
system: "manufacturer, model, virtual",
osInfo: "platform, distro, release, arch",
versions: "kernel, node, npm, pm2"
});
let systemDataString = `System information:
### SYSTEM: manufacturer: ${staticData.system.manufacturer}; model: ${staticData.system.model}; virtual: ${staticData.system.virtual}
### OS: platform: ${staticData.osInfo.platform}; distro: ${staticData.osInfo.distro}; release: ${staticData.osInfo.release}; arch: ${staticData.osInfo.arch}; kernel: ${staticData.versions.kernel}
### VERSIONS: electron: ${process.versions.electron}; used node: ${staticData.versions.node}; installed node: ${installedNodeVersion}; npm: ${staticData.versions.npm}; pm2: ${staticData.versions.pm2}
### OTHER: timeZone: ${Intl.DateTimeFormat().resolvedOptions().timeZone}; ELECTRON_ENABLE_GPU: ${process.env.ELECTRON_ENABLE_GPU}`
.replace(/\t/g, "");
const usedNodeVersion = process.version.replace("v", "");
const installedNodeVersion = versions.node;
const totalRam = (os.totalmem() / 1024 / 1024).toFixed(2);
const freeRam = (os.freemem() / 1024 / 1024).toFixed(2);
const usedRam = ((os.totalmem() - os.freemem()) / 1024 / 1024).toFixed(2);
let systemDataString = [
"\n#### System Information ####",
`- SYSTEM: manufacturer: ${system.manufacturer}; model: ${system.model}; virtual: ${system.virtual}; MM: ${mirrorVersion}`,
`- OS: platform: ${osInfo.platform}; distro: ${osInfo.distro}; release: ${osInfo.release}; arch: ${osInfo.arch}; kernel: ${versions.kernel}`,
`- VERSIONS: electron: ${process.versions.electron}; used node: ${usedNodeVersion}; installed node: ${installedNodeVersion}; npm: ${versions.npm}; pm2: ${versions.pm2}`,
`- ENV: XDG_SESSION_TYPE: ${process.env.XDG_SESSION_TYPE}; MM_CONFIG_FILE: ${process.env.MM_CONFIG_FILE}`,
` WAYLAND_DISPLAY: ${process.env.WAYLAND_DISPLAY}; DISPLAY: ${process.env.DISPLAY}; ELECTRON_ENABLE_GPU: ${process.env.ELECTRON_ENABLE_GPU}`,
`- RAM: total: ${totalRam} MB; free: ${freeRam} MB; used: ${usedRam} MB`,
`- OTHERS: uptime: ${Math.floor(os.uptime() / 60)} minutes; timeZone: ${Intl.DateTimeFormat().resolvedOptions().timeZone}`
].join("\n");
Log.info(systemDataString);
// Return is currently only for jest
return systemDataString;
} catch (e) {
Log.error(e);
} catch (error) {
Log.error(error);
}
},

View File

@@ -9,7 +9,7 @@
font-size: 70%;
position: relative;
display: table;
word-wrap: break-word;
overflow-wrap: break-word;
max-width: 100%;
border-width: 1px;
border-radius: 5px;
@@ -35,7 +35,7 @@
top: 40%;
width: 40%;
height: auto;
word-wrap: break-word;
overflow-wrap: break-word;
border-radius: 20px;
}

View File

@@ -3,6 +3,7 @@ const ical = require("node-ical");
const Log = require("logger");
const NodeHelper = require("node_helper");
const CalendarFetcherUtils = require("./calendarfetcherutils");
const { scheduleTimer } = require("#module_functions");
/**
*
@@ -65,31 +66,18 @@ const CalendarFetcher = function (url, reloadInterval, excludedEvents, maximumEn
});
} catch (error) {
fetchFailedCallback(this, error);
scheduleTimer();
scheduleTimer(reloadTimer, reloadInterval, fetchCalendar);
return;
}
this.broadcastEvents();
scheduleTimer();
scheduleTimer(reloadTimer, reloadInterval, fetchCalendar);
})
.catch((error) => {
fetchFailedCallback(this, error);
scheduleTimer();
scheduleTimer(reloadTimer, reloadInterval, fetchCalendar);
});
};
/**
* Schedule the timer for the next update.
*/
const scheduleTimer = function () {
if (process.env.JEST_WORKER_ID === undefined) {
// only set timer when not running in jest
clearTimeout(reloadTimer);
reloadTimer = setTimeout(function () {
fetchCalendar();
}, reloadInterval);
}
};
/* public methods */
/**

View File

@@ -5,6 +5,7 @@
*/
// Alias modules mentioned in package.js under _moduleAliases.
require("module-alias/register");
const Log = require("../../../js/logger");
const CalendarFetcher = require("./calendarfetcher");
@@ -20,22 +21,22 @@ const auth = {
pass: pass
};
console.log("Create fetcher ...");
Log.log("Create fetcher ...");
const fetcher = new CalendarFetcher(url, fetchInterval, [], maximumEntries, maximumNumberOfDays, auth);
fetcher.onReceive(function (fetcher) {
console.log(fetcher.events());
console.log("------------------------------------------------------------");
Log.log(fetcher.events());
Log.log("------------------------------------------------------------");
process.exit(0);
});
fetcher.onError(function (fetcher, error) {
console.log("Fetcher error:");
console.log(error);
Log.log("Fetcher error:");
Log.log(error);
process.exit(1);
});
fetcher.startFetch();
console.log("Create fetcher done! ");
Log.log("Create fetcher done! ");

View File

@@ -36,7 +36,7 @@ Module.register("clock", {
},
// Define styles.
getStyles () {
return ["clock_styles.css"];
return ["clock_styles.css", "font-awesome.css"];
},
// Define start sequence.
start () {

View File

@@ -87,9 +87,17 @@
transform-origin: 50% 100%;
}
.module.clock .digital {
display: flex;
flex-direction: column;
gap: 3px;
}
.module.clock .sun,
.module.clock .moon {
display: flex;
white-space: nowrap;
gap: 10px;
}
.module.clock .sun > *,

View File

@@ -5,6 +5,7 @@ const iconv = require("iconv-lite");
const { htmlToText } = require("html-to-text");
const Log = require("logger");
const NodeHelper = require("node_helper");
const { scheduleTimer } = require("#module_functions");
/**
* Responsible for requesting an update on the set interval and broadcasting the data.
@@ -79,12 +80,12 @@ const NewsfeedFetcher = function (url, reloadInterval, encoding, logFeedWarnings
parser.on("error", (error) => {
fetchFailedCallback(this, error);
scheduleTimer();
scheduleTimer(reloadTimer, reloadIntervalMS, fetchNews);
});
//"end" event is not broadcast if the feed is empty but "finish" is used for both
parser.on("finish", () => {
scheduleTimer();
scheduleTimer(reloadTimer, reloadIntervalMS, fetchNews);
});
parser.on("ttl", (minutes) => {
@@ -120,23 +121,10 @@ const NewsfeedFetcher = function (url, reloadInterval, encoding, logFeedWarnings
})
.catch((error) => {
fetchFailedCallback(this, error);
scheduleTimer();
scheduleTimer(reloadTimer, reloadIntervalMS, fetchNews);
});
};
/**
* Schedule the timer for the next update.
*/
const scheduleTimer = function () {
if (process.env.JEST_WORKER_ID === undefined) {
// only set timer when not running in jest
clearTimeout(reloadTimer);
reloadTimer = setTimeout(function () {
fetchNews();
}, reloadIntervalMS);
}
};
/* public methods */
/**

View File

@@ -218,7 +218,7 @@ WeatherProvider.register("weathergov", {
currentWeather.minTemperature = currentWeatherData.minTemperatureLast24Hours.value;
currentWeather.maxTemperature = currentWeatherData.maxTemperatureLast24Hours.value;
currentWeather.humidity = Math.round(currentWeatherData.relativeHumidity.value);
currentWeather.precipitationAmount = currentWeatherData.precipitationLastHour.value ? currentWeatherData.precipitationLastHour.value : currentWeatherData.precipitationLast3Hours.value;
currentWeather.precipitationAmount = currentWeatherData.precipitationLastHour?.value ?? currentWeatherData.precipitationLast3Hours?.value;
if (currentWeatherData.heatIndex.value !== null) {
currentWeather.feelsLikeTemp = currentWeatherData.heatIndex.value;
} else if (currentWeatherData.windChill.value !== null) {

View File

@@ -163,7 +163,8 @@ Module.register("weather", {
// What to do when the weather provider has new information available?
updateAvailable () {
Log.log("New weather information available.");
this.updateDom(0);
// this value was changed from 0 to 300 to stabilize weather tests:
this.updateDom(300);
this.scheduleUpdate();
if (this.weatherProvider.currentWeather()) {

2145
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
{
"name": "magicmirror",
"version": "2.32.0",
"version": "2.33.0-develop",
"description": "The open source modular smart mirror platform.",
"keywords": [
"magic mirror",
@@ -23,16 +23,21 @@
"https://github.com/MagicMirrorOrg/MagicMirror/graphs/contributors"
],
"type": "commonjs",
"imports": {
"#module_functions": {
"default": "./js/module_functions.js"
}
},
"main": "js/electron.js",
"scripts": {
"config:check": "node js/check_config.js",
"postinstall": "git clean -df fonts vendor",
"install-mm": "npm install --no-audit --no-fund --no-update-notifier --only=prod --omit=dev",
"install-mm:dev": "npm install --no-audit --no-fund --no-update-notifier",
"lint:css": "stylelint 'css/main.css' 'css/roboto.css' 'css/font-awesome.css' 'modules/default/**/*.css' --fix",
"lint:js": "eslint --fix",
"lint:markdown": "markdownlint-cli2 . --fix",
"lint:prettier": "prettier . --write",
"postinstall": "git clean -df fonts vendor",
"prepare": "[ -f node_modules/.bin/husky ] && husky || echo no husky installed.",
"server": "node ./serveronly",
"start": "node --run start:x11",
@@ -63,13 +68,13 @@
"dependencies": {
"@fontsource/roboto": "^5.2.6",
"@fontsource/roboto-condensed": "^5.2.6",
"@fortawesome/fontawesome-free": "^6.7.2",
"@fortawesome/fontawesome-free": "^7.0.0",
"ajv": "^8.17.1",
"animate.css": "^4.1.1",
"console-stamp": "^3.1.2",
"croner": "^9.1.0",
"envsub": "^4.1.0",
"eslint": "^9.30.0",
"eslint": "^9.33.0",
"express": "^5.1.0",
"express-ipfilter": "^1.3.2",
"feedme": "^2.0.2",
@@ -85,31 +90,31 @@
"socket.io": "^4.8.1",
"suncalc": "^1.9.0",
"systeminformation": "^5.27.7",
"undici": "^7.11.0",
"undici": "^7.13.0",
"weathericons": "^2.1.0"
},
"devDependencies": {
"@stylistic/eslint-plugin": "^5.1.0",
"cspell": "^9.1.2",
"@stylistic/eslint-plugin": "^5.2.3",
"cspell": "^9.2.0",
"eslint-plugin-import-x": "^4.16.1",
"eslint-plugin-jest": "^29.0.1",
"eslint-plugin-jsdoc": "^51.2.3",
"eslint-plugin-package-json": "^0.42.0",
"eslint-plugin-jsdoc": "^52.0.4",
"eslint-plugin-package-json": "^0.52.1",
"express-basic-auth": "^1.2.1",
"husky": "^9.1.7",
"jest": "^30.0.3",
"jest": "^30.0.5",
"jsdom": "^26.1.0",
"lint-staged": "^16.1.2",
"lint-staged": "^16.1.5",
"markdownlint-cli2": "^0.18.1",
"playwright": "^1.53.1",
"playwright": "^1.54.2",
"prettier": "^3.6.2",
"sinon": "^21.0.0",
"stylelint": "^16.21.0",
"stylelint-config-standard": "^38.0.0",
"stylelint": "^16.23.1",
"stylelint-config-standard": "^39.0.0",
"stylelint-prettier": "^5.0.3"
},
"optionalDependencies": {
"electron": "^36.6.0"
"electron": "^37.2.6"
},
"engines": {
"node": ">=22.14.0"

View File

@@ -34,7 +34,7 @@ exports.startApplication = async (configFilename, exec) => {
return global.app.start();
};
exports.stopApplication = async (waitTime = 1000) => {
exports.stopApplication = async (waitTime = 10) => {
if (global.window) {
// no closing causes jest errors and memory leaks
global.window.close();

View File

@@ -1,4 +1,4 @@
const { injectMockData } = require("../../utils/weather_mocker");
const { injectMockData, cleanupMockData } = require("../../utils/weather_mocker");
const helpers = require("./global-setup");
exports.getText = async (element, result) => {
@@ -13,7 +13,12 @@ exports.getText = async (element, result) => {
return true;
};
exports.startApp = async (configFileName, additionalMockData) => {
exports.startApplication = async (configFileName, additionalMockData) => {
await helpers.startApplication(injectMockData(configFileName, additionalMockData));
await helpers.getDocument();
};
exports.stopApplication = async () => {
await helpers.stopApplication();
cleanupMockData();
};

View File

@@ -1,17 +1,15 @@
const helpers = require("../helpers/global-setup");
const weatherFunc = require("../helpers/weather-functions");
const { cleanupMockData } = require("../../utils/weather_mocker");
describe("Weather module", () => {
afterAll(async () => {
await helpers.stopApplication();
await cleanupMockData();
await weatherFunc.stopApplication();
});
describe("Current weather", () => {
describe("Default configuration", () => {
beforeAll(async () => {
await weatherFunc.startApp("tests/configs/modules/weather/currentweather_default.js", {});
await weatherFunc.startApplication("tests/configs/modules/weather/currentweather_default.js", {});
});
it("should render wind speed and wind direction", async () => {
@@ -34,7 +32,7 @@ describe("Weather module", () => {
describe("Compliments Integration", () => {
beforeAll(async () => {
await weatherFunc.startApp("tests/configs/modules/weather/currentweather_compliments.js", {});
await weatherFunc.startApplication("tests/configs/modules/weather/currentweather_compliments.js", {});
});
it("should render a compliment based on the current weather", async () => {
@@ -44,7 +42,7 @@ describe("Weather module", () => {
describe("Configuration Options", () => {
beforeAll(async () => {
await weatherFunc.startApp("tests/configs/modules/weather/currentweather_options.js", {});
await weatherFunc.startApplication("tests/configs/modules/weather/currentweather_options.js", {});
});
it("should render windUnits in beaufort", async () => {
@@ -72,7 +70,7 @@ describe("Weather module", () => {
describe("Current weather with imperial units", () => {
beforeAll(async () => {
await weatherFunc.startApp("tests/configs/modules/weather/currentweather_units.js", {});
await weatherFunc.startApplication("tests/configs/modules/weather/currentweather_units.js", {});
});
it("should render wind in imperial units", async () => {

View File

@@ -1,16 +1,14 @@
const helpers = require("../helpers/global-setup");
const weatherFunc = require("../helpers/weather-functions");
const { cleanupMockData } = require("../../utils/weather_mocker");
describe("Weather module: Weather Forecast", () => {
afterAll(async () => {
await helpers.stopApplication();
await cleanupMockData();
await weatherFunc.stopApplication();
});
describe("Default configuration", () => {
beforeAll(async () => {
await weatherFunc.startApp("tests/configs/modules/weather/forecastweather_default.js", {});
await weatherFunc.startApplication("tests/configs/modules/weather/forecastweather_default.js", {});
});
const days = ["Today", "Tomorrow", "Sun", "Mon", "Tue"];
@@ -54,7 +52,7 @@ describe("Weather module: Weather Forecast", () => {
describe("Absolute configuration", () => {
beforeAll(async () => {
await weatherFunc.startApp("tests/configs/modules/weather/forecastweather_absolute.js", {});
await weatherFunc.startApplication("tests/configs/modules/weather/forecastweather_absolute.js", {});
});
const days = ["Fri", "Sat", "Sun", "Mon", "Tue"];
@@ -67,7 +65,7 @@ describe("Weather module: Weather Forecast", () => {
describe("Configuration Options", () => {
beforeAll(async () => {
await weatherFunc.startApp("tests/configs/modules/weather/forecastweather_options.js", {});
await weatherFunc.startApplication("tests/configs/modules/weather/forecastweather_options.js", {});
});
it("should render custom table class", async () => {
@@ -94,7 +92,7 @@ describe("Weather module: Weather Forecast", () => {
describe("Forecast weather with imperial units", () => {
beforeAll(async () => {
await weatherFunc.startApp("tests/configs/modules/weather/forecastweather_units.js", {});
await weatherFunc.startApplication("tests/configs/modules/weather/forecastweather_units.js", {});
});
describe("Temperature units", () => {

View File

@@ -1,16 +1,13 @@
const helpers = require("../helpers/global-setup");
const weatherFunc = require("../helpers/weather-functions");
const { cleanupMockData } = require("../../utils/weather_mocker");
describe("Weather module: Weather Hourly Forecast", () => {
afterAll(async () => {
await helpers.stopApplication();
await cleanupMockData();
await weatherFunc.stopApplication();
});
describe("Default configuration", () => {
beforeAll(async () => {
await weatherFunc.startApp("tests/configs/modules/weather/hourlyweather_default.js", {});
await weatherFunc.startApplication("tests/configs/modules/weather/hourlyweather_default.js", {});
});
const minTemps = ["7:00 pm", "8:00 pm", "9:00 pm", "10:00 pm", "11:00 pm"];
@@ -23,7 +20,7 @@ describe("Weather module: Weather Hourly Forecast", () => {
describe("Hourly weather options", () => {
beforeAll(async () => {
await weatherFunc.startApp("tests/configs/modules/weather/hourlyweather_options.js", {});
await weatherFunc.startApplication("tests/configs/modules/weather/hourlyweather_options.js", {});
});
describe("Hourly increments of 2", () => {
@@ -38,7 +35,7 @@ describe("Weather module: Weather Hourly Forecast", () => {
describe("Show precipitations", () => {
beforeAll(async () => {
await weatherFunc.startApp("tests/configs/modules/weather/hourlyweather_showPrecipitation.js", {});
await weatherFunc.startApplication("tests/configs/modules/weather/hourlyweather_showPrecipitation.js", {});
});
describe("Shows precipitation amount", () => {

View File

@@ -2,29 +2,38 @@ const helpers = require("../helpers/global-setup");
const weatherHelper = require("../helpers/weather-setup");
const { cleanupMockData } = require("../../utils/weather_mocker");
const CURRENT_WEATHER_CONFIG = "tests/configs/modules/weather/currentweather_default.js";
const SUNRISE_DATE = "13 Jan 2019 00:30:00 GMT";
const SUNSET_DATE = "13 Jan 2019 12:30:00 GMT";
const SUN_EVENT_SELECTOR = ".weather .normal.medium span:nth-child(4)";
const EXPECTED_SUNRISE_TEXT = "7:00 am";
const EXPECTED_SUNSET_TEXT = "3:45 pm";
describe("Weather module", () => {
afterEach(async () => {
await helpers.stopApplication();
await cleanupMockData();
cleanupMockData();
});
describe("Current weather with sunrise", () => {
beforeAll(async () => {
await weatherHelper.startApp("tests/configs/modules/weather/currentweather_default.js", "13 Jan 2019 00:30:00 GMT");
await weatherHelper.startApp(CURRENT_WEATHER_CONFIG, SUNRISE_DATE);
});
it("should render sunrise", async () => {
await expect(weatherHelper.getText(".weather .normal.medium span:nth-child(4)", "7:00 am")).resolves.toBe(true);
const isSunriseRendered = await weatherHelper.getText(SUN_EVENT_SELECTOR, EXPECTED_SUNRISE_TEXT);
expect(isSunriseRendered).toBe(true);
});
});
describe("Current weather with sunset", () => {
beforeAll(async () => {
await weatherHelper.startApp("tests/configs/modules/weather/currentweather_default.js", "13 Jan 2019 12:30:00 GMT");
await weatherHelper.startApp(CURRENT_WEATHER_CONFIG, SUNSET_DATE);
});
it("should render sunset", async () => {
await expect(weatherHelper.getText(".weather .normal.medium span:nth-child(4)", "3:45 pm")).resolves.toBe(true);
const isSunsetRendered = await weatherHelper.getText(SUN_EVENT_SELECTOR, EXPECTED_SUNSET_TEXT);
expect(isSunsetRendered).toBe(true);
});
});
});

View File

@@ -10,7 +10,7 @@ describe("Calendar fetcher utils test", () => {
excludedEvents: [],
includePastEvents: false,
maximumEntries: 10,
maximumNumberOfDays: 365
maximumNumberOfDays: 367
};
describe("filterEvents", () => {

View File

@@ -1,7 +1,6 @@
const fs = require("node:fs");
const path = require("node:path");
const util = require("node:util");
const exec = util.promisify(require("node:child_process").exec);
const exec = require("node:child_process").execSync;
/**
* @param {string} type what data to read, can be "current" "forecast" or "hourly
@@ -45,9 +44,9 @@ const injectMockData = (configFileName, extendedData = {}) => {
return tempFile;
};
const cleanupMockData = async () => {
const cleanupMockData = () => {
const tempDir = path.resolve(`${__dirname}/../configs`).toString();
await exec(`find ${tempDir} -type f -name *_temp.js -delete`);
exec(`find ${tempDir} -type f -name *_temp.js -delete`);
};
module.exports = { injectMockData, cleanupMockData };