Commit Graph
100 Commits
Author SHA1 Message Date
Robin d633ec5fcd Update docs for Yarn Berry 2025-03-14 03:23:37 -04:00
Robin 0b26dc2f43 Create a plugin for linking other packages 2025-03-14 03:23:37 -04:00
Robin 31fb916b9d Enable CI to use Yarn Berry 2025-03-14 03:23:37 -04:00
Robin 95b37ea341 Upgrade to Yarn Berry 2025-03-14 03:23:37 -04:00
Robin fee9841183 Remove the dependency on buffer
It's not generally available in browser environments / certain Yarn modes and can easily be replaced by TextEncoder.
2025-03-14 02:09:48 -04:00
RobinandGitHub 5547e838d3 Merge pull request #3080 from element-hq/robin/pin-matrix-js-sdk
Pin matrix-js-sdk to a specific commit
2025-03-12 05:06:10 -04:00
Robin 3cf0ce3dcb Pin matrix-js-sdk to a specific commit
Whenever we use a Git dependency, we should reference a specific tag or commit rather than a branch name, because Yarn Classic is bad at recognizing when a Git dependency needs to be re-installed due to it resolving to a new version. (It seems to simply use the version from package.json as a cache key.)

This is relevant only for developers who run 'yarn install' on top of a previously up-to-date working copy, not for CI which re-installs the project on every run.
2025-03-11 16:25:03 -04:00
RobinandGitHub b5f5ab329a Merge pull request #3051 from element-hq/robin/return-to-lobby
Respect the returnToLobby flag
2025-03-05 12:17:53 -05:00
RobinandGitHub 308d42980f Merge pull request #3054 from element-hq/robin/og-brand
Use the configured brand name in OpenGraph tags
2025-03-05 12:09:25 -05:00
RobinandGitHub 0ca2627bd4 Merge pull request #3055 from element-hq/robin/join-action
Send a 'join' action when entering the call
2025-03-05 12:09:16 -05:00
Robin 359812d8b1 Explain why returnToLobby is false in SPA 2025-03-05 10:40:37 -05:00
Robin 5b1ea4501d Send a 'join' action when entering the call
Following a75952cf77, this is one more upgrade to the widget communication that I'd like to make within this release cycle.

