WorkAdventure 1.34: Quality of life improvements, new translations and improved analytics
We keep improving WorkAdventure to make it more enjoyable and easier to use. In this release, we have tried to
listen to your feedback and improve the quality of life. Whether you are organizing large meetings, using WorkAdventure
day to day or are managing a world, we hope you will find something useful in this release.
New features
Raise your hand
You can now raise your hand in a meeting, in a bubble or in an audience zone.
This is particularly useful in large meetings where you want to ask a question without interrupting the speaker,
or when you are in a listening to a presentation in an audience zone and want to ask a question to the speaker.
The raised hand will be visible to everyone. Administrators can lower the hand of a participant if needed.
In podiums and audience zones, users raising their hand can be granted the ability to speak by the speaker.
This allows the speaker to control who can speak and when, while still allowing participants to ask questions
without interrupting the speaker. Don't forget that anyone walking into a speaker area becomes a speaker, so if you want to
control who can speak, make sure to lock the podium and only allow speakers to enter (using a "restricted rights area"
on the speaker zone).
View pull requests
Kick and ban from inside the game
You can now kick and ban a user right from inside the WorkAdventure. Previously banning a user required to connect
to the admin dashboard, find the user in the user list and ban them from there. That was a lot of clicks for an
action that is often needed in the middle of a meeting. Now, you can ban a user right from inside the game.
In addition, you can now kick a user. Kicking a user is a temporary action that will disconnect the user from the world.
The user can then reconnect to the world. Useful to temporarily remove a user from a meeting or a conversation if they
forgot to log out and left a WorkAdventure tab open in the background.
Banning requires an admin API (as any action that requires storing a state). Kicking is available even without an admin
API, provided you have a logged user with the "admin" tag.
View pull requests
New translations
We are happy to announce that WorkAdventure is now available in Vietnamese and Thai!
Gong, jukebox and other objects making sound
You can now place a gong or a jukebox in the middle of your map and let anyone hear it.
Do you have happy employees who want to ring the gong when they finish a big project? Or do you want to play
chimes to signal the start of a session? We have you covered!
In the past, the map editor would allow you to place a attach a sound to an entity (i.e. an object), but only
the user that triggered the sound would hear it. Starting with 1.34, you can now configure a sound to be heard by
everyone on the map. Optionally, you can choose a radius around the object where the sound will be heard.
Thanks a lot to @Pix3lqu4ntum and his team for implementing this feature!
View pull requests
Improvements
Improved loading
Previously, WorkAdventure had to be in the foreground to load. If a tab was opened but kept in the background, it would
not load until it was brought to the foreground. As a result, any user pinning a tab in their browser would need to
click the WorkAdventure tab to load it, which was not ideal. The behaviour was inherited from the Phaser game engine
we use, and it was not trivial to change. We are happy to announce that we have found a way to make WorkAdventure load
even when it is in the background. You can now pin WorkAdventure in your browser and it will load when you reopen
your browser!
Chat links open as co-websites
When clicking on a link in the chat, it will now open as a co-website instead of opening in a new tab (if possible).
This allows users to view the linked content together with their colleagues in the same WorkAdventure session.
Improved codec selection
"WorkAdventure uses too much CPU when screen sharing"
"Screen sharing is blurry!"
Those are the 2 sides of the same coin. Either you spend a lot of CPU to get the best possible video quality, or you
spend less CPU and get a lower video quality. There is not one solution that fits all users, but v1.34 will do
its best to provide the most optimal solution for each user, by dynamically adapting the codec and topology
based on the user's device, CPU usage and network conditions.
- In P2P bubbles, viewers that do not display the video will no longer receive a P2P video stream. This will save
bandwidth and CPU usage for both the sender and the viewer. - Mobile phones will now only use codecs for which they have hardware acceleration. This will reduce CPU usage and
improve battery life. - When a sender's CPU is overloaded, WorkAdventure will now automatically switch to a cheaper codec for that sender.
- When a sender's CPU is overloaded and the sender is in a bubble with several P2P viewers, WorkAdventure will now
automatically move the sender to a LiveKit meeting room. This will reduce CPU usage for the sender.
View pull requests
- Stop P2P video encoding for viewers that do not display it; keep FPS variability free of deliberate changes by @moufmouf in #6506
- Choose video codecs by quality setting and device, budget bitrate per codec by @moufmouf in #6523
- Leave a codec for a cheaper one when the encoder is CPU-limited by @moufmouf in #6534
- Move a bubble to LiveKit when a member's encoders cannot keep up with several P2P peers by @moufmouf in #6535
Improved analytics
The Admin API now has a new endpoint to ingest "generic" analytics events (in addition to PostHog that was already used).
The endpoint will receive events when someone join or leaves a room, a meeting, a space... Most events sent to PostHog
are now sent to the Admin API as well. Furthermore, the Admin API gets exact timing for events that have a duration
(like time spent on the map or in a meeting room, etc.)
The SaaS version of WorkAdventure will soon be able to use this new endpoint to provide detailed analytics to map owners.
View pull requests
Improved virtual backgrounds
Virtual backgrounds are now powered by MediaPipe Tasks Vision, which provides better segmentation and performance
than the previous solution. The segmentation is now done in a web worker, which improves the responsiveness of
the interface. The segmentation mask is also smoothed over time to reduce flickering.
View pull requests
Improved privacy settings
WorkAdventure helps you protect your privacy while allowing you to be quickly reachable at the same time.
For this, we make a difference between users that have the WorkAdventure tab focused, and users that have the
WorkAdventure tab in the background. When WorkAdventure is in the background, the user is considered "away".
In "away" mode, the user can decide if they want to share their camera and microphone or not. So everyone
can choose what they are confortable with. In the past, the default settings were to share the microphone and
not share the camera. Starting with 1.34, the default settings are now configurable by setting
environment variables (if you are self-hosting WorkAdventure) or by configuring your world (in the SaaS version
of WorkAdventure). The new default settings are unchanged: share the microphone and not share the camera.
But now, you can now change these settings to your liking. In the end, the end user can always override the
default settings.
Thanks a lot to @0xr2po for this first contribution!
- feat(play): add DEFAULT_CAMERA_PRIVACY_SETTINGS and DEFAULT_MICROPHONE_PRIVACY_SETTINGS by @0xr2po in #6544
Faster unmute
We noticed that unmuting a user could take a few seconds, especially when the user is using Bluetooth headphones (like
AirPods). Additionally, the quality of the audio could be degraded after unmuting. V1.34 fixes both issues.
Other improvements
View pull requests
Code improvements
View pull requests
- refactor(play): simplify BreakpointsUtils and drop its dead helpers by @moufmouf in #6497
- refactor(play): drop the inert isMobile branch in GlobalCommunicationModal by @moufmouf in #6498
- docs: document WA.player.isLogged by @moufmouf in #6504
- chore: remove the deprecated /register/ login path by @moufmouf in #6508
- Upgrading to Playwright 1.63.0 by @moufmouf in #6517
- ci(uploader): run the S3 tests against RustFS instead of MinIO by @moufmouf in #6539
- ci(e2e): balance Playwright shards by duration instead of test count by @moufmouf in #6543
- helm: per-ingress annotations for the map-storage ingress by @moufmouf in #6571
- docs: explain how to verify WA.player.userRoomToken by @moufmouf in #6579
- feat(map-editor): enable broadcast areas for everyone by @moufmouf in #6621
- chore(chat): upgrade matrix-js-sdk 41.8.0 → 42.4.0 by @ydiarra in #6593
Bug fixes
Many bug fixes have been made in this release. One notable was a regression introduced in v1.31 that caused speakers
in large meetings to not be automatically moved at the top of the participants list, forcing each participant to
scroll through the list to find the active speaker. This is fixed in 1.34.
View pull requests
New Contributors
- @0xr2po made their first contribution in #6544
- @Pix3lqu4ntum made their first contribution in #6599
Full Changelog: v1.33.11...v1.34.0