Robin
717c7420f9
Require ObservableScopes of state holders to be specified explicitly
...
Previously we had a ViewModel class which was responsible for little more than creating an ObservableScope. However, since this ObservableScope would be created implicitly upon view model construction, it became a tad bit harder for callers to remember to eventually end the scope (as you wouldn't just have to remember to end ObservableScopes, but also to destroy ViewModels). Requiring the scope to be specified explicitly by the caller also makes it possible for the caller to reuse the scope for other purposes, reducing the number of scopes mentally in flight that need tending to, and for all state holders (not just view models) to be handled uniformly by helper functions such as generateKeyed$.
2025-10-17 12:23:53 -04:00
Robin
2c66e11a0a
Fix connection tests
...
Removing one of these tests because it was doing a lot of work to test something that was made trivial in b0eb566a4f .
2025-10-14 16:04:52 -04:00
Robin
102e581c41
Serialize updates to the call intent
...
So that the value advertised in your membership can't desync from the actual value if you toggle video too fast.
2025-10-14 15:20:07 -04:00
Robin
b0eb566a4f
Simplify local transport connection state tracking
2025-10-14 14:43:13 -04:00
Robin
2dc6134606
Stick to the term 'transport' rather than 'focus'
2025-10-14 14:38:37 -04:00
Robin
ea17ed7253
Rename 'localTransport' to 'transport', since it's often remote
2025-10-14 14:34:51 -04:00
Robin
9f4e99310b
Elaborate on a TODO for preloading JWT tokens
2025-10-14 14:32:56 -04:00
Robin
625cfa15ff
Move sorting bin calculation into UserMedia
2025-10-14 14:31:35 -04:00
Robin
95069fd3fa
Fix joining call with audio and video muted
2025-10-14 12:19:23 -04:00
Robin
13636b78d9
Replace deprecated CallMembership.sender with userId
2025-10-14 12:07:51 -04:00
Robin
bcbf7a90f0
Initialize preferredTransport$ in a less unusual way
2025-10-14 12:00:00 -04:00
Robin
2de7a20d8a
Remove outdated comment
2025-10-14 11:54:36 -04:00
Robin
b030d304df
Fix crash during focus switching
2025-10-14 09:29:48 -04:00
Robin
392c51fbf6
Merge branch 'voip-team/rebased-multiSFU' of github.com:element-hq/element-call into voip-team/rebased-multiSFU
2025-10-14 09:22:08 -04:00
Robin
a18700cbcd
Avoid updating membership during focus switch
2025-10-14 09:16:46 -04:00
Robin
de5f5198dd
Merge branch 'livekit' into voip-team/rebased-multiSFU
...
Note that this effectively *reverts* 3ac2aa8526 because this branch now has what is a better UX (at least I think so): the in-call view is presented instantly when pressing the join button. Errors that occur during initial connection procedures will be surfaced more uniformly.
2025-10-09 16:44:12 -04:00
Robin
f9f2896a6a
Merge branch 'voip-team/rebased-multiSFU' of github.com:element-hq/element-call into voip-team/rebased-multiSFU
2025-10-09 16:37:48 -04:00
Robin
85ffe68d98
Remove outdated comment
2025-10-08 19:20:21 -04:00
Robin
2c576a7477
Clean up subscriptions in Connection tests
2025-10-08 19:09:27 -04:00
Robin
64c2e5911c
Update outdated comment
2025-10-08 19:09:08 -04:00
Robin
5be3b91509
Fix focus connection state typo, simplify its initialization
2025-10-08 19:09:03 -04:00
Robin
2d7e4247f3
Note a potential resource leak
2025-10-08 18:51:30 -04:00
Robin
00daf834b6
Remove local participant case (now enforced by types) from audio tests
2025-10-08 17:53:11 -04:00
Robin
dcc3ab641f
Remove MockedObject from mockMediaDevices type signature
2025-10-08 17:40:03 -04:00
Robin
dee06a4b70
Remove unused useIsEarpiece hook
2025-10-08 17:37:54 -04:00
Robin
3691e7120d
Restore a hidden 'null' state for the local transport/connection
2025-10-08 17:35:53 -04:00
Robin
8778be8351
Fix doc comment typo
2025-10-08 17:34:33 -04:00
Robin
e88474452f
Correct / document some missing bits in tests
2025-10-08 17:33:17 -04:00
Robin
b1d143720a
Add comments to Async
2025-10-08 17:08:51 -04:00
Robin
5da780ed30
Remove dead MuteStates file
...
It's been replaced by a refactored RxJS version living in src/state.
2025-10-08 16:43:43 -04:00
Robin
c96e81bfd3
Simplify type of audio participants exposed from CallViewModel
2025-10-08 16:42:36 -04:00
Robin
e346c8c148
Re-enable React strict mode
2025-10-08 16:39:27 -04:00
Robin
1a4b38cf93
Document ObservableScope.reconcile
2025-10-08 12:54:24 -04:00
Robin and GitHub
5835cd423e
Merge pull request #3517 from element-hq/renovate/github-actions
...
Update GitHub Actions
2025-10-08 10:19:22 -04:00
Robin
669bc76dd5
Replace calls to deprecated resolveActiveFocus
2025-10-08 01:04:58 -04:00
Robin
1fff71ace1
Actually leave the MatrixRTC session again
2025-10-03 21:00:45 -04:00
Robin
1820cac3f6
Create media items for session members not joined to LiveKit
2025-10-03 19:14:48 -04:00
Robin
86fb026be8
Turn multi-SFU media transport into a developer option
2025-10-03 14:43:22 -04:00
Robin and GitHub
71127a4e94
Merge pull request #3516 from element-hq/toger5/voip-team/rebased-multiSFU-bump-to-new-js-sdk-version
...
Use updated multi sfu js-sdk
2025-09-30 11:24:12 -04:00
Robin
a4a0a58a72
Remove the option to show non-member ("ghost") participants
...
As we'd like to get the multi-SFU feature branch shipped, this is not the most important debugging tool to expend effort on at the moment.
2025-09-26 13:27:18 -04:00
Robin
dbdf853d55
Stop connections on view model destroy
2025-09-26 13:20:55 -04:00
Robin
0759f9b27d
Don't render audio from participants that aren't meant to be publishing
2025-09-25 21:29:02 -04:00
Robin
4980d8a622
Merge branch 'livekit' into voip-team/rebased-multiSFU
2025-09-25 18:40:59 -04:00
Robin
530fbaf90a
Clear up the room membership confusion around reading session members
2025-09-24 21:39:36 -04:00
Robin
6cf020763e
Make UI react instantly to hanging up but also wait for leave sound
...
This ensures that we don't see a mistaken 'reconnecting' toast while we're hanging up (and also that the leave sound gets a chance to play in widgets once again).
2025-09-24 21:26:16 -04:00
Robin
edd3eb8747
Implement screen sharing
2025-09-24 13:54:54 -04:00
Robin
f99a256c86
Reset matrix-js-sdk to multi SFU branch
2025-09-24 13:53:39 -04:00
Robin
8e21ea6d51
Merge branch 'livekit' into voip-team/rebased-multiSFU
2025-09-24 10:12:26 -04:00
Robin and Timo K
e08f16f889
All my Friday work. Demoable!
2025-09-19 17:50:43 +02:00
Robin and Timo K
d46fe55a67
Import unfinished mute states refactor
2025-09-19 17:50:43 +02:00
Robin and Timo K
02f4c73759
Add my own local storage SFU config stuff too
2025-09-19 17:50:43 +02:00
Robin and Timo K
cb91f1ad4f
Make it actually join the session
2025-09-19 17:50:43 +02:00
Robin and Timo K
c6e8c94fd6
Fix makeFocus
2025-09-19 17:50:43 +02:00
Robin and Timo K
d9b6302bf7
Fix crash?
2025-09-19 17:50:43 +02:00
Robin and Timo K
35319dd6b5
Fix some errors in CallViewModel
2025-09-19 17:50:43 +02:00
4be395500f
Fix the interactivity of buttons while reconnecting or in earpiece mode ( #3486 )
...
* Fix the interactivity of buttons while reconnecting or in earpiece mode
When we're in one of these modes, we need to ensure that everything above the overlay (the header and footer buttons) is interactive, while everything obscured by the overlay (the media tiles) is non-interactive and removed from the accessibility tree. It's not a very easy task to trap focus *outside* an element, so the best solution I could come up with is to set tabindex="-1" manually on all interactive elements belonging to the media tiles.
* Write a Playwright test for reconnecting
* fix lints
Signed-off-by: Timo K <toger5@hotmail.de >
* fix test
Signed-off-by: Timo K <toger5@hotmail.de >
* enable http2 for matrx-rtc host to allow the jwt service to talk to the SFU
* remove rate limit for delayed events
* more time to connect to livekit SFU
* Due to a Firefox issue we set the start anchor for the tab test to the Mute microphone button
* adapt to most recent Element Web version
* Use the "End call" button as proofe for a started call
* Currrenty disabled due to recent Element Web
- not indicating the number of participants
- bypassing Lobby
* linting
* disable 'can only interact with header and footer while reconnecting' for firefox
---------
Signed-off-by: Timo K <toger5@hotmail.de >
Co-authored-by: Timo <16718859+toger5@users.noreply.github.com >
Co-authored-by: Timo K <toger5@hotmail.de >
Co-authored-by: fkwp <github-fkwp@w4ve.de >
2025-09-18 12:58:47 +02:00
Robin and GitHub
a2cf4c8139
Merge pull request #3479 from robintown/fix-reconnect
...
Fix the reconnect button
2025-09-12 15:05:47 +02:00
Robin
32cb8541f4
Actually fix the test flake
2025-09-10 16:42:09 +02:00
Robin and GitHub
62cfe09c7b
Merge pull request #3482 from element-hq/renovate/npm-vite-vulnerability
...
Update dependency vite to v6.3.6 [SECURITY]
2025-09-10 12:37:16 +02:00
Robin
8e32deaba5
Upgrade to Vite v7
...
To remove all the duplicate Rollup dependencies.
2025-09-10 12:31:03 +02:00
Robin
34a8977dd1
Increase timeout to hopefully avoid test flakes
2025-09-08 15:24:46 +02:00
Robin
db04cbfbfc
Fix type error
2025-09-08 14:58:46 +02:00
Robin and GitHub
c8d3d58940
Merge pull request #3400 from element-hq/robin/reactions-small
...
Prefer showing the reaction button at small screen widths
2025-09-08 14:54:51 +02:00
Robin
d85cf5f929
Fix the reconnect button
...
After a membership manager error, clicking the 'reconnect' button did nothing. This is because we were forgetting to clear the external error state, causing it to transition directly back to the same error state.
2025-09-08 14:21:38 +02:00
Robin
1e32b355ce
Ignore decline events from the local user
2025-09-05 21:22:32 +02:00
Robin
1193a22658
Fix tests
2025-09-05 14:49:37 +02:00
Robin
2541f810fa
Ensure that non-ringing notifications lead to a null pickup state
2025-09-05 14:36:27 +02:00
Robin and GitHub
7961bb35be
Merge pull request #3466 from element-hq/toger5/waitForNotificationAnswer
...
Add dialing/ringing state to CallViewModel (`callPickupState$`)
2025-09-05 14:11:37 +02:00
Robin
c599d6eae9
Make the CallEventAudioRenderer test stricter
2025-09-05 14:06:28 +02:00
Robin
e9c43856d0
Merge branch 'toger5/waitForNotificationAnswer' into toger5/call-pickup-state-decline-event
2025-09-03 17:59:16 +02:00
Robin
1e8b87408c
Document recently added URL parameters
2025-09-03 16:59:37 +02:00
Robin
1428df8567
Tentatively rename URL parameter to waitForCallPickup
2025-09-03 16:52:40 +02:00
Robin
b8acdc3cec
Tidy/correct the dialing/ringing tests
2025-09-03 16:51:35 +02:00
Robin
880e07c07f
Tidy some things up, refactor dialing/ringing behaviors
2025-09-03 16:51:31 +02:00
Robin
07522d6704
Remove unnecessary casts
2025-09-03 13:03:48 +02:00
Robin
58ed7ef93e
Merge branch 'livekit' into toger5/waitForNotificationAnswer
2025-09-03 13:01:14 +02:00
Robin and GitHub
c1694fe706
Merge pull request #3470 from element-hq/af/migrate-defer
...
Migrate from js-sdk's `defer` in test
2025-08-28 18:21:05 +02:00
Robin
7ba4df7781
Test sync loop status and membership status in reconnection test as well
2025-08-22 18:15:21 +02:00
Robin
db65a5308a
Make most params optional for call view model test setup
2025-08-22 18:14:25 +02:00
Robin
44ddb40eea
Iterate in pairing session
2025-08-20 20:47:20 +02:00
Robin
5b8839b577
Pause hand raise updates while in 'reconnecting' state
2025-08-20 19:08:44 +02:00
Robin
33bf63d8d2
Disable a bunch of media/event sources when reconnecting
2025-08-20 18:51:03 +02:00
Robin
a7cc11ac81
Merge branch 'livekit' into reconnecting
2025-08-20 14:13:03 +02:00
Robin and GitHub
25f04030fc
Merge pull request #3336 from element-hq/robin/switch-camera-tile
...
Move the switch camera button to the local user's tile
2025-08-20 13:38:44 +02:00
Robin
5d0289f3c9
Show 'reconnecting' message when session warns we've hit a timeout
...
By using the new 'probablyLeft' state provided by MatrixRTCSession.
2025-08-20 13:34:41 +02:00
Robin
3da9013426
Show 'reconnecting' message when disconnected from LiveKit
2025-08-20 13:34:36 +02:00
Robin
1a1e5a9db8
Show 'reconnecting' message when sync loop is disconnected
...
With this change I'm also taking care to not show the standard "Connection to the server has been lost" banner in the call view, since that is now covered by the 'reconnecting' message.
2025-08-20 13:34:26 +02:00
Robin
f8a051ee11
Address review feedback
2025-08-20 12:07:06 +02:00
Robin
8de6ddceb0
Test that media tracks are paused while reconnecting to MatrixRTC
2025-08-15 20:20:00 +02:00
Robin
8b3b72dfb4
Consolidate yes/no marbles into one definition
2025-08-15 20:19:18 +02:00
Robin
db59679ad4
Allow the local participant's RTC membership to be absent in tests
2025-08-15 20:18:21 +02:00
Robin
f08ae36f9e
Pause media tracks and show a message when reconnecting to MatrixRTC
2025-08-15 18:38:52 +02:00
Robin
dc789e63f2
Avoid using the deprecated 'room' field on MatrixRTCSession
2025-08-15 18:32:37 +02:00
Robin
30024877fc
Test that the reaction button is visible at small screen widths
2025-08-14 17:00:56 +02:00
Robin
aa0f3a1126
Merge branch 'robin/switch-camera-tile' into robin/reactions-small
2025-08-14 16:39:51 +02:00
Robin
0ed47c2588
Merge branch 'livekit' into robin/switch-camera-tile
2025-08-14 16:39:08 +02:00
Robin and GitHub
770346676c
Merge pull request #3443 from element-hq/toger5/js-to-ts
...
Use `.ts` for remaining js config files
2025-08-14 15:06:12 +02:00
Robin
8c1fa3fd70
Fix inaccurate copyright headers
2025-08-14 14:57:39 +02:00
Robin
217fa40ddb
Only forbid using console in application code
2025-08-14 14:57:20 +02:00
Robin and GitHub
5d992a398d
Merge pull request #3437 from element-hq/fkwp/doc/self-hosting_cleanup_backend_announcement
...
Cleanup self-hosting guide
2025-08-01 17:47:22 +02:00