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.
- 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.
- Redesigning chat by @HugoAverty in #4296
- Adding main fixs to chat by @HugoAverty in #4448
- save current open folders in localstorage by @ydiarra in #4470
- fix chat scroll by @ydiarra in #4490
Drag'n'drop file upload in chat
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:
- Group rooms without folders into the default folder by @ydiarra in #4471
- Fix chat new message indicator by @gparant in #4360
- Avoid initializing MatrixChatConnection when the user is not connected by @ydiarra in #4458
- improve message loading errors by @ydiarra in #4479
- Chat issues by @ydiarra in #4482
- Fix the issue when retrieving space for the room area by @ydiarra in #4483
- Trying to stabilize matrix chat area E2E tests by @ydiarra in #4492
- Create application for chat by @gparant in #4491
- Matrix admin room with tags by @ydiarra in #4478
- fix button encryption position by @ydiarra in #4496
- Limit member search to world members and Matrix-known users by @ydiarra in #4484
- Improve uploading file for chat by @gparant in #4498
- Fix error handling for new Matrix user status updates (MSC 3026) by @ydiarra in #4507
- fix synapse admin user by @ydiarra in #4510
- fix option button for rooms without folder by @ydiarra in #4512
- Fix/chat disabled issue by @ydiarra in #4529
- Fix space invitations by @ydiarra in #4542
- Increase waitInitialSync timeout and handle errors properly by @ydiarra in #4545
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.
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!
- Added Dutch translation files by @linjoe2 in #4284
- Japanese translation by @akama1024 in #4390
- Italian translation by @klinshy in #4391
Scripting API improvements
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.
- Fix subscription event by @gparant in #4103
- Improve UI UX of the external module by @gparant in #4104
- Improve to open external module with CoWebsite by @gparant in #4108
- Refactor external modules by @gparant in #4118
- Improve ms teams status by @gparant in #4138
- Improve stability for external module by @gparant in #4139
- Improve function to set status in Teams application by @gparant in #4149
- Fix Away bug status synchronisation from Teams to WorkAdventure by @gparant in #4153
- Fix action bar by @gparant in #4158
- Improve external module by @gparant in #4164
- Update module extension by @gparant in #4165
- New version of External module by @gparant in #4169
- Todo list module by @gparant in #4172
- Change regarding feedback for external module by @gparant in #4177
- Fix refresh token for external module by @gparant in #4219
- New service to create and get virtual event from townhall by @gparant in #4271
- Update external module for new feature by @gparant in #4354
- Migrating external-module outside project by @moufmouf in #4342
- New external module by @gparant in #4395
- Update external module for calendar and todolist by @gparant in #4400
- Fix refresh token query by @gparant in #4401
- Improve external module UX by @gparant in #4403
- Improve type external module by @gparant in #4404
- Information module error by @gparant in #4405
- Fix when the GameScene is reload for external module by @gparant in #4444
- Fix to use admin url in the external module by @gparant in #4101
- Improve external module for calendar by @gparant in #4453
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.
- Upgrading Hyper-express version by @moufmouf in #4408
- Upgrading hyper-express to 6.17.3 by @moufmouf in #4503
- Upgrading play container to Node 20.18 by @moufmouf in #4410
- Migrating play web-server to Express by @moufmouf in #4574
Miscellaneous improvements
- TURN server testing helpers by @pizkaz in #4167
- Various small improvements by @pizkaz in #4280
- Preventing entities with collisions to be used on start tiles by @Waclaw-I in #3251
- chore: Remove licence file from helm chart by @klauserber in #4305
- Rotate companion by @ydiarra in #4485
- Refactor to use uuid function by @gparant in #4497
- Refactoring locale loading in play by @moufmouf in #4559
- Adding ts-nocheck to ts-proto generated files by @moufmouf in #4357
- Update ui ux of warning banner by @gparant in #4567
- Hoxtfix klaxoon ux by @gparant in #4568
Minor improvements / bugfixes
Documentation improvements
- Update moveTo and teleport pixel instructions by @ValdoTR in #4150
- Update wa-hosted.md by @ValdoTR in #4278
- Fix upload directory in doc by @ValdoTR in #4289
Bugfixes
- add emitUpdateSpaceMetadata in spaceInterface by @ydiarra in #4166
- Save no companion choice by @gparant in #4397
- Fix focus input chat by @gparant in #4398
- Fix jitsi moderator tag by @ydiarra in #4437
- Fix the regression regarding the highlight of entities for map explorer. by @gparant in #4462
- Hot fix CoWebsite by @gparant in #4466
- disable emotes while typing in chat by @ydiarra in #4469
- prevent browser shortcuts from triggering action/ woka movements by @ydiarra in #4473
- Call reposition on chat resize, open, and close events by @ydiarra in #4477
- add docker tag by @ydiarra in #4480
- add type in swagger-ui endpoint response by @ydiarra in #4481
- Fixing possible race condition in entities loading by @moufmouf in #4518
- Fix camera offset after sleep mode by @ydiarra in #4522
- remove unnecessary sentry logs by @ydiarra in #4543
Upgrades
We upgraded the code to use Vite 4 and Typescript 5.7.
- Upgrading play to Vite 4 by @moufmouf in #4433
- Migrating to ts-proto version 2.4.2 by @moufmouf in #4445
- Upgrading play to Typescript 5.7 by @moufmouf in #4443
- Upgrading back/map-storage/libs/uploader to Typescript 5.7.2 by @moufmouf in #4446
- Upgrade playwright by @ydiarra in #4489
Full Changelog: v1.23.8...v1.24.0