A New Chapter for MagicMirror: The Community Takes the Lead
Read the statement by Michael Teeuw here.
  • Anybody that still provides good two way mirrors in europe?

    Hardware
    1
    0 Votes
    1 Posts
    1 Views
    F
    Back when I built my bathroom mirror I bought it through a guy here, and now I’m about to build another one, and just wanted to find out, if there are still options available through users on the site?
  • 2 Votes
    3 Posts
    171 Views
    R
    Dear @soldatino, very (!) impressive! Not really MY usecase because of my explicite approach to use my mirror as a viewing port but really nice. To my big surprise I found your fifth screen with Bring! integration and was therefore inspired to try this again (longer time ago for some strange reasons the module didn’t work on my installation and i stopped trials around that, assuming that +six years old code doesn’t work at all). With your awesome setup I gave it a second try - and it worked. But: It throws severe security issues and in addition it doesn’t work exactly as desired (by me). That’s the reason why I forked & refactured the original module. You can check the whole story behind my approach in this post - if you like. I would like to say “thanks” to you for this “kick” and inspiration. Warm regards, Ralf
  • 0 Votes
    1 Posts
    6 Views
    R
    Hi everyone, I’ve tried a longer time ago without success - recently I gave it a second try and surprisingly it’s “working” right now: David Werth’s MMM-Bring. It is a lovely little module and I want to be clear up front that all the original credit goes to him. The trouble is that it has not seen any maintenance in roughly six years (the original dates back to 2019), and my recent npm install started throwing security warnings at me. Rather than let it bit-rot, I reworked it fairly thoroughly and published the result as a fork: https://github.com/rkorell/MMM-Bring. I thought it might be useful to others here, so here is what changed and, more importantly, why. 1. The original has been unmaintained for ~6 years The original module goes back to 2019 and has effectively been dormant since. That is not a criticism — it simply did its job and life moved on. But six years is a long time in Node land: it was written against an older dependency and rendering style, and nobody was around to react when its dependencies started aging out. If you install it today on a current MagicMirror / Node setup, you feel that age immediately (see the next point). My goal with the fork was not to reinvent it, but to bring it back to a state where it installs cleanly, runs on current Node, and can be maintained going forward. 2. The npm security issues — now zero runtime dependencies This is what actually pushed me to act. Installing the original pulls in axios ^0.21.2 (released back in 2021) and data-store. On that axios line, npm audit reports two high-severity advisories — credential leakage across an HTTP-to-HTTPS redirect, and a prototype-pollution issue — plus a transitive follow-redirects advisory. For a module that authenticates with your Bring! account, shipping a known-vulnerable HTTP client is not great. Instead of merely bumping versions, I removed both dependencies entirely. The fork now has zero runtime dependencies. All HTTP goes through Node’s built-in fetch (Node 18+), and the auth-token cache is a tiny fs-based JSON file that replaces data-store. The upshot: npm audit is clean, there is nothing to compile, and there is no npm install step at all anymore — you just clone it. Fewer moving parts, no native build, and nothing that can rot silently in the background. 3. The headline feature: app-identical category sorting This is the part I am most happy with. The original shows the list in whatever raw order the API returns. The Bring! app, however, groups items into categories (Fruits & Vegetables, Milk & Cheese, Meat & Fish, …) and sorts those categories in an order you can customise per list. I worked out how the app reconstructs that and reproduced it faithfully. There is a new option, useSections, with three modes: "off" — the classic flat list in raw API order (the old behaviour). "on" (the default) — items sorted into your list’s category order as one continuous list, without visible headers. Same layout footprint as before, just in the right order. "show" — the same sorting, plus a text header per category, exactly like the app. The grouping is genuinely app-identical rather than a guess: it follows your list’s own saved section order (listSectionOrder), honours the sections you have hidden, and shows the localized category names and item names for your list’s language. Items you typed that are not in Bring!'s catalog land in an “own items” section — and even that fallback label is localized (13 language files covering all 20 Bring! locales). Under the hood the canonical item id is kept separate from the translated display name, so marking things bought and adding items keeps working regardless of language. There are screenshots of all three modes in the README if you want to see the difference. Other improvements worth mentioning Backend-driven polling with a cached last-good state. The node helper owns the refresh cycle, so a browser reload shows data instantly and a transient network blip never blanks the list. Modern auth. The access token is refreshed via its refresh token, with a full password re-login only as a fallback. showCount. An optional count in the title line when the list is longer than maxItems, so you can see there is more than what is shown. Font licensing tidied up. The bundled paid “Museo Sans 300” weight was removed; the free 500 weight stays with proper exljbris attribution, and the spec label falls back to the MagicMirror default font. Touch support retained. You can still mark items bought and add items via MMM-Keyboard. Install cd ~/MagicMirror/modules git clone https://github.com/rkorell/MMM-Bring.git That is it — no npm install. Then add the module block to your config.js (there is a full options table in the README). If you already run the original module, you can simply replace the folder; your config.js entry stays the same. Step-by-step migration notes are in the README. Credits and the usual caveat All credit for the original module goes to David Werth (https://github.com/werthdavid/MMM-Bring). The API-interaction design was inspired by miaucl/bring-api (https://github.com/miaucl/bring-api), the well-maintained Python client, as a reference for a current, state-of-the-art Bring! implementation. Standard caveat: Bring! offers no official public API, so this — like every Bring! integration — talks to the same private endpoints the app uses. They could change at any time. It has been stable for years, but be aware of that. Repo, README and changelog: https://github.com/rkorell/MMM-Bring. Feedback, issues and pull requests are very welcome. Hope you will find it useful. Warmest regards, Ralf
  • NewsFeed - how to adjust the description text size?

    Solved Troubleshooting
    5
    0 Votes
    5 Posts
    297 Views
    R
    @thartley cool. Happy that it works. Have fun! Warm regards, Ralf
  • Upgrade

    Bug Hunt
    17
    0 Votes
    17 Posts
    683 Views
    mumblebajM
    @sdetweil Just ran it quickly and it seems like it installed 22.22.2 mumble@pi:~ $ sudo n copying : node/22.21.1 installed : v22.21.1 (with npm 10.9.4) mumble@pi:~ $ node -v v22.21.1 mumble@pi:~ $ bash -c "$(curl -sL https://raw.githubusercontent.com/sdetweil/MagicMirror_scripts/master/upgrade-script.sh)" force update log will be in /home/mumble/MagicMirror/installers/upgrade.log doing test run = false Node currently installed. Checking version number. Minimum Node version: v22.22.2 Installed Node version: v22.21.1 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.22.2 No Node.js upgrade necessary. Check current NPM installation ... NPM currently installed. Checking version number. Minimum npm version: V10.9.7 Installed npm version: V10.9.7 No npm upgrade necessary. upgrading from version 2.37.0 to 2.37.0 force: line 762: pm2: command not found some node app still running, please shutdown those apps, maybe MagicMirror, and restart here is a list of those processes
  • 1 Votes
    2 Posts
    189 Views
    KristjanESPERANTOK
    @msimon360 Maybe add the URL to the repo here :)
  • 3 Votes
    3 Posts
    347 Views
    R
    Dear @KristjanESPERANTO , thanks :-) Good idea - I’ve added a screenshot right now. (closed a documentation error regarding first / re-authorization in parallel). Warm regards, Ralf
  • New MagicMirrorOS build - mm Container in Restart Loop

    Unsolved Troubleshooting
    5
    0 Votes
    5 Posts
    476 Views
    karsten13K
    I’ve now implemented additional tests, so such errors should be spotted much earlier in the develop branch…
  • FIFA World Cup Bracket on your mirror - LIVE data

    Showcase
    2
    2 Votes
    2 Posts
    403 Views
    msimon360M
    I just posted an update on GitHub that adds the Finals and 3rd Place boxes to the grid.
  • v2.37.0

    Locked MagicMirror
    1
    1 Votes
    1 Posts
    423 Views
    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)
  • Version upgrade from 2.34.0 to 2.36.0 Calendar Probs

    Unsolved Troubleshooting
    4
    5
    0 Votes
    4 Posts
    456 Views
    S
    @MyMirror also, the css folder is for OUR stuff in 2.35+, all user stuff is moved to the config folder so, move the images there and see if it works also, picky support person here, please use text for config content… pics are very hard to read… also, config or log info should go in a code block… paste text in this message editor, blank line above and below select the text just pasted hit the code button </> above on the editor toolbar thanks
  • iCloud Shared Album background.

    Unsolved Requests
    5
    0 Votes
    5 Posts
    879 Views
    M
    @martinb https://forum.magicmirror.builders/topic/14807/mmm-wallpaper-configure-for-icloud-album-photo Is kind of working for me.
  • MMM-Anylist

    Unsolved Troubleshooting
    2
    0 Votes
    2 Posts
    438 Views
    S
    @bjowave welcome to the world of css, cascading style sheet This allows you to style a/some elements on the web page (MagicMirror page is presented in a browser) This is a huge topic area, I looked at the anylist module provided css, and it doesn’t provide any direct styling on the text elements So you will have to discover what they are. See the second link in my signature below for a short intro to the browser developers window, elements tab The content for CSS styles is HUGE I would use your favorite search engine on how to set an element style the way you want, this will at least give you the names of the styles you want to set. Then the example will teach you how to find the element you want to style Watch out for opaque, if you later decide on pictures in the background, you will have a black rectangle showing.
  • 0 Votes
    12 Posts
    2k Views
    Dentrass 0D
    @Thekk This project is no longer actively maintained as I am on vacation and therefore do not have the time to work on the module. No new features or bug fixes are planned. Sorry I do not have the time to fulfill your requests. :(
  • MMM-CalendarExt3 full color for timed events

    Custom CSS
    13
    1
    0 Votes
    13 Posts
    2k Views
    S
    @Jk1 said: I needed this to set the header color yes, I thought you were talking about text color, not background…
  • 10 Votes
    259 Posts
    680k Views
    karsten13K
    @fillilutten I agree with Sam. That looks like a weather warning to me. They are quite rare, and the scenario might never have occurred during the module’s development…
  • MMM-Tasklist

    Utilities
    4
    2
    2 Votes
    4 Posts
    690 Views
    KristjanESPERANTOK
    @johnster000 Great! Now all your modules are displayed with screenshots and tags :)
  • MMM-EpicFreeGames

    Fun & Games
    1
    0 Votes
    1 Posts
    341 Views
    S
    Description: Displays currently free and upcoming free games from the Epic Games Store. Screenshots: [image: screenshot.png] Download: // Remove the spaces and add your Github module repository GitHub: https://github.com/ACE-012/MMM-EpicFreeGames v1.0.0 Initial release
  • MMM-MyGCalendar

    Utilities
    2
    2
    1 Votes
    2 Posts
    457 Views
    S
    @johnster000 cool, but you could have taken the events from the built in module and done your own ui We broadcast the events for that very purpose
  • MMM-NeedList

    Utilities
    1
    2
    1 Votes
    1 Posts
    364 Views
    J
    This is a simple module that displays a shared household need/shopping list on your mirror. Add items from any device through the built-in admin web interface — they appear on the mirror immediately. When you’ve picked something up, tap it on the mirror to cross it off; after 60 seconds it’s removed and logged to history. MMM-NeedList [image: 1782399174679-screenshot-3.png]