Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
388 commits
Select commit Hold shift + click to select a range
438b6b8
Move local video tile in one-on-one layout to be flush with the edge
robintown Apr 13, 2026
118d11c
Merge branch 'livekit' into toger5/move-settings-out-of-bottom-bar
toger5 Apr 13, 2026
7e1ee2e
Merge branch 'toger5/move-settings-out-of-bottom-bar' into toger5/bot…
toger5 Apr 13, 2026
02fa29c
lint
toger5 Apr 13, 2026
be74ebb
convert to from so that multiple layout switcher dont collide in
toger5 Apr 13, 2026
c792516
Merge pull request #3872 from element-hq/floating-tile-inset
BillCarsonFr Apr 14, 2026
4002592
Also use CallFooter for lobby
toger5 Apr 14, 2026
8c5668b
Breaking changes detected by snapshot tests.
toger5 Apr 14, 2026
3c039be
lint
toger5 Apr 14, 2026
2d5de23
prettier
toger5 Apr 14, 2026
2ae1df4
knip
toger5 Apr 14, 2026
57f12d3
fix race in playwright sticky test
toger5 Apr 14, 2026
ed83672
Update src/room/InCallView.tsx
toger5 Apr 14, 2026
a069d28
review: make appBar styling use IconButton (fix margins)
toger5 Apr 14, 2026
f7e1fa7
review: hide logo at 750px already
toger5 Apr 14, 2026
ab751e8
review: smaller changes
toger5 Apr 14, 2026
4295ae5
Merge branch 'toger5/move-settings-out-of-bottom-bar' into
toger5 Apr 14, 2026
32823ae
test and lints
toger5 Apr 14, 2026
4b62ab2
Merge branch 'toger5/move-settings-out-of-bottom-bar' into toger5/bot…
toger5 Apr 14, 2026
dd80679
test snapshot
toger5 Apr 14, 2026
242c40a
move appBar hook to InCallView
toger5 Apr 14, 2026
eccf119
Merge pull request #3871 from element-hq/no-app-prompt
robintown Apr 14, 2026
68518e3
Skip NotAllowed test until livekit allows to detect that again
BillCarsonFr Apr 15, 2026
27a6e67
Merge pull request #3870 from element-hq/delete-unused-css
robintown Apr 15, 2026
9056989
Merge pull request #3858 from element-hq/valere/devx/netlify_playwrig…
BillCarsonFr Apr 15, 2026
7871877
bump livekit server version
BillCarsonFr Apr 15, 2026
b596000
fix logo in lobby
toger5 Apr 15, 2026
3cb092f
Revert "fix race in playwright sticky test"
toger5 Apr 15, 2026
dbf76db
cleanup ReactionData
toger5 Apr 15, 2026
6512a9d
Merge pull request #3666 from element-hq/renovate/livekit-client
BillCarsonFr Apr 15, 2026
0350f57
fixup: Looks like the upload & download action used are not compatible
BillCarsonFr Apr 15, 2026
e46be38
Make mediaDevices less confusing
toger5 Apr 15, 2026
29ba0bd
make zizmore happy with exact version in comment
BillCarsonFr Apr 15, 2026
75fb89a
review: update styles + aria hidden
toger5 Apr 15, 2026
f07bf5c
fix lint
toger5 Apr 15, 2026
505e408
Merge branch 'toger5/move-settings-out-of-bottom-bar' into toger5/bot…
toger5 Apr 15, 2026
d19191a
Merge pull request #3878 from element-hq/valere/fix_deploy_playwright…
BillCarsonFr Apr 15, 2026
71e389c
unit test snapshots
toger5 Apr 15, 2026
486b3ea
Merge branch 'toger5/move-settings-out-of-bottom-bar' into toger5/bot…
toger5 Apr 15, 2026
c922936
Merge pull request #3856 from element-hq/toger5/move-settings-out-of-…
toger5 Apr 15, 2026
3fc823e
Fix unit tests
toger5 Apr 15, 2026
9fa382e
fix loudspeaker confusion and icons
toger5 Apr 15, 2026
bbda8ec
Update dependency livekit-client to v2.18.2
renovate[bot] Apr 15, 2026
cea32b8
remove reactive url param for showFooter
toger5 Apr 15, 2026
014f645
Merge pull request #3880 from element-hq/renovate/livekit-client
robintown Apr 15, 2026
832c578
Fix local screen share not appearing in one-on-one calls
robintown Apr 15, 2026
b03524e
Make screen sharing work more like speaking marbles in tests
robintown Apr 15, 2026
e8963ef
Test that the local user can see their own screen share
robintown Apr 15, 2026
d31a2a4
Update dependency livekit-client to v2.18.3 (#3883)
renovate[bot] Apr 16, 2026
60fae70
Merge pull request #3882 from element-hq/local-screen-share
BillCarsonFr Apr 16, 2026
0dcd761
only warn about app bar provider missing on mobile
toger5 Apr 16, 2026
565a5ab
Merge pull request #3885 from element-hq/toger5/bottom-bar-storybook
toger5 Apr 16, 2026
5657036
Bump matrix js-sdk to support latest MSC4195 update
fkwp Apr 16, 2026
17ad20c
switching from yarn to pnpm
fkwp Apr 17, 2026
9c1719a
Switching to pnpm caused module resolution errors because some depend…
fkwp Apr 17, 2026
8eccb95
Merge pull request #3859 from JakeTripplJ/screenshare-audio-filtering…
JakeTripplJ Apr 17, 2026
2b42b2b
fix tests after moving to pnpm
fkwp Apr 17, 2026
b58ad63
Prevents Prettier from formatting the lockfile to avoid conflicts with
fkwp Apr 17, 2026
96b343e
Fix forward/back buttons not showing up on desktop for multiple scree…
robintown Apr 17, 2026
7e39889
Fix name tags appearing in the wrong place with multiple screen shares
robintown Apr 17, 2026
2c65a75
Merge pull request #3889 from element-hq/multiple-screen-shares
robintown Apr 17, 2026
eeafd81
test: add a screenshare test
BillCarsonFr Apr 17, 2026
8b4762f
review: use role locator instead of testID
BillCarsonFr Apr 17, 2026
938a03d
address review comments
fkwp Apr 17, 2026
d75f256
getting ride of `shamefully-hoist=true`
fkwp Apr 17, 2026
2adb498
prettier
fkwp Apr 17, 2026
4d86580
pin lk-jwt-service to delegation PR
fkwp Apr 17, 2026
66cea92
Add back our custom linking plugins to pnpm
toger5 Apr 20, 2026
1f443cf
bump jwt for dev backend back to proper release
toger5 Apr 20, 2026
ff61128
missed version bump
toger5 Apr 20, 2026
2828b92
Merge pull request #3887 from element-hq/fkwp/support_latest_changes_…
toger5 Apr 20, 2026
4d09651
Bump pnpm to v10
toger5 Apr 21, 2026
00d6e03
fixup some missing yarn -> pnpm transitions
toger5 Apr 21, 2026
e9fd848
Invert the colors of the camera and microphone buttons again
robintown Apr 21, 2026
d6f6542
Merge pull request #3891 from element-hq/valere/playwrigth/screen_sha…
BillCarsonFr Apr 21, 2026
84ed594
fix: using vars. instead of secrets. for NETLIFY_SITE_ID
BillCarsonFr Apr 21, 2026
0894659
Merge pull request #3901 from element-hq/valere/devx/fix_playwright_n…
BillCarsonFr Apr 21, 2026
ab05e8d
Merge pull request #3900 from element-hq/invert-buttons-again
robintown Apr 21, 2026
b58076f
remove pnpmfileChecksum and .pnpmfile.cjs
toger5 Apr 21, 2026
741b82b
update linking realted logic
toger5 Apr 21, 2026
8728676
update CI to ignore pnpmfile
toger5 Apr 21, 2026
6ae8853
pnpm v10.33.0 + lock file
toger5 Apr 21, 2026
92338a2
review
toger5 Apr 21, 2026
d28cad3
fix matrix-js-sdk branch reference
toger5 Apr 21, 2026
2d16487
fix sticky send race
toger5 Apr 21, 2026
ecb2a68
prettier
toger5 Apr 21, 2026
bbb73b2
fix knip
toger5 Apr 21, 2026
ea73e58
pevara
toger5 Apr 21, 2026
4211405
Use synapse API to register instead doing via UI
BillCarsonFr Apr 3, 2026
24e721f
fix web stuck problem! go to / and not to #/login
BillCarsonFr Apr 7, 2026
0127040
Remove slow? no registration anymore
BillCarsonFr Apr 7, 2026
701edd9
fixup lint
BillCarsonFr Apr 21, 2026
754a42f
increase default timeout on huddle test
BillCarsonFr Apr 21, 2026
0e2d2c6
try paralelize registrations?
BillCarsonFr Apr 21, 2026
a1d0a74
Merge pull request #3852 from element-hq/toger5/posthog-call-ended-du…
toger5 Apr 21, 2026
4155d4c
Merge pull request #3896 from element-hq/toger5/bump-pnpm-to-v10
toger5 Apr 21, 2026
50ad678
Merge pull request #3877 from element-hq/toger5/playwright-race-await
toger5 Apr 21, 2026
55de3fd
tests optimizations
BillCarsonFr Apr 22, 2026
3317283
Update dependency livekit-client to v2.18.4
renovate[bot] Apr 22, 2026
2b46925
Call window.controls.onBackButtonPressed if esc is pressed without any
toger5 Apr 22, 2026
2d9802b
Merge branch 'livekit' into valere/devx/use_synapse_api_for_playwright
BillCarsonFr Apr 22, 2026
56bab70
add tests
toger5 Apr 22, 2026
f9dc4d9
Update a tohaveCount() timeout that made a test flak 2 times
BillCarsonFr Apr 22, 2026
2e149ad
Merge pull request #3895 from element-hq/renovate/livekit-client
toger5 Apr 22, 2026
5dd1c76
increase timeout of flaky test
BillCarsonFr Apr 22, 2026
9525136
Merge pull request #3908 from element-hq/toger5/back-button-press-con…
toger5 Apr 22, 2026
879526c
adjust flaky timeouts
BillCarsonFr Apr 22, 2026
9e2eef0
Add support for a grace period for /sync (aka homeserver disconnected…
fkwp Apr 22, 2026
f355aa1
adjust timeout
BillCarsonFr Apr 22, 2026
854cfdf
adjust timeouts
BillCarsonFr Apr 22, 2026
1b96828
adjust timeouts
BillCarsonFr Apr 22, 2026
5c4d6d0
turn an assertion as retryable with expect.poll
BillCarsonFr Apr 22, 2026
78e7adc
remove redundant toBeVisible before click
BillCarsonFr Apr 22, 2026
4d8e4c6
adjust time out
BillCarsonFr Apr 22, 2026
21b78d6
test something in the reconnect bug
BillCarsonFr Apr 22, 2026
6d70247
this test should be slow (taking more than 30s)
BillCarsonFr Apr 22, 2026
6edc408
adjust timeouts
BillCarsonFr Apr 22, 2026
e5c11ee
fix bad assert for reconnect
BillCarsonFr Apr 22, 2026
9f2db7c
Merge branch 'livekit' into fkwp/delegation_of_delayed_events
fkwp Apr 22, 2026
84ac0cc
mark test as slow
BillCarsonFr Apr 22, 2026
9fccd49
Improve the handling of the grace period for the home server connecti…
fkwp Apr 22, 2026
032ec66
bump lk-jwt-service
fkwp Apr 22, 2026
ee34393
Merge branch 'fkwp/delegation_of_delayed_events' into fkwp/feature_re…
fkwp Apr 22, 2026
283c606
Add tests for grace period handling in createHomeserverConnected$
fkwp Apr 22, 2026
d9dc61a
mark test as slow
BillCarsonFr Apr 23, 2026
90ba38d
setup SFU webhooks for local dev environment to be compatible with de…
fkwp Apr 23, 2026
a7788a2
Dismiss the new invite confirmation modal
BillCarsonFr Apr 23, 2026
c1f821c
Update default sync disconnect grace period to 10000ms in configurati…
fkwp Apr 23, 2026
3699138
Dismiss the new invite confirmation modal
BillCarsonFr Apr 23, 2026
0abc32b
prettier
fkwp Apr 23, 2026
72d9224
Merge pull request #3914 from element-hq/valere/playwright/update_tes…
robintown Apr 23, 2026
39ef815
Merge branch 'livekit' into fkwp/feature_relax_homeserver_offline
fkwp Apr 23, 2026
8bd6b04
Update dependency livekit-client to v2.18.5 (#3912)
renovate[bot] Apr 23, 2026
f98e6d1
Update dependency uuid to v14 [SECURITY] (#3918)
renovate[bot] Apr 24, 2026
93657ee
Update dependency livekit-client to v2.18.6 (#3919)
renovate[bot] Apr 24, 2026
6317a06
review: quick cleaning
BillCarsonFr Apr 24, 2026
ca305b9
fix: wrong usage of poll
BillCarsonFr Apr 24, 2026
0864b7d
Merge branch 'livekit' into valere/devx/use_synapse_api_for_playwright
BillCarsonFr Apr 24, 2026
0d5c71b
fixup
BillCarsonFr Apr 24, 2026
82b7e24
This test does not need to run on both FF and chrome
BillCarsonFr Apr 24, 2026
2f2bdfc
fixup: wrong skip
BillCarsonFr Apr 24, 2026
44b6db6
Replace LayoutToggle with compound-web Switch component
Half-Shot Apr 24, 2026
2ce6098
Merge pull request #3841 from element-hq/valere/devx/use_synapse_api_…
BillCarsonFr Apr 24, 2026
d8be069
Fix type
Half-Shot Apr 24, 2026
9b71070
publish lock changes
Half-Shot Apr 24, 2026
6275178
Use actual package
Half-Shot Apr 24, 2026
5aa4571
Snap updates
Half-Shot Apr 27, 2026
e3edf3a
Merge remote-tracking branch 'origin/livekit' into hs/compound-switch
Half-Shot Apr 27, 2026
89281c6
Refactor leveraging the fact, things blocking shortcuts are using react
toger5 Apr 27, 2026
d335a30
Update compound-web to 9.3.0 and update Buttons from "sm" to "md". (#…
Half-Shot Apr 27, 2026
ef1e8b5
Merge remote-tracking branch 'origin/livekit' into hs/compound-switch
Half-Shot Apr 27, 2026
c196e9e
Add name
Half-Shot Apr 27, 2026
6b1b316
fix tests
toger5 Apr 27, 2026
5db1a20
update snap
Half-Shot Apr 28, 2026
b5c1b36
more logging
toger5 Apr 28, 2026
df78ff6
Fix drawer option
toger5 Apr 28, 2026
b4dffa5
fix lint
toger5 Apr 30, 2026
3caae52
Merge branch 'livekit' into toger5/back-button-press-control-on-esc
toger5 Apr 30, 2026
e79255e
fix accept call with latest web
BillCarsonFr Apr 30, 2026
09fc389
fixup
BillCarsonFr Apr 30, 2026
d1dc7cd
Merge pull request #3936 from element-hq/valere/fix_playwight_test_we…
toger5 Apr 30, 2026
e68e62b
Merge branch 'livekit' into toger5/back-button-press-control-on-esc
toger5 Apr 30, 2026
51209aa
Update dependency livekit-client to v2.18.8 (#3934)
renovate[bot] Apr 30, 2026
24c2845
move starWith to corresponding branch in switchMap
fkwp Apr 30, 2026
42aae30
use latest stable version of jwt service
fkwp Apr 30, 2026
2e4ca9b
use 10 Seconds of grace period in config.sample.json
fkwp Apr 30, 2026
6c25048
Merge branch 'livekit' into fkwp/feature_relax_homeserver_offline
fkwp Apr 30, 2026
f093946
Allow calls to display edge-to-edge on mobile
robintown Apr 21, 2026
5a30666
Update all non-major dependencies
renovate[bot] May 1, 2026
0470dab
Merge pull request #3940 from element-hq/renovate/all-minor-patch
robintown May 1, 2026
22f1617
addressing review comments
fkwp May 4, 2026
88b5db6
fix rtsSession initial state
fkwp May 4, 2026
a081b40
add marble test
fkwp May 4, 2026
69757b0
prettier
fkwp May 4, 2026
0dc8fab
linting
fkwp May 4, 2026
83a9a2a
Merge pull request #3903 from element-hq/edge-to-edge
robintown May 4, 2026
7916360
Convert all grace period tests to marble tests
robintown May 4, 2026
5ca50fd
Merge pull request #3913 from element-hq/fkwp/feature_relax_homeserve…
robintown May 4, 2026
58f430e
review
toger5 May 4, 2026
b276eee
Merge pull request #3927 from element-hq/toger5/back-button-press-con…
toger5 May 4, 2026
667723a
fix nginx config as the missing 50x.html escalates 502 errors to 404 …
fkwp May 5, 2026
95f772d
Add storybook to CI (#3948)
toger5 May 5, 2026
147d0f9
[Feature] Support delayed event delegation for legacy JWT request (#3…
fkwp May 5, 2026
d50c8e0
Update Playwright test to look for 'Decline' button
robintown May 6, 2026
e06f717
playwrigth: make dismiss toast more reliable
BillCarsonFr May 7, 2026
85bdb00
Merge pull request #3952 from element-hq/decline-call
BillCarsonFr May 7, 2026
7010d54
Merge pull request #3954 from element-hq/valere/playwright_toast_fixture
BillCarsonFr May 7, 2026
1025d23
Update dependency livekit-client to v2.18.9 (#3958)
renovate[bot] May 11, 2026
78417ff
Update dependency @livekit/components-react to v2.9.21 (#3957)
renovate[bot] May 11, 2026
069074d
Merge branch 'livekit' into hs/compound-switch
robintown May 11, 2026
bd2de29
Merge pull request #3922 from element-hq/hs/compound-switch
robintown May 11, 2026
f4ff790
Add `MediaMuteAndSwitchButton` component (storybook only) (#3938)
toger5 May 11, 2026
20d14fa
use vite storybook plugin for storybook tests.
toger5 May 11, 2026
5362678
install playwright for unit tests
toger5 May 11, 2026
bc2be4d
test in CI
toger5 May 11, 2026
88f14ff
try with playwirght container
toger5 May 11, 2026
aa125d9
no setup file for storybook
toger5 May 11, 2026
8576200
try file parallelism
toger5 May 11, 2026
7ca890e
Delete vitest.setup.ts
toger5 May 11, 2026
f371284
try with firefox
toger5 May 11, 2026
4f28bac
without playwright container
toger5 May 11, 2026
5bdbd80
try storybook only
toger5 May 11, 2026
ded6e4c
fix tests dep optimization issues
toger5 May 11, 2026
34486e6
use container to skip playwright install
toger5 May 11, 2026
d37c064
custom container does not work for playwright tests
toger5 May 11, 2026
408a38a
bugfix: When starting muted, have to click twice to unmute in call
BillCarsonFr May 12, 2026
b9f73e3
Merge pull request #3962 from element-hq/valere/fix_double_unmute_bug
BillCarsonFr May 12, 2026
53e9d05
Update GitHub Actions
renovate[bot] May 12, 2026
77f4704
Update dependency @vector-im/compound-design-tokens to v10.1.1
renovate[bot] May 12, 2026
b562a0f
Create a proper one-on-one call layout for portrait screens
robintown Apr 23, 2026
cec3a79
Posthog add reconnect event (#3953)
fkwp May 14, 2026
53acd25
Merge branch 'livekit' into renovate/compound
robintown May 15, 2026
f3234b1
Merge branch 'livekit' into renovate/github-actions
robintown May 15, 2026
9ad5d02
Merge branch 'livekit' into one-on-one-portrait
robintown May 15, 2026
de52ea6
Fix tests
robintown May 15, 2026
a1e03ea
Merge pull request #3942 from element-hq/renovate/compound
robintown May 15, 2026
7e932d2
Merge pull request #3939 from element-hq/renovate/github-actions
robintown May 15, 2026
04b0165
Fix tap-to-show call controls on iOS (ReactMouseEvent -> ReactPointer…
fkwp May 15, 2026
4452f3c
Update dependency livekit-client to v2.18.10
renovate[bot] May 18, 2026
959a55a
Use correct preposition
Johennes May 18, 2026
a2c6b81
Link to self-hosting guide
Johennes May 18, 2026
b0c1c48
Add missing article
Johennes May 18, 2026
abce4d1
Add missing article
Johennes May 18, 2026
0160f60
Reorder sentence fragments for better readability
Johennes May 18, 2026
69b5209
Fix typo
Johennes May 18, 2026
9d52291
Add missing colon
Johennes May 18, 2026
198d961
Add missing apostrophe
Johennes May 18, 2026
0ca2b6d
Remove extra space and add colon
Johennes May 18, 2026
80f573e
Add missing apostrophe
Johennes May 18, 2026
18a128b
Fix linking link
Johennes May 18, 2026
d7acce4
Merge pull request #3970 from Johennes/johannes/typo
robintown May 18, 2026
49f6c74
Minor documentation fixes
Johennes May 18, 2026
cfbdbca
Fix media foreground elements being obscured by header/footer
robintown May 18, 2026
d66afd7
Merge pull request #3971 from Johennes/johannes/minor-docs-fixes
robintown May 18, 2026
ac1297d
Merge pull request #3916 from element-hq/one-on-one-portrait
robintown May 18, 2026
f3c0b9e
Merge pull request #3969 from element-hq/renovate/livekit-client
robintown May 18, 2026
6f7d4ec
List additional dependencies needed for development
Johennes May 19, 2026
6b26161
Log unhandled promise rejections in rageshakes (#3972)
robintown May 19, 2026
78d76ad
Bump babel/plugin-transform-modules-systemjs (#3974)
toger5 May 19, 2026
0e3aaaa
Fix tap-to-show call controls on iOS (ReactMouseEvent -> ReactPointer…
toger5 May 19, 2026
f0db134
Posthog: drop $initial_person_info from outgoing events (#3968)
fkwp May 19, 2026
94ce207
Allow PostHog dependency updates again
robintown May 20, 2026
284d76e
Merge pull request #3977 from element-hq/posthog-updates
robintown May 20, 2026
ddde05c
review
toger5 May 20, 2026
e7c87e3
Merge branch 'livekit' into toger5/storybook-tests
toger5 May 20, 2026
bc3da2d
Merge pull request #3975 from Johennes/johannes/dev-deps
toger5 May 20, 2026
3adddf4
Merge pull request #3960 from element-hq/toger5/storybook-tests
toger5 May 20, 2026
d50459a
merged from element-call upstream livekit branch and resolved merge c…
cronkenstein May 20, 2026
4b82897
element-call moved away from yarn to pnpm
May 20, 2026
00ee18b
element-call set packageManager to pnpm
May 20, 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
1 change: 1 addition & 0 deletions .eslintrc.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ module.exports = {
"plugin:matrix-org/typescript",
"prettier",
"plugin:rxjs/recommended",
"plugin:storybook/recommended",
],
parserOptions: {
ecmaVersion: "latest",
Expand Down
11 changes: 0 additions & 11 deletions .githooks/post-commit

This file was deleted.

14 changes: 6 additions & 8 deletions .githooks/pre-commit
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
#!/usr/bin/sh
#!/usr/bin/env bash

FILE=".links.yaml"
if test -f "$FILE"; then
mv .links.yaml .links.temp-disabled.yaml
# echo "running yarn"
x=$(yarn)
y=$(git add yarn.lock)
echo "[yarn-linker] The pre-commit hook has disabled .links.yaml and MODIFIED the yarn.lock file. Review the staged changes (the hook added yarn.lock, was this desired?) and run \`git commit \` again if they look okay. The post-commit hook will re-enable your links."
# Checks if there currently is linking configured. Informs the user to disable linking before committing.

PNPMFILE=.pnpmfile.cjs
if test -f "$PNPMFILE"; then
echo "[pnpm-linker] The pre-commit hook detected $PNPMFILE which implies you have linked packages in your pnpm-lock.yaml. Run pnpm links:off and commit again. See also linking.md."
exit 1
fi
9 changes: 5 additions & 4 deletions .github/workflows/build-element-call.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,15 +37,16 @@ jobs:
persist-credentials: false
- name: Enable Corepack
run: corepack enable
- name: Yarn cache
- name: pnpm cache
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
cache: "yarn"
cache: "pnpm"
node-version-file: ".node-version"
- name: Install dependencies
run: "yarn install --immutable"
# ignore-pnpmfile should never be commited. Make CI crash if it happened (`pnpmfileChecksum` is present)
run: "pnpm install --frozen-lockfile --ignore-pnpmfile"
- name: Build Element Call
run: yarn run build:"$PACKAGE":"$BUILD_MODE"
run: pnpm run build:"$PACKAGE":"$BUILD_MODE"
env:
SENTRY_ORG: ${{ secrets.SENTRY_ORG }}
SENTRY_PROJECT: ${{ secrets.SENTRY_PROJECT }}
Expand Down
17 changes: 9 additions & 8 deletions .github/workflows/lint.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,20 +12,21 @@ jobs:
persist-credentials: false
- name: Enable Corepack
run: corepack enable
- name: Yarn cache
- name: pnpm cache
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
cache: "yarn"
cache: "pnpm"
node-version-file: ".node-version"
- name: Install dependencies
run: "yarn install --immutable"
# ignore-pnpmfile should never be commited. Make CI crash if it happened (`pnpmfileChecksum` is present)
run: "pnpm install --frozen-lockfile --ignore-pnpmfile"
- name: Prettier
run: "yarn run prettier:check"
run: "pnpm run prettier:check"
- name: i18n
run: "yarn run i18n:check"
run: "pnpm run i18n:check"
- name: ESLint
run: "yarn run lint:eslint"
run: "pnpm run lint:eslint"
- name: Type check
run: "yarn run lint:types"
run: "pnpm run lint:types"
- name: Dead code analysis
run: "yarn run lint:knip"
run: "pnpm run lint:knip"
4 changes: 2 additions & 2 deletions .github/workflows/publish-embedded-packages.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ jobs:
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
uses: softprops/action-gh-release@3bb12739c298aeb8a4eeaf626c5b8d85266b0e65 # v2
with:
files: |
${{ env.FILENAME_PREFIX }}.tar.gz
Expand Down Expand Up @@ -164,7 +164,7 @@ jobs:
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
uses: softprops/action-gh-release@3bb12739c298aeb8a4eeaf626c5b8d85266b0e65 # v2
with:
append_body: true
body: |
Expand Down
48 changes: 48 additions & 0 deletions .github/workflows/test-netlify.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Triggers after the playwright tests have finished,
# taking the artifact and uploading it to Netlify for easier viewing
name: Upload End to End Test report to Netlify
on:
# Privilege escalation necessary to publish to Netlify
# 🚨 We must not execute any checked out code here.
workflow_run: # zizmor: ignore[dangerous-triggers]
workflows: ["Test"]
types:
- completed

concurrency:
group: ${{ github.workflow }}-${{ github.event.workflow_run.head_branch || github.run_id }}
cancel-in-progress: ${{ github.event.workflow_run.event == 'pull_request' }}

permissions: {}

jobs:
report:
if: github.event.workflow_run.conclusion != 'cancelled'
name: Report results
runs-on: ubuntu-24.04
environment: Netlify
permissions:
statuses: write
deployments: write
actions: read
steps:
- name: Download HTML report
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
run-id: ${{ github.event.workflow_run.id }}
name: html-report
path: playwright-report

- name: 📤 Deploy to Netlify
uses: matrix-org/netlify-pr-preview@9805cd123fc9a7e421e35340a05e1ebc5dee46b5 # v3
with:
path: playwright-report
owner: ${{ github.event.workflow_run.head_repository.owner.login }}
branch: ${{ github.event.workflow_run.head_branch }}
revision: ${{ github.event.workflow_run.head_sha }}
token: ${{ secrets.NETLIFY_AUTH_TOKEN }}
site_id: ${{ secrets.NETLIFY_SITE_ID }}
desc: Playwright Report
deployment_env: EndToEndTests
prefix: "e2e-"
35 changes: 21 additions & 14 deletions .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,29 +2,34 @@ name: Test
on:
pull_request: {}
push:
branches: [livekit, full-mesh]
branches: [livekit]
jobs:
vitest:
name: Run unit tests
runs-on: ubuntu-latest
container:
# Make sure to grab the latest version of the Playwright image
# https://playwright.dev/docs/docker#pull-the-image
image: mcr.microsoft.com/playwright:v1.59.1-noble
steps:
- name: Checkout code
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # v4
with:
persist-credentials: false
- name: Enable Corepack
run: corepack enable
- name: Yarn cache
- name: pnpm cache
uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
cache: "yarn"
cache: "pnpm"
node-version-file: ".node-version"
- name: Install dependencies
run: "yarn install --immutable"
# ignore-pnpmfile should never be commited. Make CI crash if it happened (`pnpmfileChecksum` is present)
run: "pnpm install --frozen-lockfile --ignore-pnpmfile"
- name: Vitest
run: "yarn run test:coverage"
run: "pnpm run test:coverage"
- name: Upload to codecov
uses: codecov/codecov-action@671740ac38dd9b0130fbe1cec585b89eea48d3de # v5
uses: codecov/codecov-action@75cd11691c0faa626561e295848008c8a7dddffe # v5
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
Expand All @@ -42,12 +47,13 @@ jobs:
run: corepack enable
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
with:
cache: "yarn"
cache: "pnpm"
node-version-file: ".node-version"
- name: Install dependencies
run: yarn install --immutable
# ignore-pnpmfile should never be commited. Make CI crash if it happened (`pnpmfileChecksum` is present)
run: pnpm install --frozen-lockfile --ignore-pnpmfile
- name: Install Playwright Browsers
run: yarn playwright install --with-deps
run: pnpm exec playwright install --with-deps
- name: Run backend components
run: |
docker compose -f playwright-backend-docker-compose.yml -f playwright-backend-docker-compose.override.yml pull
Expand All @@ -56,10 +62,11 @@ jobs:
- name: Run Playwright tests
env:
USE_DOCKER: 1
run: yarn playwright test
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
run: pnpm exec playwright test
- uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
if: ${{ !cancelled() }}
with:
name: playwright-report
path: playwright-report/
retention-days: 3
name: html-report
path: playwright-report
if-no-files-found: error
retention-days: 4
2 changes: 1 addition & 1 deletion .github/workflows/zizmor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,4 @@ jobs:
persist-credentials: false

- name: Run zizmor 🌈
uses: zizmorcore/zizmor-action@71321a20a9ded102f6e9ce5718a2fcec2c4f70d8 # v0.5.2
uses: zizmorcore/zizmor-action@b1d7e1fb5de872772f31590499237e7cce841e8e # v0.5.3
8 changes: 8 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,20 @@ yarn-error.log
!/.yarn/releases
!/.yarn/sdks
!/.yarn/versions
# old yarn based linking
/.links.yaml
/.links.disabled.yaml
/.links.temp-disabled.yaml
# pnpm based linking
/.links.cjs
/.links.disabled.cjs
/.links.temp-disabled.cjs

# Playwright
/test-results/
/playwright-report/
/blob-report/
/playwright/.cache/

*storybook.log
storybook-static
1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
pnpm-lock.yaml
node_modules
dist
36 changes: 36 additions & 0 deletions .storybook/main.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/*
Copyright 2026 Element Creations Ltd.

SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
Please see LICENSE in the repository root for full details.
*/

import type { StorybookConfig } from "@storybook/react-vite";

const config: StorybookConfig = {
stories: ["../src/**/*.mdx", "../src/**/*.stories.@(js|jsx|mjs|ts|tsx)"],
addons: ["@storybook/addon-docs", "@storybook/addon-vitest"],
framework: "@storybook/react-vite",
// THIS IS IMPORTANT
// vitest runs without Vite's normal dependency optimization, so we need to manually include the polyfills for the stories to work.
// otherwise we will get: new dependencies optimized: ...
// and
// ```
// [vitest] Vite unexpectedly reloaded a test. This may cause tests to fail, lead to flaky behaviour or duplicated test runs.
// For a stable experience, please add mentioned dependencies to your config's `optimizeDeps.include` field manually.
// ```
// which breaks the storybook ci on the first and only run.
viteFinal(config) {
config.optimizeDeps = {
...config.optimizeDeps,
include: [
...(config.optimizeDeps?.include ?? []),
"vite-plugin-node-polyfills/shims/buffer",
"vite-plugin-node-polyfills/shims/global",
"vite-plugin-node-polyfills/shims/process",
],
};
return config;
},
};
export default config;
31 changes: 31 additions & 0 deletions .storybook/manager.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/*
Copyright 2026 Element Creations Ltd.

SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
Please see LICENSE in the repository root for full details.
*/

import { create } from "storybook/theming";
import { addons } from "storybook/manager-api";

addons.setConfig({
theme: create({
base: "light",
colorPrimary: "#1b1d22",
colorSecondary: "#0467dd",

// Typography
fontBase: '"Inter", sans-serif',
fontCode: '"Inconsolata", monospace',

// Text colors
textColor: "#1b1d22",
appBg: "#ffffff",
barBg: "#ffffff",

brandTitle: "Element Call",
brandUrl: "https://element.io/",
brandImage: "/src/icons/Logo.svg",
brandTarget: "_self",
}),
});
56 changes: 56 additions & 0 deletions .storybook/preview.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
/*
Copyright 2026 Element Creations Ltd.

SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
Please see LICENSE in the repository root for full details.
*/

import type { Preview } from "@storybook/react-vite";
import { TooltipProvider } from "@vector-im/compound-web";
import i18n from "i18next";
import { logger } from "matrix-js-sdk/lib/logger";

import EN from "../locales/en/app.json";
import { initReactI18next } from "react-i18next";
import "../src/index.css";

// Bare-minimum i18n config
i18n
.use(initReactI18next)
.init({
lng: "en",
fallbackLng: "en",
supportedLngs: ["en"],
// We embed the translations, so that it never needs to fetch
resources: {
en: {
translation: EN,
},
},
interpolation: {
escapeValue: false, // React has built-in XSS protections
},
})
.catch((e) => logger.warn("Failed to init i18n for stories", e));

const preview: Preview = {
parameters: {
layout: "centered",
controls: {
matchers: {
color: /(background|color)$/i,
date: /Date$/i,
},
},
},
tags: ["autodocs"],
decorators: [
(Story) => (
<TooltipProvider>
<Story />
</TooltipProvider>
),
],
};

export default preview;
Loading