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.

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.

2 participants