* Fix credentials fixture when used with MAS
Without this it'd be using a Native OAuth2 session token but Element Web wouldn't know it was OAuth2-native and thus things like logout were broken
* Test by augmenting the dehydration test which previously failed using the `user` fixture
* Discard changes to apps/web/playwright/e2e/crypto/dehydration-mas.spec.ts
* Fetches link previews for all links in message (instead of just the first one)
* message url component to display preview for multiple urls
* Revert visible behaviour back to only showing one URL preview
While fetching all link previews in the text message.
* Moved URL preview VM to MessageComposer
* Added com.beeper.linkpreviews to messages sent with the markdown compositor
* MSC 4452 implemented for the older (markdown) composer
* claude told me to use logger instead of console
* Previews generated with snapshot instead of vm
* moved attachPreviews to a separate file
* added attach URL previews to rich text editor
* don't let attachUrlPreviews block clearning the composer
* fixed linter errors
* moved url preview behind labs feature gate
* passed linters
* moved lab feature checking to where attach preview is used
* claude wrote some unit tests for url previewing
* fixed linter errors
* added feature to labs.md
* fixed linter errors
* fixed oxfmt error
* set previews to none if all previews failed
* resolved PR reviews besides the ones that requires a larger code change
* moved url preview VM creation to message composer
* removed delay when clearing composer url preview on message send
* minor changes to stop using globals everywhere
* moved debouncing responsibility to urlpreviewVM
* minor lint fixes
* added comment
* remove composer content from the state of urlpreview, moved it to the vm
* urlpreviewwrapper depends on the vm only
* added comments
* edited the comment
* updated snapshots
* claude fixed tests
* enable feature for tests that requires MSC4095
* updated snapshot
* Add a common view snapshot type
This will contain the common snapshot values used by both dm ongoing
call tile view and room ongoing call tile view.
* Implement the common join button component
* Implement the call icon component
* Implement the common container component
* Support single digit minutes in existing clock component
* Implement the view for duration component
* Add static profile pics to be used in storybook tests
* Implement view for member avatar component
* Implement view for face pile component
* Implement RoomOngoingCallTileView
* Implement DmOngoingCallTileView
* Support the new tiles in RootTileView
* Export all the views
* Update all the screenshots
* Implement view model for duration view
* Implement vm for face pile view
* Implement vm for member avatar view
* Expose call store via the sdk context
* Add method to get all calls in store
* Add store to track latest notification event per room
* Also expose new store via sdk context
* Create a base vm for both tiles
* Implement the room ongoing call tile vm
* Implement the dm ongoing call tile vm
* Support new tile vms in the root tile vm
* Rename getCallInRoom -> getCallOrThrow
* Change confusing comment in test
* Check existing events first and use decryption promise
* Clarify recompute vs update in code comment
* Use vi.mocked instead of ts-ignore
* Change type of size to number
* Import only the type
* Pass size as number instead of string
* Check if call is jistsi call in root tile
* Add more tests
* Rename isCallIgnored -> isCallDeclined
* Add a comment about the 10px margin
* Add comments to explain css heights and widths
* Clarify translation rules around english key changes
Hopefully clarifying the position of why we'd like PRs for english string changes
* Update translating-dev.md
* Update pnpm
* Update js-sdk lock
* Switch from corepack to a manual pnpm install in docker otherwise it gets upset when js-sdk has a different pnpm version
* Fix pnpm install
* Fix pnpm install
* Install yarn separately now that we no longer corepack
* Iterate
* Satisfy pnpm audit
* Fix bad merge conflict
* Add a common view snapshot type
This will contain the common snapshot values used by both dm ongoing
call tile view and room ongoing call tile view.
* Implement the common join button component
* Implement the call icon component
* Implement the common container component
* Support single digit minutes in existing clock component
* Implement the view for duration component
* Add static profile pics to be used in storybook tests
* Implement view for member avatar component
* Implement view for face pile component
* Implement RoomOngoingCallTileView
* Implement DmOngoingCallTileView
* Support the new tiles in RootTileView
* Export all the views
* Update all the screenshots
* Add a comment about the 10px margin
* Add comments to explain css heights and widths
* Add user status in user info right panel card
Adds a very simple view component to do so, which will be reused
in the DM room header.
Also comment the other status view so the difference is clear.
* Add screenshot
* Add test
* Rename snapshot
* Expose SDKContextClass via window for debugging
* Remove stores from window if they are exposed via sdkContext
* Avoid usages of global store instance where React context is accessible
* Fix tests by adding SDKContext.Provider
* Fix tests by adding SDKContext.Provider
* Fix tests by adding SDKContext.Provider
* Fix tests by adding SDKContext.Provider
* Iterate
* Discard changes to apps/web/src/components/views/elements/AppTile.tsx
* Avoid snapshot in metaspaces order test
Just assert the thing we're actually testing rather than a snapshot
because I keep having to update this snapshot every time anything in
the left panel changes and it's tedious.
* 🐂
* Get all the button roles instead
* Favourites & people are gone
* Query treeitems and then get the buttons from them
* Add back Favourites and Low Priority filter into shared components
* Wireup RoomList.showSections and filters in room list vm
* Add e2e test for filters and showSection setting
* Center long user ids in the user menu
The span itself was centered but the text wasn't centered in the span
so long user IDs would be left justified once they wrapped onto two
lines.
* Update screenshot
* Snapshot
* Adapt OAuth2 implementation to Matrix Spec v1.18
* Handle more cases of oidc->oauth
* Fix test
* Fix read back of oauth2 context
* Iterate
* Fix tests
* Discard changes to apps/web/playwright/e2e/settings/account-user-settings-tab.spec.ts
* Fix test
* Fix test
* Fix test
* Potential fix for pull request finding 'Unused variable, import, function or class'
Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
* Iterate
* Iterate
* Fix test
---------
Co-authored-by: Copilot Autofix powered by AI <223894421+github-code-quality[bot]@users.noreply.github.com>
* Implement tombstone tile view for a room
* Implement tombstone tile view for a DM
* Implement root call tile view
* Export all the views
* Add screenshots
* Remove old view code
* Implement vm for tombstone tile in a room
* Implement vm for tombstone tile in a DM
* Implement root tile vm
* Use new tile in the event factory
* Remove old vm
* Exclude mock code from code checks
* Change `feature_group_calls` to default to true.
Change state to Beta
* Add `enableLegacyCallsVoip` (clarify: Audio settings relate to Legacy)
Change `element_call.use_exclusively` to just be the default of
`enableLegacyCallsVoip`.
Allow disabling in Legacy in the settings. (overwrite `use_exclusivly`
via `enableLegacyCallsVoip`)
Rename `Voice & Video` to `Legacy Voice & Video`
* improvements
- settings title update to only show legacy when appropriate
- hide menu all together if use_exclusivly is chosen
* simplify by removing the feature_group_calls flag
* smaller cleanup
* fix tests and cleanup
* clarify settings (disable) in config.md
* add back EC relevant settings in room settings dialog
* update screenshots (now default to EC enabled (not disabled)
-> show voice and video tab in room settings
* update screenshots
* always show option to control voice messages input
* lint
* fix test
* disable -> enabled And only have on mic dropdown
* update config.md
* Back to `disabled` (on by default/no config)
* remove element call hint from voice-video settings
* Update apps/web/src/i18n/strings/en_EN.json
Co-authored-by: Robin <robin@robin.town>
* Update apps/web/src/components/views/settings/tabs/user/VoiceUserSettingsTab.tsx
Co-authored-by: Robin <robin@robin.town>
* review
* cleanup element call url setting (its deprecated/not used anymore)
* clarify, that also jisti will be enabled/disabled by legacy settings
flag
* remove double section
* remove unn exassary element_call configurations
* Update en_EN.json
* Update VoiceUserSettingsTab.tsx
* Make tests use new defaults (enable element call)
* Default events power levels
* format
* review "Enable Legacy voice/video calls" label
* more radical usage of defaults in element_call config.json's
* Update config.json
* Update en_EN.json
* Update RoomSettingsDialog-test.tsx.snap
* Update useRoomCall.tsx
* fix imports
* Update request permission promp to latest designs:
https://www.figma.com/design/aOEkaJtaBmPy058V7uoqVr/Element-Call-Updates---2026?node-id=45-12591&t=7takL39icZwt9YjL-0
* Update config.json.d.ts
* fix usage of `Element` in i18n
* Update General-room-settings-tab-should-be-rendered-properly-1-linux.png
---------
Co-authored-by: Robin <robin@robin.town>