Skip to content

Conversation

@khassel
Copy link
Collaborator

@khassel khassel commented Jan 22, 2026

  • remove param --enable-features=UseOzonePlatform in start electron tests (as we did already in package.json)
  • update node versions in github workflows, remove 22.21.1, add 25.x
  • fix formatting in tests
  • update dependencies including electron to v40

This is still a draft PR because most calendar electron tests are not running which is caused by the electron update from v39.3.0 to v40.0.0. Maybe @KristjanESPERANTO has an idea ...

@khassel
Copy link
Collaborator Author

khassel commented Jan 22, 2026

I now used the config from the first failed test with

export MM_CONFIG_FILE=tests/configs/modules/calendar/custom.js

and starting mm with node --run start:

[2026-01-22 19:36:18.602] [LOG]   [electron] Launching application.
[2026-01-22 19:36:18.605] [INFO]  [systeminformation]
####  System Information  ####
- SYSTEM:   manufacturer: Microsoft; model: Docker Container; virtual: true; MM: v2.35.0-develop
- OS:       platform: linux; distro: Debian GNU/Linux; release: 13; arch: x64; kernel: 6.6.87.2-microsoft-standard-WSL2
- VERSIONS: electron: 40.0.0; used node: 25.4.0; installed node: 25.4.0; npm: 11.7.0; pm2:
- ENV:      XDG_SESSION_TYPE: undefined; MM_CONFIG_FILE: tests/configs/modules/calendar/custom.js
            WAYLAND_DISPLAY:  wayland-0; DISPLAY: unix:0.0; ELECTRON_ENABLE_GPU: undefined
- RAM:      total: 14872.19 MB; free: 13132.63 MB; used: 1739.56 MB
- OTHERS:   uptime: 211 minutes; timeZone: UTC
[2026-01-22 19:36:18.902] [LOG]   [calendar] Create new calendarfetcher for url: http://localhost:8080/tests/mocks/calendar_test_icons.ics - Interval: 3600000
[2026-01-22 19:36:18.946] [ERROR] [calendar] http://localhost:8080/tests/mocks/calendar_test_icons.ics - iCal parsing failed: Temporal error: Must specify time zone.
[2026-01-22 19:36:18.950] [ERROR] [calendar] Calendar Error. Could not fetch calendar:  http://localhost:8080/tests/mocks/calendar_test_icons.ics TypeError: Temporal error: Must specify time zone.
    at ZonedDateTime.until (<anonymous>)
    at _RRuleTemporal.between (/opt/magic_mirror/node_modules/rrule-temporal/dist/index.cjs:1529:41)
    at RRuleCompatWrapper.between (/opt/magic_mirror/node_modules/node-ical/ical.js:73:33)
    at Object.getMomentsFromRecurringEvent (/opt/magic_mirror/__modules/default/calendar/calendarfetcherutils.js:69:22)
    at Object.expandRecurringEvent (/opt/magic_mirror/__modules/default/calendar/calendarfetcherutils.js:302:40)
    at /opt/magic_mirror/__modules/default/calendar/calendarfetcherutils.js:159:39
    at Array.forEach (<anonymous>)
    at Object.filterEvents (/opt/magic_mirror/__modules/default/calendar/calendarfetcherutils.js:107:24)
    at CalendarFetcher.fetchCalendar (/opt/magic_mirror/__modules/default/calendar/calendarfetcher.js:168:41)
    at process.processTicksAndRejections (node:internal/process/task_queues:103:5)

So the new electron version causes errors in ical parsing???

@KristjanESPERANTO
Copy link
Collaborator

That's interesting. I'll see if I can find out anything.

@khassel
Copy link
Collaborator Author

khassel commented Jan 22, 2026

When I run the same setup without electron it works (node --run server).

I compared the 2 package-lock.json files but see nothing related:

