What's Changed
The first release candidate for v0.8.0.
Highlights
This release contains a fundamental change: video tiles are now based on matrix and not based on LiveKit anymore.
This is the last underlying piece missing to transition to to-device key exchange. This project resulted in building a new MembershipManager since the RTC membership now plays a much more central role and we need it to be correct in all scenarios.
- Determine which tiles are on screen in a more stable manner
- Make video tiles be based on MatrixRTC member not LiveKit participants
- Add sound effect when the user exits a call and when a screen share is started
- Authenticate media requests when loading avatars
- Add wave/hello reaction
- React to theme changes in widget mode
- Prevent new devices from automatically starting unmuted
- Remember previous mute states when devices disappear and reappear
- Error screens
- Hide the header in widget mode
- Leave session when error occurs and show error screens in widget mode
- Introduce a 'close' action when the widget is ready to close (This allows an error to be shown in the widget mode. Also useful for other widgets.)
- Inform user that their camera is starting int the Lobby
- Use the New MatrixRTCSession MembershipManager
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 toen
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
New Contributors
- @escix made their first contribution in #3001
- @BillCarsonFr made their first contribution in #3027
- @Harshal-Taori-11 made their first contribution in #3006
Full Changelog: v0.7.2...v0.8.0-rc.1