Skip to content
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

Custom Region Layouts - V2.28.0 breaks functionality #3504

Closed
AryasDad opened this issue Jul 20, 2024 · 10 comments
Closed

Custom Region Layouts - V2.28.0 breaks functionality #3504

AryasDad opened this issue Jul 20, 2024 · 10 comments

Comments

@AryasDad
Copy link

Hello and thank you for opening an issue.

⚠️ Please make sure that you have read the following lines before submitting your Issue:

I'm not sure if this is a bug

If you're not sure if it's a real bug or if it's just you, please open a topic on the forum: https://forum.magicmirror.builders/category/15/bug-hunt

I'm having troubles installing or configuring MagicMirror

Problems installing or configuring your MagicMirror? Check out: https://forum.magicmirror.builders/category/10/troubleshooting

A common problem is that your config file could be invalid. Please run in your MagicMirror² directory: npm run config:check and see if it reports an error.

I found a bug in the MagicMirror² installer

If you are facing an issue or found a bug while trying to install MagicMirror² via the installer please report it in the respective GitHub repository:
https://github.com/sdetweil/MagicMirror_scripts

I found a bug in the MagicMirror² Docker image

If you are facing an issue or found a bug while running MagicMirror² inside a Docker container please create an issue in the corresponding repository:
https://gitlab.com/khassel/magicmirror

I'm having troubles installing or configuring foreign modules

Please open an issue in the module repository or ask for help in the forum


I found a bug in MagicMirror

Please make sure to only submit reproducible issues. You can safely remove everything above the dividing line.
When submitting a new issue, please supply the following information:

Platform: Intel(R) Client Systems; model: NUC6CAYH, platform: linux; distro: Ubuntu; release: 22.04.4 LTS; arch: x64; kernel: 6.5.0-44-generic, electron: 29.1.6; used node: 20.9.0; installed node: 20.15.1; npm: 10.7.0; pm2: 5.3.1

Node Version: node: 20.15.1

MagicMirror² Version: MagicMirror: v2.27.0 (tried latest 22.28.0 - caused problems)

Description: For approximately the last year if not longer, I have been running my MagicMirror instance successfully with custom layout regions. V2.27.0 appears to be the last release where this worked. V2.28.0 breaks this functionality. I am not sure where I found how to do this, but it was somewhere on the MagicMirror forums. Here is a snippet from my modified index.html:

  <div class="region row3 left">
    <div class="container"></div>
  </div>
  <div class="region row3 right">
    <div class="container"></div>
  </div>

In my config.js, I am able to locate modules in this by using the following:

position: "row3_left"
...
position: "row3_right"

When I updated to V2.28.0, it no longer loads and my error log indicates invalid region position.

Steps to Reproduce: Downgraded to 2.27.0 to get it working again. 2.28.0 breaks it. .

Expected Results: Custom regions in index.html should be recognized by stem like previously..

Actual Results: Multiple errors in log due to "invalid region".

Configuration: pertinent snippet above.

Additional Notes:. I am suspecting the "fix", issue #3445 is what is causing this to no longer work.

My question is, is there a better way to get custom layout functionality that I am unaware of to get my system working with the latest release? The current pre-determined layout is too restrictive and I need more layout options for my system.

@sdetweil
Copy link
Collaborator

@khassel
Copy link
Collaborator

khassel commented Jul 20, 2024

yes, the mentioned PR causes your problems.

AFAIR this was implemented to prevent crashes so we have less support.

@rejas @sdetweil from my side we could add an additional parameter in config.js to allow custom positions so that these (hopefully experienced) users don't have to fix this by changing our code.

@sdetweil
Copy link
Collaborator

@khassel yes prevent crashes but could be an optional property as u suggest. I also suggested code to do discovery, but could be trouble depending, on above

@AryasDad
Copy link
Author

My vote would be to scan the index file for the regions when it does the check. It seems like this ability is already built-in somewhat to the codebase since it was able to use the custom regions before.

