Can we create a Shared Projects with working code?
This would be a MM core + Theme files/code (minus ip/email addresses/API keys of course)
If this already exists, I will search on it or go read if you can kindly provide a link.
I’d like to purpose an area where users can share their working code/files to help expedite their projects. I saw where users shared pics of their projects, nice! But why not share the working code?
For example, there are hundreds of threads where folks are going back and forth trying to get their MM project off the ground.
I for example… wanted a project that mimics DAK Board, I found several examples and chats but broken context which lead to more digging and rabbit holes of time, I just don’t have.
So for me, MM sounds great, but requires too much time.
I’m sure some will bash me for whatever reason for suggesting this, never fails.
So if your comment is not polite or helpful, just don’t bother writing , save us all.
Hey everyone,
I’ve been working on a custom MagicMirror setup and wanted to share a fun addition I’m experimenting with: integrating stepper motors to add motion-based interactivity.
Using a stepper motor driver (like the A4988 or DRV8825) connected to a Raspberry Pi via GPIO, I’ve managed to make parts of the frame move — for example, a sliding panel that reveals a hidden display or rotates a camera for facial recognition.
I’m controlling the motor using Python (with RPi.GPIO and time libraries), and syncing it with MagicMirror modules via custom notifications. It’s still basic, but the idea is to eventually have the mirror respond to voice or presence detection by physically moving components.
Has anyone else tried mechanical elements like motors with their MagicMirror builds? Would love to hear your ideas or suggestions!
I have HomeAssistant set up and use MMM-HomeAssistant-sensors to grab some data from various devices (mostly a couple of cheap temp/humidity sensors and the fancy new stove & fridge). These display on the mirror as a simple table which is fine.
I also have my wife’s EV hooked up in HA so I can see its status. I have a nice little panel (card?) set up with a gauge for the battery and indicators for things like charging, doors locked, etc.
Can I display that panel as-is on my mirror using MMM-HomeAssistantDisplay? Or would I need to recreate the display for the mirror?
Is there a module that will simply render a HA panel on the mirror?
Evening
I have MMM-PaprikMenu installed and working on MagicMirror however, I am looking at trying to display it slightly different.
It currently displays in a vertical manner, but i’d like it to be horizontal, essentially i’d have 3 instances - 1 would show breakfast only, another lunch, another dinner.
Part of the issue I suspect is that the mealSortOrder is expecting each value for Breakfast(0), Lunch(1), Dinner (2) and Snack(3) at least once - so you cannot just list 0 and only display breakfast
Is there a way this can be achieved?
If not in MMM-PaprikaMenu, perhaps another module?
This may not be the correct location for this post but is my best guess.
Over the length of time I have been tinkering with the Raspberry Pi and Magic Mirror combination I have seen a lot of folks using the combination as part of a smart home setup.
A good while back I set up a basic Philips Hue system that includes a Philips Hub, that was all the lights in my home. I live in a single bedroom apartment so I’m sort of restricted in what I can and can’t do. A device that plugs into a wall socket is okay, replacing the wall socket with a smart device, not okay. I wear cochlear implants and am entirely deaf without them. So I turn the lights on at full brightness in my bedroom so the Hue system is my alarm clock.
A few months ago, one of the Philips bulbs went dead on me and needed to be replaced. I took the opportunity to see what BRANDS were compatible and it appears that Philips Hue is a proprietary system so none of the other bulbs that are now in the marketplace are compatible. The Philips bulb was $50⁰⁰ which…NO!
This month a little balloon popped up asking me to sign in, which I ignored. Last week, Philips locked me out of the app entirely which was that final straw.
As a practical matter, since I do use decent security around my computer/internet connected hardware I have way more of a problem with my data being sold back and forth by legitimate businesses than hacking by crooks.
What smart home hardware is least intrusive, most open source and most compatible with a wide range of brands. Fifty bucks for a lightbulb and capturing my data is unacceptable to me so would be interested in what brands and hardware would people recommend? Any thoughts on Home Assistant and their most recent Home Assistant Green device?
MMM-MyTasklist
This a module for Magic Mirror².
This displays a simple Tasklist, you can update through a web frontend.
Installation
Clone this repository in your modules folder, and install dependencies:
cd ~/MagicMirror/modules
git clone https://github.com/htilburgs/MMM-MyTasklist.git
cd MMM-MyTasklist
npm install
Update
When you need to update this module:
cd ~/MagicMirror/modules/MMM-MyTasklist
git pull
npm install
Configuration
Go to the MagicMirror/config directory and edit the config.js file.
Add the module to your modules array in your config.js.
{
module: "MMM-MyTasklist",
position: "top_left",
header: "MyTaskList",
disabled: false,
config: {
tasksFile: "modules/MMM-MyTasklist/tasks.json",
updateInterval: 300000,
showCompleted: true,
maxTasks: null
}
},
Load Webinterface for updating the Tasklist
Open a browser and type http://serverip address:8448
So if for example you’re MagicMirror is on 192.168.0.48 then you go to http://192.168.0.48:8448
The Webinterface for MyTasklist will be loaded and you will be able to:
choose language for the Webinterface
add tasks
complete tasks
delete tasks
edit tasks
move the order from tasks by drag-and-drop
filter on all, active or done tasks
All the updates are instantly published on your Mirror
NOTE:
With a touchscreen you’re able to check the checkboxes on the Mirror to complete the task.
All these changes are instantly published to the Webinterface
Versions
v1.0.0 - Initial release
v1.1.0 - Update Look & Feel
v1.1.1 - Change Webinterface port from 8123 to 8448
v1.2.0 - Add possibility to edit the tasks in the Webinterface
Hello,
My Raspberry Pi 4 broke down. I bought a new one and installed the latest version of Raspberry Pi. Everything works except the screen is in landscape mode and I want it in portrait mode. The menu option to change this is no longer available in raspi-config.
I tried using the VNC menu, but the screen doesn’t display the Magic Mirror.
Hello,
A few days ago, I tried to update my MM using the update script from @sdetweil with the “apply” option. Unfortunately, it didn’t work.
Yesterday, I tried the same thing, but with the “force” option. But that didn’t work either.
Now I renamed the folder ‘MagicMirror’ and tried to install MM using the installation script by @sdetweil . But that didn’t work either.
The debug log contains the following information. I will show you the last ~70 lines. I hope that is enough.
668 silly packumentCache full:https://registry.npmjs.org/chalk cache-hit
669 silly fetch manifest commander@^4.0.1
670 silly packumentCache full:https://registry.npmjs.org/commander cache-miss
671 silly fetch manifest diff@^4.0.1
672 silly packumentCache full:https://registry.npmjs.org/diff cache-miss
673 silly fetch manifest handlebars@^4.5.3
674 silly packumentCache full:https://registry.npmjs.org/handlebars cache-miss
675 silly fetch manifest lodash@^4.17.15
676 silly packumentCache full:https://registry.npmjs.org/lodash cache-miss
677 http fetch GET 200 https://registry.npmjs.org/lodash 303ms (cache revalidated)
678 silly packumentCache full:https://registry.npmjs.org/lodash set size:242486 disposed:false
679 silly fetch manifest replace-last@^1.2.6
680 silly packumentCache full:https://registry.npmjs.org/replace-last cache-miss
681 http fetch GET 200 https://registry.npmjs.org/diff 442ms (cache miss)
682 silly packumentCache full:https://registry.npmjs.org/diff set size:undefined disposed:false
683 silly fetch manifest string.prototype.matchall@^4.0.8
684 silly packumentCache full:https://registry.npmjs.org/string.prototype.matchall cache-miss
685 silly fetch manifest @typescript-eslint/types@^8.35.0
686 silly packumentCache full:https://registry.npmjs.org/@typescript-eslint%2ftypes cache-miss
687 http cache https://registry.npmjs.org/@typescript-eslint%2ftypes 110ms (cache hit)
688 silly packumentCache full:https://registry.npmjs.org/@typescript-eslint%2ftypes set size:11733932 disposed:false
689 silly fetch manifest comment-parser@^1.4.1
690 silly packumentCache full:https://registry.npmjs.org/comment-parser cache-miss
691 http fetch GET 200 https://registry.npmjs.org/string.prototype.matchall 896ms (cache miss)
692 silly packumentCache full:https://registry.npmjs.org/string.prototype.matchall set size:undefined disposed:false
693 silly fetch manifest debug@^4.4.1
694 silly packumentCache full:https://registry.npmjs.org/debug cache-hit
695 silly fetch manifest eslint-import-context@^0.1.9
696 silly packumentCache full:https://registry.npmjs.org/eslint-import-context cache-miss
697 silly fetch manifest is-glob@^4.0.3
698 silly packumentCache full:https://registry.npmjs.org/is-glob cache-hit
699 silly fetch manifest minimatch@^9.0.3 || ^10.0.1
700 silly packumentCache full:https://registry.npmjs.org/minimatch cache-hit
701 silly fetch manifest semver@^7.7.2
702 silly packumentCache full:https://registry.npmjs.org/semver cache-hit
703 silly fetch manifest stable-hash-x@^0.2.0
704 silly packumentCache full:https://registry.npmjs.org/stable-hash-x cache-miss
705 http fetch GET 200 https://registry.npmjs.org/eslint-import-context 189ms (cache miss)
706 silly fetch manifest unrs-resolver@^1.9.2
707 silly packumentCache full:https://registry.npmjs.org/unrs-resolver cache-miss
708 silly fetch manifest @es-joy/jsdoccomment@~0.76.0
709 silly packumentCache full:https://registry.npmjs.org/@es-joy%2fjsdoccomment cache-miss
710 silly fetch manifest @es-joy/resolve.exports@1.2.0
711 silly packumentCache full:https://registry.npmjs.org/@es-joy%2fresolve.exports cache-miss
712 silly fetch manifest are-docs-informative@^0.0.2
713 silly packumentCache full:https://registry.npmjs.org/are-docs-informative cache-miss
714 http fetch GET 200 https://registry.npmjs.org/are-docs-informative 82ms (cache miss)
715 silly fetch manifest comment-parser@1.4.1
716 silly packumentCache full:https://registry.npmjs.org/comment-parser cache-miss
717 http fetch GET 200 https://registry.npmjs.org/@es-joy%2fresolve.exports 99ms (cache miss)
718 silly fetch manifest debug@^4.4.3
719 silly packumentCache full:https://registry.npmjs.org/debug cache-hit
720 silly fetch manifest esquery@^1.6.0
721 silly packumentCache full:https://registry.npmjs.org/esquery cache-miss
722 silly fetch manifest html-entities@^2.6.0
723 silly packumentCache full:https://registry.npmjs.org/html-entities cache-miss
724 http fetch GET 200 https://registry.npmjs.org/stable-hash-x 244ms (cache miss)
725 silly fetch manifest object-deep-merge@^2.0.0
726 silly packumentCache full:https://registry.npmjs.org/object-deep-merge cache-miss
727 silly fetch manifest parse-imports-exports@^0.2.4
728 silly packumentCache full:https://registry.npmjs.org/parse-imports-ex
Unfortunately, I don’t understand it.
It would be great if you could help me!
Thank you in advance!
Kind regards
Klinge
Hi everyone,
I’d like to share a module I’ve been working on: MMM-Fintech – a portfolio display module that shows your financial holdings with real-time pricing. I built it to fill my needs. I took a modular approach that would allow writing additional connectors for other data sources.
Screenshot
[image: example.png]
Features
Multi-Asset Support: Crypto, stocks, ETFs, mutual funds, and forex rates in one unified display
Coinbase Integration: Automatically fetches crypto holdings via CDP API
Twelve Data Integration: Real-time pricing for stocks, ETFs, mutual funds, and forex
Manual Holdings: Add staked assets or brokerage positions that APIs can’t see
Market Hours Scheduling: Limits stock/forex polling to trading hours to conserve API calls
Privacy Mode: Hide quantities and values – show only symbols, prices, and changes
Currency Conversion: Display values in USD, EUR, GBP, PHP, or other currencies
Encrypted Credentials: AES-256-GCM encryption for your API keys
Links
GitHub: https://github.com/sonnyb9/MMM-Fintech
Installation & Setup: See the README for step-by-step instructions
Requirements
Coinbase CDP API key (free, for crypto)
Twelve Data API key (free tier: 800 calls/day, for stocks/forex)
License
MIT
Feedback Welcome
This is my first MagicMirror module. I’d appreciate any feedback, bug reports, or feature suggestions. Feel free to open issues on GitHub or reply here.
Thanks!
I’m using the MMM-AVStock module, and it stopped loading quotes a couple of days ago and investigated it today.
It looks like the module might be no longer compatible with yahoo finance?
Found in the mm container logs the following for every stock I have configured (using mm containerised from the magic mirror os install).
[2026-01-06 10:42:02.943] [ERROR] [MMM-AVStock] Error in loading quote data for Symbol ^NZ50
Added to the try/catch that pulls the stock the following so can see the actual error:
console.error(error);
The stack trace logged:
[2026-01-06 10:42:02.943] [ERROR] [MMM-AVStock] Error in loading quote data for Symbol ^NZ50
[2026-01-06 10:42:02.945] [ERROR] [MMM-AVStock] SyntaxError: Unexpected token 'T', "Too Many Requests
" is not valid JSON
at JSON.parse (<anonymous>)
at parseJSONFromBytes (node:internal/deps/undici/undici:5852:19)
at successSteps (node:internal/deps/undici/undici:5833:27)
at fullyReadBody (node:internal/deps/undici/undici:4725:9)
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
at async consumeBody (node:internal/deps/undici/undici:5842:7)
I did have a play with adding a 15 sec pause for each pull of a stock in case some simple rate limiting would resolve it, but did not resolve the issue.
Have noted the module uses an older version of yahoo-finance2, so wondering if that needs upgraded - gets beyond my basic js skills.
bkey1970@mirrorserv:~ $ bash -c "$(curl -sL https://raw.githubusercontent.com/sdetweil/MagicMirror_scripts/master/upgrade-script.sh)" apply
update log will be in /home/bkey1970/MagicMirror/installers/upgrade.log
doing test run = false
Node currently installed. Checking version number.
Minimum Node version: v22.21.1
Installed Node version: v22.18.0
installing correct version of node and npm, please wait
Check current Node installation ...
Node currently installed. Checking version number.
Minimum Node version: v22.21.1
Installed Node version: v22.21.1
No Node.js upgrade necessary.
Check current NPM installation ...
NPM currently installed. Checking version number.
Minimum npm version: V10.9.4
Installed npm version: V10.9.4
No npm upgrade necessary.
want /var/swap=512MByte, checking existing: keeping it
saving custom.css
Unable to determine upstream git repository
Upgrade started - Fri Jan 2 13:41:18 PST 2026
system is Linux mirrorserv 6.12.47+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.12.47-1+rpt1~bookworm (2025-09-16) aarch64 GNU/Linux
user requested to apply changes
doing test run = false
the os is PRETTY_NAME="Debian GNU/Linux 12 (bookworm)" NAME="Debian GNU/Linux" VERSION_ID="12" VERSION="12 (bookworm)" VERSION_CODENAME=bookworm ID=deb>
architecture from dpkg is
^[[0mNode currently installed. Checking version number.^[[0m
^[[0mMinimum Node version: ^[[1mv22.21.1^[[0m
^[[0mInstalled Node version: ^[[1mv22.18.0^[[0m
^[[96minstalling correct version of node and npm, please wait^[[0m
installing : node-v22.21.1
mkdir : /usr/local/n/versions/node/22.21.1
fetch : https://nodejs.org/dist/v22.21.1/node-v22.21.1-linux-arm64.tar.xz
copying : node/22.21.1
installed : v22.21.1 (with npm 10.9.4)
^[[0mNo npm engines section specified in package.json, using default=V10.9.4 ...^[[0m
^[[96mCheck current Node installation ...^[[0m
^[[0mNode currently installed. Checking version number.
^[[0mMinimum Node version: ^[[1mv22.21.1^[[0m
^[[0mInstalled Node version: ^[[1mv22.21.1^[[0m
^[[92mNo Node.js upgrade necessary.^[[0m
^[[96mCheck current NPM installation ...^[[0m
^[[0mNPM currently installed. Checking version number.
^[[0mMinimum npm version: ^[[1mV10.9.4^[[0m
^[[0mInstalled npm version: ^[[1mV10.9.4^[[0m
^[[92mNo npm upgrade necessary.^[[0m
increasing swap space
increasing swap space
saving custom.css
Unable to determine upstream git repository
Upgrade ended - Fri Jan 2 13:41:45 PST 2026
What’s going on?
I upgraded my MagicMirror and now the logs are showing the below errors:
ERROR:ui/ozone/platform/wayland/host/wayland_connection.cc:202] Failed to connect to Wayland display: No such file or directory (2)
ERROR:ui/ozone/platform/wayland/ozone_playform_wayland.cc:202] Failed to initalize Wayland platform
ERROR:ui/aura/env.cc:257] the platform failed to initalize. Exiting.
How do i resolve this?
Running magicmirroros which uses Karsten’s docker implementation.
This morning found mm blank, and the mm container had sigfault errors connecting to the screen (didn’t collect logs). As been at last six months since last updated, updated the os (apt-get update/upgrade), containers, and rebooted.
Everything looks to be running fine outwardly, however noted a few errors in the container logs.
And the watchtower log is just in a loop restating.
Extracts below.
scottwalsh@calendar:/opt/mm/run $ docker logs mm
[2026-01-02 07:59:07.394] [LOG] [app] Server started ...
[2026-01-02 07:59:07.397] [LOG] [node_helper] Connecting socket for: MMM-mmpm
[2026-01-02 07:59:07.399] [LOG] [node_helper] Starting module helper: MMM-mmpm
[2026-01-02 07:59:07.401] [LOG] [node_helper] Connecting socket for: calendar
[2026-01-02 07:59:07.402] [LOG] [calendar] Starting node helper for: calendar
[2026-01-02 07:59:07.404] [LOG] [node_helper] Connecting socket for: MMM-AVStock
[2026-01-02 07:59:07.406] [LOG] [node_helper] Connecting socket for: MMM-anotherNewsFeed
[2026-01-02 07:59:07.408] [LOG] [MMM-anotherNewsFeed] Starting node helper for: MMM-anotherNewsFeed
[2026-01-02 07:59:07.409] [LOG] [node_helper] Connecting socket for: updatenotification
[2026-01-02 07:59:07.411] [LOG] [node_helper] Starting module helper: updatenotification
[2026-01-02 07:59:07.412] [LOG] [app] Sockets connected & modules started ...
[21:0101/185908.239072:ERROR:dbus/bus.cc:408] Failed to connect to the bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
[2026-01-02 07:59:08.641] [LOG] [electron] Launching application.
[21:0101/185909.015470:ERROR:dbus/object_proxy.cc:573] Failed to call method: org.freedesktop.DBus.NameHasOwner: object_path= /org/freedesktop/DBus: unknown error type:
[21:0101/185909.016371:ERROR:dbus/bus.cc:408] Failed to connect to the bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
[21:0101/185909.016913:ERROR:dbus/bus.cc:408] Failed to connect to the bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
[21:0101/185909.017979:ERROR:dbus/bus.cc:408] Failed to connect to the bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
[21:0101/185909.018861:ERROR:dbus/bus.cc:408] Failed to connect to the bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory
[21:0101/185909.023819:ERROR:dbus/object_proxy.cc:573] Failed to call method: org.freedesktop.DBus.NameHasOwner: object_path= /org/freedesktop/DBus: unknown error type:
[2026-01-02 07:59:12.566] [INFO] [utils]
scottwalsh@calendar:/opt/mm/run $ docker logs watchtower
time="2026-01-01T18:58:38Z" level=error msg="Error response from daemon: client version 1.25 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version"
time="2026-01-01T18:58:38Z" level=info msg="Waiting for the notification goroutine to finish" notify=no
time="2026-01-01T18:58:43Z" level=error msg="Error response from daemon: client version 1.25 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version"
time="2026-01-01T18:58:43Z" level=info msg="Waiting for the notification goroutine to finish" notify=no
time="2026-01-01T18:58:46Z" level=error msg="Error response from daemon: client version 1.25 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version"
time="2026-01-01T18:58:46Z" level=info msg="Waiting for the notification goroutine to finish" notify=no
time="2026-01-01T18:58:50Z" level=error msg="Error response from daemon: client version 1.25 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version"
time="2026-01-01T18:58:50Z" level=info msg="Waiting for the notification goroutine to finish" notify=no
time="2026-01-01T18:58:54Z" level=error msg="Error response from daemon: client version 1.25 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version"
time="2026-01-01T18:58:54Z" level=info msg="Waiting for the notification goroutine to finish" notify=no
time="2026-01-01T18:58:58Z" level=error msg="Error response from daemon: client version 1.25 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version"
time="2026-01-01T18:58:58Z" level=info msg="Waiting for the notification goroutine to finish" notify=no
time="2026-01-01T18:59:04Z" level=error msg="Error response from daemon: client version 1.25 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version"
time="2026-01-01T18:59:04Z" level=info msg="Waiting for the notification goroutine to finish" notify=no
time="2026-01-01T18:59:13Z" level=error msg="Error response from daemon: client version 1.25 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version"
time="2026-01-01T18:59:13Z" level=info msg="Waiting for the notification goroutine to finish" notify=no
time="2026-01-01T18:59:27Z" level=error msg="Error response from daemon: client version 1.25 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version"
time="2026-01-01T18:59:27Z" level=info msg="Waiting for the notification goroutine to finish" notify=no
time="2026-01-01T18:59:55Z" level=error msg="Error response from daemon: client version 1.25 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version"
time="2026-01-01T18:59:55Z" level=info msg="Waiting for the notification goroutine to finish" notify=no
scottwalsh@calendar:/opt/mm/run $
Version 2.34.0 Jan 1, 2026
Release Notes
Thanks to: @Blackspirits, @Crazylegstoo, @jarnoml, @jboucly, @JHWelch, @khassel, @KristjanESPERANTO, @rejas, @sdetweil, @xsorifc28
⚠️ This release needs nodejs version >=22.21.1 <23 || >=24
Compare to previous Release v2.33.0
[core]
Merge branch ‘master’ into develop
Prepare Release 2.34.0 (#3998)
dependency update + adjust Playwright setup + fix linter issue (#3994)
demo with gif (#3995)
[core] fix: allow browser globals in config files (#3992)
[core] fix: restore --ozone-platform=wayland flag for reliable Wayland support (#3989)
[core] auto create release notes with every push on develop (#3985)
[core] chore: simplify Wayland start script (#3974)
[gitignore] restore the old Git behavior for the default modules (#3968)
[core] configure cspell to check default modules only and fix typos (#3955)
[gitignore] restoring the old Git behavior for the CSS directory (#3954)
feat(core): add server:watch script with automatic restart on file changes (#3920)
[check_config] refactor: improve error handling (#3927)
refactor: replace express-ipfilter with lightweight custom middleware (#3917)
refactor: replace module-alias dependency with internal alias resolver (#3893)
Release 2.33.0 (#3903)
[dependencies]
[chore] update dependencies and min. node version (#3986)
[core] bump dependencies into december (#3982)
Bump actions/checkout from 5 to 6 (#3972)
Update deps, unpin parse5 (#3934)
[core] Update deps and pin jsdom to v27.0.0 (#3925)
chore: update dependencies (#3921)
update deps, exclude node v23 (#3916)
remove eslint warnings, add npm publish process to Collaboration.md (#3913)
feat: add ESlint rule no-sparse-arrays for config check (#3911)
chore: bump dependencies into october (#3909)
[logging]
logger: add calling filename as prefix on server side (#3926)
[logger] Add prefixes to most Log messages (#3923)
[modules/alert]
Add new pt and pt-BR translations for Alert module and update global PT strings (#3965)
[modules/calendar]
add checksum to test whether calendar event list changed (#3988)
[calendar] fix: prevent excessive fetching on client reload and refactor calendarfetcherutils.js (#3976)
[calendar] refactor: migrate CalendarFetcher to ES6 class and improve error handling (#3959)
[calendar] Show repeatingCountTitle only if yearDiff > 0 (#3949)
[tests] suppress debug logs in CI environment + improve calendar symbol test stability (#3941)
[calendar] chore: remove requiresVersion: "2.1.0" (#3932)
[calendar] test: remove “Recurring event per timezone” test (#3929)
[modules/compliments]
[compliments] refactor: optimize loadComplimentFile method and add unit tests (#3969)
fix: set compliments remote file minimum delay to 15 minutes (#3970)
[compliments] fix: duplicate query param “?” in compliments module refresh url (#3967)
[modules/newsfeed]
[newsfeed] fix header layout issue (#3946)
[modules/weather]
[weatherprovider] update subclass language use override (#3914)
[weather] fix wind-icon not showing in pirateweather (#3957)
[weather] add error handling to weather fetch functions, including cors (#3791)
remove deprecated ukmetoffice datapoint provider, cleanup .gitignore (#3952)
fixes problems with daylight-saving-time in weather provider openmeteo (#3931)
Fix for envcanada Provider to use updated Env Canada URL (#3919)
[weather] feat: add configurable forecast date format option (#3918)
[testing]
testing: update “Enforce Pull-Request Rules” workflow (#3987)
[core] refactor: replace XMLHttpRequest with fetch and migrate e2e tests to Playwright (#3950)
[test] replace node-libgpiod with serialport in electron-rebuild workflow (#3945)
[ci] Add concurrency to automated tests workflow to cancel outdated runs (#3943)
[tests] migrate from jest to vitest (#3940)
A New Chapter for MagicMirror: The Community Takes the Lead
Read the statement by Michael Teeuw here.
Read the statement by Michael Teeuw here.
Categories
-
Announcements
Announcements regarding the MagicMirror software and forum.
-
Core System
Discuss the MagicMirror² core framework.
-
-
-
-
-
-


