New Features
Direct Image Serving. To speed up the serving of images to the client, a new feature has been added allowing to configure the server to serve images directly from the local file system, without accessing the node. (In case you're using a separate web server as a reverse proxy.) Private images are assigned a random identifier that periodically changes to prevent unauthorized access. This also eliminates the need for authentication when accessing images directly, resolving issues such as images failing to load when switching from Wi-Fi to mobile data.
Sorting Notifications by Importance. Now, more important notifications (such as comments and mentions) will appear higher in the list compared to less important ones (like reactions). This applies only to unread notifications. Once a notification is viewed, its position remains unchanged. This behavior can be disabled in the Settings. (thanks to @Drakoniha for the idea and @Orbb1974 for the feedback)
Freezing Inactive Nodes. Nodes whose owners haven't accessed them in the last year are now frozen. This means notifications to these nodes are queued and not processed by the node itself, only recorded in the database. If a node remains inactive, old notification records are purged without processing. This stops the frozen node from building the Newsfeed and frees up other nodes from unnecessary work. However, the content of the frozen node continues to be served as usual. When an administrator accesses a frozen node, it's unfrozen, all queued notifications are processed, and the Newsfeed is built as soon as possible.
FCM Relay. Notifications for mobile clients can now be sent through relays, acting as intermediaries between the Moera network and centralized message delivery systems. The first such relay is built for Firebase Cloud Messaging (FCM), used in Android. For more details, see the relay description.
Account Deletion Requests. A mechanism has been added to send requests to the provider for account (node) deletion. This capability is required by Google Play and legislation in some countries.
Other Changes
- The debug log now contains more information, enabling tracking of the processing and timing of each individual request. Statistics on requests' execution time throughout the server's uptime have also been added.
- Database queries have been optimized, resulting in faster execution of many queries.
- Caching of information about images attached to posts or comments has been implemented.
- Part of the Novacrypto project's code has been migrated to
moera-node
due to the repository's demise. - Errors in sitemap generation have been fixed, and sitemap delivery to clients has been sped up, improving search engine indexing.
- Duplicate pages (those with multiple addresses) and feeds have been excluded from search engine indexing. Only posts, comments, and general blog information remain indexed.
- A universal mechanism for executing asynchronous tasks with persistent state, recovery after failures and server restarts, error handling, and various error recovery options has been implemented. All asynchronous tasks now utilize this mechanism.
- When grouping multiple comment notifications into one, the link now points to the first of these comments rather than the last.
- Comment notifications are no longer grouped with those already read.
- Unread reactions and comment notifications are now grouped, even if significant time has passed between them.
- The Newsfeed is now stored in the client's memory all the time, allowing going back to it quickly.
- A universal mechanism for managing pop-up dialogs and dropdown menus has been implemented, allowing closing them one by one in the order of opening — by clicking outside the dialog, the Esc key, and the "Back" button on mobile devices.
- A service worker has been added for caching client code, frequently used images, and naming server responses. The client now starts quickly even with poor connectivity.
- A button has been added to the feed, allowing quick skipping of all pinned posts and jumping to the first non-pinned one. (thanks to Tigra for the idea)
- An error preventing the hiding of multiple paragraphs of text under a spoiler has been fixed.
- Hashtags are now treated as regular text when pasted from Facebook.
- Emojis consisting of multiple characters are now correctly processed when pasted from Facebook.
- A registration button has been added to the login dialog.
- An error displaying other users' avatars in comments in the Web UI has been fixed.
- An error causing the cursor to disappear when selecting a name from the list has been fixed.
- The word
complain
in the API has been replaced withcomplaint
everywhere.