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.

    497 Topics
    4k Posts
    S
    @plainbroke yes, I think an issue on the module github repo is the right thing… I’m old too… ask that same question every day!!
  • Anything harware related can be found here.

    802 Topics
    7k Posts
    B
    I did something similar with LEDs. I chose to add a separate WLED controller instead of trying to control the LEDs directly from the Pi. The Pi just tells WLED what state or effect it wants, and the WLED board handles the actual timing and LED control. It keeps the responsibilities separate and avoids adding more real-time work to the Pi.
  • Add exciting new features to your mirror.

    6k Topics
    59k Posts
    S
    @msimon360 thx… looked up by name… weird… anyhow sendSocketNotifcation uses json.stringify/parse under the covers… both are sensitive to data structure nesting i would guess there is a json bug… the code is in the node helper fetch(getInfoUrl, options).then((res) => { if (res.ok) { console.log(`\x1b[32m[SEMS-API][${res.status}] - Received Solar Data\x1b[0m`); <--- this came out in the debug return res.json(); } else { console.log(`\x1b[31m[SEMS-API] - Something went wrong\x1b[0m`); } }).then((data) => { // return the data part of the api response self.sendSocketNotification("SOLAR_DATA", data["data"]); <-- looks like the error spot... no data validation was done from receipt to here })
  • 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.

    580 Topics
    5k Posts
    T
    @ewingfox said: My wife has a number of friends with the subscription-based touchscreen tools and hinted at being interested in getting one - I didn’t love the idea of (another) monthly cost - and the fact that if the company goes under, we have an expensive paperweight. I tried a few different open source tools but discovered MagicMirror2 and fell in love! Currently have a home screen, an interactive chore chart running -MMM-Chores for my kiddo, a monthly calendar view and a weather tab (still under development). Here’s a brief demo video: You_tube The hardest part was definitely making the custom wood bezel - I was a woodworker, but matching the profile of the refrigerator, keeping weight down, minimizing the profile, and ensuring I only have one flexible cord having to make the corner from fridge side into the MM was definitely a challenge. So far, my wife is really happy with it, and is eagerly submitting feature requests. Ok, sigh, that part might get a little tiring!!! This is an incredible MagicMirror setup, and building a custom wood bezel to match the refrigerator profile while managing a single flexible cord is truly impressive craftsmanship. Avoiding monthly subscription traps with an open-source build is a brilliant move, and navigating your wife’s ongoing feature requests can feel like guiding a journey step-by-step through the 22 Major Arcana cards. Great work on the interactive chore charts, calendar, and weather modules!
  • You have a problem with your mirror? Ask for help.

    5k Topics
    36k Posts
    J
    @sdetweil – Thanks Sam. Output of pm2 info >somefile.txt 2>&1 renders the following. I ran it in the home directory, as well as in the MagicMirror directory with the same results. given the error, I stopped there and di not do the other steps… SyntaxError: Unexpected end of JSON input at JSON.parse (<anonymous>) at Configuration.getAllSync (/usr/local/lib/node_modules/pm2/lib/Configuration.js:299:17) at Configuration.getSync (/usr/local/lib/node_modules/pm2/lib/Configuration.js:270:30) at new API (/usr/local/lib/node_modules/pm2/lib/API.js:116:44) at Object.<anonymous> (/usr/local/lib/node_modules/pm2/lib/binaries/CLI.js:27:11) at Module._compile (node:internal/modules/cjs/loader:1706:14) at Object..js (node:internal/modules/cjs/loader:1839:10) at Module.load (node:internal/modules/cjs/loader:1441:32) at Function._load (node:internal/modules/cjs/loader:1263:12) at TracingChannel.traceSync (node:diagnostics_channel:328:14) error: missing required argument `name|id'
  • A place to talk about whatever you want.

    1k Topics
    10k Posts
    S
    just a reminder, Thursday is new release day