github element-hq/element-call v0.8.0

latest release: v0.9.0-rc.1
9 hours ago

What's Changed

Highlights

This release brings a major architectural shift: call participation and video tiles now rely on MatrixRTC membership instead of the LiveKit room state. This marks the final step toward enabling to-device media key exchange. To support this change, we introduced a new MembershipManager, ensuring RTC membership is accurately handled across all scenarios.

Additionally this release includes various usability improvements.

Key updates:

  • Implement the new MatrixRTCSession MembershipManager
  • Base (call participation) video tiles on MatrixRTC membership rather than LiveKit participants (a prerequisite for to-device E2EE key distribution)
  • Improve UX by making on-screen tile selection and arrangement more stable
  • Add sound effects for call exits and screen share activation
  • Introduce a wave/hello reaction 👋
  • Ensure new devices don't start unmuted by default
  • Remember previous mute states when devices disconnect and reconnect
  • Begin handling errors more gracefully, including:
    • SFU capacity limits
    • Missing MatrixRTC backend in a Matrix site deployment
  • Enhancements in widget mode:
    • Adapt to theme changes during a call
    • Hide the header
    • On Failure: leave session and show relevant error
    • Introduce a "close" action when the widget is ready to shut down (allowing error messages to be displayed and benefiting other widgets)
  • Notify users when their camera is initializing in the Lobby
  • Authenticate media requests when loading avatars

Changes

  • Upgrade js-sdk to develop with MSC4222 state_after support by @hughns in #2841
  • Mute state improvements including muting if skipLobby=true in SPA (Same as #2834) by @toger5 in #2846
  • Fix wrong hand raise margins in pip tile. by @toger5 in #2840
  • Fix Cache-Control header for docker images by @hughns in #2847
  • Bump js-sdk (key after leave fix) by @toger5 in #2850
  • Use light background by @toger5 in #2851
  • Add sound effect for call joined / left by @Half-Shot in #2794
  • Show hostname in developer settings by @hughns in #2857
  • Add a lower limit to duplicate tiles. by @Half-Shot in #2854
  • add information about MSC4222 state_after by @fkwp in #2864
  • Rename en-GB language to en by @hughns in #2866
  • Use a consistent background colour for video tiles and avatars by @hughns in #2868
  • Make video tiles be based on MatrixRTC member not LiveKit participants by @toger5 in #2701
  • Localazy Download by @RiotRobot in #2877
  • Use specific Node.js version (22) instead of latest LTS by @hughns in #2879
  • Authenticate media requests when loading avatars by @Half-Shot in #2856
  • Ensure call sound effects are played over the correct sink by @Half-Shot in #2863
  • Configure sentry integration for netlify PR previews by @hughns in #2884
  • Update dependency vite to v6 by @renovate in #2853
  • Add missing full stops from end of settings descriptions by @hughns in #2883
  • Ignore URL params where they are not applicable for the mode (widget vs SPA) by @hughns in #2882
  • Check for parentUrl when deciding whether a SPA specific url parameter should be ignored by @hughns in #2881
  • Enable @typescript-eslint/consistent-type-imports lint rule by @hughns in #2886
  • Simplify settings tabs by @hughns in #2875
  • Add some quick-and-dirty debug info for TileStore by @robintown in #2887
  • Rename developerSettingsTab to developerMode for consistency by @hughns in #2889
  • Add support for playing a sound when the user exits a call. by @Half-Shot in #2860
  • Clean up useMuteStates test by @hughns in #2891
  • Refactor preferences tab strings for consistency by @hughns in #2888
  • Bump matrix-js-sdk by @hughns in #2897
  • Determine which tiles are on screen in a more stable manner by @robintown in #2894
  • Developer setting to show LiveKit participants that do not have MatrixRTC sessions a.k.a. non-member tiles by @hughns in #2771
  • Wait for .well-known/matrix/client to load before determining MatrixRTC foci by @hughns in #2901
  • Localazy Download by @RiotRobot in #2898
  • Revert "Wait for .well-known/matrix/client to load before determining MatrixRTC foci" by @toger5 in #2902
  • Skip some redundant updates to the grid and spotlight by @robintown in #2899
  • Support selection of audio output device when using Firefox by @robintown in #2816
  • Use finnish notation for observables by @hughns in #2905
  • Use afterEach from vitest for consistency by @hughns in #2908
  • Use AutoDiscovery.getRawClientConfig() instead of MatrixClient.getClientWellKnown() and wait for result by @hughns in #2906
  • Bump matrix-js-sdk for bundle improvements by @hughns in #2911
  • Introduce intent URL param and make it change the default lobby behaviour by @hughns in #2828
  • Inform user that their camera is starting in Lobby by @hughns in #2869
  • Fix loading of matrix-sdk-crypto-wasm when running in local development mode by @hughns in #2915
  • Add screen share sound effect. by @Half-Shot in #2917
  • Refactor reactions / hand raised to use rxjs and start ordering tiles based on hand raised. by @Half-Shot in #2885
  • Update dependency @livekit/components-react to v2.6.10 by @renovate in #2920
  • Update LiveKit components by @renovate in #2923
  • Add developer mode option to show RTC connection statistics by @hughns in #2904
  • Update dependency @vector-im/compound-design-tokens to v3 by @renovate in #2896
  • Upgrade to React Router v6 by @sandhose in #2919
  • Update dependency i18next to v24 by @renovate in #2822
  • Remove unnecessary dependency on @testing-library/react-hooks by @hughns in #2926
  • Use documented @sentry/vite-plugin config options by @hughns in #2925
  • Update dependency @vector-im/compound-web to v7.6.2 by @renovate in #2932
  • Update codecov/codecov-action action to v5 by @renovate in #2933
  • Update docker/build-push-action action to v6.11.0 by @renovate in #2936
  • Set the document title to the current call name. by @Half-Shot in #2928
  • Add wave/hello reaction by @davidegirardi in #2921
  • React to theme changes in widget mode by @robintown in #2910
  • Update dependency global-jsdom to v26 by @renovate in #2941
  • Update dependency jsdom to v26 by @renovate in #2938
  • Type fixes for react v19 compatibility by @hughns in #2937
  • Update GitHub Actions by @renovate in #2945
  • Use correct Sentry entrypoints for react router v7 by @hughns in #2943
  • Disambiguate displaynames by @Half-Shot in #2918
  • Bump matrix-js-sdk to latest by @hughns in #2946
  • Fix displayname calculation around RTL / unhomoglyth. by @Half-Shot in #2953
  • Update dependency @sentry/vite-plugin to v3 by @renovate in #2950
  • Update vitest monorepo to v3 (major) by @renovate in #2954
  • Remember previous mute states when devices disappear and reappear by @robintown in #2957
  • Make error screens more visually consistent by @robintown in #2951
  • Prevent new devices from automatically starting unmuted in call by @robintown in #2959
  • Update dependency vite to v6.0.9 [SECURITY] by @renovate in #2964
  • Fix calculation of local membership identifier by @Half-Shot in #2966
  • Update dependency @stylistic/eslint-plugin to v3 by @renovate in #2968
  • Automatically deploy livekit branch to call.element.dev via workflow dispatch by @hughns in #2974
  • Do run build workflow/action in CI when GHA workflows change by @hughns in #2976
  • Adjust renovate bot schedule and enable vulnerability updates by @hughns in #2977
  • Fix renovate schedule settings by @hughns in #2979
  • Fix screenshare displayname displaying as [👻] by @Half-Shot in #2981
  • Bump matrix-js-sdk to v36.1.0 by @toger5 in #2967
  • Resolve version clash in matrix-widget-api dependency by @toger5 in #2988
  • dual license AGPL + Commercial by @ara4n in #2984
  • Update dependency vitest to v3.0.5 [SECURITY] by @renovate in #2986
  • Update LiveKit components by @renovate in #2962
  • Use --frozen-lockfile when install deps in CI by @hughns in #2992
  • Cleanup GitHub Actions by @hughns in #2983
  • Don't produce compressed assets at build time and instead do it as part of the nginx build by @hughns in #2995
  • Explicitly build and publish docker for develop/livekit branch by @hughns in #2996
  • Show current SFU and Server Info in developer tab by @hughns in #3000
  • Copyright header should say dual license not just AGPL by @hughns in #3013
  • Send a 'close' action when the widget is ready to close by @robintown in #3011
  • Actually hide the header on error pages by @robintown in #3019
  • Clarify what useLatest is for by @robintown in #3020
  • Leave session when error occurs and show error screens in widget mode by @robintown in #3021
  • Show an error screen when the SFU is at capacity by @robintown in #3022
  • Update config.sample.json by @escix in #3001
  • Update readme to reflect latest config.json and matrix-js-sdk dependency by @hughns in #3028
  • Update dependency livekit-client to v2.9.5 by @renovate in #3029
  • Error Handling: gracefully handle missing livekit service url in config by @BillCarsonFr in #3027
  • Localazy Download by @RiotRobot in #3030
  • Update GitHub Actions by @renovate in #3034
  • Fix: i18n not properly configured in vitest by @BillCarsonFr in #3037
  • Added OpenGraph and Twitter meta tags for better link previews by @Harshal-Taori-11 in #3006
  • Change LK log level to warn by @toger5 in #3049
  • Prevent PRs with the X-Blocked label from being merged by @robintown in #3041
  • Send a 'join' action when entering the call by @robintown in #3055
  • Use the configured brand name in OpenGraph tags by @robintown in #3054
  • Respect the returnToLobby flag by @robintown in #3051
  • Reduce redundant calculations of display name map by @toger5 in #3062
  • Use the New MatrixRTCSession MembershipManager by @toger5 in #3015
  • Pin matrix-js-sdk to a specific commit by @hughns in #3082
  • Close button instead of go to home when in widget mode by @BillCarsonFr in #3087
  • Fix: js-sdk version that uses expected value for isJoined (isJoined will now be false before we left as expected by EC) by @toger5 in #3094
  • Downgrade to livekit client v2.9.1 by @hughns in #3106

New Contributors

Full Changelog: v0.7.2...v0.8.0. No changes since v0.8.0-rc.4.

Don't miss a new element-call release

NewReleases is sending notifications on new releases.