A New Chapter for MagicMirror: The Community Takes the Lead
Read the statement by Michael Teeuw here.

Categories

  • Announcements regarding the MagicMirror software and forum.

    67 Topics
    428 Posts
    rejasR
    Release Notes Thanks to: @angeldeejay, @egeekial, @khassel, @KristjanESPERANTO, @MikeBishop, @rejas ⚠️ This release needs nodejs version >=22.22.2 <23 || >=24 (no change to previous release) (update July 6) Compare to previous Release v2.36.0 [core] Prepare Release 2.37.0 (#4193) fix(electron): map IPv6 :: wildcard to localhost (#4188) refactor(main): modernize DOM update flow with async/await (#4186) refactor(main): simplify _updateDom with async/await (#4185) fix(security): prevent unauthorized secret expansion in socket payloads (#4184) refactor(main): simplify updateDomWithContent async flow (#4182) fix: modules losing data after HTTP 304 responses (#4180) chore: add missing core defaults (#4181) fix(server): enforce ipWhitelist for Socket.IO too (#4169) feat(systeminfo): include Git hash and branch in system information log (#4167) feat(electron): support object-based electronSwitches (#4161) systeminformation thread not ending: move error handling from utils to app (#4160) fix systeminformation thread not ending (#4155) refactor: use ES module imports in browser core (#4158) refactor(core): remove old Object.assign polyfill (#4157) refactor: rewrite Module as an ES6 class (#4151) refactor: rewrite NodeHelper as an ES6 class (#4147) update eletron to v42 (#4144) refactor(utils): drop ajv dependency (#4142) fix(systeminformation): output right ‘used node’ version (from parent process) (#4141) fix: skip postinstall git clean when not in a git repository (#4139) Remove unnecessary conditionals and fix falsy property check in imperial conversion (#4135) update version in package.json [dependencies] update dependencies (#4191) Bump actions/checkout from 6 to 7 (#4190) chore: update dependencies and adjust import path for SunCalc (#4189) update dependencies incl. electron and revert yauzl-electron-install-fix (#4183) update dependencies, add electron fix in package.json (#4175) chore: update dependencies (#4162) Bump actions/dependency-review-action from 4 to 5 (#4152) Unify linting: replace Stylelint and markdownlint with ESLint (#4148) update dependencies and workflows to node v26 (#4140) [modules/alert] CodeQL cleanup for alerts #18, #19, #20 (#4153) fix: resolve CodeQL alerts #24 and #26 (#4145) fix(electron): resolve CodeQL alerts #22 and #25 in electron.js (#4136) [modules/calendar] perf(calendar): pre-filter ICS data before parsing (#4168) perf(calendar): use async ICS parsing to avoid blocking event loop (#4143) [modules/newsfeed] [newsfeed] add allowBasicHtmlTags option for basic emphasis (#4176) [modules/updatenotification] fix(updatenotification): don’t spawn a child process when running under PM2 (#4166) fix(updatenotification): use process.argv[0] as restart binary (#4163) fix(updatenotification): preserve start mode on restart (#4156) fix(updatenotification): fix ref diff parsing for fetch --dry-run (#4138) refactor(updatenotification): replace pm2 usage with node logic (#4134) [modules/weather] feat(weather): add Buienradar provider (#4164) [testing] remove warning in unit tests (for nodejs >= v25) (#4149) polish HTTP 304 docs/test/handling (#4129)
  • Discuss the MagicMirror² core framework.

    495 Topics
    4k Posts
    B
    MMM Config already seems to cover most of the proposed workflow without forcing every module author to adopt a new schema. The automatic discovery plus optional custom form definitions sounds like a practical balance between compatibility and structured configuration.
  • Anything harware related can be found here.

    799 Topics
    7k Posts
    F
    I just found brigla-shop.de, they aren’t that expensive, I guess I will try them.
  • Add exciting new features to your mirror.

    6k Topics
    59k Posts
    B
    Description: A newly refreshed fork of MMM-KitchenTimer, a responsive, touch-friendly countdown timer for MagicMirror². It provides a large countdown display, configurable quick-duration presets, and accessible controls for touch, mouse, and keyboard. Tap the time display to pause or resume the countdown, and use the Reset or Dismiss control to cancel the timer or silence its alarm. The module supports compact and full-screen layouts, optional alarm and button sounds, and reliable wall-clock timing. Active timers continue running and can finish while the module is hidden by page-management modules such as MMM-pages. MMM-KitchenTimer also provides incoming and outgoing MagicMirror notifications. Other modules can start, add time to, pause, resume, reset, or dismiss the timer. Semantic state notifications make it possible to integrate voice assistants, smart lights, MQTT bridges, physical controls, notification centers, and other automations without embedding hardware-specific behavior in the timer. This is a maintained fork of the module originally created by Tom Short, published with his permission. The original MIT attribution and existing configuration compatibility have been preserved. Screenshots: [image: 1784826091108-mmm-kitchentimer-screenshot.png] Download: https://github.com/bwente/MMM-KitchenTimer Installation: cd ~/MagicMirror/modules git clone https://github.com/bwente/MMM-KitchenTimer.git Version 1.0.1 Keep active timers and completion events running while hidden Improve compatibility with page-management modules such as MMM-pages Version 1.0.0 Modernized the original module as a maintained MagicMirror² module Added large, touch-friendly controls Added configurable quick-duration presets Added tap-to-pause and resume behavior Added compact and full-screen layouts Added incoming timer-control notifications Added outgoing semantic state and progress notifications Preserved the original configuration options and MIT attribution
  • Make your mirror your own but modifying its appearance.

    434 Topics
    3k Posts
    S
    @Jk1 said: I needed this to set the header color yes, I thought you were talking about text color, not background…
  • Share your project story with pictures.

    579 Topics
    5k Posts
    M
    Hi. This is very nice. Can you share please your module for Renault? The one you use for your Espace. I drive also a Renault and that will be usefull for me.
  • You have a problem with your mirror? Ask for help.

    5k Topics
    36k Posts
    D
    @lwvmobile Sorry for the necroposting and late reply, I had similar issue (magicmirror behind http/socks proxy) and couldn’t find any solutions, so with the help of AI I found the issue why tsocks, http_proxy etc env vars don’t work. The problem is that MagicMirror overrides the global network layer inside this block using its own new Agent({ connect: { rejectUnauthorized: false } }) constructor whenever self-signed certificates or custom configurations are evaluated [index.js]. This instantly deletes your global proxy settings. To fix this, merge your proxy dispatcher into MagicMirror’s option generation scheme so it is safely preserved. Fix that worked for me: Modify your getRequestOptions() block in /path/to/your/MagicMirror/js/http_fetcher.js to look exactly like this: getRequestOptions () { const headers = { "User-Agent": getUserAgent(), ...this.customHeaders }; // 1. Initialize the ProxyAgent using undici const { ProxyAgent } = require("undici"); const proxyDispatcher = new ProxyAgent({ uri: "http://192.168.1.1:1080" }); // 2. Set the default dispatcher to use your proxy const options = { headers, dispatcher: proxyDispatcher }; if (this.selfSignedCert) { // 3. Merge the proxy configuration if self-signed cert handling is active options.dispatcher = new ProxyAgent({ uri: "http://192.168.1.1:1080", connect: { rejectUnauthorized: false } }); } if (this.auth) { if (this.auth.method === "bearer") { headers.Authorization = `Bearer ${this.auth.pass}`; } else { headers.Authorization = `Basic ${Buffer.from(`${this.auth.user}:${this.auth.pass}`).toString("base64")}`; } } return options; } IMPORTANT: Modify proxy url to the one you use, instead of “http://192.168.1.1:1080” It intercepts the raw options configuration object right before MagicMirror wraps it. If this.selfSignedCert evaluates to true, it swaps out MagicMirror’s isolated base Agent with a ProxyAgent block that handles both the proxy routing and the SSL bypass rules simultaneously [index.js].
  • A place to talk about whatever you want.

    1k Topics
    10k Posts
    S
    Sorry, you were talking about refreshing the application defs on pm2. No, dont do that, never seen any side effect til now Will add it to the work list here https://github.com/sdetweil/MagicMirror_scripts/issues/125