Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
117 commits
Select commit Hold shift + click to select a range
bd3e917
Reset overwrite url if it is invalid (does fail to reach sfu)
toger5 Nov 27, 2025
ed45177
better UX (valiate on save)
toger5 Dec 1, 2025
5ceb140
remove check in local transport
toger5 Dec 1, 2025
c20b206
i18n
toger5 Dec 1, 2025
df2f503
review
toger5 Dec 11, 2025
c35b960
fix lints
toger5 Jan 5, 2026
eb60473
add tests
toger5 Jan 5, 2026
582d1d8
Merge branch 'livekit' into toger5/dont-trap-in-invalid-config
toger5 Jan 5, 2026
93c9225
Merge branch 'livekit' into toger5/dont-trap-in-invalid-config
toger5 Jan 13, 2026
636f737
reduce diff
toger5 Jan 13, 2026
dbdcde2
fix lint
toger5 Jan 13, 2026
f09e2c8
Merge branch 'livekit' into toger5/dont-trap-in-invalid-config
toger5 Jan 16, 2026
c376d9e
fix tests
toger5 Jan 16, 2026
73245e8
fix: Netlify preview broken
BillCarsonFr Feb 10, 2026
1e9f2e6
fix: Simplify log causing stringify `TypeError` on widget mode
BillCarsonFr Feb 10, 2026
0d24995
add defensive coding against JSON.stringify
BillCarsonFr Feb 10, 2026
8ea773a
Merge pull request #3731 from element-hq/valere/fix_netlify_deploy
BillCarsonFr Feb 11, 2026
13d131c
Logically separate the advertised transport from the active transport
robintown Feb 9, 2026
92992df
test: ensure ragelogger resist to JSON.stringify throws
BillCarsonFr Feb 11, 2026
076cc03
Merge pull request #3733 from element-hq/valere/bug_fix_stringify_crash
BillCarsonFr Feb 11, 2026
91da088
Update dependency matrix-widget-api to v1.17.0
renovate[bot] Feb 12, 2026
6cf859f
Fix resource leak due to unsafe scope reference
robintown Feb 13, 2026
2a56830
Fix existing LocalTransport tests
robintown Feb 13, 2026
4508002
Test local transport code in oldest member mode
robintown Feb 13, 2026
ba95780
Merge pull request #3734 from element-hq/robin/local-transport
toger5 Feb 16, 2026
789de19
Update GitHub Actions (#3711)
renovate[bot] Feb 17, 2026
d87c329
Make one-on-one layout media types stricter
robintown Feb 18, 2026
9d37125
Only expose RTC backend identity debug info where we actually use it
robintown Feb 18, 2026
bc23877
Make the type of participant$ stricter
robintown Feb 18, 2026
4a0e897
Merge pull request #3728 from element-hq/renovate/matrix-widget-api
robintown Feb 18, 2026
c8f5be7
remove deprecated `analyticsID` url param
BillCarsonFr Feb 24, 2026
4039272
Merge pull request #3745 from element-hq/robin/ringing
robintown Feb 25, 2026
6995388
Convert media view model classes to interfaces
robintown Feb 25, 2026
dcf3a72
Push docker images to oci.element.io (#3725)
fkwp Feb 25, 2026
465d28a
bumping LiveKit SFU and synapse versions for ci/cd (#3757)
fkwp Feb 25, 2026
62b408a
Update all non-major dependencies
renovate[bot] Feb 25, 2026
2fca7e3
Roll back @livekit/track-processors to fix type error (again!)
robintown Feb 25, 2026
44eb8ac
Pin Knip to 5.82.1 to work around Yarn plugin issue
robintown Feb 25, 2026
d16fa45
Merge pull request #3712 from element-hq/renovate/all-minor-patch
robintown Feb 25, 2026
6b51b7d
Split MediaViewModel into multiple files
robintown Feb 25, 2026
1de8d93
feat: video auto fit based on video stream size
BillCarsonFr Feb 25, 2026
15aa67e
remove unused fit to frame translation
BillCarsonFr Feb 26, 2026
ae8b1f8
add missing mocking
BillCarsonFr Feb 26, 2026
9930288
Move observeInboundRtpStreamStats$ into the appropriate file
robintown Feb 27, 2026
0ce2492
Add TODO to clean up encryption status code
robintown Feb 27, 2026
dcb7143
Merge pull request #3755 from element-hq/robin/ringing
robintown Feb 27, 2026
8e7e099
Update docker/login-action digest to c94ce9f
renovate[bot] Mar 1, 2026
b2475e4
Update embedded package dependencies
renovate[bot] Mar 1, 2026
2305007
Merge pull request #3765 from element-hq/renovate/embedded-package-de…
robintown Mar 2, 2026
38e79bb
Merge pull request #3764 from element-hq/renovate/github-actions
robintown Mar 2, 2026
c199d00
Merge branch 'livekit' into valere/auto_fit_based_on_video_ratio
BillCarsonFr Mar 2, 2026
adc329a
post merge fix
BillCarsonFr Mar 2, 2026
6e0f48e
fix: add id-token permission as its required by tailscale login (#3768)
fkwp Mar 2, 2026
5165e95
fix: default to cover is size are 0
BillCarsonFr Mar 2, 2026
a2ee016
Merge pull request #3752 from element-hq/valere/remove_deprecated_param
BillCarsonFr Mar 2, 2026
00f8801
fix: add id-token permission as its required by tailscale login (part…
fkwp Mar 2, 2026
2cf4a38
Add volume logic to RemoteScreenShareViewModel
JakeTripplJ Mar 3, 2026
72520db
Add screen share volume slider UI
JakeTripplJ Mar 4, 2026
a34fe78
Add tests for screen share volume controls
JakeTripplJ Mar 4, 2026
b88daf0
Add tests for screen share volume UI presence logic
JakeTripplJ Mar 4, 2026
ea074ce
Sort translation keys
JakeTripplJ Mar 4, 2026
c74d19a
Add more guards against undefined
JakeTripplJ Mar 4, 2026
99401a7
Make screenShareLocallyMuted check safer
JakeTripplJ Mar 4, 2026
3216d68
Make screenShareVolume safer
JakeTripplJ Mar 4, 2026
65045c2
Fix formatting
JakeTripplJ Mar 4, 2026
e99e862
Clean up and streamline safety checking instead of using multiple sep…
JakeTripplJ Mar 4, 2026
5f2d1c8
Comment typo
JakeTripplJ Mar 4, 2026
c7a16e9
Refactor screen share volume button into a component
robintown Mar 6, 2026
3bbbac2
Adjust dimensions of screen share volume menu
robintown Mar 6, 2026
273fff2
review: add comment
BillCarsonFr Mar 9, 2026
513477d
review: Use targetWidth/Height instead of listening to element bounds
BillCarsonFr Mar 9, 2026
d00e1ca
Devx: Add a PR template
BillCarsonFr Mar 9, 2026
313b828
Make the screen share volume button accessible on mobile
robintown Mar 9, 2026
885a523
Fix formatting
robintown Mar 9, 2026
06c15de
Merge pull request #3747 from JakeTripplJ/screenshare-volume
robintown Mar 9, 2026
4922249
Unpin Knip and LiveKit track processors
robintown Mar 9, 2026
4c7fad3
Silence new Knip errors
robintown Mar 9, 2026
8f418ce
fix cla link
BillCarsonFr Mar 9, 2026
17ec488
Merge pull request #3784 from element-hq/valere/pr_template
BillCarsonFr Mar 9, 2026
5a612fe
Merge branch 'livekit' into valere/auto_fit_based_on_video_ratio
BillCarsonFr Mar 9, 2026
467675f
Merge pull request #3785 from robintown/unpin-deps
robintown Mar 9, 2026
ca3837f
fix merge issue that added back a deprecated test
BillCarsonFr Mar 9, 2026
efcde9e
Merge pull request #3756 from element-hq/valere/auto_fit_based_on_vid…
BillCarsonFr Mar 9, 2026
3da762a
fix: typo inverting with/height in PIP spotlight tile
BillCarsonFr Mar 9, 2026
143b560
Add a playwright test to ensure object fit is correct
BillCarsonFr Mar 10, 2026
c98d03e
Merge pull request #3787 from element-hq/valere/fix_typo_width_height
BillCarsonFr Mar 10, 2026
8db1c4c
Implement new Pip Layout (with control buttons)
toger5 Mar 4, 2026
3838253
fix lints
toger5 Mar 9, 2026
273eedd
keep pip as it was before on mobile
toger5 Mar 9, 2026
54bef07
linter
toger5 Mar 9, 2026
6485da8
add playwright tests for new pip layout
toger5 Mar 10, 2026
1e400bc
remove unsused import
toger5 Mar 10, 2026
c9557e9
fix: add id-token permission as its required by tailscale login (part…
fkwp Mar 11, 2026
3a9d394
activate click tests
toger5 Mar 11, 2026
41f7b64
Add zizmor checks on CI (#3792)
fkwp Mar 11, 2026
839c4dd
fix: OCI image push to element registry (#3795)
fkwp Mar 11, 2026
d00ff78
fix pip interaction test (button presses)
toger5 Mar 11, 2026
a20edca
fix pip container query
toger5 Mar 11, 2026
c7f25fe
use better test condition for mute buttons
toger5 Mar 11, 2026
c05d223
Merge pull request #3775 from element-hq/toger5/new-pip-layout
toger5 Mar 11, 2026
af54b39
fix: typo pushing element registry OCI images now to the correct targ…
fkwp Mar 11, 2026
6b8f6e9
update vite vitest and rollup
toger5 Mar 12, 2026
413329c
Fix: zizmor findings (#3797)
fkwp Mar 12, 2026
3e171d9
bump tar, minimatch
toger5 Mar 12, 2026
a0d5c79
also update coverage
toger5 Mar 12, 2026
07ad837
Merge pull request #3595 from element-hq/toger5/dont-trap-in-invalid-…
toger5 Mar 12, 2026
40ef16a
Merge pull request #3799 from element-hq/toger5/fix-rollup-security-a…
toger5 Mar 12, 2026
748c8e6
Merge pull request #3800 from element-hq/toger5/fix-tar-minimatch-sec…
toger5 Mar 12, 2026
7da9bca
update qs, js-yaml, glob for security patches
toger5 Mar 13, 2026
bf8bf80
Revert "update qs, js-yaml, glob for security patches"
toger5 Mar 13, 2026
78240c2
update qs, js-yaml, glob for security patches
toger5 Mar 13, 2026
5cf5227
Merge pull request #3802 from element-hq/toger5/fix-qs-glob-js-yaml-s…
robintown Mar 13, 2026
6d14f1d
Update GitHub Actions (#3804)
renovate[bot] Mar 14, 2026
2f75d6f
merge up!
melogale Mar 16, 2026
3de9d49
format
melogale Mar 16, 2026
6c90f6c
workflows
melogale Mar 16, 2026
565ee50
embarassingly small commit
melogale Mar 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 0 additions & 17 deletions .github/workflows/blocked.yaml

This file was deleted.

6 changes: 5 additions & 1 deletion .github/workflows/build-element-call.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
with:
persist-credentials: false
- name: Enable Corepack
run: corepack enable
- name: Yarn cache
Expand All @@ -43,7 +45,7 @@ jobs:
- name: Install dependencies
run: "yarn install --immutable"
- name: Build Element Call
run: ${{ format('yarn run build:{0}:{1}', inputs.package, inputs.build_mode) }}
run: yarn run build:"$PACKAGE":"$BUILD_MODE"
env:
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
Expand All @@ -52,6 +54,8 @@ jobs:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
VITE_APP_VERSION: ${{ inputs.vite_app_version }}
NODE_OPTIONS: "--max-old-space-size=4096"
PACKAGE: ${{ inputs.package }}
BUILD_MODE: ${{ inputs.build_mode }}
- name: Upload Artifact
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/lint.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
with:
persist-credentials: false
- name: Enable Corepack
run: corepack enable
- name: Yarn cache
Expand Down
36 changes: 27 additions & 9 deletions .github/workflows/publish-embedded-packages.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,18 @@ jobs:
TAG: ${{ steps.tag.outputs.TAG }}
steps:
- name: Calculate VERSION
# We should only use the hard coded test value for a dry run
run: echo "VERSION=${{ github.event_name == 'release' && github.event.release.tag_name || 'v0.0.0-pre.0' }}" >> "$GITHUB_ENV"
# Safely store dynamic values in environment variables
# to prevent shell injection (template-injection)
run: |
# The logic is executed within the shell using the env variables
if [ "$EVENT_NAME" = "release" ]; then
echo "VERSION=$RELEASE_TAG" >> "$GITHUB_ENV"
else
echo "VERSION=v0.0.0-pre.0" >> "$GITHUB_ENV"
fi
env:
RELEASE_TAG: ${{ github.event.release.tag_name }}
EVENT_NAME: ${{ github.event_name }}
- id: dry_run
name: Set DRY_RUN
# We perform a dry run for all events except releases.
Expand Down Expand Up @@ -71,7 +81,9 @@ jobs:
contents: write # required to upload release asset
steps:
- name: Determine filename
run: echo "FILENAME_PREFIX=sable-call-embedded-${{ needs.versioning.outputs.UNPREFIXED_VERSION }}" >> "$GITHUB_ENV"
run: echo "FILENAME_PREFIX=sable-call-embedded-${NEEDS_VERSIONING_OUTPUTS_UNPREFIXED_VERSION}" >> "$GITHUB_ENV"
env:
NEEDS_VERSIONING_OUTPUTS_UNPREFIXED_VERSION: ${{ needs.versioning.outputs.UNPREFIXED_VERSION }}
- name: Download built artifact
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
with:
Expand All @@ -80,9 +92,9 @@ jobs:
name: build-output-embedded
path: ${{ env.FILENAME_PREFIX}}
- name: Create Tarball
run: tar --numeric-owner -cvzf ${{ env.FILENAME_PREFIX }}.tar.gz ${{ env.FILENAME_PREFIX }}
run: tar --numeric-owner -cvzf ${FILENAME_PREFIX}.tar.gz ${FILENAME_PREFIX}
- name: Create Checksum
run: find ${{ env.FILENAME_PREFIX }} -type f -print0 | sort -z | xargs -0 sha256sum | tee ${{ env.FILENAME_PREFIX }}.sha256
run: find ${FILENAME_PREFIX} -type f -print0 | sort -z | xargs -0 sha256sum | tee ${FILENAME_PREFIX}.sha256
- name: Upload
if: ${{ needs.versioning.outputs.DRY_RUN == 'false' }}
uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2
Expand All @@ -104,6 +116,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
with:
persist-credentials: false

- name: Download built artifact
uses: actions/download-artifact@d3f86a106a0bac45b974a628896c90dbdf5c8093 # v4
Expand All @@ -124,14 +138,16 @@ jobs:
working-directory: embedded/web
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
NEEDS_VERSIONING_OUTPUTS_PREFIXED_VERSION: ${{ needs.versioning.outputs.PREFIXED_VERSION }}
NEEDS_VERSIONING_OUTPUTS_TAG: ${{ needs.versioning.outputs.TAG }}
run: |
npm version ${{ needs.versioning.outputs.PREFIXED_VERSION }} --no-git-tag-version
npm version ${NEEDS_VERSIONING_OUTPUTS_PREFIXED_VERSION} --no-git-tag-version
echo "ARTIFACT_VERSION=$(jq '.version' --raw-output package.json)" >> "$GITHUB_ENV"
npm publish --provenance --access public --tag ${{ needs.versioning.outputs.TAG }} ${{ needs.versioning.outputs.DRY_RUN == 'true' && '--dry-run' || '' }}
npm publish --provenance --access public --tag ${NEEDS_VERSIONING_OUTPUTS_TAG} ${{ needs.versioning.outputs.DRY_RUN == 'true' && '--dry-run' || '' }}

- id: artifact_version
name: Output artifact version
run: echo "ARTIFACT_VERSION=${{env.ARTIFACT_VERSION}}" >> "$GITHUB_OUTPUT"
run: echo "ARTIFACT_VERSION=${ARTIFACT_VERSION}" >> "$GITHUB_OUTPUT"

release_notes:
needs: [versioning, publish_npm]
Expand All @@ -143,7 +159,9 @@ jobs:
steps:
- name: Log versions
run: |
echo "NPM: ${{ needs.publish_npm.outputs.ARTIFACT_VERSION }}"
echo "NPM: ${NEEDS_PUBLISH_NPM_OUTPUTS_ARTIFACT_VERSION}"
env:
NEEDS_PUBLISH_NPM_OUTPUTS_ARTIFACT_VERSION: ${{ needs.publish_npm.outputs.ARTIFACT_VERSION }}
- name: Add release notes
if: ${{ needs.versioning.outputs.DRY_RUN == 'false' }}
uses: softprops/action-gh-release@a06a81a03ee405af7f2048a818ed3f03bbf83c7b # v2
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
with:
persist-credentials: false
- name: Enable Corepack
run: corepack enable
- name: Yarn cache
Expand All @@ -34,6 +36,8 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
with:
persist-credentials: false
- name: Enable Corepack
run: corepack enable
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
Expand Down
16 changes: 16 additions & 0 deletions config/config_netlify_preview_sdk.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"default_server_config": {
"m.homeserver": {
"base_url": "https://call-unstable.ems.host",
"server_name": "call-unstable.ems.host"
}
},
"ssla": "https://static.element.io/legal/element-software-and-services-license-agreement-uk-1.pdf",
"matrix_rtc_session": {
"wait_for_key_rotation_ms": 3000,
"membership_event_expiry_ms": 180000000,
"delayed_leave_event_delay_ms": 18000,
"delayed_leave_event_restart_ms": 4000,
"network_error_retry_ms": 100
}
}
8 changes: 4 additions & 4 deletions dev-backend-docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ services:
- ecbackend

livekit:
image: livekit/livekit-server:v1.9.4
image: livekit/livekit-server:v1.9.11
pull_policy: always
hostname: livekit-sfu
command: --dev --config /etc/livekit.yaml
Expand All @@ -67,7 +67,7 @@ services:
- ecbackend

livekit-1:
image: livekit/livekit-server:v1.9.4
image: livekit/livekit-server:v1.9.11
pull_policy: always
hostname: livekit-sfu-1
command: --dev --config /etc/livekit.yaml
Expand All @@ -88,7 +88,7 @@ services:

synapse:
hostname: homeserver
image: ghcr.io/element-hq/synapse:pr-18968-dcb7678281bc02d4551043a6338fe5b7e6aa47ce
image: ghcr.io/element-hq/synapse:latest
pull_policy: always
environment:
- SYNAPSE_CONFIG_PATH=/data/cfg/homeserver.yaml
Expand All @@ -106,7 +106,7 @@ services:

synapse-1:
hostname: homeserver-1
image: ghcr.io/element-hq/synapse:pr-18968-dcb7678281bc02d4551043a6338fe5b7e6aa47ce
image: ghcr.io/element-hq/synapse:latest
pull_policy: always
environment:
- SYNAPSE_CONFIG_PATH=/data/cfg/homeserver.yaml
Expand Down
Loading
Loading