Skip to content

Releases: element-hq/element-call

v0.9.0-rc.4

26 Mar 11:22
4644fc8
Compare
Choose a tag to compare
v0.9.0-rc.4 Pre-release
Pre-release

What's Changed since rc.3

  • Backport: Use correct rageshake URL when running in embedded package by @hughns in #3133

Full Changelog: v0.9.0-rc.3...v0.9.0-rc.4

Docker full package

Element Call is available as a Docker image from the GitHub Container Registry.

The image provides a full build of Element Call that can be used both in standalone and as a widget (on a remote URL).

docker pull ghcr.io/element-hq/element-call:0.9.0-rc.4

Embedded packages

This release includes the following embedded packages that allow Element Call to be used as an embedded widget
within another application.

NPM

npm install @element-hq/element-call-embedded@0.9.0-rc.4

Android AAR

dependencies {
  implementation 'io.element.android:element-call-embedded:0.9.0-rc.4'
}

SwiftPM

.package(url: "https://github.com/element-hq/element-call-swift.git", from: "0.9.0-rc.4")

v0.9.0-rc.3

25 Mar 14:32
82ecd9d
Compare
Choose a tag to compare
v0.9.0-rc.3 Pre-release
Pre-release

What's Changed since rc.2

  • Backport: Fix compilation error when trying to use SwiftPM embedded package by @hughns in #3127

Full Changelog: v0.9.0-rc.2...v0.9.0-rc.3

Docker full package

Element Call is available as a Docker image from the GitHub Container Registry.

The image provides a full build of Element Call that can be used both in standalone and as a widget (on a remote URL).

docker pull ghcr.io/element-hq/element-call:0.9.0-rc.3

Embedded packages

This release includes the following embedded packages that allow Element Call to be used as an embedded widget
within another application.

NPM

npm install @element-hq/element-call-embedded@0.9.0-rc.3

Android AAR

dependencies {
  implementation 'io.element.android:element-call-embedded:0.9.0-rc.3'
}

SwiftPM

.package(url: "https://github.com/element-hq/element-call-swift.git", from: "0.9.0-rc.3")

v0.9.0-rc.2

21 Mar 21:36
3a60cec
Compare
Choose a tag to compare
v0.9.0-rc.2 Pre-release
Pre-release

What's Changed since rc.1

  • Backport: Fix join errors mistakenly showing a generic error screen by @robintown in #3119

Full Changelog: v0.9.0-rc.1...v0.9.0-rc.2

Docker full package

Element Call is available as a Docker image from the GitHub Container Registry.

The image provides a full build of Element Call that can be used both in standalone and as a widget (on a remote URL).

docker pull ghcr.io/element-hq/element-call:0.9.0-rc.2

Embedded packages

This release includes the following embedded packages that allow Element Call to be used as an embedded widget
within another application.

NPM

npm install @element-hq/element-call-embedded@0.9.0-rc.2

Android AAR

dependencies {
  implementation 'io.element.android:element-call-embedded:0.9.0-rc.2'
}

SwiftPM

.package(url: "https://github.com/element-hq/element-call-swift.git", from: "0.9.0-rc.2")

v0.9.0-rc.1

21 Mar 11:51
6043b39
Compare
Choose a tag to compare
v0.9.0-rc.1 Pre-release
Pre-release

What's Changed

This is the first release candidate of v0.9.0.

Highlights

  • Element Call is now available as two packages: "full" and "embedded"
    • Full package is the same as what was previously published: docker image + tarball
    • Embedded package is to allow Element Call to be distributed as part of a Matrix Client supporting Web (NPM), Android (AAR) and iOS (SwiftPM) platforms
  • Documentation improvements
  • Improvements to error handling including:
  • participant limit imposed by a LiveKit SFU
  • failure to get JWT token
  • End-to-end integration tests using Playwright

