v14.0.0
This is a major update with lots of changes. Especially the site configuration has very different structure. Therefore, reserve enough time for the migration.
Migration steps in a nutshell:
- stop the server and worker (if applicable)
- backup database
- git pull
- rm -rf node_modules
- rm package-lock.json
- npm install
- mv config config_old
- cp -R config_sample config
- go through the new config files and copy values from config_old
- cp -R config_old/images/* config/images/
- npm run build
- reload the server
Breaking changes:
- UI internationalisation architecture
- this directory allows site-specific vocabulary to be rendered in UI
- new directory /locales
- contains base translation files for different languages and their locales
- new /config/index.js parameters: defaultLocale, availableLocales
- defaultLocale: string, for example: 'en' or 'fi'
- availableLocales: array of strings, for example: ['en', 'fi'] for english and finnish.
- Localisations for english and finnish.
- /locales/en.json
- /locales/fi.json
- Site-specific localisation
- new site configuration directory: /config/locales
- extends the base localisation.
- adds mullti-language vocabulary for location flags, status and types.
- example locale file: /config/locales/en.json
- Cookie architecture
- 'locale' cookie is set on client-side, containing the locale string
- 'locale' cookie is set by the server at client app refresh
- new server-side dependency: i18n
- i18n is middleware for cookie and url based locale detection and provides translation tool __ in handler res objects
- our client-side translation tool __ mimics the server-side __ but is a bit limited in comparison but probably much faster.
- user document has new properties: user.securityCode, user.deleted
- new config props: roles, defaultRole, capabilities
- new config prop: loginPageSize
- new config prop: locationNaming
- rename config.hostname to config.publicHostname
- note distinction between publicPort and port
- rename loc.creator to loc.user for consistency in ownership checking
- merge user.status into user.role and remove user status features
- deprecate config.features
New Features:
- language switcher on login page
- language switcher on account settings page. Makes the UI reload with a fresh locale cookie from the server.
- client-side api for dynamic locale retrieval. However, it has no use yet.
- account settings has new button to email change page
- email change page asks email address, security code, and password and provides button to send the security code to the new email
- show username and email on account settings page
- show how long ago user joined on user profile page
- user deletion tools
- list deleted users
- configurable user roles and capabilities
- new user roles: frozen, reader, writer, moderator, admin
- site can be configured for public usage
- new local_module: georap-able
- config is divided to multiple files for clarity
- load more -feature for events listed on location and user profile pages
- coordinates page provides a link to the current view position
- soft comment deletion: leave a mark that comment was deleted
- display site icon in menu button
- new preconfigured export service: Norgeskart.no
- invite users with a preset role
- settings page for public user to pick theme and language
- add back-to-top button at the end of location page
Security improvements:
- configured admin user cannot be deactivated or removed
- authenticate web socket connections
- capability-based access control
- move dangerous database init script from config to migration.
- revoke tokens when user permissions i.e. role changes.
Minor changes:
- all email messages have better sign-off text
- show underline on timestamps only on mouse hover
- to damp community competitiveness a bit, do not list total points on user profile page
- /local_modules/timestamp internationalisation and localisation to fi and en
- improved card close button style
- make area around menu and search bar close cards when clicked
- improve token error handling
- cached user data to avoid repeated jwt token parsing
- more consistent component code styles
- use reusable components.Remover and .Opener
- new reusable components.Tabs
- improved code documentation in many places
- improved text content and translations in a few places
- improved error messages and their translations in a few places
- organise client-side stores into submodules and increase use of request module
- add filler space at the end of a few pages, e.g. location page
- improve post and comment button spacing
- make deletion opener buttons gray cuz no attention needed
- rename Entry to Post in most instances
- improve marker symbols: bridge, bridgesmall, underground
- repair finnish Museovirasto export service link
- stability improvements in late location view callbacks
- repair search geocoding error when no results from google api
- dropped dead code: payments API
Devops:
- server:watch autorestarter now watches also /locale directory
- add i18n convention to the example component boilerplate
- faster webpack build in development