The motivating issue is https://github.com/element-hq/element-web/issues/29429. Fundamentally, without a 'join' action, the only info Element Web can use to determine whether it's joined the call is whether a MatrixRTC membership exists. But membership state events can inaccurately represent the client's actual state (whether because delayed events aren't supported, or because the delayed event hasn't timed out yet), so I suggest we send a 'join' action here just as we do in the Element Web Jitsi wrapper (https://github.com/element-hq/element-web/blob/e9a3625bd6e9a64f216e3caeabca66f48b649332/src/vector/jitsi/index.ts#L503) to let Element Web tap directly into the widget's local state. (This will need additional Element Web changes, but is certainly backwards compatible.)
2025-03-05 09:25:52 -05:00
Robin ec73e7fa86 Use the configured brand name in OpenGraph tags
Overlooked some of these when reviewing https://github.com/element-hq/element-call/pull/3006.
2025-03-05 09:18:31 -05:00
Robin 28c45c6107 Avoid closing the widget in returnToLobby mode
If returnToLobby is enabled then we obviously want to keep the widget open once the user leaves the call.
2025-03-05 07:32:25 -05:00
Robin b5f5edba09 Fix the control flow of GroupCallView render function
2bb5b020e6 refactored the end of the GroupCallView render function to not use any early returns, and clumsily failed to account for the fall-through case that makes returnToLobby work (as opposed to sitting on a blank screen).
2025-03-05 07:29:56 -05:00
RobinandGitHub 771397389c Prevent PRs with the X-Blocked label from being merged (#3041)
Copied from matrix-js-sdk (https://github.com/matrix-org/matrix-js-sdk/blob/develop/.github/workflows/pull_request.yaml#L31)
2025-03-05 10:44:10 +00:00
RobinandGitHub e783339557 Merge pull request #3035 from element-hq/renovate/all-minor-patch
Update all non-major dependencies
2025-03-04 00:14:56 -05:00
Robin 36203c2017 Work around LiveKit's overly constrained dependencies
We need compatible versions of RxJS in our dependencies and LiveKit's dependencies, but LiveKit has pinned it to a very specific version which is now holding us back from updating. See https://github.com/livekit/components-js/issues/1101 for a request for a proper solution.
2025-03-04 00:13:00 -05:00
Robin db9f255a4a Update formatting 2025-03-03 23:41:29 -05:00
RobinandGitHub 6d6852d5b0 Merge pull request #3006 from Harshal-Taori-11/livekit
Added OpenGraph and Twitter meta tags for better link previews
2025-03-03 23:37:10 -05:00
31577d7263 Show an error screen when the SFU is at capacity (#3022)
Co-authored-by: Hugh Nimmo-Smith <hughns@users.noreply.github.com>
Co-authored-by: fkwp <fkwp@users.noreply.github.com>
2025-02-26 12:00:56 +00:00
2bb5b020e6 Leave session when error occurs and show error screens in widget mode (#3021)
Co-authored-by: Hugh Nimmo-Smith <hughns@users.noreply.github.com>
2025-02-26 10:20:30 +00:00
RobinandGitHub cd05df3e33 Merge pull request #3020 from element-hq/robin/clarify-use-latest
Clarify what useLatest is for
2025-02-24 18:22:46 +07:00
Robin 9b59544db2 Clarify what useLatest is for
I was touching this file and noticed a chance to clean up this little TODO comment by swapping in our useLatest hook and giving it better documentation.
2025-02-24 18:18:15 +07:00
RobinandGitHub 91671d9ff1 Merge pull request #3019 from element-hq/robin/actually-hide-header
Actually hide the header on error pages
2025-02-24 17:47:22 +07:00
Robin e4d7baf7bb Actually hide the header on error pages
Currently, if you set hideHeader to true, you get a big empty <header> on error pages which serves no purpose except to push the screen's content off center.
2025-02-24 17:37:11 +07:00
RobinandGitHub 832a5aaf57 Merge pull request #3011 from element-hq/robin/close-action
Send a 'close' action when the widget is ready to close
2025-02-24 17:23:33 +07:00
Robin 518c8eadca Finish the hangup procedure even if widget API throws errors 2025-02-24 11:48:05 +07:00
RobinandGitHub 028b3104e4 Merge pull request #3009 from element-hq/renovate/livekit-client
Update dependency livekit-client to v2.9.1
2025-02-20 13:24:17 +07:00
Robin a75952cf77 Send a 'close' action when the widget is ready to close
By keeping 'hangup' and 'close' as separate actions, we can allow Element Call widgets to stay on an error screen after the user has been disconnected without the widget completely disappearing from the host's UI. We don't have to request any additional capabilities to use a custom widget action like this one.
2025-02-20 11:17:17 +07:00
RobinandGitHub e636542b1e Prevent new devices from automatically starting unmuted in call (#2959) 2025-01-17 15:30:28 +00:00
RobinandGitHub cda802a2e9 Make error screens more visually consistent (#2951) 2025-01-17 09:35:39 +00:00
RobinandGitHub c218dc2f36 Remember previous mute states when devices disappear and reappear (#2957) 2025-01-17 09:11:17 +00:00
RobinandGitHub 74d4556878 Merge pull request #2954 from element-hq/renovate/major-vitest-monorepo
Update vitest monorepo to v3 (major)
2025-01-16 15:49:34 -05:00
Robin e68593ec47 Upgrade to vitest 3.0.1 2025-01-16 15:47:53 -05:00
RobinandGitHub e79a32ac63 Merge pull request #2950 from element-hq/renovate/sentry-vite-plugin-3.x
Update dependency @sentry/vite-plugin to v3
2025-01-16 15:34:45 -05:00
RobinandGitHub 0f40cb77ad Merge pull request #2940 from element-hq/renovate/livekit-client
Update dependency livekit-client to v2.8.0
2025-01-10 11:43:43 -05:00
RobinandGitHub 8bfdd1f455 Merge pull request #2910 from robintown/widget-theme-change
React to theme changes in widget mode
2025-01-08 15:56:02 -05:00
Robin acd4a1f179 Fix tests 2025-01-08 11:41:44 -05:00
Robin c66b8c0fd3 Merge branch 'livekit' into widget-theme-change 2025-01-08 11:27:46 -05:00
Robin cdde53cc44 Bump matrix-widget-api 2025-01-08 11:27:33 -05:00
Robin e477c16a0b Fix lint errors 2025-01-02 13:32:39 -05:00
Robin 5d8804d7e8 React to theme changes in widget mode 2024-12-17 20:03:17 -05:00
RobinandGitHub e4bd9d7cf9 Merge pull request #2816 from robintown/firefox-audio-output
Support selection of audio output device when using Firefox
2024-12-16 10:14:27 -05:00
RobinandGitHub 65cf8bf3ee Merge pull request #2899 from robintown/array-performance
Skip some redundant updates to the grid and spotlight
2024-12-16 10:06:52 -05:00
Robin 25d0338f35 Skip some redundant updates to the grid and spotlight
While debugging our layout shift issue I learned that a single change to the sort order of the participants can cause 3 or 4 redundant emissions of the same items in the same order. Since each of these would cause React to re-render the grid, skipping these spurious emissions seems like an easy performance win.
2024-12-13 16:40:20 -05:00
Robin f9e3fe3176 Use observables for more of the media devices logic 2024-12-13 15:37:29 -05:00
Robin de276b1fc3 Annotate the default device with a label 2024-12-13 15:22:44 -05:00
Robin 9c57720852 Merge branch 'livekit' into firefox-audio-output 2024-12-13 14:55:27 -05:00
RobinandGitHub 0c66ec5d71 Merge pull request #2894 from robintown/stable-visibility
Determine which tiles are on screen in a more stable manner
2024-12-13 09:16:49 -05:00
Robin 53565ddb76 Test that participants adjust order when screen size changes 2024-12-12 19:16:01 -05:00
Robin 00056a7cd9 Determine which tiles are on screen in a more stable manner
Instead of tracking for each individual tile whether it's visible, just track the total number of tiles that appear on screen. This ought to make the whole thing a lot less dynamic, which is crucial given that our UI renders asynchronously and RxJS doesn't really support cyclic dependencies in any rigorous way.

In particular this ought to make the following kind of situation impossible:
1. There 3 tiles, ABC. A and B are on screen.
2. Now C becomes important. The requested order is now CAB.
3. To reduce the size of the layout shift, the algorithm selects to swap just B and C in the original order, giving ACB. However, the UI is blocked and doesn't render this order yet.
4. For whatever reason, a spurious update of the importance algorithm occurs. It once again requests CAB.
5. Now because the UI was blocked, the layout still thinks that A and B are on screen (rather than A and C). It thinks that C is some weird island of "off-screen territory" in the middle of the tile order. This confuses it into swapping A and C rather than keeping the layout stable.

The reality is that whenever we think N tiles are visible on screen, we're always referring to the first N tiles in the grid. It's best if the code reflects this assumption.
2024-12-12 18:00:59 -05:00
b834d8f679 Add some quick-and-dirty debug info for TileStore (#2887)
* Add some quick-and-dirty debug info for TileStore

I'm still in need of more detailed data in order to understand why big layout shifts happen in large calls. This adds a developer option to enable logging and a visual indicator for the state of the TileStore. The indicator should be useful for matching up the behavior I'm seeing in my recordings with the right timestamps.

* Reduce performance impact of checking for whether debug mode is enabled

---------

Co-authored-by: Hugh Nimmo-Smith <hughns@element.io>
2024-12-11 10:23:42 +00:00
RobinandGitHub f8f054a4f9 Merge pull request #2853 from element-hq/renovate/vite-6.x
Update dependency vite to v6
2024-12-10 13:23:52 -05:00
RobinandGitHub 22678a7c71 Merge pull request #2880 from element-hq/renovate/all-minor-patch
Update all non-major dependencies
2024-12-10 13:06:36 -05:00
Robin 8b19beae68 Fix lint errors 2024-12-10 13:05:09 -05:00
RobinandGitHub ad9114a6e4 Merge pull request #2833 from robintown/depluralize
Fix a singular string using the plural form
2024-11-22 13:58:12 -05:00
Robin 44e1c136df Fix a singular string using the plural form 2024-11-22 13:45:39 -05:00
RobinandGitHub 1bbbd519c7 Merge pull request #2831 from robintown/shortcut-modifiers
Don't trigger keyboard shortcuts if modifiers are held
2024-11-22 13:25:24 -05:00
Robin 51e4a3b14b Don't trigger keyboard shortcuts if modifiers are held
None of these keyboard shortcuts expect modifier keys, so they should in fact expect the absence of modifiers.
2024-11-22 13:17:05 -05:00
RobinandGitHub 13887a8943 Merge pull request #2817 from element-hq/renovate/compound
Update dependency @vector-im/compound-web to v7.4.0
2024-11-22 09:31:35 -05:00
Robin f249b7d463 Create a virtual default audio output
Managing your audio output manually is kind of cumbersome; Chrome creates a default audio output for us, but now that audio outputs are enabled on Firefox as well, I find it necessary for a good user experience that there always be a way to set it to "whatever the default is".
2024-11-21 14:43:30 -05:00
Robin e5117b962c Enable audio output support on Firefox 2024-11-21 12:53:27 -05:00
RobinandGitHub 720c400e5f Merge pull request #2802 from robintown/device-fall-back
Don't fall back as eagerly to unselected devices
2024-11-21 11:39:10 -05:00
Robin 0718774cef Clarify how preferred devices work 2024-11-21 11:32:15 -05:00
Robin a2b452c1d8 Don't override the camera without pressing "switch camera" 2024-11-21 11:24:45 -05:00
Robin 465a784345 Merge branch 'livekit' into device-fall-back 2024-11-21 11:04:36 -05:00
RobinandGitHub 8de96878c0 Merge pull request #2803 from robintown/device-radio
Replace device dropdowns with radio buttons
2024-11-21 10:47:44 -05:00
RobinandGitHub 380fa67f57 Merge pull request #2811 from robintown/revert-memory-store
Revert memory store and update matrix-js-sdk
2024-11-20 10:42:41 -05:00
Robin 8830bd74cb Update matrix-js-sdk
Return matrix-js-sdk to the develop branch.
2024-11-20 10:40:08 -05:00
Robin 3ab9bb72e2 Revert "Init client with a memory store (for MSC4222) (#2764)"
This reverts commit 83fa9661cf. We won't need this hack once we're no longer using a matrix-js-sdk branch with MSC4222 support.
2024-11-20 10:22:42 -05:00
Robin 38085baab8 Replace device dropdowns with radio buttons
This is closer to what the designs actually want device settings to look like, and it avoids the visual glitch in which the dropdown would render underneath the slider.
2024-11-20 09:44:32 -05:00
Robin 770730ba6c Don't fall back as eagerly to unselected devices
Somewhere around version 131 or 132, Firefox has started being more paranoid about media device fingerprinting, and will not even give you the IDs of available devices until you've requested a media stream. Instead you only get a single audio input and video input each with the empty string as their device ID, representing the system's default device. We can recognize this case and avoid resetting the device selection.
2024-11-19 13:26:40 -05:00
RobinandGitHub 585998cb87 Merge pull request #2800 from robintown/reactions-button
Update icon and label of reactions button
2024-11-19 10:44:58 -05:00
Robin 8ec2f9bb31 Update tests 2024-11-19 10:43:42 -05:00
Robin 2ee468ba44 Update icon and label of reactions button
They've been updated in the designs.
2024-11-19 09:56:46 -05:00
RobinandGitHub 90fe8e0529 Merge pull request #2734 from element-hq/renovate/compound
Update Compound
2024-11-19 09:48:17 -05:00
RobinandGitHub 88782a0332 Merge pull request #2772 from robintown/local-mute-icon
Show a different icon for participants that you've muted
2024-11-13 13:34:39 -05:00
Robin 9eae1f4145 Show a different icon for participants that you've muted
As a non-intrusive way to help you remember when you've locally muted a participant (so you're less likely to be confused about not hearing their audio), we can show a different icon on the tile.
2024-11-13 11:10:26 -05:00
RobinandGitHub 6c24763196 Merge pull request #2759 from robintown/msc4222
Bump matrix-js-sdk for MSC4222 support
2024-11-12 07:22:49 -05:00
RobinandGitHub 854e0ab7ae Decrypt potential reaction events before checking their type (#2761)
By rights, this fix I had made to decrypt reaction events shouldn't have appeared successful, because I was requiring the event to have a certain type before asking matrix-js-sdk to decrypt it, and you can't know an event's type before it's decrypted. Probably what was happening is that another code path was requesting the events to be decrypted so that this mistake didn't matter.
2024-11-12 10:05:01 +01:00
Robin 20976e1ee3 Bump matrix-js-sdk for MSC4222 support 2024-11-11 18:01:28 -05:00
RobinandGitHub 4b2d8403d7 Merge pull request #2748 from element-hq/renovate/all-minor-patch
Update all non-major dependencies
2024-11-11 12:37:41 -05:00
RobinandGitHub 8465bb4c13 Switch back to a normal Compound Web release (#2755)
https://github.com/element-hq/compound-web/pull/272 got merged and released.
2024-11-11 16:56:13 +00:00
RobinandGitHub 464cb16409 Merge pull request #2754 from robintown/footer-fix
Fix footer not adapting to narrow windows
2024-11-11 11:11:23 -05:00
Robin a045cc042b Fix footer not adapting to narrow windows
This CSS block was added last week but seems to have become lost along the way in a merge.
2024-11-11 11:04:49 -05:00
RobinandGitHub 29469501db Merge pull request #2749 from element-hq/hs/css-fixes-for-reactions
Small improvements for reaction rendering
2024-11-11 09:19:51 -05:00
RobinandGitHub a6efdf004f Merge pull request #2752 from robintown/one-on-one-crash
Make one-on-one layout less prone to crashing
2024-11-11 09:06:05 -05:00
Robin 50d380cf37 Make one-on-one layout less prone to crashing
The basic issue here, I think, was that the 'oneOnOne' observable flag and the 'onOnOneLayout' observable could become out of sync, as RxJS does *not* have atomicity guarantees. We can work around this by combining them into one observable.
2024-11-11 08:25:16 -05:00
RobinandGitHub b22d2dba5f Merge pull request #2747 from robintown/decrypt-reactions
Decrypt reaction events
2024-11-10 13:15:21 -05:00
Robin 97aeb18a24 Decrypt reaction events 2024-11-10 11:20:04 -05:00
RobinandGitHub e79cae820f Merge pull request #2744 from robintown/element-call-nov-preview
Bump matrix-js-sdk and matrix-widget-api
2024-11-09 08:31:35 -05:00
RobinandGitHub 2bf08c8fb3 Merge pull request #2743 from robintown/mobile-tooltips
Use temporary Compound Web release for mobile tooltip improvements
2024-11-09 08:31:31 -05:00
Robin ca63035dc1 Bump matrix-js-sdk and matrix-widget-api
This bumps matrix-js-sdk to a preview branch that includes https://github.com/matrix-org/matrix-js-sdk/pull/4498 and https://github.com/matrix-org/matrix-js-sdk/pull/4494, and matrix-widget-api to 1.10.0.
2024-11-09 08:11:06 -05:00
Robin 942e07f103 Use temporary Compound Web release for mobile tooltip improvements
I put up a temporary build of https://github.com/element-hq/compound-web/pull/272 for us to use.
2024-11-08 16:39:29 -05:00
RobinandGitHub 022367ec2e Merge pull request #2737 from robintown/footer-hide-show
Improve interactions to hide/show the footer
2024-11-08 14:31:17 -05:00
RobinandGitHub 56e736b0ee Merge pull request #2732 from element-hq/hs/add-volume-effect-level
Add sound effect volume slider
2024-11-08 13:19:58 -05:00
Robin 3e1e08c883 Fix type error 2024-11-08 13:18:36 -05:00
Robin 68d71a8329 Improve interactions to hide/show the footer
This fixes a few different usability issues with the footer:

- When tapping one of the footer buttons, the footer would be dismissed rather than activating the button.
- When the footer was hidden, you could still tap the buttons.
- Interacting with controls in the footer would not reset the timer that hides it, leading to a feeling that the footer can disappear out from under you.
2024-11-08 12:52:55 -05:00
RobinandGitHub 1df2e0c48f Merge pull request #2738 from robintown/narrow-footer
Make the footer display more nicely on narrow screens
2024-11-08 12:46:29 -05:00