However, I always have to remember to replace the index file with my custom after an update, so having the alternative means to add these in via config or other means would also be good. Maybe a way to add a custom section similar to how you can do a custom CSS that gets injected into the index file automagically. That way if an update doesn't wipe out core manual updates.

@sdetweil
Copy link
Collaborator

before we we didn't validate the regions. but if it was wrong, there was a fatal error.. and MM didn't come up
we found a case with no module: and fixed that, and decided to validate the position names too.. this is what caught you..

I did write a sample bit of JS to extract the names from the index.html file.. and ad d them to the list to validate against.
if I can find it again..

@sdetweil
Copy link
Collaborator

const fs = require('fs')
const indexFile =   'index.html'

let lines = fs.readFileSync(indexFile).toString().split('\n')
let regionRegex = /"region ([^"]*)/i

lines.forEach(l =>{
        let results=regionRegex.exec(l)
        if(results && results.length>1){
           console.log("region='"+results[1].replace(' ','_')+"'")
        }
})

@khassel
Copy link
Collaborator

khassel commented Jul 23, 2024

my above PR brings back the situation of v2.27.0, so this would solve this issue but still no solution for the index.html file.

We often had discussions about custom regions, but that was never implemented, e.g. #3231.

If we implement such a solution, it should be robust and not result in increased support.

@sdetweil
Copy link
Collaborator

well, your pr suspends checking. does not check new region names too.

@khassel
Copy link
Collaborator

khassel commented Jul 23, 2024

as I said, brings back the situation of v2.27.0, not more

@sdetweil
Copy link
Collaborator

I thought you would make the property for an array of position names, to add/replace the default ones vs a flag to not check

rejas pushed a commit that referenced this issue Aug 1, 2024
khassel pushed a commit that referenced this issue Aug 27, 2024
…ml (#3518)

read index.html to discover the regions used, make them the list checked
by app.js and check:config test

fixes #3504   supercedes #3506 

no config.js param required
khassel added a commit that referenced this issue Sep 30, 2024
## [2.29.0] - 2024-10-01

Thanks to: @bugsounet, @dkallen78, @jargordon, @khassel,
@KristjanESPERANTO, @MarcLandis, @rejas, @ryan-d-williams, @sdetweil,
@skpanagiotis.

> ⚠️ This release needs nodejs version `v20` or `v22`, minimum version
is `v20.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 because `vendor`
is hardcoded in `index.html`), renamed `config.paths.modules` to
`config.foreignModulesDir`, added variable `MM_CUSTOMCSS_FILE` which -
if set - overrides `config.customCss`, added variable `MM_MODULES_DIR`
which - if set - overrides `config.foreignModulesDir`, added test for
`MM_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 via `updateDom` (#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 to `0.18.0` with exception
`allow-ghsas: GHSA-8hc4-vh64-cxmj` in `dep-review.yaml` (which should
removed after next `node-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

---------

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: Michael Teeuw <[email protected]>
Co-authored-by: Kristjan ESPERANTO <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Ross Younger <[email protected]>
Co-authored-by: Veeck <[email protected]>
Co-authored-by: Bugsounet - Cédric <[email protected]>
Co-authored-by: jkriegshauser <[email protected]>
Co-authored-by: illimarkangur <[email protected]>
Co-authored-by: sam detweiler <[email protected]>
Co-authored-by: vppencilsharpener <[email protected]>
Co-authored-by: veeck <[email protected]>
Co-authored-by: Paranoid93 <[email protected]>
Co-authored-by: Brian O'Connor <[email protected]>
Co-authored-by: WallysWellies <[email protected]>
Co-authored-by: Jason Stieber <[email protected]>
Co-authored-by: jargordon <[email protected]>
Co-authored-by: Daniel <[email protected]>
Co-authored-by: Ryan Williams <[email protected]>
Co-authored-by: Panagiotis Skias <[email protected]>
Co-authored-by: Marc Landis <[email protected]>
@khassel khassel closed this as completed Sep 30, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants