Releases: MagicMirrorOrg/MagicMirror
Summer is over
[2.29.0] - 2024-10-01
Thanks to: @bugsounet, @dkallen78, @jargordon, @khassel, @KristjanESPERANTO, @MarcLandis, @rejas, @ryan-d-williams, @sdetweil, @skpanagiotis.
⚠️ This release needs nodejs versionv20
orv22
, minimum version isv20.9.0
Added
- [compliments] Added support for cron type date/time format entries mm hh DD MM dow (minutes/hours/days/months and day of week) see https://crontab.cronhub.io for construction (#3481)
- [core] Check config at every start of MagicMirror² (#3450)
- [core] Add spelling check (cspell):
npm run test:spelling
and handle spelling issues (#3544) - [core] removed
config.paths.vendor
(could not work becausevendor
is hardcoded inindex.html
), renamedconfig.paths.modules
toconfig.foreignModulesDir
, added variableMM_CUSTOMCSS_FILE
which - if set - overridesconfig.customCss
, added variableMM_MODULES_DIR
which - if set - overridesconfig.foreignModulesDir
, added test forMM_MODULES_DIR
(#3530) - [core] elements are now removed from
index.html
when loading script or stylesheet files fails - [core] Added
MODULE_DOM_UPDATED
notification each time the DOM is re-rendered viaupdateDom
(#3534) - [tests] added minimal needed node version to tests (currently v20.9.0) to avoid releases with wrong node version info
- [tests] Added
node-libgpiod
library to electron-rebuild tests (#3563)
Removed
- [core] removed installer only files (#3492)
- [core] removed raspberry object from systeminformation (#3505)
- [linter] removed
eslint-plugin-import
, because it doesn't support ESLint v9. We will reenter it later when it does. - [tests] removed
onoff
library from electron-rebuild tests (#3563)
Updated
- [weather] Updated
apiVersion
default from 2.5 to 3.0 (#3424) - [core] Updated dependencies including stylistic-eslint
- [core] nail down
node-ical
version to0.18.0
with exceptionallow-ghsas: GHSA-8hc4-vh64-cxmj
indep-review.yaml
(which should removed after nextnode-ical
update) - [core] Updated SocketIO catch all to new API
- [core] Allow custom modules positions by scanning index.html for the defined regions, instead of hard coded (PR #3518 fixes issue #3504)
- [core] Detail optimizations in
config_check.js
- [core] Updated minimal needed node version in
package.json
(currently v20.9.0) (#3559) and except for v21 (no security updates) (#3561) - [linter] Switch to ESLint v9 and flat config and replace
eslint-plugin-unicorn
by@eslint/js
- [core] fix discovering module positions twice after #3450
Fixed
- Fixed
checks
badge in README.md - [weather] Fixed issue with the UK Met Office provider following a change in their API paths and header info.
- [core] add check for node_helper loading for multiple instances of same module (#3502)
- [weather] Fixed issue for respecting unit config on broadcasted notifications
- [tests] Fixes calendar test by moving it from e2e to electron with fixed date (#3532)
- [calendar] fixed sliceMultiDayEvents getting wrong count and displaying incorrect entries, Europe/Berlin (#3542)
- [tests] ignore
js/positions.js
when linting (this file is created at runtime) - [calendar] fixed sliceMultiDayEvents showing previous day without config enabled
Weather Fixes in Summer Heat
[2.28.0] - 2024-07-01
Thanks to: @btoconnor, @bugsounet, @JasonStieber, @khassel, @kleinmantara and @WallysWellies.
⚠️ This release needs nodejs version >= v20.9.0
Added
- [calendar] Added config option "showEndsOnlyWithDuration" for default calendar
- [compliments] Added
specialDayUnique
config option, defaults tofalse
(#3465) - [weather] Provider weathergov: Use
precipitationLast3Hours
ifprecipitationLastHour
isnull
(#3124)
Removed
- [tests] delete node v18 support (#3462)
Updated
- [core] Update dependencies including electron to v31
- [core] use node >= v20 (#3462)
- [core] Update
config.js.sample
to use openmeteo as weather provider which needs no api key - [tests] Use latest@version of node for
automated-tests.yaml
(#3483) - [updatenotification] Avoid using pm2 when running in docker container
Fixed
- [core] Fixed crash possibility if
module: <name>
is not defined and onpostion: <positon>
mistake (#3445) - [weather] Fixed precipitationProbability in forecast for provider openmeteo (#3446)
- [weather] Fixed type=daily for provider openmeteo having no data when running after 23:00 (#3449)
- [weather] Fixed type=daily for provider openmeteo showing nightly icons in forecast when current time is "nightly" (#3458)
- [weather] Fixed forecast and hourly weather for provider openmeteo to use real temperatures, not apparent temperatures (#3466)
- [tests] Fixed e2e tests running in docker container which needs
address: "0.0.0.0"
(#3479)
Community's First Release!
[2.27.0] - 2024-04-01
Thanks to: @bugsounet, @crazyscot, @illimarkangur, @jkriegshauser, @khassel, @KristjanESPERANTO, @Paranoid93, @rejas, @sdetweil and @vppencilsharpener.
This release marks the first release without Michael Teeuw (@MichMich). A very special thanks to him for creating MagicMirror and leading the project for so many years.
For more info, please read the following post: A New Chapter for MagicMirror: The Community Takes the Lead.
Added
- Output of system information to the console for troubleshooting (#3328 and #3337), ignore errors under aarch64 (#3349)
- [chore] Add
eslint-plugin-package-json
to lint thepackage.json
files (#3368) - [weather]
showHumidity
config is now a string describing where to show this element. Supported values: "wind", "temp", "feelslike", "below", "none". (#3330) - electron-rebuild test suite for electron and 3rd party modules compatibility (#3392)
- Create MM² icon and attach it to electron process (#3407)
Updated
- Update updatenotification (update_helper.js): Recode with pm2 library (#3332)
- Removing lodash dependency by replacing merge by spread operator (#3339)
- Use node prefix for build-in modules (#3340)
- Rework logging colors (#3350)
- Update pm2 to v5.3.1 with no allow-ghsas (#3364)
- [chore] Update husky and let lint-staged fix ESLint issues
- [chore] Update dependencies including electron to v29 (#3357) and node-ical
- Update translations for estonian (#3371)
- Update electron to v29 and update other dependencies
- [calendar] fullDay events over several days now show the left days from the first day on and 'today' on the last day
- Update layout of current weather indoor values
Fixed
- Correct apibase of weathergov weatherprovider to match documentation (#2926)
- Worked around several issues in the RRULE library that were causing deleted calender events to still show, some
initial and recurring events to not show, and some event times to be off an hour. (#3291) - Skip changelog requirement when running tests for dependency updates (#3320)
- Display precipitation probability when it is 0% instead of blank/empty (#3345)
- [newsfeed] Suppress unsightly animation cases when there are 0 or 1 active news items (#3336)
- [newsfeed] Always compute the feed item URL using the same helper function (#3336)
- Ignore all custom css files (#3359)
- [newsfeed] Fix newsfeed stall issue introduced by #3336 (#3361)
- Changed
log.debug
tolog.log
inapp.js
where logLevel is not set because config is not loaded at this time (#3353) - [calendar] deny fetch interval < 60000 and set 60000 in this case (prevent fetch loop failed) (#3382)
- added message in case where config.js is missing the module.export line PR #3383
- Fixed an issue where recurring events could extend past their recurrence end date (#3393)
- Don't display any
npm WARN <....>
on install (#3399) - Fixed move suncalc dependency to production from dev, as it is used by clock module
- [compliments] Fix mirror not responding anymore when no compliments are to be shown (#3385)
- [chore] Fixed mastermerge workflow (#3415)
Deleted
- Unneeded file headers (#3358)
- Removed codecov.yaml
Michael's Last Release
[2.26.0] - 01-01-2024
Thanks to: @bnitkin, @bugsounet, @dependabot, @jkriegshauser, @kaennchenstruggle, @KristjanESPERANTO and @Ybbet.
Special thanks to @khassel, @rejas and @sdetweil for taking over most (if not all) of the work on this release as project collaborators. This version would not be there without their effort. Thank you guys! You are awesome!
This release also marks the latest release by Michael Teeuw. For more info, please read the following post: A New Chapter for MagicMirror: The Community Takes the Lead.
Added
- Added update notification updater (for 3rd party modules)
- Added node 21 to the test matrix
- Added transform object to calendar:customEvents
- Added ESLint rules for jest (including jest/expect-expect and jest/no-done-callback)
Removed
- Removed Codecov workflow (not working anymore, other workflow required) (#3107)
- Removed titleReplace from calendar, replaced + extended by customEvents (backward compatibility included) (#3249)
- Removed failing unit test (#3254)
- Removed some unused variables
Updated
- Update electron to v27 and update other dependencies as well as github actions
- Update newsfeed: Use
html-to-text
instead of regex for transform description - Review ESLint config (#3269)
- Updated dependencies
- Clock module: optionally display current moon phase in addition to rise/set times
- electron is now per default started without gpu, if needed it must be enabled with new env var
ELECTRON_ENABLE_GPU=1
on startup (#3226) - Replace prettier by stylistic in ESLint config to lint JavaScript (and disable some rules for
config/config.js*
files) - Update node-ical to v0.17.1 and fix tests
Fixed
- Avoid fade out/in on updateDom when many calendars are used
- Fix the option eventClass on customEvents.
- Fix yr API version in locationforecast and sunrise call (#3227)
- Fix cloneObject() function to respect RegExp (#3237)
- Fix newsfeed module for feeds using "a10:updated" tag (#3238)
- Fix issue template (#3167)
- Fix #3256 filter out bad results from rrule.between
- Fix calendar events sometimes not respecting deleted events (#3250)
- Fix electron loadurl locally on Windows when address "0.0.0.0" (#2550)
- Fix updatanotification (update_helper.js): catch error if reponse is not an JSON format (check PM2)
- Fix missing typeof in calendar module
- Fix style issues after prettier update
- Fix calendar test (#3291) by moving "Exdate check" from e2e to electron to run on a Thursday
- Fix calendar config params
fetchInterval
andexcludedEvents
were never used from single calendar config (#3297) - Fix MM_PORT variable not used in electron and allow full path for MM_CONFIG_FILE variable (#3302)
TwentyFive!
[2.25.0] - 2023-10-01
Thanks to: @bugsounet, @dgoth, @dependabot, @kenzal, @Knapoc, @KristjanESPERANTO, @martingron, @NolanKingdon, @Paranoid93, @TeddyStarinvest and @Ybbet.
Special thanks to @khassel, @rejas and @sdetweil for taking over most (if not all) of the work on this release as project collaborators. This version would not be there without their effort. Thank you guys! You are awesome!
⚠️ This release needs nodejs version >=v18
, older releases have reached end of life and will not work!
Added
- Added UV Index support to OpenWeatherMap
- Added 'hideDuplicates' flag to the calendar module
- Added
allowOverrideNotification
to weather module to enable sending current weather objects with theCURRENT_WEATHER_OVERRIDE
notification to supplement/replace the current weather displayed - Added optional AnimateCSS animate for
hide()
,show()
,updateDom()
- Added AnimateIn and animateOut in module config definition
- Apply AnimateIn rules on the first start
- Added automatic client page reload when server was restarted by setting
reloadAfterServerRestart: true
inconfig.js
, per defaultfalse
(#3105) - Added eventClass option for customEvents on the default calendar
- Added AnimateCSS integration in tests suite (#3206)
- Added npm dependabot [Reserved to developer] (#3210)
- Added improved logging for calendar (#3110)
Removed
- Breaking Change: Removed
digest
authentication method from calendar module (which was already broken since release2.15.0
)
Updated
- Update roboto fonts to version v5
- Update issue template
- Update dev/dependencies incl. electron to v26
- Replace pretty-quick by lint-staged (prettier/pretty-quick#164)
- Update engine node >=18. v16 reached it's end of life. (#3170)
- Update typescript definition for modules
- Cleaned up nunjuck templates
- Replace
node-fetch
with internal fetch (#2649) and removedigest-fetch
- Update the French translation according to the English file.
- Update dependabot incl. vendor/fonts (monthly check)
- Renew
package-lock.json
for release
Fixed
- Fix engine check on npm install (#3135)
- Fix undefined formatTime method in clock module (#3143)
- Fix clientonly startup fails after async added (#3151)
- Fix electron width/heigth when using xrandr under bullseye
- Fix time issue with certain recurring events in calendar module
- Fix ipWhiteList test (#3179)
- Fix newsfeed: Convert HTML entities, codes and tag in description (#3191)
- Respect width/height (no fullscreen) if set in electronOptions (together with
fullscreen: false
) inconfig.js
(#3174) - Fix: AnimateCSS merge hide() and show() animated css class when we do multiple call
- Fix
Uncaught SyntaxError: Identifier 'getCorsUrl' has already been declared (at utils.js:1:1)
when usingclock
andweather
module (#3204) - Fix overriding
config.js
when running tests (#3201) - Fix issue in weathergov provider with probability of precipitation not showing up on hourly or daily forecast
Farewell Apollo!
[2.24.0] - 2023-07-01
Thanks to: @angeldeejay, @bugsounet, @buxxi, @CarJem, @dariom, @DaveChild, @dWoolridge, @eddiehung, @grenagit, @Hirschberger, @ismarslomic, @JakeBinney, @KristjanESPERANTO, @MagMar94, @naveensrinivasan, @nfogal, @oscarb, @OWL4C, @psieg, @rajniszp, @retroflex, @SkySails and @tomzt
Special thanks to @khassel, @rejas and @sdetweil for taking over most (if not all) of the work on this release as project collaborators. This version would not be there without their effort. Thank you guys! You are awesome!
Added
- Added UV Index to hourly and current Weather, with support for Openmeteo
- Added tests for serveronly
- Set Timezone
Europe/Berlin
in unit tests (needed for new formatTime tests) - Added no-param-reassign eslint rule and fix warnings
- updatenotification: Added
sendUpdatesNotifications
feature. Broadcast update withUPDATES
notification to other modules - updatenotification: allow force scanning with
SCAN_UPDATES
notification from other modules - Added per-calendar fetchInterval
Removed
- Removed unneeded (and unwanted) '.' after the year in calendar repeatingCountTitle (#2896, second attempt ...)
Updated
- Added support for precipitation probability with openmeteo weather-provider
- Update electron to v25.2 and other dependencies
- Use node v20 in github workflow (replacing v14)
- Refactor formatTime into common util function for default modules
- Refactor some calendar methods into own class and added tests for them
- Split install and run commands in github actions
- Changed
fetchInterval
of calendar inconfig.js.sample
to 7 days so we not to request example calendar too frequently - Changed default calendar fetchInterval to one hour
- Changed calendar url in sample config
Fixed
- Fix envcanada hourly forecast time (#3080)
- Fix electron not running under windows after async changes (#3083)
- Fix style issues after eslint-plugin-jsdoc update
- Fix don't filter out ongoing full day events (#3095)
- Fix date not shown when clock in analog mode (#3100)
- Fix envcanada today percentage-of-precipitation (#3106)
- Fix updatenotification where no branch is checked out but e.g. a version tag (#3130)
The one that I completely forgot to release ...
[2.23.0] - 2023-04-04
Thanks to: @angeldeejay, @buxxi, @CarJem, @dariom, @DaveChild, @dWoolridge, @grenagit, @Hirschberger, @KristjanESPERANTO, @MagMar94, @naveensrinivasan, @nfogal, @psieg, @rajniszp, @retroflex, @SkySails and @tomzt.
Special thanks to @khassel, @rejas and @sdetweil for taking over most (if not all) of the work on this release as project collaborators. This version would not be there without their effort. Thank you guys! You are awesome!
Added
- Added increments for hourly forecasts in weather module (#2996)
- Added tests for hourly weather forecast
- Added possibility to ignore MagicMirror repo in updatenotification module
- Added Pirate Weather as new weather provider (#3005)
- Added possibility to use your own templates in Alert module
- Added error message if
<modulename>.js
file is missing in module folder to get a hint in the logs (#2403) - Added possibility to use environment variables in
config.js
(#1756) - Added option
pastDaysCount
to default calendar module to control of how many days past events should be displayed - Added thai language to alert module
- Added option
sendNotifications
in clock module (#3056)
Removed
- Removed darksky weather provider
- Removed unneeded (and unwanted) '.' after the year in calendar repeatingCountTitle (#2896)
Updated
- Use develop as target branch for dependabot
- Update issue template, contributing doc and sample config
- The weather modules clearly separates precipitation amount and probability (risk of rain/snow)
- This requires all providers that only supports probability to change the config from
showPrecipitationAmount
toshowPrecipitationProbability
.
- This requires all providers that only supports probability to change the config from
- Update tests for weather and calendar module
- Changed updatenotification module for MagicMirror repo only: Send only notifications for
master
if there is a tag on a newer commit - Update dates in Calendar widgets every minute
- Cleanup jest coverage for patches
- Update
stylelint
dependencies, switch tostylelint-config-standard
and handlestylelint
issues, updatemain.css
matching new rules - Update Eslint config, add new rule and handle issue
- Convert lots of callbacks to async/await
- Revise require imports (#3071 and #3072)
Fixed
- Fix wrong day labels in envcanada forecast (#2987)
- Fix for missing default class name prefix for customEvents in calendar
- Fix electron flashing white screen on startup (#1919)
- Fix weathergov provider hourly forecast (#3008)
- Fix message display with HTML code into alert module (#2828)
- Fix typo in french translation
- Yr wind direction is no longer inverted
- Fix async node_helper stopping electron start (#2487)
- The wind direction arrow now points in the direction the wind is flowing, not into the wind (#3019)
- Fix precipitation css styles and rounding value
- Fix wrong vertical alignment of calendar title column when wrapEvents is true (#3053)
- Fix empty news feed stopping the reload forever
- Fix e2e tests (failed after async changes) by running calendar and newsfeed tests last
- Lint: Use template literals instead of string concatenation
- Fix default alert module to render HTML for title and message
- Fix Open-Meteo wind speed units
The Collaborators Edition
[2.22.0] - 2023-01-01
Thanks to: @angeldeejay, @buxxi, @dariom, @dWoolridge, @KristjanESPERANTO, @MagMar94, @naveensrinivasan, @retroflex, @SkySails and @tom.
Special thanks to @khassel, @rejas and @sdetweil for taking over most (if not all) of the work on this release as project collaborators. This version would not be there without their effort. Thank you!
Added
- Added test for remoteFile option in compliments module
- Added hourlyWeather functionality to Weather.gov weather provider
- Removed weatherEndpoint definition from weathergov.js (not used)
- Added css class names "today" and "tomorrow" for default calendar
- Added Collaboration.md
- Added new github action for dependency review (#2862)
- Added a WeatherProvider for Open-Meteo
- Added Yr as a weather provider
- Added config options "ignoreXOriginHeader" and "ignoreContentSecurityPolicy"
Removed
- Removed usage of internal fetch function of node until it is more stable
Updated
- Cleaned up test directory (#2937) and jest config (#2959)
- Wait for all modules to start before declaring the system ready (#2487)
- Updated e2e tests (moved
done()
in helper functions) and use es6 syntax in all tests - Updated da translation
- Rework weather module
- Make sure smhi provider api only gets a maximum of 6 digits coordinates (#2955)
- Use fetch instead of XMLHttpRequest in weatherprovider (#2935)
- Reworked how weatherproviders handle units (#2849)
- Use unix() method for parsing times, fix suntimes on the way (#2950)
- Refactor conversion functions into utils class (#2958)
- The
cors
-method inserver.js
now supports sending and recieving HTTP headers - Replace
…
by…
- Cleanup compliments module
- Updated dependencies including electron to v22 (#2903)
Fixed
- Correctly show apparent temperature in SMHI weather provider
- Ensure updatenotification module isn't shown when local is ahead of remote
- Handle node_helper errors during startup (#2944)
- Possibility to change FontAwesome class in calendar, so icons like
fab fa-facebook-square
works. - Fix cors problems with newsfeed articles (as far as possible), allow disabling cors per feed with option
useCorsProxy: false
(#2840) - Tests not waiting for the application to start and stop before starting the next test
- Fix electron tests failing sometimes in github workflow
- Fixed gap in clock module when displayed on the left side with displayType=digital
- Fixed playwright issue by upgrading to v1.29.1 (#2969)
The WhatShouldICallIt™ Release
[2.21.0] - 2022-10-01
Special thanks to: @BKeyport, @buxxi, @davide125, @khassel, @kolbyjack, @krukle, @MikeBishop, @rejas, @sdetweil, @SkySails and @veeck
Added
- Possibility to fetch calendars through socket notifications.
- New scripts
install-mm
(andinstall-mm:dev
) for simplifying mm installation (now:npm run install-mm
) and adding params--no-audit --no-fund --no-update-notifier
for less noise. - New
showTimeToday
option in calendar module shows time for current-day events even iftimeFormat
is"relative"
. - Add hourly forecasts, apparent temperature & custom location name to SMHI weather provider.
Removed
- Old weather deprecated modules
currentweather
andweatherforecast
.
Updated
- Removed
DAYAFTERTOMORROW
from English. - Update dependencies.
- Updated jsdoc.
- Updated font tree to use variables consistantly.
- Removed deprecated Docker Repository from issue template.
Fixed
- Broadcast all calendar events while still honoring global and per-calendar maximumEntries.
- Respect rss ttl provided by newsfeed (#2883).
- Fix multi day calendar events always presented as "(1/X)" instead of the amount of days the event has progressed.
- Fix weatherbit provider to use type config value instead of endpoint.
- Fix calendar events which DO NOT specify rrule byday adjusted incorrectly (#2885).
- Fix e2e tests not failing on errors (#2911).
The Missed Deadline Edition
[2.20.0] - 2022-07-02
Special thanks to the following contributors: @eouia, @khassel, @kolbyjack, @KristjanESPERANTO, @nathannaveen, @naveensrinivasan, @rejas, @rohitdharavath and @sdetweil.
Added
- Added a new config option
httpHeaders
used by helmet (see https://helmetjs.github.io/). You can now set own httpHeaders which will override the defaults injs/defauls.js
which is useful e.g. if you want to embed MagicMirror into annother website (solves #2847). - Show endDate for calendar events when dateHeader is enabled and showEnd is set to true (#2192).
- Added the notification emitting from the weather module on infromation updated.
- Use recommended file extention for YAML files (#2864).
Updated
- Use latest node 18 when running tests on github actions.
- Update
electron
to v19 and other dependencies. - Use internal fetch function of node instead external
node-fetch
library if used node version >=v18
. - Include duplicate events in broadcasts.
Fixed
- Fix problems with non latin fonds caused by updating to fontsource (fixes #2835).