-
-
Notifications
You must be signed in to change notification settings - Fork 4.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Release 2.23.0 #3078
Release 2.23.0 #3078
Conversation
use es6 syntax in all tests, split weather tests, remove callbacks
This PR addresses [this comment](48756e8#commitcomment-85772193), which points out an issue with #2902. Looks like the apparent temp calculation method was incorrectly referenced 😅
nothing fancy here, just a simple test after @khassel's changes to the test setup :-) Co-authored-by: veeck <michael@veeck.de>
as proposed in 05f0d18#commitcomment-85730050 Co-authored-by: veeck <michael@veeck.de>
Added fetchWeatherHourly functionality to: modules/default/weather/providers/weathergov.js
small update to the fetchData method to use the fetch helper instead of the old XCMLHttpRequest. Also fixes some typos :-) Co-authored-by: veeck <michael@veeck.de>
Removed weatherEnpoint definition in defaults. It is not used in the weathergov.js provider.
Moves files around and renames some so that the structure is cleaner and more consistent
Added class names "today" and "tomorrow" on the calendar module tr elements (i.e. calendar items). This way you can for example color your events today and/or tomorrow to more easily see what's happening in the near future. Implemented by adding an event.tomorrow variable (similar to event.today) that can be used for other things in the future. Also replaced a few hardcoded values (hours, seconds etc.) with constants to make the code more consistent. Edit: tested with normal events, split day events and events with locations.
… remote (#2943) This PR resolves a small bug in the updatenotification module if a local git repo is ahead of the remote (for example I have made local commits for my personal needs). Currently, if `git status -sb` reports a status like: `## master...origin/master [ahead 2]` then updatenotification treats this as though it's "behind". This PR uses a single Regex to match `git status -sb` output and uses capture groups to extract info to populate the `gitInfo` object to avoid needing to do string manipulation to extract this information. Co-authored-by: Dario Mratovich <dario.mratovich@outlook.com>
In response to #2487 this implements a Promise.all for the node_helper start calls Co-authored-by: veeck <michael@veeck.de>
Some icons in FontAwesome, like the Facebook-logo, requires a different class than `fas fa-fw fa-`. Added support for specifying the `className`: ```js { symbol: "facebook-square", symbolClassName: "fab fa-", url: "https://www.facebook.com/events/ical/upcoming/?uid=<some_uid>" } ```
because I thought it was more readable and I found a little bug when calculatin suntimes on the way.... Co-authored-by: veeck <michael@veeck.de>
solves #2840 as far as possible. There could still be errors on the embedded iframe when the owner of the site has set `X-Frame-Options` or `Access-Control-Allow-Origin` headers (as already mentioned in the docs).
Fixes #2944 Also splits the Server js into a constrcutor and an open call to remove one callback parameter :-) Co-authored-by: veeck <michael@veeck.de>
So finally I think this refactorin is ready to be reviewed :-) DONE: - [x] Removed all conversion functions for wind and temperature from specific weatherproviders - [x] Use internally only metric units: celsius for temperature, meters per seconds for wind - [x] Convert temp and wind into the configured units when displaying data on the UI - [x] look how beaufort calculation uses metrics, added knots as new windunit - [x] add more e2e tests Checked providers: - [x] Darksky - [x] EnvCanada - [x] OpenWeatherMap - [x] SMHI provider - [x] UK Met Office - [x] UK Met Office DataHub - [x] WeatherBit - [x] WeatherFlow - [x] WeatherGov TODO in different tickets: - check weatherproviders for usage of weatherEndpoint (as seen in MagicMirrorOrg/MagicMirror-Documentation#131) -> see #2926 - cleanup precipations -> #2953 Co-authored-by: veeck <michael@veeck.de>
Co-authored-by: veeck <michael@veeck.de>
Some small cleanups with regards to jest - call jest directly (nyc is integrated in jest these days) - move jest config into seperate file so we dont clutter up the package.json - remove empty test file for newsletter-unit-tests - update dependencies that touch jest - try out v8 as coverageProvider Co-authored-by: veeck <michael@veeck.de>
> Dependency Review GitHub Action in your repository to enforce dependency > reviews on your pull requests. > The action scans for vulnerable versions of dependencies introduced by package version > changes in pull requests, > and warns you about the associated security vulnerabilities. > This gives you better visibility of what's changing in a pull request, > and helps prevent vulnerabilities being added to your repository. https://docs.github.com/en/code-security/supply-chain-security/understanding-your-software-supply-chain/about-dependency-review#dependency-review-enforcement Signed-off-by: naveen <172697+naveensrinivasan@users.noreply.github.com> Signed-off-by: naveen <172697+naveensrinivasan@users.noreply.github.com> Co-authored-by: Karsten Hassel <hassel@gmx.de>
Co-authored-by: veeck <michael@veeck.de>
… next test (#2952) When trying to debug why the tests broke for #2946 I found that the tests does not wait for the app to start and close. So if the startup isn't blocking that would fail. So I added a callback for `close()` too and converted them to promises for the `startApplication()` and `stopApplication()` and updated all the e2e tests to await both. Will try to refactor all these callbacks to promises in a later PR.
As discussed in #2952 Co-authored-by: veeck <michael@veeck.de>
Adds support for sending and receiving HTTP-headers when using the CORS-method. This change is required for the Yr weather-provider introduced in #2948. To make it easier to add unit tests I moved the server-functions into a separate file.
As already discussed here the first shot of the collaboration rules. We can discuss this in the comments until ready to merge. Co-authored-by: Veeck <github@veeck.de>
…response headers (#2963) Many users like me do have the problem that they want to embed other sites to their mirror by "iframe". As some developers set the "x-frame-options" and "content-security-policy" for security reasons these sites can not be embedded. Electron provides the "webview" element additionally to "iframe" which allows to embed these sites although. The main difference is that a new process is started which handles the "webview" element. BUT: As the "webview" process needs to be started and is isolated "webview" is slower and the elements can not be accessed from the embedding website. As an alternative i implemented a small callback function in electron.js which removes the response headers that forbid the embedding. The removing can be controlled with the new config options: * ignoreXOriginHeader * ignoreContentSecurityPolicy
# Added Yr.no as a weather provider Yr.no is a free Norwegian weather service. The configuration is quite simple: ```js { weatherProvider: "yr", lat: 59.9171, lon: 10.7276, altitude: 30 } ``` The latitude and longitude cannot have more than 4 decimals, but that should be plenty. To quote yr: "There is no need to ask for weather forecasts with nanometer precision!". The altitude should be meters above sea level and defaults to 0. If `type` is set to `current` the symbol can display the next 1, 6 or 12 hours by setting `currentForecastHours` (default is 1). It states in [Getting started-guide](https://developer.yr.no/doc/GettingStarted/) that users of the API should cache the results and use the `Expires`-header to know when to ask for new data. By using the `If-Modified-Since`-header we can avoid downloading the same data over and over again. I chose not to override the `User-Agent`-header set in [`server.js`](https://github.com/MichMich/MagicMirror/blob/a328ce5/js/server.js#L97) even though it does not comply with [the terms of service](https://developer.yr.no/doc/TermsOfService/). It currently works with the default header, and by searching the web for MagicMirror the GitHub-repo should be easy to find without an explicit link. I also had to make some minor changes to `server.js` and `weatherprovider.js` to be able to send and return HTTP headers. To handle the HTTP 304 response without body I chose to return `undefined` so we easily can use the response as a condition: `if (response) ...`. The documentation for the API is available here: - [API Reference overview](https://api.met.no/weatherapi/) - [Locationforecast](https://api.met.no/weatherapi/locationforecast/2.0/) - Used to get the weather forecast - [Sunrise](https://api.met.no/weatherapi/sunrise/2.0/documentation) - used to find sunrise and sunset times Co-authored-by: Veeck <github@veeck.de>
Co-authored-by: veeck <michael@veeck.de>
removing some old example and add info about the mastermerge label --------- Co-authored-by: veeck <michael@veeck.de>
They weren't applied to wrong classnames, this PR fixes that and also expands the weather util tests --------- Co-authored-by: veeck <michael@veeck.de>
1. Update `stylelint` dependencies - As of stylelint v15, we do not need `stylelint-config-prettier` anymore: https://github.com/prettier/stylelint-config-prettier/releases/tag/v9.0.5 2. Switch to `stylelint-config-standard`: `stylelint-prettier/recommended` has not been updated for a long time and still needs the old `stylelint-config-prettier` 3. Handle new `stylelint` issues
actually add it to the tanslation list and also add the alert translations from #3029 since the OP didnt seem to work on it (yet) --------- Co-authored-by: veeck <michael@veeck.de> Co-authored-by: Suthep Yonphimai <tomzt@users.noreply.github.com>
Percentage should be always rounded so that we dont get something like "47.0000000001 %" Some small typo and naming fixes also while I am here --------- Co-authored-by: veeck <michael@veeck.de>
Hi, want to include a birthday calendar to my mirror which shows upcoming birthdays and as a reminder birthdays of the last two days. I used [MMM-CalendarExt2](https://github.com/MMM-CalendarExt2/MMM-CalendarExt2) for this job in the past but the module is not supported any more and very complicated to configure. I managed to style the default calendar module to my needs but what i am missing is to display already past events within a configurable time range. I included the translations of "YESTERDAY" and "DAYBEFOREYESTERDAY" to all translation files and modified the code to accept a new option `pastDaysCount` which controls of how many days past events should be displayed. --------- Co-authored-by: Veeck <github@veeck.de>
Co-authored-by: veeck <michael@veeck.de>
supersedes #3027 and just touches the start/stop calls. --------- Co-authored-by: veeck <michael@veeck.de>
Similar to the node_helper async start PR... --------- Co-authored-by: veeck <michael@veeck.de>
Another one of these PRs....
Looks quite stable on my computers, so maybe we give it a try? --------- Co-authored-by: veeck <michael@veeck.de>
Resolved technical debt for [2964](#2964): - Set wind speed unit to m/s - Rename parameter `past_days` to `pastDays` to be consistent with all configs
The title column was vertical centered before. Fixes #3053
If a news feed returns an empty file it will cause the feed to only show the previous entries forever since no new fetch is scheduled.
by running calendar and newsfeed tests last. Additional change: allow unit tests to run parallel This is no fix of the real issue of calendar and newsfeed tests but I moved them to the end of the tests so other tests are not failing anymore. There are coming follow up PR's for the real fixes (when I find the culprits). With these change we can stay with the async changes done by @rejas and #3060 is obsolete.
Fixes [#3064](#3064) - Fixes default alert module nunjucks templates to render HTML by default unless 'titleType' and 'messageType' are set to 'text' in the payload data e.g. Display Text: `this.sendNotification('SHOW_ALERT', {type: "notification", title: "<u>YoLink LeakSensor</u>", titleType: "text", message: "<b>" + deviceName + "</b> reported an alarm that needs attention.", messageType: "text"});` Display HTML: `this.sendNotification('SHOW_ALERT', {type: "notification", title: "<u>YoLink LeakSensor</u>", message: "<b>" + deviceName + "</b> reported an alarm that needs attention."});`
We have used it inconsistently till now. Template literals are more modern and easier to maintain in my opinion. Because that's a large amount of changes, here's a way to reproduce it: I added the rule `"prefer-template": "error"` to the `.eslintrc.json` and did an autofix. Since this caused a new problem in line 409 of `newsfeed.js`, I reversed it in that line and also removed the rule from the eslint config file. The rule is described here: https://eslint.org/docs/latest/rules/prefer-template Note: I've played around with some other linter rules as well, and some seem to point to some specific, non-cosmetic, issues. But before I dive even deeper and then introduce even bigger and hardly understandable changes at once, I thought I'd start with this simple cosmetic rule.
On `develop` my css test failed because I was already on newest dependencies. - update deps - update `main.css` because of stylelint issue Co-authored-by: Veeck <github@veeck.de>
- order (external first) - remove superfluous file extensions - new line after imports - deconstruct (only one time (in `check_config.js`)) - fix path (only one time (in `global-setup.js`))
To fix issue caused by #3071 In order to still fulfill the new linter rule `import/order`, I replaced the alias with the path. I also see two other approaches, but I opted for the simplest one here for now. The other approaches: 1. Also create an alias for `app`. 2. Use new `imports` (like in PR #2934), but let `_moduleAliases` untouched to stay compatible to 3rd party modules. **Edit**: Oh, I thought of another option: - Add `require("module-alias/register");`
Fixes #3056 One question here would be if the default for this new option should be true or false. True: keeps the current behaviour, nobody needs to change his config if they rely on this option False: keeps the clock notifications quiet, doesnt waste time/resources, keeps the noise low Maybe the original author @cybex-dev can weigh in on this, and why he added this notification. --------- Co-authored-by: veeck <michael@veeck.de>
Fixes #3056 One question here would be if the default for this new option should be true or false. True: keeps the current behaviour, nobody needs to change his config if they rely on this option False: keeps the clock notifications quiet, doesnt waste time/resources, keeps the noise low Maybe the original author @cybex-dev can weigh in on this, and why he added this notification. --------- Co-authored-by: veeck <michael@veeck.de>
Codecov Report
📣 This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more @@ Coverage Diff @@
## master #3078 +/- ##
==========================================
+ Coverage 21.69% 27.55% +5.85%
==========================================
Files 52 52
Lines 11424 11573 +149
==========================================
+ Hits 2479 3189 +710
+ Misses 8945 8384 -561
... and 1 file with indirect coverage changes Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here. |
Fixes issues after upgrading to 2.23.0 MagicMirrorOrg/MagicMirror#3078
No description provided.