Commit Graph
100 Commits
Author SHA1 Message Date
RobinandGitHub 3b38a5322c Give tiles a minimum area rather than a minimum width and height (#2513)
This seems to result in more sensible cropping and allocation of space across the board, in my testing.
2024-07-26 12:50:44 +02:00
RobinandGitHub d062871f41 Don't consider microphone mute state in importance ordering (#2515)
We're finding that if we reorder participants based on whether their mic is muted, this just creates a lot of distracting layout shifts. People who speak are automatically promoted into the speaker category, so there's little value in additionally caring about mute state.
2024-07-26 11:27:22 +02:00
RobinandGitHub 2de4705fa7 Merge pull request #2509 from robintown/icon-imports
Import Compound icons in the new recommended way
2024-07-25 14:26:41 -04:00
Robin 12e233970c Import Compound icons in the new recommended way
The Compound design tokens package is now set up to generate React components for every icon, so we no longer need to use our more error-prone method of importing the SVGs.
2024-07-25 13:15:45 -04:00
RobinandGitHub 10b915c707 Merge pull request #2501 from robintown/layout-reactivity
Make layout reactivity less brittle
2024-07-25 12:51:39 -04:00
Robin 5544695f21 Use clearer names 2024-07-25 12:50:28 -04:00
RobinandGitHub 63afda05bc Merge pull request #2502 from robintown/shortcut-a11y
Improve accessibility of keyboard shortcuts
2024-07-25 08:24:13 -04:00
Robin 380f49fccc Improve accessibility of keyboard shortcuts
Ensure that they don't interfere with say, using spacebar to press a button, and also ensure that they won't do surprising things like scroll the page at the same time.
2024-07-24 18:42:21 -04:00
Robin 447bac3280 Make layout reactivity less brittle
Follow-up to ea2d98179c

This took a couple of iterations to find something that works without creating update loops, but I think that by automatically informing Grid whenever a layout component is re-rendered, we'll have a much easier time ensuring that our layouts are fully reactive.
2024-07-24 17:03:27 -04:00
RobinandGitHub c74cebcc4b Merge pull request #2492 from element-hq/renovate/all-minor-patch
Update all non-major dependencies
2024-07-24 14:17:48 -04:00
RobinandGitHub 9cbd146e24 Merge pull request #2491 from element-hq/renovate/matrix-widget-api
Update dependency matrix-widget-api to v1.7.0
2024-07-24 11:14:46 -04:00
Robin 509bb4f1b0 Use LTS Node in CI 2024-07-24 11:12:36 -04:00
Robin 3be3a32f3d Update TypeScript target to match matrix-js-sdk
And work around https://github.com/microsoft/TypeScript/issues/55132
2024-07-24 11:07:46 -04:00
Robin 17adfc5777 Upgrade matrix-js-sdk 2024-07-24 10:17:47 -04:00
RobinandGitHub 35e2d2c432 Merge pull request #2494 from robintown/spotlight-fix
Quick and dirty fix to spotlight reactivity
2024-07-22 10:55:20 -04:00
Robin ea2d98179c Quick and dirty fix to spotlight reactivity 2024-07-22 10:52:20 -04:00
RobinandGitHub 4173fd113b Merge pull request #2485 from element-hq/new-call-layouts
New call layouts
2024-07-19 09:08:51 -04:00
Robin 507b1fc52d Merge branch 'livekit' into new-call-layouts 2024-07-18 11:38:35 -04:00
RobinandGitHub 6812c35a40 Merge pull request #2463 from robintown/rest-of-the-layouts
Implement most of the remaining layout changes
2024-07-18 11:34:47 -04:00
Robin 377b7ff5de Explain each layout 2024-07-18 11:33:20 -04:00
Robin 4955535374 Use more consistent names for layout types 2024-07-18 11:24:18 -04:00
Robin 0664f978e3 Merge branch 'new-call-layouts' into rest-of-the-layouts 2024-07-18 11:21:56 -04:00
RobinandGitHub bcc06d86ff Merge pull request #2417 from robintown/one-on-one-layout
New one-on-one layout
2024-07-18 11:09:11 -04:00
Robin 7526826b0c Improve aspect ratios on mobile 2024-07-18 11:01:21 -04:00
Robin b4e0df75c0 Merge branch 'new-call-layouts' into one-on-one-layout 2024-07-18 10:28:17 -04:00
RobinandGitHub d561a41666 Merge pull request #2416 from robintown/grid-spotlight-speaker
Show speaker in the spotlight in large grids
2024-07-18 10:17:31 -04:00
Robin e04affe93e Justify the use of a participant count threshold 2024-07-18 10:00:26 -04:00
RobinandGitHub 24870deead Merge pull request #2382 from robintown/spotlight-layout
New spotlight layout
2024-07-18 08:50:31 -04:00
Robin 7fcd7125c1 Merge branch 'new-call-layouts' into spotlight-layout 2024-07-18 08:48:50 -04:00
Robin 1efa594430 Use Array.some where it's appropriate 2024-07-17 16:06:48 -04:00
RobinandGitHub caea4b250e Merge pull request #2381 from robintown/observable-hooks
Replace react-rxjs with observable-hooks
2024-07-17 15:56:31 -04:00
Robin 0a8c6c1454 Merge branch 'new-call-layouts' into observable-hooks 2024-07-17 15:55:50 -04:00
RobinandGitHub d4a2617f7b Merge pull request #2380 from robintown/pin-always-show
Add toggle to always show yourself
2024-07-17 15:45:29 -04:00
RobinandGitHub e05c6f1bdf Merge pull request #2369 from robintown/duplicate-tiles
Add a developer option to duplicate tiles
2024-07-17 15:41:53 -04:00
Robin 2bc56dbff2 Use fewer ML-style variable names 2024-07-17 15:40:02 -04:00
Robin a59875dab5 Explain what each sorting bin means 2024-07-17 15:37:41 -04:00
Robin 8c21e8f277 Use a more descriptive string 2024-07-17 14:55:45 -04:00
RobinandGitHub d8634eed3d Merge pull request #2484 from element-hq/renovate/react-i18next-15.x
Update dependency react-i18next to v15
2024-07-17 13:14:11 -04:00
Robin 2440037639 Implement most of the remaining layout changes
Includes the mobile UX optimizations and the tweaks we've made to cut down on wasted space, but does not yet include the change to embed the spotlight tile within the grid.
2024-07-12 15:50:17 -04:00
Robin a16f235277 Fix crash in spotlight mode while connecting
Because we were hiding even the local participant during initial connection, there would be no participants, and therefore nothing to put in the spotlight. The designs don't really tell us what the connecting state should look like, so I've taken the liberty of restoring it to its former glory of showing the local participant immediately.
2024-07-12 15:49:45 -04:00
Robin 45c89a2298 Delete the legacy grid system 2024-07-12 15:49:43 -04:00
Robin 7979493371 Implement the new one-on-one layout 2024-07-12 15:47:56 -04:00
Robin e0b10d89b5 Add model for one-on-one layout 2024-07-12 15:47:56 -04:00
Robin 183d2d9050 Show speaker in the spotlight in large grids 2024-07-12 15:47:35 -04:00
Robin 12b719da95 Make layout reactivity a little more fine-grained 2024-07-12 15:47:00 -04:00
Robin dfda7539d6 Only switch to spotlight for remote screen shares 2024-07-12 15:47:00 -04:00
Robin 7f40ce8dde Fix advance buttons showing up for the spotlight speaker 2024-07-12 15:47:00 -04:00
Robin ec1b020d4e Add indicators to spotlight tile and make spotlight layout responsive 2024-07-12 15:47:00 -04:00
Robin 54c22f4ab2 Clean up spotlight tile code 2024-07-12 15:47:00 -04:00
Robin ffbbc74a96 Implement the new spotlight layout 2024-07-12 15:47:00 -04:00
Robin 34c45cb5e2 Get the right grid offset even when offsetParent is a layout element 2024-07-12 15:47:00 -04:00
Robin af0bd795b5 Replace react-rxjs with observable-hooks
react-rxjs is the library we've been using to connect our React components to view models and consume observables. However, after spending some time with react-rxjs, I feel that it's a very heavy-handed solution. It requires us to sprinkle <Subscribe /> and <RemoveSubscribe /> components all throughout the code, and makes React go through an extra render cycle whenever we mount a component that binds to a view model. What I really want is a lightweight React hook that just gets the current value out of a plain observable, without any extra setup. Luckily the observable-hooks library with its useObservableEagerState hook seems to do just that—and it's more actively maintained, too!
2024-07-12 15:46:33 -04:00
Robin 0d485ef97f Use always show flag in importance ordering 2024-07-12 15:43:24 -04:00
Robin 5647619b36 Add always show toggle to the UI 2024-07-12 15:43:24 -04:00
Robin 8a414012a0 Add always show flag to view model 2024-07-12 15:43:24 -04:00
Robin e33fbd77d1 Split local and remote user media into different classes 2024-07-12 15:43:24 -04:00
Robin fdc6d4a1b6 Add a developer option to duplicate tiles
This is useful for testing how the UI behaves with different numbers of participants.
2024-07-12 14:55:29 -04:00
RobinandGitHub a534356dd9 Merge pull request #2368 from robintown/settings-refactor
Refactor settings to use observables
2024-07-12 14:50:46 -04:00
RobinandGitHub f847692953 Merge pull request #2325 from robintown/unified-grid
Unified grid layout
2024-07-12 14:50:35 -04:00
RobinandGitHub 486430d1f0 Merge pull request #2478 from element-hq/renovate/compound
Update dependency @vector-im/compound-design-tokens to v1.6.0
2024-07-12 14:19:29 -04:00
Robin 599d6fd007 Address review feedback 2024-07-12 14:15:27 -04:00
Robin 14fc1481f3 Address some review feedback 2024-07-12 14:01:32 -04:00
RobinandGitHub 82a56c8204 Merge pull request #2471 from element-hq/renovate/major-vitest-monorepo
Update dependency vitest to v2
2024-07-09 10:42:23 -04:00
Robin 41083c0f9e Refactor settings to use observables
Also removing some unused settings along the way.
2024-07-03 15:29:32 -04:00
Robin 20602c122b Implement the new unified grid layout
Here I've implemented an MVP for the new unified grid layout, which scales smoothly up to arbitrarily many participants. It doesn't yet have a special 1:1 layout, so in spotlight mode and 1:1s, we will still fall back to the legacy grid systems.

Things that happened along the way:
- The part of VideoTile that is common to both spotlight and grid tiles, I refactored into MediaView
- VideoTile renamed to GridTile
- Added SpotlightTile for the new, glassy spotlight designs
- NewVideoGrid renamed to Grid, and refactored to be even more generic
- I extracted the media name logic into a custom React hook
- Deleted the BigGrid experiment
2024-07-03 15:29:08 -04:00
RobinandGitHub 5ad2a27a92 Merge pull request #2462 from element-hq/renovate/github-actions
Update docker/build-push-action action to v6.3.0
2024-07-03 15:25:13 -04:00
RobinandGitHub 8a6101cd14 Merge pull request #2456 from element-hq/renovate/all-minor-patch
Update all non-major dependencies
2024-06-24 10:37:18 -04:00
Robin 4db7c2bc68 Fix type errors 2024-06-24 10:31:50 -04:00
RobinandGitHub 0c39398493 Merge pull request #2447 from element-hq/renovate/compound
Update dependency @vector-im/compound-design-tokens to v1.3.0
2024-06-21 10:39:03 -04:00
RobinandGitHub 949145f04b Merge pull request #2446 from element-hq/renovate/major-testing-library-monorepo
Update dependency @testing-library/react to v16
2024-06-21 10:32:30 -04:00
Robin 8578dcadf2 Add missing peer dependencies 2024-06-21 10:30:39 -04:00
RobinandGitHub a031c0e128 Merge pull request #2445 from element-hq/renovate/major-sentry-javascript-monorepo
Update dependency @sentry/react to v8
2024-06-21 10:25:04 -04:00
Robin 591833505f Adapt to breaking changes 2024-06-21 10:23:30 -04:00
RobinandGitHub f7ad5074d8 Merge pull request #2452 from element-hq/renovate/i18next-parser-9.x
Update dependency i18next-parser to v9
2024-06-21 10:14:39 -04:00
RobinandGitHub e0aef74bf5 Merge pull request #2454 from element-hq/renovate/uuid-10.x
Update dependency uuid to v10
2024-06-21 10:13:01 -04:00
RobinandGitHub 255f6b1814 Merge pull request #2451 from element-hq/renovate/i18next-browser-languagedetector-8.x
Update dependency i18next-browser-languagedetector to v8
2024-06-21 10:11:59 -04:00
RobinandGitHub 4c491b5363 Merge pull request #2450 from element-hq/renovate/eslint-plugin-unicorn-54.x
Update dependency eslint-plugin-unicorn to v54
2024-06-21 10:11:23 -04:00
RobinandGitHub 61c808d4cf Merge pull request #2455 from element-hq/renovate/github-actions
Pin dependencies
2024-06-21 10:00:40 -04:00
Robin 13ef3183e2 Tell Renovate that we're trying to pin actions to specific tags
It thought that we were just trying to follow the latest commit on these actions, when in reality we want to follow the latest tag and pin its commit hash.
2024-06-21 09:57:48 -04:00
RobinandGitHub 982181ccd4 Merge pull request #2444 from robintown/more-renovate
Refine Renovate config further
2024-06-21 09:10:16 -04:00
Robin c46549b2b6 Refine Renovate config further
By getting it to pin GitHub Actions to specific commits, which hardens our workflows, and fixing a warning about matchPackageNames
2024-06-20 16:00:52 -04:00
RobinandGitHub 8fa038c61f Merge pull request #2441 from robintown/renovate-noise
Reduce noise coming from Renovate updates
2024-06-20 15:44:38 -04:00
Robin 869d9b43cb Reduce noise coming from Renovate updates
What I've tried to do here is to group most dependency updates together and put them on a weekly schedule. Some of our more sensitive dependencies such as LiveKit and Compound have been put into separate groups, so we still receive frequent updates for them.
2024-06-20 15:43:21 -04:00
RobinandGitHub 974a2fe49b Merge pull request #2438 from element-hq/dependabot/npm_and_yarn/ws-8.17.1
Bump ws from 8.16.0 to 8.17.1
2024-06-20 11:00:16 -04:00
RobinandGitHub 207a5f047c Merge pull request #2430 from robintown/update-js-sdk
Update matrix-js-sdk
2024-06-20 10:54:27 -04:00
Robin d3c63f9314 Update matrix-js-sdk
To pull in https://github.com/matrix-org/matrix-js-sdk/pull/4252
2024-06-20 10:52:06 -04:00
RobinandGitHub f9ef037cea Merge pull request #2435 from element-hq/hughns/visibilitychange
Use correct DOM event name for visibility changes in useWakeLock
2024-06-20 10:19:05 -04:00
RobinandGitHub 53d1f717c9 Merge pull request #2406 from element-hq/renovate/testing-library-monorepo
Update dependency @testing-library/react to v14.3.1
2024-06-04 12:11:35 -04:00
RobinandGitHub 0a69664186 Merge pull request #2405 from element-hq/renovate/sentry-vite-plugin-2.x-lockfile
Update dependency @sentry/vite-plugin to v2.18.0
2024-06-04 12:10:26 -04:00
RobinandGitHub 51a8d2b718 Merge pull request #2404 from element-hq/renovate/opentelemetry-instrumentation-user-interaction-0.x
Update dependency @opentelemetry/instrumentation-user-interaction to ^0.38.0
2024-06-04 12:00:35 -04:00
RobinandGitHub 2d76a3780d Merge pull request #2402 from element-hq/renovate/vite-5.x-lockfile
Update dependency vite to v5.2.12
2024-06-04 11:59:30 -04:00
RobinandGitHub 03144783ac Merge pull request #2401 from element-hq/renovate/prettier-3.x-lockfile
Update dependency prettier to v3.3.0
2024-06-04 11:59:03 -04:00
RobinandGitHub b9ab2fdf1b Merge pull request #2293 from element-hq/renovate/opentelemetry-instrumentation-document-load-0.x
Update dependency @opentelemetry/instrumentation-document-load to ^0.38.0
2024-06-04 11:58:28 -04:00
RobinandGitHub 183a1845bb Merge pull request #2292 from element-hq/renovate/i18next-browser-languagedetector-7.x-lockfile
Update dependency i18next-browser-languagedetector to v7.2.1
2024-06-04 11:58:08 -04:00
RobinandGitHub e423fc0ace Merge pull request #2231 from element-hq/renovate/grecaptcha-3.x-lockfile
Update dependency @types/grecaptcha to v3.0.9
2024-06-04 11:57:39 -04:00
RobinandGitHub 40cbe5408e Merge pull request #2403 from element-hq/renovate/react-monorepo
Update react monorepo
2024-06-04 11:56:52 -04:00
RobinandGitHub bd7209cd40 Merge pull request #2250 from element-hq/renovate/typescript-eslint-monorepo
Update typescript-eslint monorepo to v7.12.0
2024-06-04 11:21:59 -04:00
Robin 70fdc68b13 Fix lints 2024-06-04 11:20:25 -04:00
RobinandGitHub 1f4139ae0a Merge pull request #2271 from element-hq/renovate/lodash-4.x-lockfile
Update dependency @types/lodash to v4.17.4
2024-06-04 10:35:10 -04:00
RobinandGitHub b8ad8baf9d Merge pull request #2335 from element-hq/renovate/i18next-http-backend-2.x-lockfile
Update dependency i18next-http-backend to v2.5.2
2024-06-04 10:34:44 -04:00