github workadventure/workadventure v1.24.0

latest releases: v1.24.3, v1.24.2, v1.24.1...
10 days ago

We are thrilled to announce the release of WorkAdventure 1.24.

New features

Picture-in-Picture mode

You can now enable Picture-in-Picture mode in WorkAdventure. This feature is particularly useful when you want to keep
an eye on the persons you are talking to while doing a screen-share or while browsing the web.

The video of the person you are talking to will be displayed in a small window at the bottom right that you can move
around the screen and that stays on top of all other windows.

picture-in-picture

  • Create picture in picture component by @gparant in #4519
  • verify if window supports Picture-in-Picture before using it by @ydiarra in #4530

New device detection

  • Hey, can you hear me?
  • Why is my microphone not working?

Those are common questions when you are in a video call. It is often because the wrong device is selected by
WorkAdventure, and users fail to notice it.

We took a step to make this easier.

WorkAdventure now detects when you are connecting a new audio / video device and will propose to switch to it.

Moreover, it will remember the last device that you explicitly selected (instead of the last device used!) and will
default to this device.

So when you connect your headset, WorkAdventure will propose to switch to it. And if you decide to switch to your
headset, WorkAdventure will remember this choice and will default to your headset next time you connect (and the headset
is available).

Improvements in the chat system

The chat system and the Matrix integration have been largely worked upon in this new release.

Chat notifications

Chat notifications have been completely revamped to use the browser's native notification system. You will now get
a nice desktop notification when someone sends you a message in the chat. Clicking the notification will directly
open the chat.

New design for chat

The chat features a brand new design. It is the first component to benefit from the new design system that will be
applied to the application in the next release.

before-after

Drag'n'drop file upload in chat

  • Allow file uploads in the chat by drag and drop by @ydiarra in #4467

Chat moderation

Adding moderation support for Matrix chat rooms. Matrix room administrator can now:

  • invite users and give them specific rights (either admin, moderator or user)
  • kick / ban / unban users

Other chat system improvements

A number of other improvements have been made to the chat system:

New configuration options

2 new options are available to limit distractions in WorkAdventure:

  • "Block ambient sounds and music" ignores PLAY_AUDIO map properties.
  • "Disable map tile animations" does exactly what it says.

config-options

  • Feature: Disable switches for background audio and tile animations by @pizkaz in #4128

Screen sharing improvements

We try to improve the screen sharing quality by prioritizing the screen sharing over the video call and by limiting
its framerate to 30fps (this should be enough for most, and trying to achieve a better framerate usually makes
the quality worse).

New languages

We are happy to announce that WorkAdventure is now available in Deutsch, Japanese and Italian!

Thanks to @linjoe2, @akama1024 and @klinshy for their contributions!

Scripting API improvements

  • Adding "allow" option in WA.ui.registerMenuCommand by @moufmouf in #4396

Miscellaneous features

  • Improve UI by @gparant in #4454
  • Be able to restrict the availability of Speaker zone / Attendee zone / Jitsi zone in map-editor from the admin by @gparant in #4409

Code improvements

New module system

We are setting up a new module system that will allow us in the future to compile new features into WorkAdventure without
having to touch the core of the application. This new module system will allow cleaner code, by locating all the code
related to a feature in a single place. It will also allow to enable / disable features more easily on-the-fly.

This was specifically designed for the MS Teams integration, which will be specific to the SAAS project, but will also
be used more generally in the future as a clean way to organize code in the sel-hosted version.

Deployment / Devops improvements

  • Easy image pull secrets configuration by @moufmouf in #4382
  • Making build time NODE_OPTIONS configurable by @moufmouf in #4406
  • NODE_OPTIONS: fixing configurability in play container by @moufmouf in #4407
  • Adding a Helm hook to predownload images by @moufmouf in #4434
  • Add endpoint to enable/disable debug log by @ydiarra in #4475
  • Attempting to build containers on ARM runners in parallel of AMD64 runners by @moufmouf in #4539

Web-server change

In this version, we abandoned the Hyper-express web-server in the Play container in favor of Express.
So far, the play web-server used HyperExpress, based on µWebsockets.

In some special circumstances (MTU that varies in the network), µWebsocket could fail processing HTTP requests properly and return a HTTP 505.

To route around this problem, we migrate all the handling of HTTP requests to a classic battle-tested Express server. Also, this allows us to get rid of the LiveDirectory package that was running on a self-maintained fork.

µWebsockets is still here to handle web-socket connections which is what we need it for.

People doing self-hosting: WARNING! because we have an express server AND a µWebsocket server, play is now opening 2 ports instead of one (3000 and 3001). We are relying on the HTTP reverse proxy (Traefik in Docker-compose and whatever you use in Kubernetes Ingress controller) to rewrite the paths and make like if the /room and /admin/rooms routes (the 2 Web-socket routes) were served on the same port as the rest of the application.

If you are using the provided docker-compose.prod.yaml file or the Helm chart, you have nothing to do as this is taken care of. If you have tweaked the docker-compose install, be sure to adapt your file accordingly.

Note: the HyperExpress error handling middleware was using a DEBUG_ERROR_MESSAGES environment variable to decide if it was showing the stack-trace of errors or not.
This is now replaced by the behaviour of the default Express error handler: if NODE_ENV=production, stack traces or not shown.

Miscellaneous improvements

Minor improvements / bugfixes

Documentation improvements

Bugfixes

Upgrades

We upgraded the code to use Vite 4 and Typescript 5.7.

Full Changelog: v1.23.8...v1.24.0

Don't miss a new workadventure release

NewReleases is sending notifications on new releases.