v2.32.0

sensein/riverstv2.32.0Jun 30, 2025by khassel

AI Summary

This release introduces new configuration options for the clock and calendar modules, simplifies the module loading process, and upgrades core dependencies to Electron v36 and Node.js v22. It also performs significant refactoring, including a move to Express v5 and modernizing the codebase with built-in Node.js utilities.

Key Highlights

  • Requires Node.js v22.14.0+ and uses Express v5
  • New 'order' config for module rendering and 'disableNextEvent' for clock
  • Refactored calendar timezone handling using moment-timezone

Breaking Changes

  • Requires Node.js version v22.14.0 or higher
  • Uses Express v5 which has breaking changes that may affect third-party modules

New Features

  • Allow to change module order for final renderer
  • Added option 'disableNextEvent' to hide next sun event
  • Implement short syntax for clock week

Full Release Notes

## [2.32.0] - 2025-07-01

Thanks to: @bughaver, @bugsounet, @khassel, @KristjanESPERANTO, @plebcity, @rejas, @sdetweil.

> ⚠️ This release needs nodejs version `v22.14.0 or higher`
> ⚠️ This release uses `express v5` which has [breaking changes](https://expressjs.com/en/guide/migrating-5.html) that may cause problems with third-party modules

### Added

- [config] Allow to change module order for final renderer (or dynamically with CSS): Feature `order` in config (#3762)
- [clock] Added option 'disableNextEvent' to hide next sun event (#3769)
- [clock] Implement short syntax for clock week (#3775)

### Changed

- [refactor] Simplify module loading process (#3766)
- Use `node --run` instead of `npm run` (#3764) and adapt `start:dev` script (#3773)
- [workflow] Run linter and spellcheck with LTS node version (#3767)
- [workflow] Split "Run test" step into two steps for more clarity (#3767)
- [linter] Review linter setup (#3783)
  - Fix command to lint markdown in `CONTRIBUTING.md`
  - Re-activate JSDoc linting and fix linting issues
  - Refactor ESLint config to use `defineConfig` and `globalIgnores`
  - Replace `eslint-plugin-import` with `eslint-plugin-import-x`
  - Switch Stylelint config to flat format and simplify Stylelint scripts
- [workflow] Replace Node.js version v23 with v24 (#3770)
- [refactor] Replace deprecated constants `fs.F_OK` and `fs.R_OK` (#3789)
- [refactor] Replace `ansis` with built-in function `util.styleText` (#3793)
- [core] Integrate stuff from `vendor` and `fonts` folders into main `package.json`, simplifies install and maintaining dependencies (#3795, #3805)
- [l10n] Complete translations (with the help of translation tools) (#3794)
- [refactor] Refactored `calendarfetcherutils` in Calendar module to handle timezones better (#3806)
  - Removed as many of the date conversions as possible
  - Use `moment-timezone` when calculating recurring events, this will fix problems from the past with offsets and DST not being handled properly
  - Added some tests to test the behavior of the refactored methods to make sure the correct event dates are returned
- [linter] Enable ESLint rule `no-console` and replace `console` with `Log` in some files (#3810)
- [tests] Review and refactor translation tests (#3792)

### Fixed

- [fix] Handle spellcheck issues (#3783)
- [calendar] fix fullday event rrule until with timezone offset (#3781)
- [feat] Add rule `no-undef` in config file validation to fix #3785 (#3786)
- [fonts] Fix `roboto.css` to avoid error message `Unknown descriptor 'var(' in @font-face rule.` in firefox console (#3787)
- [tests] Fix and refactor e2e test `Same keys` in `translations_spec.js` (#3809)
- [tests] Fix e2e tests newsfeed and calendar to exit without open handles (#3817)

### Updated

- [core] Update dependencies including electron to v36 (#3774, #3788, #3811, #3804, #3815, #3823)
- [core] Update package type to `commonjs`
- [logger] Review factory code part: use `switch/case` instead of `if/else if` (#3812)