Changes

  • Refactor README.md by @fkwp in #3059
  • Use fetch() in a way that works for file URLs by @hughns in #3071
  • Localazy Download by @RiotRobot in #3078
  • Fix typing on config: EULA is optional as it has a default by @hughns in #3074
  • Vite embedded build of Element Call by @hughns in #3077
  • refactor: Centralize group call errors in custom GroupCallErrorBoundary by @BillCarsonFr in #3058
  • Separate widget-only URL parameters in the documentation by @hughns in #3088
  • First integration tests with playwright by @BillCarsonFr in #3091
  • README.md add information about rc_delayed_event_mgmt by @fkwp in #3026
  • Integration Test: Add test for register, login, logout and guest create and join call by @BillCarsonFr in #3096
  • Integration Test: Add test for register, login, logout and guest create and join call by @BillCarsonFr in #3097
  • Keep rate limits for dev backend, disable only for playwright tests by @BillCarsonFr in #3098
  • Update readme with new Element Call screenshot by @fkwp in #3099
  • Eslint: Ensure playwright files are checked by eslint by @BillCarsonFr in #3101
  • deleted old demo.jpg by @fkwp in #3104
  • Show "insufficient capacity" when hitting participant limits by @robintown in #3110
  • Run the 'prevent blocked' workflow even if PR has conflicts by @robintown in #3112
  • Error management: Handle fail to get JWT token by @BillCarsonFr in #3076
  • Move all tests into one workflow, give them clear names by @robintown in #3111
  • Publish embedded package for releases of Element Call by @hughns in #3086
  • Analytics configuration is the responsibility of the host application when running in widget mode by @hughns in #3089

Full Changelog: v0.8.0...v0.9.0-rc.1

Docker full package

Element Call is available as a Docker image from the GitHub Container Registry.

The image provides a full build of Element Call that can be used both in standalone and as a widget (on a remote URL).

docker pull ghcr.io/element-hq/element-call:0.9.0-rc.1

Embedded packages

This release includes the following embedded packages that allow Element Call to be used as an embedded widget
within another application.

NPM

npm install @element-hq/element-call-embedded@0.9.0-rc.1

Android AAR

dependencies {
  implementation 'io.element.android:element-call-embedded:0.9.0-rc.1'
}

SwiftPM

.package(url: "https://github.com/element-hq/element-call-swift.git", from: "0.9.0-rc.1")

v0.8.0

21 Mar 11:26
a2df8fa
Compare
Choose a tag to compare

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 mo...
Read more

v0.8.0-rc.4

18 Mar 15:54
a2df8fa
Compare
Choose a tag to compare
v0.8.0-rc.4 Pre-release
Pre-release

What's Changed since rc.3

  • Rename built artifact name on v0.8.0 release branch for compatibility with Netlify PR preview by @hughns in #3108
  • Downgrade to livekit client v2.9.1 by @hughns in #3106

Full Changelog: v0.8.0-rc.3...v0.8.0-rc.4

v0.8.0-rc.3

13 Mar 18:14
7176718
Compare
Choose a tag to compare
v0.8.0-rc.3 Pre-release
Pre-release

What's Changed since rc.2

Full Changelog: v0.8.0-rc.2...v0.8.0-rc.3

Full Changelog Since rc.1: v0.8.0-rc.1...v0.8.0-rc.3
rc.2 was only live for 10minutes since we found an issue very quickly. Hence the diff since rc.1 is the more relevant.

v0.8.0-rc.2

13 Mar 10:58
d532f47
Compare
Choose a tag to compare
v0.8.0-rc.2 Pre-release
Pre-release

What's Changed

The second release candidate for v0.8.0.

Changes since rc.1

  • Cache calls to removeHiddenChars() to fix performance bottleneck in Safari by @hughns in #3072
  • Backport: New Membership Manager js-sdk develop by @toger5 in #3079
  • Pin matrix-js-sdk to a specific commit by @hughns in #3082
  • Backport: close button instead of go to home when in widget mode by @BillCarsonFr in #3087

Full Changelog: v0.8.0-rc.1...v0.8.0-rc.2

v0.8.0-rc.1

07 Mar 17:08
750db09
Compare
Choose a tag to compare
v0.8.0-rc.1 Pre-release
Pre-release

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 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 https://github.com/element-hq/...
Read more

v0.7.2

05 Mar 19:18
d81c8b0
Compare
Choose a tag to compare

What's Changed

This is a patch release with no user-facing changes—only some small changes to how Element Call widgets talk to clients. It exists to simplify the rollout of some future improvements to error screens.

  • Patch for v0.7: Send a 'close' action when the widget is ready to close by @robintown in #3046
  • Backport "Avoid closing the widget in returnToLobby mode" to v0.7 by @robintown in #3057
  • Backport "Send a 'join' action when entering the call" to v0.7 by @robintown in #3056

Full Changelog: v0.7.1...v0.7.2