Read the statement by Michael Teeuw here.
2.32.0 Calendar module limitDays and excludedEvents stopped working
-
@AndyHazz I copied your post in exactly, i reverted back to 2.32 original first
and got the right debug and results
[2025-07-09 16:27:38.473] [DEBUG] Processing entry…
[2025-07-09 16:27:38.473] [DEBUG] title: Dad’s Birthday
[2025-07-09 16:27:38.473] [LOG] should be excluded dad’s birthday birthday false g
[2025-07-09 16:27:38.473] [LOG] event should be excluded = true, dad’s birthday
[2025-07-09 16:27:38.473] [LOG] filter applies result = { excluded: true, until: null }
[2025-07-09 16:27:38.473] [LOG] filter applies returning = { excluded: true, until: null } -
@AndyHazz and
the fetcherutils processes this exclude list very early after getting the events parsed
// loop thru the parsed data, one event at a time Object.entries(data).forEach(([key, event]) => { Log.debug("Processing entry..."); const title = CalendarFetcherUtils.getTitleFromEvent(event); Log.debug(`title: ${title}`); // Return quickly if event should be excluded. let { excluded, eventFilterUntil } = this.shouldEventBeExcluded(config, title); if (excluded) { return; }
-
@sdetweil should I see a console message from loader.js about calendarfetcherutils.js being loaded?
I see
Load script: modules/default/calendar/calendar.js Load script: modules/default/calendar/calendarutils.js
but no mention in the console of calendarfetcherutils.js
-
@AndyHazz no.
-
@sdetweil I’ve no idea then, but if you were able to reproduce the issue I had, and then fix it on your end, I probably just messed something up somewhere and without any access to logs on my docker setup that may remain a mystery … I’ve just had another go at trying to figure out what that may be, no luck.
No rush at all but I guess if you’re happy with the fix it’ll show up in a new MM version at some point and I’ll update to that.
-
@AndyHazz next release isn’t til Oct 1
-
@AndyHazz weird…
-
@AndyHazz would you be willing to test another implementation of the limitDays code fix
another author has changed the code quite a bit,
copy the existing calendar.js so not losing what you have
new codeif (this.config.limitDays > 0 && events.length>0) { // line 708 // Group all events by date, events on the same date will be in a list with the key being the date. Log.info("limitdays starting, events list length=", events.length) const eventsByDate = Object.groupBy(events, (ev) => this.timestampToMoment(ev.startDate).format("YYYY-MM-DD")); Log.info("eventsByDate keys=",Object.keys(eventsByDate)) const newEvents = []; let currentDate = moment().subtract(1,'days'); let daysCollected = 0; while (daysCollected < this.config.limitDays) { const dateStr = currentDate.format("YYYY-MM-DD"); Log.info("limitDays checking=",dateStr) // Check if there are events on the currentDate if (eventsByDate[dateStr]) Log.info("eventsByDate[",dateStr,"] length=",eventsByDate[dateStr].length) if (eventsByDate[dateStr] && eventsByDate[dateStr].length > 0) { // If there are any events today then get all those events and select the currently active events and the events that are starting later in the day. newEvents.push(...eventsByDate[dateStr].filter((ev) => this.timestampToMoment(ev.endDate).isAfter(moment()))); // Since we found a day with events, increase the daysCollected by 1 daysCollected++; Log.info("limitDays, found day with events, count=",daysCollected) } // Search for the next day currentDate.add(1, "day"); } Log.info("limitDays done") events = newEvents; }
this line is unchanged after replacing above code
Log.info(`slicing events total maxcount=${this.config.maximumEntries}`); // this line is unchanged
-
@sdetweil no problem, that new code seems to work fine for me.
However, I don’t seem to have a great setup for testing - after making the changes, I can load up MM in my remote/laptop browser and immediately see the changes working, but if I try and refresh the electron browser on the raspberry pi running my mirror (using MMM-Remote-Control), it seems to take ages, crash, and then reverts the code back to the docker image default 😮💨
I can see this in the docker container logs so I reckon it’s reverting any changes I make there?
[entrypoint 18:36:04.283] [INFO] copy default modules [entrypoint 18:36:04.918] [INFO] copy css files > magicmirror@2.32.0 start > node --run start:x11
-
@AndyHazz said in 2.32.0 Calendar module limitDays and excludedEvents stopped working:
I can see this in the docker container logs so I reckon it’s reverting any changes I make there?
yes it overrides the default modules but you can change this behavior