node@bd2930cf8500:/opt/magic_mirror$ diff lock.39 lock.40
65c65
<                               "electron": "^39.3.0"
---
>                               "electron": "^40.0.0"
4751,4753c4751,4753
<                       "version": "39.3.0",
<                       "resolved": "https://registry.npmjs.org/electron/-/electron-39.3.0.tgz",
<                       "integrity": "sha512-ZA2Cmu5Vs8zeuZBr71XWZ5vgm7lRDB9N50oV6ee7YocITyxRxx/apWFKY48Sxyn0gzVlX+6YQc3CS1PtYIkGUg==",
---
>                       "version": "40.0.0",
>                       "resolved": "https://registry.npmjs.org/electron/-/electron-40.0.0.tgz",
>                       "integrity": "sha512-UyBy5yJ0/wm4gNugCtNPjvddjAknMTuXR2aCHioXicH7aKRKGDBPp4xqTEi/doVcB3R+MN3wfU9o8d/9pwgK2A==",
4759c4759
<                               "@types/node": "^22.7.7",
---
>                               "@types/node": "^24.9.0",
4768,4784d4767
<               },
<               "node_modules/electron/node_modules/@types/node": {
<                       "version": "22.19.7",
<                       "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.7.tgz",
<                       "integrity": "sha512-MciR4AKGHWl7xwxkBa6xUGxQJ4VBOmPTF7sL+iGzuahOFaO0jHCsuEfS80pan1ef4gWId1oWOweIhrDEYLuaOw==",
<                       "license": "MIT",
<                       "optional": true,
<                       "dependencies": {
<                               "undici-types": "~6.21.0"
<                       }
<               },
<               "node_modules/electron/node_modules/undici-types": {
<                       "version": "6.21.0",
<                       "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz",
<                       "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==",
<                       "license": "MIT",
<                       "optional": true

@KristjanESPERANTO
Copy link
Collaborator

That's a tough one. But I think I've got it 🤯 The thing is that Electron 40 now comes with Temporal - that's great, but it conflicts with the Temporal polyfill from node-ical. In my opinion, it's best if rrule-temporal intercepts that - I created ggaabe/rrule-temporal#99 for that.

@KristjanESPERANTO
Copy link
Collaborator

Update: ggaabe/rrule-temporal#99 was accepted. It's cool that the maintainer responds so quickly 🙂 But the fix didn't cover everything, so I created a follow up PR: ggaabe/rrule-temporal#101.

@khassel
Copy link
Collaborator Author

khassel commented Jan 23, 2026

I think we wait for the fix, AFAIS we have to wait for a node-ical release which contains the new rrule-temporal version.

…date

- Replace deprecated string-based extends syntax ("stylistic/all") with
  stylistic.configs.customize() factory function
- Move commaDangle configuration into customize() options for cleaner config
- Fixes padded-blocks and other style rules being incorrectly applied after
  updating @stylistic/eslint-plugin from 5.x to 5.7.1

The string-based extends syntax stopped working with the latest update
when used with defineConfig().
@KristjanESPERANTO
Copy link
Collaborator

ggaabe/rrule-temporal#101 was accepted 🥳 And the tests are working now.

I ran npm update which updated rrule-temporal to the new version 1.4.4. So we don't have to wait for node-ical.

Since I also pulled up all the other dependencies, an issue arose with an ESLint plugin. This is a foreshadowing of the new major release (v10) of ESLint. I adjusted the config accordingly.

@KristjanESPERANTO
Copy link
Collaborator

This is what I love about open source. We discovered an issue in a dependency, fixed it upstream, and now other projects using it will benefit too 😃

@khassel khassel marked this pull request as ready for review January 24, 2026 08:22
@khassel
Copy link
Collaborator Author

khassel commented Jan 24, 2026

so this is ready for merge which should be done by @sdetweil or @rejas

@sdetweil sdetweil merged commit 5e0cd28 into MagicMirrorOrg:develop Jan 24, 2026
9 checks passed
@khassel khassel deleted the electron branch January 24, 2026 20:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants