Commit Graph

40 Commits

Author SHA1 Message Date
Kristjan ESPERANTO
7934e7aef8 [compliments] refactor: optimize loadComplimentFile method and add unit tests (#3969)
## Changes

- Replace `indexOf()` with `startsWith()` for cleaner protocol detection
- Use `URL` API for robust cache-busting parameter handling
- Add HTTP response validation and improved error logging
- Add JSDoc type annotations for better documentation
- Remove unused `urlSuffix` instance variable
- Add unit tests
- Fix `.gitignore` pattern

## Motivation

After merging #3967, I noticed some potential for improving reliability
and user experience related to the method `loadComplimentFile`. With
these changes the method now validates URLs upfront to catch
configuration errors early, checks HTTP status codes to detect server
issues (404/500), and provides specific error messages that help users
troubleshoot problems.

The complexity of the code does not really increase with the changes. On
the contrary, the method should now be more intuitive to understand.

## Testing

Added unit tests for `loadComplimentFile()` to validate the
improvements:
- HTTP error handling
- Cache-busting

Since E2E tests already cover the happy path, these unit tests focus on
error cases and edge cases.

## Additional Fix

While adding the test file, I discovered that the `.gitignore` pattern
`modules` was incorrectly matching `tests/unit/modules/`, preventing
test files from being tracked. Changed to `/modules` to only match the
root directory.
2025-11-23 17:13:13 +01:00
Kristjan ESPERANTO
854c954180 [gitignore] restore the old Git behavior for the default modules (#3968)
The pattern `modules` was too broad and prevented tracking files in
`modules/default/` despite the negation pattern. Changed to `modules/*`
to properly exclude only the content of the modules directory while
allowing the default modules to be tracked.

This issue was likely introduced during the cleanup in #3952.

Without this change there are now warn messages like this:

```bash
kristjan@debian:~/MagicMirror$ git add modules/default/compliments/compliments.js
The following paths are ignored by one of your .gitignore files:
modules
hint: Use -f if you really want to add them.
hint: Disable this message with "git config advice.addIgnoredFile false"
```
2025-11-19 11:40:53 +01:00
Kristjan ESPERANTO
8e9ee8953a [gitignore] restoring the old Git behavior for the CSS directory (#3954)
The advantage of the old behavior is that users can keep backups, copies
or any other CSS files with different names in the directory without Git
interfering.

I suspect that this was not taken into account during the cleanup in PR
#3952 🙂
2025-11-08 20:25:47 +01:00
Karsten Hassel
ab5f79a1be remove deprecated ukmetoffice datapoint provider, cleanup .gitignore (#3952)
- weather ukmetoffice see #3842 , I got a final reminder today per mail
that datapoint will be retired on Dec. 1st.
- cleanup/simplify `.gitignore`
2025-11-07 08:45:20 +01:00
Kristjan ESPERANTO
462abf7027 [tests] migrate from jest to vitest (#3940)
This is a big change, but I think it's a good move, as `vitest` is much
more modern than `jest`.

I'm excited about the UI watch feature (run `npm run test:ui`), for
example - it's really helpful and saves time when debugging tests. I had
to adjust a few tests because they had time related issues, but
basically we are now testing the same things - even a bit better and
less flaky (I hope).

What do you think?
2025-11-03 19:47:01 +01:00
Karsten Hassel
c8625ff506 simplify install and maintaining dependencies (#3795)
I was always unhappy when maintaining dependency updates to have 3
`package.json` files.

This PR moves all deps into the main `package.json` and removes the
folders `fonts` and `vendor`.

If accepted I will update the docs too.

---------

Co-authored-by: Kristjan ESPERANTO <35647502+KristjanESPERANTO@users.noreply.github.com>
2025-06-01 17:03:11 +02:00
Kristjan ESPERANTO
b9d63d7252 Use "node --run" instead of "npm run" (#3764)
This has the advantage that the package manager is no longer involved
after the installation process.

However, previous start commands such as `npm run start` continue to
work. So we don't even have to adapt the documentation.
2025-05-06 20:33:42 +02:00
Kristjan ESPERANTO
bca5d9c845 Ignore positions.js (#3531)
This file is generated when MM is started. As I understand it, it should
not be included in the repository.

Should probably have been part of #3518.
2024-09-11 23:12:34 +02:00
Kristjan ESPERANTO
35e4dfb3fe Ignore all custom css files (#3359)
For experimenting, I sometimes work with different CSS files. I can
imagine that others do this too.

This setting for the css folder corresponds to the setting we already
have for the config folder.
2024-01-16 23:16:47 +01:00
Michael Teeuw
0300ce05d5 Release 2.22.0 (#2983)
## [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 in `server.js` now supports sending and recieving
HTTP headers
- Replace `&hellip;` 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)

Signed-off-by: naveen <172697+naveensrinivasan@users.noreply.github.com>
Co-authored-by: Karsten Hassel <hassel@gmx.de>
Co-authored-by: Malte Hallström <46646495+SkySails@users.noreply.github.com>
Co-authored-by: Veeck <github@veeck.de>
Co-authored-by: veeck <michael@veeck.de>
Co-authored-by: dWoolridge <dwoolridge@charter.net>
Co-authored-by: Johan <jojjepersson@yahoo.se>
Co-authored-by: Dario Mratovich <dario_mratovich@hotmail.com>
Co-authored-by: Dario Mratovich <dario.mratovich@outlook.com>
Co-authored-by: Magnus <34011212+MagMar94@users.noreply.github.com>
Co-authored-by: Naveen <172697+naveensrinivasan@users.noreply.github.com>
Co-authored-by: buxxi <buxxi@omfilm.net>
Co-authored-by: Thomas Hirschberger <47733292+Tom-Hirschberger@users.noreply.github.com>
Co-authored-by: Kristjan ESPERANTO <35647502+KristjanESPERANTO@users.noreply.github.com>
Co-authored-by: Andrés Vanegas Jiménez <142350+angeldeejay@users.noreply.github.com>
2023-01-01 18:09:08 +01:00
buxxi
a50824eeee Merging config/.gitignore with .gitignore 2020-12-28 11:50:01 +01:00
rejas
d570f910f8 Added test coverage with istanbul 2020-07-09 20:29:38 +02:00
rejas
1eecf4b2c7 Fix docs, grunt is removed 2020-04-28 23:07:14 +02:00
Michael Teeuw
04dde74572 Move and alias node_module. 2020-01-01 19:17:23 +01:00
Michael Teeuw
d90de18d99 Prepare 2.9.0 2019-10-01 19:36:51 +02:00
fewieden
239d425940 webdriver ajax stub 2019-01-13 23:58:35 +01:00
fewieden
fa8e398e90 dependencies 2019-01-13 23:50:29 +01:00
Teddy
dcb2e51587 Update .gitignore 2018-06-11 14:00:16 +02:00
Teddy Payet
cbc2eaf908 Customize classes for table
MagicMirror offers helper classes in the main.css. Therefore, we give
the possibility to indicate the class that we want.
2018-06-11 12:54:27 +02:00
Nicholas Hubbard
6a10d08189 Revert "Delete large package-lock.json files" 2017-10-13 19:59:39 -04:00
Rodrigo Ramírez Norambuena
516db855f5 Delete large package-lock.json files 2017-10-08 23:41:51 -03:00
Bas van Wetten
b612f0cdec PR for issue #956
Changed .gitignore to ignore Visual Studio Code project folder with custom launch configuration. (See issue #956)
2017-07-24 21:56:53 +02:00
Rodrigo Ramírez Norambuena
f2c3fc20de ignore git file for vim and patch 2017-04-03 15:50:25 -03:00
Sebastian Limbach
e68fea185d Merge branch 'develop' into feature/docker 2017-01-31 19:48:38 +01:00
Sebastian Limbach
354b745c39 Added Docker support 2017-01-31 11:41:40 +01:00
Chris van Marle
2e9b6ead2e Fix gitignore to not ignore default modules folder
/modules/** makes git ignore all directories and files in /modules, so
it's not even looking in /modules/default for changes.
!/modules/default/** is therefore never used. By adding the new line
!/modules/default, git is told to look in the /modules/default folder
for changes and will find all sub files/dirs and match these on
!/modules/default/**.
2017-01-10 11:31:00 +01:00
Nicholas Hubbard
6677f2f5d4 Standardize the GitIgnore 2016-04-16 21:36:46 -04:00
Christopher
69a3354617 ignore .DS_Store files
ignore Desktop Services Store file for OS X
2016-04-15 09:53:34 +02:00
Michael Teeuw
f36f2357ef Start of Module Development Documentation 2016-04-09 17:04:08 +02:00
Michael Teeuw
7b6772e77b Allow custom css styling. 2016-04-05 10:26:18 +02:00
Michael Teeuw
e4c54cc655 Add module subfolder support. 2016-04-01 17:35:29 +02:00
Michael Teeuw
b243d25399 Improved socket connection for node_helper. 2016-03-30 16:25:24 +02:00
Michael Teeuw
d7ef4adbc8 update gitignore to ignore new modules (except default modules) 2016-03-30 14:59:57 +02:00
Michael Teeuw
7e873880f5 fix git ignore 2016-03-30 14:00:42 +02:00
Michael Teeuw
1be0edaf03 git ignore fix 2016-03-30 13:57:06 +02:00
Michael Teeuw
609e498973 git ignore fix 2016-03-30 13:56:53 +02:00
Michael Teeuw
c55ac659c1 Git ignore changes. 2016-03-30 13:47:57 +02:00
Michael Teeuw
1de52f7b64 Update gitignore. 2016-03-30 13:44:49 +02:00
Michael Teeuw
d00aa21c96 git ignore changes 2016-03-30 13:19:54 +02:00
Michael Teeuw
872d8584fb Git ignore changes. 2016-03-29 13:28:51 +02:00