.dockerignore .env.example .env.production .eslintrc.cjs .githooks/pre-commit .github/CODEOWNERS .github/ISSUE_TEMPLATE/bug.yml .github/ISSUE_TEMPLATE/config.yml .github/ISSUE_TEMPLATE/enhancement.yml .github/PULL_REQUEST_TEMPLATE.md .github/release.yml .github/workflows/blocked.yaml .github/workflows/build-and-publish-docker.yaml .github/workflows/build-element-call.yaml .github/workflows/build.yaml .github/workflows/changelog-label.yml .github/workflows/deploy-to-netlify.yaml .github/workflows/lint.yaml .github/workflows/pr-deploy.yaml .github/workflows/publish-embedded-packages.yaml .github/workflows/publish.yaml .github/workflows/test-netlify.yaml .github/workflows/test.yaml .github/workflows/translations-download.yaml .github/workflows/translations-upload.yaml .github/workflows/zizmor.yml .gitignore .gitlab-ci.yml .node-version .postcssrc.json .prettierignore .prettierrc.json .storybook/main.ts .storybook/manager.ts .storybook/preview.tsx .vscode/settings.json CONTRIBUTING.md Dockerfile LICENSE-AGPL-3.0 LICENSE-COMMERCIAL README.md WIDGET_TEST.md babel.config.cjs backend/dev_homeserver-othersite.yaml backend/dev_homeserver.yaml backend/dev_livekit-othersite.yaml backend/dev_livekit.yaml backend/dev_nginx.conf backend/dev_tls_local-ca.crt backend/dev_tls_local-ca.key backend/dev_tls_m.localhost.crt backend/dev_tls_m.localhost.key backend/dev_tls_setup backend/ew.test.config.json backend/ew.test.othersite.config.json backend/playwright_homeserver-othersite.yaml backend/playwright_homeserver.yaml codecov.yaml config/config.devenv.json config/config.sample.json config/config_netlify_preview.json config/config_netlify_preview_sdk.json config/httpd.conf config/netlify_redirects config/nginx.conf config/otel_dev/README.md config/otel_dev/collector-gateway.yaml config/otel_dev/docker-compose.yaml config/otel_dev/nginx_otel.conf demo.gif dev-backend-docker-compose.yml docs/Federated_Setup.drawio.png docs/MSC4195_setup.drawio.png docs/README.md docs/SFU_selection.drawio.png docs/_developer.md docs/axion1337-fork.md docs/controls.md docs/element_call_standalone.drawio.png docs/element_call_widget.drawio.png docs/embedded_package.drawio.png docs/embedded_standalone.md docs/full_package.drawio.png docs/linking.md docs/linking_concept_reasoning.md docs/self_hosting.md docs/url_params.md embedded/android/.gitattributes embedded/android/.gitignore embedded/android/gradle.properties embedded/android/gradle/libs.versions.toml embedded/android/gradle/wrapper/gradle-wrapper.jar embedded/android/gradle/wrapper/gradle-wrapper.properties embedded/android/gradlew embedded/android/gradlew.bat embedded/android/lib/build.gradle.kts embedded/android/lib/src/main/kotlin/io/element/android/call/embedded/Version.kt embedded/android/publish_android_package.sh embedded/android/settings.gradle embedded/ios/.gitignore embedded/ios/LICENSE-AGPL-3.0 embedded/ios/LICENSE-COMMMERCIAL embedded/ios/Package.swift embedded/ios/README.md embedded/ios/Sources/EmbeddedElementCall/EmbeddedElementCall.swift embedded/web/LICENSE-AGPL-3.0 embedded/web/LICENSE-COMMERCIAL embedded/web/README.md embedded/web/package.json i18next.config.ts index.html knip.ts localazy.json locales/bg/app.json locales/cs/app.json locales/da/app.json locales/de/app.json locales/el/app.json locales/en/app.json locales/es/app.json locales/et/app.json locales/fa/app.json locales/fi/app.json locales/fr/app.json locales/id/app.json locales/it/app.json locales/ja/app.json locales/lv/app.json locales/nl/app.json locales/pl/app.json locales/ro/app.json locales/ru/app.json locales/sk/app.json locales/sv/app.json locales/tr/app.json locales/uk/app.json locales/vi/app.json locales/zh-Hans/app.json locales/zh-Hant/app.json package.json playwright-backend-docker-compose.override.yml playwright-backend-docker-compose.yml playwright.config.ts playwright/access.spec.ts playwright/create-call.spec.ts playwright/errors.spec.ts playwright/fixtures/fixture-mobile-create.ts playwright/fixtures/jwt-token.ts playwright/fixtures/widget-user.ts playwright/global.d.ts playwright/landing.spec.ts playwright/mobile/create-call-mobile.spec.ts playwright/reconnect.spec.ts playwright/restricted-sfu.spec.ts playwright/sfu-reconnect-bug.spec.ts playwright/spa-call-sticky.spec.ts playwright/spa-helpers.ts playwright/utils/synapse-admin.ts playwright/widget/federated-call.test.ts playwright/widget/federation-oldest-membership-bug.spec.ts playwright/widget/hotswap-legacy-compat.test.ts playwright/widget/huddle-call.test.ts playwright/widget/pip-call-button-interaction.test.ts playwright/widget/pip-call.test.ts playwright/widget/screen-share.test.ts playwright/widget/simple-create.spec.ts playwright/widget/test-helpers.ts playwright/widget/voice-call-dm.spec.ts pnpm-lock.yaml pnpm-workspace.yaml public/favicon.png renovate.json scripts/.pnpmfile.cjs scripts/dockerbuild.sh scripts/playwright-webserver-command.sh scripts/reformat-release-notes.py scripts/setup-linking.sh sdk/README.md sdk/helper.ts sdk/index.html sdk/main.ts src/@types/dom-mediacapture-transform.d.ts src/@types/global.d.ts src/@types/i18next.d.ts src/@types/matrix-js-sdk.d.ts src/@types/mdx.d.ts src/@types/modules.d.ts src/App.tsx src/AppBar.module.css src/AppBar.test.tsx src/AppBar.tsx src/Avatar.test.tsx src/Avatar.tsx src/ClientContext.tsx src/DisconnectedBanner.module.css src/DisconnectedBanner.tsx src/ErrorView.module.css src/ErrorView.tsx src/FullScreenView.module.css src/FullScreenView.tsx src/Header.module.css src/Header.test.tsx src/Header.tsx src/IndexedDBWorker.ts src/LazyEventEmitter.ts src/MediaDevicesContext.ts src/Modal.module.css src/Modal.test.tsx src/Modal.tsx src/Overlay.module.css src/Platform.ts src/QrCode.module.css src/QrCode.test.tsx src/QrCode.tsx src/RTCConnectionStats.module.css src/RTCConnectionStats.tsx src/RichError.tsx src/Slider.module.css src/Slider.tsx src/Toast.module.css src/Toast.test.tsx src/Toast.tsx src/TranslatedError.ts src/UrlParams.test.ts src/UrlParams.ts src/UserMenu.module.css src/UserMenu.tsx src/UserMenuContainer.tsx src/__snapshots__/AppBar.test.tsx.snap src/__snapshots__/Modal.test.tsx.snap src/__snapshots__/QrCode.test.tsx.snap src/__snapshots__/Toast-test.tsx.snap src/__snapshots__/Toast.test.tsx.snap src/analytics/AnalyticsNotice.tsx src/analytics/PosthogAnalytics.test.ts src/analytics/PosthogAnalytics.ts src/analytics/PosthogEvents.test.ts src/analytics/PosthogEvents.ts src/auth/LoginPage.module.css src/auth/LoginPage.tsx src/auth/RegisterPage.tsx src/auth/generateRandomName.ts src/auth/useInteractiveLogin.ts src/auth/useInteractiveRegistration.ts src/auth/useRecaptcha.ts src/auth/useRegisterPasswordlessUser.ts src/button/Button.module.css src/button/Button.test.tsx src/button/Button.tsx src/button/InviteButton.tsx src/button/Link.module.css src/button/Link.tsx src/button/LinkButton.tsx src/button/ReactionToggleButton.module.css src/button/ReactionToggleButton.test.tsx src/button/ReactionToggleButton.tsx src/button/__snapshots__/ReactionToggleButton.test.tsx.snap src/button/index.ts src/components/CallFooter.mdx src/components/CallFooter.module.css src/components/CallFooter.stories.tsx src/components/CallFooter.tsx src/components/CallFooterViewModel.test.ts src/components/CallFooterViewModel.tsx src/components/MediaMuteAndSwitchButton.module.css src/components/MediaMuteAndSwitchButton.stories.tsx src/components/MediaMuteAndSwitchButton.test.tsx src/components/MediaMuteAndSwitchButton.tsx src/components/__snapshots__/MediaMuteAndSwitchButton.test.tsx.snap src/config/Config.test.ts src/config/Config.ts src/config/ConfigOptions.ts src/controls.ts src/e2ee/e2eeType.ts src/e2ee/matrixKeyProvider.test.ts src/e2ee/matrixKeyProvider.ts src/e2ee/sharedKeyManagement.ts src/form/Form.module.css src/form/Form.tsx src/graphics/backgroundGradient.svg src/graphics/loggedOutGradient.svg src/grid/CallLayout.ts src/grid/Grid.module.css src/grid/Grid.tsx src/grid/GridLayout.module.css src/grid/GridLayout.tsx src/grid/OneOnOneLandscapeLayout.module.css src/grid/OneOnOneLandscapeLayout.tsx src/grid/OneOnOnePortraitLayout.module.css src/grid/OneOnOnePortraitLayout.tsx src/grid/SpotlightExpandedLayout.module.css src/grid/SpotlightExpandedLayout.tsx src/grid/SpotlightLandscapeLayout.module.css src/grid/SpotlightLandscapeLayout.tsx src/grid/SpotlightPortraitLayout.module.css src/grid/SpotlightPortraitLayout.tsx src/grid/TileWrapper.module.css src/grid/TileWrapper.tsx src/home/CallList.module.css src/home/CallList.test.tsx src/home/CallList.tsx src/home/HomePage.tsx src/home/JoinExistingCallModal.module.css src/home/JoinExistingCallModal.tsx src/home/RegisteredView.module.css src/home/RegisteredView.tsx src/home/UnauthenticatedView.module.css src/home/UnauthenticatedView.tsx src/home/common.module.css src/home/useGroupCallRooms.ts src/icons/Check.svg src/icons/Chevron.svg src/icons/Close.svg src/icons/FullScreenMaximise.svg src/icons/FullScreenMinimise.svg src/icons/LockOff.svg src/icons/Login.svg src/icons/Logo.svg src/icons/LogoLarge.svg src/icons/LogoMark.svg src/icons/LogoType.svg src/icons/Logout.svg src/icons/Settings.svg src/icons/StarSelected.svg src/icons/StarUnselected.svg src/icons/User.svg src/index.css src/initializer.test.ts src/initializer.tsx src/input/AvatarInputField.module.css src/input/AvatarInputField.tsx src/input/FeedbackInput.module.css src/input/Input.module.css src/input/Input.tsx src/input/StarRating.test.tsx src/input/StarRatingInput.module.css src/input/StarRatingInput.stories.tsx src/input/StarRatingInput.tsx src/livekit/BlurBackgroundTransformer.ts src/livekit/MatrixAudioRenderer.test.tsx src/livekit/MatrixAudioRenderer.tsx src/livekit/TrackProcessorContext.tsx src/livekit/openIDSFU.test.ts src/livekit/openIDSFU.ts src/livekit/options.test.ts src/livekit/options.ts src/main.tsx src/mediapipe/imageSegmenter/README.md src/mediapipe/imageSegmenter/selfie_segmenter.tflite src/profile/useProfile.ts src/reactions/RaisedHandIndicator.test.tsx src/reactions/RaisedHandIndicator.tsx src/reactions/ReactionIndicator.module.css src/reactions/ReactionIndicator.tsx src/reactions/ReactionsReader.test.tsx src/reactions/ReactionsReader.ts src/reactions/__snapshots__/RaisedHandIndicator.test.tsx.snap src/reactions/index.ts src/reactions/useReactionsSender.tsx src/room/CallEndedView.module.css src/room/CallEndedView.tsx src/room/CallEventAudioRenderer.test.tsx src/room/CallEventAudioRenderer.tsx src/room/EarpieceOverlay.module.css src/room/EarpieceOverlay.tsx src/room/EncryptionLock.module.css src/room/EncryptionLock.tsx src/room/GroupCallErrorBoundary.test.tsx src/room/GroupCallErrorBoundary.tsx src/room/GroupCallView.test.tsx src/room/GroupCallView.tsx src/room/InCallView.module.css src/room/InCallView.test.tsx src/room/InCallView.tsx src/room/InviteModal.module.css src/room/InviteModal.test.tsx src/room/InviteModal.tsx src/room/LobbyView.module.css src/room/LobbyView.test.tsx src/room/LobbyView.tsx src/room/RageshakeRequestModal.tsx src/room/ReactionAudioRenderer.test.tsx src/room/ReactionAudioRenderer.tsx src/room/ReactionsOverlay.module.css src/room/ReactionsOverlay.test.tsx src/room/ReactionsOverlay.tsx src/room/RoomAuthView.module.css src/room/RoomAuthView.tsx src/room/RoomPage.tsx src/room/VideoPreview.module.css src/room/VideoPreview.test.tsx src/room/VideoPreview.tsx src/room/__snapshots__/GroupCallErrorBoundary.test.tsx.snap src/room/__snapshots__/InCallView.test.tsx.snap src/room/__snapshots__/LobbyView.test.tsx.snap src/room/useJoinRule.ts src/room/useLoadGroupCall.ts src/room/useRoomAvatar.ts src/room/useRoomName.ts src/room/useRoomState.ts src/settings/DeveloperSettingsTab.module.css src/settings/DeveloperSettingsTab.test.tsx src/settings/DeveloperSettingsTab.tsx src/settings/DeviceSelection.module.css src/settings/DeviceSelection.tsx src/settings/FeedbackSettingsTab.tsx src/settings/MediaQualitySettings.tsx src/settings/PreferencesSettingsTab.tsx src/settings/ProfileSettingsTab.module.css src/settings/ProfileSettingsTab.tsx src/settings/RageshakeButton.module.css src/settings/RageshakeButton.tsx src/settings/SettingsModal.module.css src/settings/SettingsModal.tsx src/settings/__snapshots__/DeveloperSettingsTab.test.tsx.snap src/settings/rageshake.test.ts src/settings/rageshake.ts src/settings/settings.test.ts src/settings/settings.ts src/settings/submit-rageshake.test.ts src/settings/submit-rageshake.ts src/settings/useSubmitRageshake.test.tsx src/sound/LICENCE.md src/sound/call_declined.mp3 src/sound/call_declined.ogg src/sound/call_timeout.mp3 src/sound/call_timeout.ogg src/sound/end_talk.mp3 src/sound/end_talk.ogg src/sound/join_call.mp3 src/sound/join_call.ogg src/sound/left_call.mp3 src/sound/left_call.ogg src/sound/raise_hand.mp3 src/sound/raise_hand.ogg src/sound/reactions/baduntss.mp3 src/sound/reactions/baduntss.ogg src/sound/reactions/cat.mp3 src/sound/reactions/cat.ogg src/sound/reactions/clap.mp3 src/sound/reactions/clap.ogg src/sound/reactions/crickets.mp3 src/sound/reactions/crickets.ogg src/sound/reactions/deer.mp3 src/sound/reactions/deer.ogg src/sound/reactions/dog.mp3 src/sound/reactions/dog.ogg src/sound/reactions/generic.mp3 src/sound/reactions/generic.ogg src/sound/reactions/lightbulb.mp3 src/sound/reactions/lightbulb.ogg src/sound/reactions/party.mp3 src/sound/reactions/party.ogg src/sound/reactions/rock.mp3 src/sound/reactions/rock.ogg src/sound/reactions/wave.mp3 src/sound/reactions/wave.ogg src/sound/ringtone.mp3 src/sound/ringtone.ogg src/sound/screen_share_started.mp3 src/sound/screen_share_started.ogg src/sound/start_talk_local.mp3 src/sound/start_talk_local.ogg src/sound/start_talk_remote.mp3 src/sound/start_talk_remote.ogg src/soundUtils.ts src/state/AndroidControlledAudioOutput.test.ts src/state/AndroidControlledAudioOutput.ts src/state/AppViewModel.ts src/state/AudioOutput.test.ts src/state/Behavior.ts src/state/CallViewModel/CallNotificationLifecycle.test.ts src/state/CallViewModel/CallNotificationLifecycle.ts src/state/CallViewModel/CallViewModel.test.ts src/state/CallViewModel/CallViewModel.ts src/state/CallViewModel/CallViewModelTestUtils.ts src/state/CallViewModel/LayoutSwitch.test.ts src/state/CallViewModel/LayoutSwitch.ts src/state/CallViewModel/localMember/HomeserverConnected.test.ts src/state/CallViewModel/localMember/HomeserverConnected.ts src/state/CallViewModel/localMember/LocalMember.test.ts src/state/CallViewModel/localMember/LocalMember.ts src/state/CallViewModel/localMember/LocalTransport.test.ts src/state/CallViewModel/localMember/LocalTransport.ts src/state/CallViewModel/localMember/Publisher.test.ts src/state/CallViewModel/localMember/Publisher.ts src/state/CallViewModel/localMember/RtcTransportAutoDiscovery.test.ts src/state/CallViewModel/localMember/RtcTransportAutoDiscovery.ts src/state/CallViewModel/remoteMembers/Connection.test.ts src/state/CallViewModel/remoteMembers/Connection.ts src/state/CallViewModel/remoteMembers/ConnectionFactory.ts src/state/CallViewModel/remoteMembers/ConnectionManager.test.ts src/state/CallViewModel/remoteMembers/ConnectionManager.ts src/state/CallViewModel/remoteMembers/ECConnectionFactory.test.ts src/state/CallViewModel/remoteMembers/MatrixLivekitMembers.test.ts src/state/CallViewModel/remoteMembers/MatrixLivekitMembers.ts src/state/CallViewModel/remoteMembers/MatrixMemberMetadata.test.ts src/state/CallViewModel/remoteMembers/MatrixMemberMetadata.ts src/state/CallViewModel/remoteMembers/integration.test.ts src/state/CallViewModelWidget.test.ts src/state/GridLikeLayout.ts src/state/IOSControlledAudioOutput.ts src/state/MediaDevices.ts src/state/MuteAllAudioModel.test.ts src/state/MuteAllAudioModel.ts src/state/MuteStates.test.ts src/state/MuteStates.ts src/state/ObservableScope.test.ts src/state/ObservableScope.ts src/state/OneOnOneLandscapeLayout.ts src/state/OneOnOnePortraitLayout.ts src/state/PipLayout.ts src/state/SessionBehaviors.ts src/state/SpotlightExpandedLayout.ts src/state/TileStore.ts src/state/TileViewModel.ts src/state/ViewModel.ts src/state/VolumeControls.ts src/state/initialMuteState.test.ts src/state/initialMuteState.ts src/state/layout-types.ts src/state/media/LocalScreenShareViewModel.ts src/state/media/LocalUserMediaViewModel.ts src/state/media/MediaViewModel.test.ts src/state/media/MediaViewModel.ts src/state/media/MemberMediaViewModel.ts src/state/media/RemoteScreenShareViewModel.ts src/state/media/RemoteUserMediaViewModel.ts src/state/media/RingingMediaViewModel.ts src/state/media/ScreenShareViewModel.ts src/state/media/UserMediaViewModel.ts src/state/media/WrappedUserMediaViewModel.ts src/state/media/observeRtpStreamStats.ts src/state/media/observeSpeaker.test.ts src/state/media/observeSpeaker.ts src/state/observeTrackReference.ts src/tabs/Tabs.module.css src/tabs/Tabs.tsx src/tile/GridTile.module.css src/tile/GridTile.test.tsx src/tile/GridTile.tsx src/tile/MediaView.module.css src/tile/MediaView.test.tsx src/tile/MediaView.tsx src/tile/SpotlightTile.module.css src/tile/SpotlightTile.test.tsx src/tile/SpotlightTile.tsx src/tile/TileAvatar.module.css src/tile/TileAvatar.test.tsx src/tile/TileAvatar.tsx src/useAudioContext.test.tsx src/useAudioContext.tsx src/useBehavior.ts src/useCallViewKeyboardShortcuts.test.tsx src/useCallViewKeyboardShortcuts.ts src/useEvents.test.tsx src/useEvents.ts src/useInitial.ts src/useLatest.ts src/useLocalStorage.test.tsx src/useLocalStorage.ts src/useMatrixRTCSessionMemberships.ts src/useMediaQuery.ts src/useMergedRefs.ts src/usePageTitle.ts src/usePrefersReducedMotion.ts src/useReactiveState.ts src/useTheme.test.ts src/useTheme.ts src/useWakeLock.ts src/utils/array.ts src/utils/displayname-integration.test.ts src/utils/displayname.test.ts src/utils/displayname.ts src/utils/errors.ts src/utils/fetch.test.ts src/utils/fetch.ts src/utils/i18n.ts src/utils/iter.test.ts src/utils/iter.ts src/utils/matrix.ts src/utils/media.ts src/utils/observable.test.ts src/utils/observable.ts src/utils/spa.ts src/utils/test-fixtures.ts src/utils/test-viewmodel.ts src/utils/test.ts src/utils/videoFit.test.ts src/utils/videoFit.ts src/vitest.setup.ts src/widget.test.ts src/widget.ts tsconfig.json vite-embedded.config.ts vite-sdk.config.ts vite.config.ts vitest.config.ts