* Fix soft crash of room list when trying to open a room (#32864)
* fix: soft crash of room list trying to get item vm
* test: add test to check roomMap recovery and cleared when needed
(cherry picked from commit 9358096ac6)
* test: fix room list vm usage in test
https://github.com/element-hq/element-web/pull/32819 has renamed the vm
but this PR isn't in the base branch of the backport
---------
Co-authored-by: Florian Duros <florianduros@element.io>
Co-authored-by: Florian Duros <florian.duros@ormaz.fr>
* feat: add section header
* refactor: remove index and role related to list box from RoomListItemView
* feat: add wrapper to RoomListItemView to handle different accessiblity pattern
* feat: add section support to VirtualizedRoomListView
* feat: add sections support to RoomListView
* test: add screenshot for sections header
* test: add/update screenshots for sections
* feat: force flat list on view model
This is an intermediary step before implementing sections in the vm. We
force the flat list but we use the underneath the view supporting
sections.
* test: update RoomListViewModel test
* test: fix breaking test
* chore: rename `getSectionViewModel` to `getSectionHeaderViewModel`
* chore: add missing `RoomListItemAccessibilityWrapper` export
* chore: merge `react` imports
* chore: simplify and add comment to `getItemKey` and `getHeaderKey`
* chore add comments to `getItemComponent` variants
* chore: fix typo in example doc
* Port over linkifyJS to shared-components.
* Drop rubbish
* update lock
* quickfix test
* drop group id
* Modernize tests
* Remove stories that aren't in use.
* Complete working version
* Add copyright
* tidy up
* update lock
* Update snaps
* update snap
* undo change
* remove unused
* More test updates
* fix typo
* fix margin on preview
* move margin block
* snapupdate
* prettier
* Port url preview logic to a view model.
* More fiddling with VM logic
* Note to self
* Refactor away into a shared component.
* Even more lovely lovely code that makes it look prettier
* translation cleanup
* Even more stuff that I need to fix yay
* Remove .last-run.json
* Update snaps
* Ensure we set showUrlPreview
* Cleanup tests
* lint + add png support
* Add a label
* Cleanup
* Add snaps
* Update snaps
* update playwright
* Refactors
* update snap
* Add missing snap
* Remove editing code (we check this in a better way in componentDidUpdate)
* Add README
* fix the one unused import
* Style shuffling
* Update vis tests
* Finally fix the tooltip
* Remove unused prop
* Add some padding
* fix lint issue
* Design improvements
* new screens
* Update snaps
* Fix CSS specificity
* Remove stale screenshot
* Rename function to match reality
* Port viewmodel tests to snapshots
* finish documenting types
* Stop being dangerous
* Use Linkify+decode for description
* Remove ability for VM to do linkifying.
* Port over linkifyJS to shared-components.
* Drop rubbish
* update lock
* quickfix test
* drop group id
* Modernize tests
* Remove stories that aren't in use.
* Complete working version
* Add copyright
* tidy up
* update lock
* Update snaps
* update snap
* undo change
* remove unused
* More test updates
* fix typo
* fix margin on preview
* move margin block
* snapupdate
* prettier
* cleanup a test mistake
* Fixup sonar issues
* Don't expose linkifyjs to applications, just provide helper functions.
* Add story for documentation.
* remove $
* Use a const
* typo
* cleanup var name
* remove console line
* Changes checkpoint
* Convert to context
* Revert unrelated change.
* more cleanup
* Add a test to cover ignoring incoming data elements
* Make tests happy
* Update tests for LinkedText
* Underlines!
* fix lock
* remove unused linkify packages
* import move
* Remove mod to remove underline
* undo
* fix snap
* another snapshot fix
* More cleanup
* Tidy up based on review.
* fix story
* Pass in args
* update snap
* cleanup
* use source image
* oops
* remove client peg
* Remove unused state
* tidy up code
* Ensure we update the preview when the event content may have changed.
* s/global/globalThis/
* Ensure we don't stretch images
* Update screenshots
* Cleanup
* Refactor MFileBody using MVVM and move to shared component
* Simplyfing rendering properties
* Create a first version of view model for the component
* Simplifying component properties and make it possible to override module css using data-* attributes
* Create a MBodyFactory in element-web and use it to render MFileBodyView from MessageEvent
* Use <MediaBody instead of <button to support legacy rendering
* Updated styling and comments
* Refactoring className from snapshot to component property
* Rename MFileBody* to FileBody*
* Rename MFileBody* to FileBody*
* Refactoring render branches to allow for displaying nothing
* Fix styling issues
* Fix lint errors
* Fix for css selectors in playwright tests
* Remove the MFileBody component and change all callers to use MBodyFactory:FileBodyView
* Remove unused strings in element-web
* Revert to render text in story iframes
* Fix for prettier error
* Fix playwright test css selectors
* Apply legacy styling in element-web
* Add legacy styling for mx_MFileBody
* Restore file
* Change from <div to <button
* Calculate span width ad update screenshots
* Remove width calculation and update snapshots
* Fix for letter-spacing and better content in story
* Updated playwright screenshots
* Updated snapshots
* Fixing Sonar errors/warnings
* Removed extra parentheses
* Changes after review
* Change border-radius to px and updated snapshots
* Fix typo in description
* And another typo fix
* Changes after review
* Add support for Widget & Room Header Buttons module APIs
To support https://github.com/element-hq/element-modules/pull/217
* Update for new api
* Test addRoomHeaderButtonCallback
* Extra mock api
* Test for widgetapi
* Convert enum
* Convert other enum usage
* Add tests for widget context menu move buttons
Which have just changed because of the enum
* Add tests for moving the widgets
* Fix copyright
Co-authored-by: Florian Duros <florianduros@element.io>
* Update module API
* A little import/export
---------
Co-authored-by: Florian Duros <florianduros@element.io>
* Disable changing automaticErrorReporting unless sentry is configured.
* Ensure we reload on change
* Remove automaticErrorReporting labs flag
* remove stray import
* I thought I had killed you
* poke ci
* do not indirect tsc commands via tsc
Currently, `nx lint:types` is configured to indirect its `tsc` incantations via
pnpm. As far as I can tell, this is unnecessary; worse, it means we seem to hit
a pnpm reentrancy bug which causes pnpm not to run those commands at all if the
top level pnpm has `--if-present`.
* Reinstate indirection via pnpm
... to evade knip.
* refactor: extract most of the logic from the virtualized list
The VirtualizedList component is renamed FlatVirtualizedList and most of
the logic is extracted. In order to prepare the introduction of the
GroupedVirtualizedList which will share most of the behaviour.
* refactor: use `FlatVirtualizedList` instead of `VirtualizedList`
* feat: add grouped virtualized list to shared components
* feat: add accessiblity helps for virtualized list
* test: use one test suite for the two virtualized lists
* test: update storybook screenshots
* feat: add keyboard navigation on header
* test: make a11y test pass
* chore: delete old screenshot
* doc: a11y docs to list stories
* chore: fix copyright
* Port over linkifyJS to shared-components.
* Drop rubbish
* update lock
* quickfix test
* drop group id
* Modernize tests
* Remove stories that aren't in use.
* Complete working version
* Add copyright
* tidy up
* update lock
* Update snaps
* update snap
* undo change
* remove unused
* More test updates
* fix typo
* fix margin on preview
* move margin block
* snapupdate
* prettier
* cleanup a test mistake
* Fixup sonar issues
* Don't expose linkifyjs to applications, just provide helper functions.
* Add story for documentation.
* remove $
* Use a const
* typo
* cleanup var name
* remove console line
* Changes checkpoint
* Convert to context
* Revert unrelated change.
* more cleanup
* Add a test to cover ignoring incoming data elements
* Make tests happy
* Update tests for LinkedText
* Underlines!
* fix lock
* remove unused linkify packages
* import move
* Remove mod to remove underline
* undo
* fix snap
* another snapshot fix
* Tidy up based on review.
* fix story
* Pass in args
* refactor: move pinned message badge into shared-components
* Update lint errors
* Fix for Vitest issue with CI on shared components
* Update related to the pr comments and requests
* Prettier Fix
* Update, remove view since it was just moved and not actually MVVMed
* Removed view suffix since it was only moved and not mvvmed
* Update snapshots
* Removal of unused screenshots
* Added Image that we need
* Update to Module API v1.11.0
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove stale state field to make CQL happy
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Bump npm dep
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Improve coverage
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Improve coverage
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update comment
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add zizmor CI & make it happy
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix zizmor job
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* chore: remove unused `ManualAlgorithm`
In the old room list ui, we can"t manually sort the rooms or the
sections. Neither in a menu or by drag and drop
* fix: add `undefined` to `tagRoom` signature since the code allows it
* test: add tests to `RoomListActions`
* chore: remuve unuseful comment
* refactor: remove unused ``newIndex
* doc: remove typing in tsdoc
* [create-pull-request] automated change
* Use a dedicated string for public access in settings.
* Fix tests due to copy changes.
* Fix tests due to copy changes.
* Fix tests due to copy changes.
* Fix tests due to copy changes.
* Fix tests due to copy changes.
* Updated visual tests screenshots due to copy changes.
* Updated visual tests screenshots due to copy changes.
---------
Co-authored-by: t3chguy <2403652+t3chguy@users.noreply.github.com>
Co-authored-by: mxandreas <andreass@element.io>
* Fix playwright html report missing in CI
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update paths for playwright html report in workflow
* Add if-no-files-found option to upload step
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add note against using force push in PRs
Because apparently this wasn't here which probably explains why I have to keep asking people not to force push.
* Okay prettier
* Set up the MatrixClient before each RecoveryPanelOutOfSync test
Without this, we can't override MatrixClient methods until we've called
`renderComponent`, which is awkward.
* Actually test that we load the decryption key in RecoveryPanelOutOfSync
It turns out the existing test didn't actually go down the expected code
path and call loadSessionBackupPrivateKeyFromSecretStorage.
* Reset key storage if restoring from Recovery encounters the wrong decryption key
Fixes https://github.com/element-hq/element-web/issues/31793
Depends on https://github.com/matrix-org/matrix-js-sdk/pull/5202
When we try to load the key storage decryption key from Recovery, but we
find that it does not match the public key of the current key storage
backup, create a new key storage backup.
* Refactor className? to component property in EncryptionEventView
* Refactor extraClassNames to default react className as component property for DecryptionFailureBodyView
* Refactor className to component property for MessageTimestampView
* Refactor className and children to component properties for ReactionsRowButton
* Refactor className to component property for DisambiguatedProfile
* Refactor className to a component property in DateSeparatorView
* Fix for lint errors and EncryptionEventView unsupported icon color
* EncryptionEventView fix for icon color css specificity/order
* refactor: move `MessagePreviewStore` and previews into its own directory
The `MessagePreviewStore` is used widly and not only by the room list.
Moving to its own folder to be able to remove old room list later with
less friction
* test: add more tests
* refactor: extract `getTagsForRoom` from old rls
`getTagsForRoom` doesn't rely on the rls state. We can extract it safely
to an external function.
The function is not moved into the rls v3 because the rls is for the
room list and not for other ui elements.
* refactor: remove dead code
* test: add more tests for `getTagsForRoom`
* refactor: `getTagsForRoom` in old rls
* doc: add missing tsdoc for `room`
* Update ghcr.io/element-hq/synapse:develop Docker digest to b256d74
* Update screenshot due to new API availability on Synapse
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* refactor: move `DefaultTagID` and `TagID` to rls v3
Move the enum and type in rls v3 and update imports
* refactor: move `getChangedOverrideRoomMutePushRules` from rls to rls v3
* refactor: replace `VisiblityProvider` by `isRoomVisible` and move it to rls v3
* Add widget lifecycle API at top level
* Integrate while still falling back to the legacy api
* Remove WidgetKind
* Update module api
to the one that includes the new widget lifecycle api
* lint
* Make preload checks easier to understand
- Have single code path for preload checks.
- Remove duplicated logic for preapproveIdentity check
- Fix headers
* lint
* perf(room list): clear room list item vm only when changing space
Clearing all the item vms at every room list change is causing massive
re-render of all the room list items. References to the vms are already
removed when out of view (see RoomListViewMode.updateVisibleRooms) and
handled by GC.
* perf(room list): avoid to re-render filters at every room list update
RoomListView re-renders on update but the filters (children) don't need
to.
Add a memo to avoid excessive-rerenders.
* chore: add `keepIfSame` to do diff on vm objects
* perf(room list): avoid to create new filter ids and keys when the room list is updated
The filterKeys are passed in the virtuoso context so it should reduce
internal computing
The filter ids array has always the same value, there is no point to
create a new instance.
* test(room list): remove no longer relevant test
* test(room list): add new test to ensure that room list item vms are preserved
* feat(call store): add new `CallEvent.Participants` event
The room list needs to listen to `CallEvent.Participants` to be able to
display the Call icon. This was working before
https://github.com/element-hq/element-web/pull/32663 due to an excessive
re-renders or relying on the notification events.
* chore(room list): listen to `CallEvent.Participants`
* test(room list): add test for new listener
* test(call store): add tests for `CallEvent.Particpants`
* Revert "feat(call store): add new `CallEvent.Participants` event"
This reverts commit d2a7a009a4c55325404ad38f23fa662a8103cff4.
* Revert "test(call store): add tests for `CallEvent.Particpants`"
This reverts commit 4455182fb3aea54ea10cfabb8beb7946cfdf8a6c.
* chore(room list): listen to `Call#CallEvent.Participants` insteaf of listening to `CallStore`
* test(room list): update added test
* fix(room list): clean properly listeners on previous call
* test(room list): add missing test
* fix(room list): don't use trackListeners to avoid leaking memory when listening to call event
* fix(room list): listen to participant change when vm is created
* test(room list): add test case when there is an existing call
terser-webpack-plugin depends on ^6 but there's a CVE that's only
fixed in version 7. The CVE probably isn't terribly important for
a dependecy only used for building but it's breaking the dependabot
job which breaks our CD.
https://github.com/webpack/terser-webpack-plugin/issues/644 is the bug
tracking upgrading the dependency upstream.
* Init shared component structure
* Storybook implementation
* Add snapshots of storybook examples
* ViewModel Creation + Implementation In EventTile.tsx
* Prettier
* Update HTML snapshot
* Add onhover pointer on bottons
* Added compound web tooltip
* Removed possible of undefined on label
* Update snapshots
* Update setters to use merge instead of updating full snapshot
* adapt view model test for setters change
* Actions should be passed to viewmodel fix
* replace ReactionsRowWrapper forceRender with explicit reaction state
* Update snapshot
* Refactor DateSeparator using MVVM and move to shared-components
* Add a few more stories, tests and screenshots
* Use the shared component and viewmodel in element-web
* Renaming custom content property an updating snapshots
* Fix lint errors and update snapshot after merge
* Change lifecycle handling for DateSeparatoreViewModel in components where manual handling is preferrable over wrapper component.
* Move context menu from viewmodel to shared components - step 1
* Create a jump to date picker component in shared components
* Add tests for coverage and fix layout issues and roving indexes
* Make element-web use the new component
* Simplify context menu and adjusting tests
* The HTMLExport now render shared components and need a I18nContext.Provider
* Updating unit tests for context menu
* Changed to {translate: _t} to let scripts pick up translations
* Fix lint issue and updating screenshots after merge
* Update snaps for element web components
* Renaming MVVM view components with suffix View.
* Fixing problem with input date calendar icon and system dark theme
* Changed the rendering of the menu and added a separate button component
* Handle input control with useRef in onKeyDown
* Updating DateSeparator snapshots on unit tests
* Updating layout after compound Menu got a className property
* Move files to new subfolder after merge
* Updated snapshot after merge
* Updating lock file
* Updates to styling from PR review
* Updates to focus/blur functionality
* Fixed tabbing and export documentation to stories
* Updated snapshots
---------
Co-authored-by: Zack <zazi21@student.bth.se>
* widget-api: Implement driver `readStickyEvents`
* Bump matrix widget api version to get new driver interface
* review: add comment about capabilitiesm check
* bump matrix-widget-api version to ^1.17.0
* Update the jest option for the sonar reporter
'testResultsProcessor' is deprecated: jest-sonar-reporter supports being
a regular 'reporter'.
* Just add sonar reporter in GHA
* Prettier
* oh yeah, ??= is a thing
* Update comment
* Replace copy-res with a webpack plugin
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Specify writeToDisk=true for webpack-dev-server
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Use async fs methods
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix invite-specific join errors not being shown
* remove horrible non-jest function of getAccountData
* Use an Error
* Always dispatch an Error
* Throw a UserFriendlyError
* Update critical gradient for room status bar
As per design request, this has been updated to be much more subtle
https://github.com/element-hq/compound-design-tokens/pull/232
* update shared-component
* Cleanup
* Update snaps
* description fix color
* More cleanup
* Use the correct border color
* new snaps
* fix border, button placement, fonts etc
* update lock
* Update status bar
* Update playwright snaps
* Update snap icon
* Update other banners
* update snap
* fixup
* Add stable support for MSC4380 invite blocking
MSC4380 has completed FCP, so we can add stable support for it.
* Set account data to empty value when allowing invites
... because that's what the spec says
* Use identifiers from js-sdk
* Make the git version script work in monorepo
Find the workspace root with pnpm to make it agnostic to what
directory its run from
* js-sdk just lives straight in the noduke modules directory
* Do non-layered builds when running on master (second version)
Hopefully this will fix the release as it looks like we've introduced
backwards incompat changes in the js-sdk between the RC and the release,
which have now broken as we were incorrectly using the develop js-sdk for
release builds.
Replaces https://github.com/element-hq/element-web/pull/32623
* remove matrix-analytics-events branch match
* Unused line
* fix: in room list item, replace bottom padding by top and bottom
Outline focus is not aligned when only using a padding bottom. Replace
by a padding-top and a padding-bottom.
The padding top is not added on the first item and the padding bottom
neither on the last item
* test: update snapshot
* test: update storybook screenshot
* test: update screenshot
* chore: use css var instead of duplicating the logic
* chore: add new stories for first and last item case
* test: add new screenshots following the new stories
* Fix misaligned cross in complete security dialog
* It's not a dialog
* Need to wait for login to finish
* Add screenshot
* Move snapshot to thr right place
mkdir apps/web/scripts
mv scripts/{cleanup.sh,ci_package.sh,copy-res.ts,deploy.py,package.sh} apps/web/scripts
And a couple of gitignore tweaks
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove long-deprecated `welcomePageUrl` config
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove deprecated EC `analyticsID` param in favour of `posthogUserId`
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove use of deprecated RoomName component in favour of useRoomName hook
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Simplify notifier-platform code for closing notifications
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* feat: add visual feedback of selection in `VirtualizedList` story
* fix: keyboard navigation when focused element is no longer in the dom
* fix: selection delay when the list is scrolled
* fix: room list item scroll issue
Avoid to use margin https://virtuoso.dev/react-virtuoso/#caveats
* test: add tests
* test(e2e): update snapshots
* test: update room list item screenshot
* Update URL Preview playwright tests to use new endpoint
For https://github.com/matrix-org/matrix-js-sdk/pull/5191
* Drop extra preview test
* Adopt axe, fixup paths, etc for url previews
* work dammit
* begone unwanted screenshot
* Make github happy?
---------
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Don't show empty privacy section
If all the options to display things things in it are disabled
Also makes it more consistent with other areas.
* Move test
* Update UserMenu theme toggle to use IconButton
This lets it use the correct compound colour based on theme
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Delint
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Create a MessageTimestampView in shared components
* Switching to use shared component and view model in element-web
* Add .mx_MessageTimestamp tp _common.pcss since it is used extensively in element-web
* Added comments to view model
* Updating after Add options for consistent screenshots
* Moved rendering of late icon to EventTile
* Update shared component snaps
* Added I18nContext.Provider to Modal.tsx and HtmlExport.tsx to make them work with shared components
* Avoid circular dependencies for ModuleApi
* Adjust role and wire handlers in view model
* Change to role="link"
* Revert I18nContext.Provider changes
* Updated snapshot
* Provide I18nContext for shared-components used inside dialogs and html-export rendered in a separate root.
* Add patch for react-sdk-module-api to shared components
* Add setProps to MessageTimeViewModel and useEffect on wrappers
* Added more tests to improve coverage
* Changes after PR review
* Use specific setters in the viewmodel more relating to the business logic.
* Remove unused CSS properties
* New snapshot after merge
* Removed aria-hidden logic and display tooltips in stories
* Remove await for toolitp in HasInhibitTooltip story
* Add screenshots with visible tooltips
* Fixes after merge and review comments
* Updated snapshots for unit tests
* Removed one test since tooltips are not rendered to snapshots
* Emit events from DeviceListenerCurrentDevice instead of delegating to DeviceListener
* Make CurrentDeviceEvents a const enum
* Break out event emitting into its own class so the instance can be persistent
* Fix playwright-screenshots.sh script
gcut is a macos thing, use awk for stability
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tweak playwright-screenshots.sh to pull image from ghcr before building
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add missing dependency in playwright-common
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add nx to prettierignore
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add continuous delivery workflow for playwright-server image
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to nx affected
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Prefix calls to nx with pnpm
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Pass GITHUB_TOKEN to nx affected
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Use explicit buildx builder
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Specify NX_DEFAULT_OUTPUT_STYLE
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove test trigger
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix image name
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Force create pnpm cache directory
As commented otherwise the job fails if no deps are installed
* Don't cache if install isn't set
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove cache force creation
* Revert to original fix
* back to simple version, with fixed indent
---------
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* fix(sc): make room list item scale with large font
* fix: align room avatar view when using large font
* test(sc): add story for large font
* test(sc): update snapshots
* test(sc): add story with zoom
* Rebuild static_analysis as ci.yaml using matrix strategy
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Disable fail-fast
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Delete long-unused pending reviews automation
EW lacks the header to show it anymore
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove long deprecated option `sso_immediate_redirect`
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove stale experimental comment about Native OIDC support
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Extract redirectToSso from loadApp
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix maintaining deeplink when going via auto sso
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Improve error
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update `sso_redirect_options` to work for Native OIDC
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update existing test for log changes
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Refactor EncryptionEvent using MVVM and move to shared-components
* Added viewmodel and unit tests for bothe viewmodel and component.
* Added test for custom-class
* Update EventTileFactory and RoomView to use the new component
* Clean up unused language strings from element-web
* Changed how the view model is created
* Make sure the initial snapshot mimics the previous component
* Optimizing viewmodel initial snapshot and update
* Updated playwright screenshots
* Default useOnlyCurrentProfiles to true
As per comment, start by setting this to true by default with intention to remove.
* Update screenshots
* Snapshot
* Use Renovate to bump testcontainers digests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* feat: add dry run of storybook build in merge queue
* Reuse build from storybook build job
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Use nx to build library before building storybook
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Add NX_SKIP_LOG_GROUPING to tests workflow
* Switch CI nx outputStyle to stream-without-prefixes
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* fix(sc): use correct icon size for room list icons
* feat(sc): implement new selection and hover design for room list item
* feat(sc): set room list item height
* chore(sc): add story for long room and message preview
* fix(sc): use correct letter-spacing for room list item
* feat(sc): use new padding for room list filters
* feat(sc): update room list header style
* test(sc): update unit tests
* test(sc): update visual tests
* test: update playwright screenshots
* doc: update figma link in item story
* test: fix sliding sync test
The notification pop up was at the top of the room list filters (less
top padding) and it was unable to click on the People filter.
* chore: fix `VirtuaalizedRoomListView` comment
* test: update playwright screenshot
* fix(sc): add ellipsis on room name
* Move declaration.d.ts to @types
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Load customisations.json without `require`
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove webpack rule from when we were consuming shared-components ts vs js
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Avoid hardcoding paths to modules in webpack config
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Convert webpack config to typescript
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Stub js webpack/postcss plugins
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Patch broken rollup types until https://github.com/getsentry/sentry-javascript-bundler-plugins/pull/870 is released
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Install @types/postcss-import
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix fdir relying on @types/picomatch
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update pnpm-lock.yaml
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix usage of nx in npm scripts
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tidy project.json
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Set history visibility to "invited" for DMs and non-public rooms
* Update e2e tests and screenshots
* lint
* Revert screenshot
* Add test that an override of historyVisibility still works
* Rename playwright-screenshots script to -experimental
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Run only browser in docker for test:playwright:screenshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix playwright config for non-remote runs
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix videos on Firefox
Videos are using cross-origin requests, and Firefox
blocks them before passing to the service worker if
the element doesn't have the crossorigin attribute to
give CORS support
* React needs camelCase attr names
---------
Co-authored-by: David Baker <dbkr@users.noreply.github.com>
* Remove old screenshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add experimental playwright-screenshots.sh utility and use it for shared-components `test:storybook:update`
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tidy up
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate based on review
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Avoid showing two chat timelines side by side after a call
In certain situations you could still end up with the chat timeline visible in the right panel in addition to the main split. For instance if you are in a call, open the chat panel, then leave the call while looking at another room, the chat panel would remain open upon navigating back to the original room.
* Avoid using flushPromises in tests
It was failing due to being unable to access pnpm-workspace.yaml so change the docker context to the root of the monorepo
Also disable pnpm-link script in the docker env and node-linking for storybook tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Use nx for running dev tasks
Initially only build & start
This enables caching, i.e. if you made no changes to shared-components then it can skip that build and speed up your iteration cycle time
nx will also be used for our release tooling down the line
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Drop `concurrently` - we no longer use it
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Make knip happier
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Also use nx tasks for jest & tsc
so that SC gets built as needed
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add missing @nx/jest plugin
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix prebuild:rethemendex for Windows
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix prebuild:rethemendex for Windows
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add prepack script to package.json
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshot for reactive display name disambiguation
This PR updates the Playwright screenshot tests to reflect the changes
from matrix-js-sdk PR #5135, which fixes reactive display name
disambiguation.
The screenshot will be updated based on CI test results to show the
correct disambiguation behavior when multiple room members share the
same display name.
Related: matrix-org/matrix-js-sdk#5135
* Update member list screenshot for reactive disambiguation
* Retry CI for flaky MatrixChat timeout
* Refactoring of DisambiguatedProfile into shared components
* correct values and refactoring
* Add username color classes to Storybook and clean up DisambiguatedProfile stories
* Refactor DisambiguatedProfileView to use class component and enhance props structure
* Refactor DisambiguatedProfile components to use member object and enhance props structure
* Update copyright year to 2026 and adjust the tests to fit the correct memberinfro interface
* Add DisambiguatedProfileViewModel class
* Refactor DisambiguatedProfileViewModel to use member object and the rest of the props
* Refactor SenderProfile to use DisambiguatedProfileViewModel and update DisambiguatedProfile styles
* Refactor DisambiguatedProfileView to enhance interface documentation
* Refactor DisambiguatedProfileView to use CSS modules for styling
* Updated css + tests to fit the new changes
* Update of the test snap to fit the current tests
* Adjusted RoomMemberTitleView and SenderProfile to use the new viewmodel, removed the old component.
* Implemented new viewmodel test for DisambiguatedProfileViewModel
* Update copyright text
* update css class names
* update to correct snapshot after css name changes.
* Apply suggestion from @florianduros
Co-authored-by: Florian Duros <florian.duros@ormaz.fr>
* Moved logic to viewmodel instead of having it in the view. Removed unessecery functions and css.
* removed unessecery file that I copied from root folder, this is no longed needed as I use the root file instead in the viewmodel
* Better Formatting
* Fix issues after merging develop
* FIxed issues with eslint
* Added Visible, non-interactive elements with click handlers must have at least one keyboard listener from eslint docs
* Updated snapshot the fit the latest update with eslint button requirment
* Update snapshot screens for new tests.
* Update tests to reflect snapshots
* Update snapshot due of outdated CSS module classes
* Add useEffect to call setProps on the DisambiguatedProfileViewModel
when props change, ensuring the view updates with the correct display
name. Update LayoutSwitcher snapshot for new CSS classes.
* Fix Playwright editing tests by adding exact match for Edit button selector
The DisambiguatedProfile refactoring added role="button" to the component,
causing the selector { name: "Edit" } to match both the user "Edith" and
the actual Edit button.
* Fix ForwardDialog location tests for async hook rendering The SenderProfile component now uses hooks that trigger async state updates.
* Fix SenderProfile useEffect to only update changeable props
* Added letter spacing
* Added ClassName prop
* Update snapshot
* Update letter-spacing
* Update snapshot screenshots
* Update Snapshots
* Update snapshot
* Removal of letter spacing to test CI
* Apply suggestion from @florianduros
Co-authored-by: Florian Duros <florian.duros@ormaz.fr>
* Added closing brackets + added back letter-spacing
* Update snapshots
* Update snapshot
* Update span to correctly apply to the CI tests, it wasn't possible to use classname as a prop
* Update snapshot
* Added comment to explain the span classNames
* DisambiguatedProfileViewModel.setProps to runtime-changing props
* replace DisambiguatedProfileViewModel setProps with explicit setters and update call sites
* Update Setters
* Prettier FIx
* Update Setters
* update DisambiguatedProfileViewModel setters and tests
* Update SenderProfile to show connect display name
* clone snapshot in setters to trigger reactive updates
* use snapshot.merge in DisambiguatedProfileViewModel setters
* emove duplicated logic in DisambiguatedProfileViewModel
* Change snapshot name
* Update viewmodel
* Updated Tests
* typo
* Update src/viewmodels/profile/DisambiguatedProfileViewModel.ts
Co-authored-by: Florian Duros <florian.duros@ormaz.fr>
* Removal of unused function
* Update snapshots
* Update tests to pass coverage
* Update Eslint
---------
Co-authored-by: Florian Duros <florian.duros@ormaz.fr>
* Simplify CI for shared-components
Now that we use pnpm which understands monorepos we can skip manually installing shared-components in CI
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix docs workflow not being able to find pnpm version
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix storybook workflow not seeing lockfile and using wrong package manager
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix dockerbuild
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch shared-components from yarn classic to pnpm
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch element-web from yarn classic to pnpm
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch CI to pnpm
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update docs & comments
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Hold back postcss to match yarn.lock & use workspace protocol
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tweak CI
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Rid the world of `$(res)`
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to type=module
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix module import
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Make knip happy
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update playwright imports
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Make docker build happy
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove stale params
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix badly formatted logging
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to lodash-es
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Make jest happier
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch element-web to ESM
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update testcontainers imports
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix modernizr cjs
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix modernizr cjs ignore files
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Move modernizr sonar exclusion to exclude everything
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update playwright tests for esm compat
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add pnpm-link utility
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Test matrix-web-i18n
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Discard changes to src/vector/index.ts
* Update playwright-common
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Use catalogs
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Improve pnpm-link script
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Use pnpm import to regenerate lockfile from yarn.lock
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix room list not being cleared
RoomListV3 was lacking an onNotReady which meant that the room list
would sometimes not be cleared between logins.
* Fix return type
---------
(cherry picked from commit 81b111371f)
Co-authored-by: David Baker <dbkr@users.noreply.github.com>
Co-authored-by: Florian Duros <florianduros@element.io>
* fix: Update `globalBlacklistUnverifiedDevices` on setting change
Signed-off-by: Skye Elliot <actuallyori@gmail.com>
* fix: Use `SettingLevel.DEVICE` filter on blacklisted device watcher
* tests: Add playwright test for blacklist unverified devices toggle
* docs: Correct test step description
Co-authored-by: Andy Balaam <andy.balaam@matrix.org>
* tests: Add test for local vs global blacklist unverified devices
* tests: Ensure local toggle overrides global toggle.
* tests: Add unit tests for blacklistUnverifiedDevices listener
---------
Signed-off-by: Skye Elliot <actuallyori@gmail.com>
Co-authored-by: Andy Balaam <andy.balaam@matrix.org>
* Fix room list not being cleared
RoomListV3 was lacking an onNotReady which meant that the room list
would sometimes not be cleared between logins.
* Fix return type
Co-authored-by: Florian Duros <florianduros@element.io>
---------
Co-authored-by: Florian Duros <florianduros@element.io>
* Extract logic for this device from DeviceListener
* Remove a listener that I assume we forgot in DeviceListener
* Use a code block for JSON in a comment
Co-authored-by: Skye Elliot <actuallyori@gmail.com>
* Rename to DeviceListenerCurrentDevice
---------
Co-authored-by: Skye Elliot <actuallyori@gmail.com>
* Move SlashCommands into slash-commands
* Move SlashCommands test prep into a function that can be re-used from multiple files
* Move slash command tests into separate files
* Fix super-linear regexes and test some more slash commands
* Move splitAtFirstSpace tests into a separate file
* Test for parseCommandString
* Make parseCommandString able to handle leading whitespace and tabs
* Implement parseCommandString using splitAtFirstSpace
* Extract emoticons slash commands into a separate file and share their code
* doc: add typedoc generation for shared component
* ci: add SC doc publish
* ci: push doc on changes on develop
* ci: fix working directory
* doc: add typedoc generation into storybook
* doc: build i18n files for storybook static sites
* ci: change workflow to deploy storybook
* chore: exclude non-ui tests from vitest visual tests
* chore: try to fix error in CI
* doc: fix broken link in README
* doc: add typedoc missing export plugin
Add https://github.com/Gerrit0/typedoc-plugin-missing-exports to avoid
to have to explicit export all the types which are not used outside SC
* doc: add mapping to external docs
* fix: remove shebang
* Add NotificationDecoration component
Add the NotificationDecoration component to shared-components.
This is a leaf component that renders notification badges and indicators
for rooms/items including mentions, unread counts, call indicators, etc.
* Add RoomListItem component
Add the RoomListItem component to shared-components.
Includes context menu, hover menu, notification menu, and more options menu.
* Add RoomListPrimaryFilters component
Add filter chips component for filtering the room list by
unread, people, rooms, favourites, mentions, invites, and low priority.
* Update VirtualizedList component
Update VirtualizedList to support the room list virtualization requirements.
* Add RoomList component
Add RoomList component that renders a virtualized list of room items.
Includes story mocks for testing.
* Add RoomListView component
Add RoomListView component that composes RoomList with filters,
empty states, and loading skeleton.
* Export room-list components from shared-components
Add exports for RoomListView, RoomListItem, RoomListPrimaryFilters, and RoomList.
Include i18n strings for room list components.
* Add RoomListItemViewModel
Add view model for individual room list items.
Manages per-room subscriptions and updates only when specific room data changes.
* Add RoomListViewViewModel
Add view model for the room list view.
Manages room list state, filtering, keyboard navigation, and child view models.
* Integrate shared components into RoomListView
Update RoomListView to use the new ViewModels and shared components.
Includes i18n string updates for element-web.
* Remove old room list implementation
Remove old ViewModels, hooks, and view components that are now
replaced by the shared-components implementation.
* Update sliding-sync playwright test
Update test expectations for new room list implementation.
* Add figma links
* Move viewModels to the right folder
* Rename to RoomListEmptyStateView
* Update VirtualizedRoomListView naming
* Update screenshots and snapshots
* Move viewmodel tests to the right location and fix some imports
* lint
* Use unknown as an Opaque type rather than any. It discourages property access within shared components and can still be cast back in EW.
* Update screenshots for new shared component rendering params
* Make room order tests deterministic
* Update dependency @playwright/test to v1.58.1
* Update snapshots & screenshots
* Another screenshot
* Un-focus room tile and scroll it into view
possibly some change in what ends up focused after a popup disappears
* uncomment the screenshots
* Correct screenshot
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: David Baker <dbkr@users.noreply.github.com>
* fix: Remove state_key: null from Seshat search results
Seshat includes "state_key": null for non-state events, which causes
matrix-js-sdk to incorrectly treat them as state events. This prevents
encrypted messages from rendering properly in search results.
This fix removes the null state_key from search results and context
events before passing them to the SDK.
* test: cover local search null state_key edge cases
* test: satisfy strict types in searching coverage test
---------
Co-authored-by: David Baker <dbkr@users.noreply.github.com>
* Refactor TimelineSeparator to shared-components package
• New TimelineSeparator component in packages/shared-components/
• Updated MessagePanel.tsx to import from shared-components
* Fix copyright text
* Timeline Unit Tests + Timeline Snapshot Tests
* Imported correct timeline seperator
* Update snapshots because of css update
* Apply suggestion from @florianduros
Co-authored-by: Florian Duros <florian.duros@ormaz.fr>
* Created className prop
* Removal of element x unused css
* Update snapshot because of Flex
* Update snapshots because of Flex
* Update css to correct values and compund name
* Added letter spacing to timelineseperator
* rremoval of letter spacing
* added align center to flex to apply correct css changes
* Update snapshots to reflect new css changes
* Update snapshots to reflect css changes
* Added letter-spacing to timeline seperator
* Update snapshots after css update
* update snapshots
---------
Co-authored-by: Florian Duros <florian.duros@ormaz.fr>
* Update npm non-major dependencies
* Fix type
* Katex comes with its own types now
Or possibly it always had them but they just put them in the package.json
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: David Baker <dbkr@users.noreply.github.com>
* Move the code for running the upgrade command into its subdir
* Replace use of deprecated currentState property in runUpgradeRoomCommand
* Move upgraderoom command options into their own file
* Move upgraderoom tests into their own file and add a couple
* Move EventTileBubble to shared components as is
* Added documentation and updated stories and unit tests
* Move 'global' element web css to _common.pcss
* Adding playwright snapshots
* Updated comments
* Added legacy mx_MessageTimestamp class and updated snapshots
* Regenerate snapshots with correct hash
* Changes to css and removed timestamp from properties after review.
* Update screenshot for room-list and fix flaky CI playwright test.
* Blur the play button before matching screenshots
* Changed to button focused instead of blur for consistancy
* Stabilize play button appearance in CI (disabled due to decoding)
* Force play button appearance in CI (disabled due to decoding)
* Add comments on playwright test changes.
Change from React.RefObject<any> to Ref<HTMLDivElement> in EncryptionEvent.tsx
* Update playwright/e2e/composer/CIDER.spec.ts
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Update playwright/e2e/composer/CIDER.spec.ts
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Update playwright/e2e/crypto/toasts.spec.ts
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Add `HistoryVisibilityBadge` shared component
* Add `historyVisibility` to `RoomSummaryCardViewModel`
* Add a history visibility badge to the room info panel
* Allow roominfo panel badges to wrap
Now that we have an extra one, it's quite likely we'll have to spill onto more
lines.
* update screenshots
* Set icons in badges to be 16px
Having discussed this with the design team, the icons in badges should be 16px, not 13px,
at default font size settings.
* Add stories for all history visibility states
* fix incorrect use of useRoomState
* fix snapshots
* more snapshot updates
* Update screenshots
* Fix failure to update room info panel on joinrule change
Currently, if the join rules are updated, the room info panel is not updated
until the panel is re-rendered. This is due to a misuse of `useRoomState`.
* Update documentation and types on `useRoomState`
This hook is useless without a `mapper` function, so let's mandate it. Also
improve the documentation while we're here.
Because every room in a space will emit a notification state change
when push rules change so we would otherwise recalculate the space
notification state for every room in the space, On^2 style.
* Refactor DecryptionFailureBody to MVVM and moving it to shared components
* Added unit test for DecryptionFailureBodyViewModel
* Removing the dependency to matrix.js-sdk from the shared component
* Kepp class mx_EventTile_content for tile layout
* Required changes after rebase
* Updates after PR review requests
* Clean up unused translation tags in element-web
* Added missing unit tests to improve coverage
* Additional unit tests to improve test coverage
* Removing obsolete tests from the snap
* Only listen to verification state changes in the wrapper components and also limit the view model to only allow updates in verification state.
* Updates after review requests
* Updated and added missing playwright snapshots
* Bettter structure on view model
---------
Co-authored-by: Florian Duros <florianduros@element.io>
Co-authored-by: Zack <zazi21@student.bth.se>
* Setting up structure for the init refactoring of ReactionsRowButtonTooltip
* implemented example to follow for refactoring to MVVM
* Refactoring of ReactionsRowButtonTooltipView
* updated reactionrowbutton to use our new viewmodel and removed unessecery comments
* Updated children from reactnode to propswithchildren
* removal of children on the vm have it as a props
* implemented constructor into reactionrowbutton to use vm to viewmodel
* Removal of old component
* Added ViewModel Tests for new viewmodel
* Fix issues after merging develop
* Updated import placement for eslint failure CI
* Add tests for ReactionsRowButton ViewModel integration and click handlers to pass coverage
* Added more tests to cover all conditions
* Pass MatrixClient as prop instead of using global; replace expect(true).toBe(true) with not.toThrow()
* Added new snapshot to reflect modifications on tests
* Update images to fit the CI tests
* Optimize reactions tooltip viewmodel updates
* Removal of module.css for reactionbuttontooltip, we dont need it since we dont use any css
* Fixed snapshots to show the tooltip by introducing a boolean to set open to true in Storybook.
* Update snapshots
---------
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Extract SasEmoji to shared-components
and improve responsive layout
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add baseline screenshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix e2e test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add SasEmoji snapshot test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add figma link
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Improve doc
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add new dir to crypto-web-reviewers codeowners as per ask
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Create WidgetContextMenu component in shared-components
* Modify WidgetMenuContext call (apptile, extensioncard, widgetcard), test and stories
* Correctly use new widgetcontextmenu component
* WidgetContextMenuViewModel unit test
* Lint and add comments
* Finalize widgetcontextmenuviewmodel test
* fix lint errors
* Fix test error
* Update playwright screenshots
* add userWidget in widgetcontexstmenu props
* Fix some a11y issues on playwright
* fix linter error widget card
* Use new i18n way for share component widget context menu
* Add i18n context provider for widget context menu
* chore: lint and update snapshot widgetcontextmenu
* Extract and move timestamp function
* Use new function in BaseRecencySorter
* Remove deprecated method usage
* Add jsdoc
* Avoid unnecessary exports
* Fix tests
* Show an icon in the room header for shared history
Add a decoration to the header for encrypted rooms with `history_visibility:
{shared|public}`.
Fixes: #31858
* Gate "shared history icon" behind labs flag
... since history isn't actually shared unless the flag is on
* Update snapshots
* update screenshot
* update screenshots, again
* exclude RRs from screenshot test
* Revert "Update algorithm for history visible banner. (#31577)"
This reverts commit ce9c66ba4c.
* Revert "Update prop type & documentation for HistoryVisibleBanner and VM. (#31545)"
This reverts commit 4da149e56f.
* Revert "Prevent history visible banner from displaying in threads. (#31535)"
This reverts commit c7134e8532.
* Revert "Implement UI for history visibility acknowledgement. (#31156)"
This reverts commit cff9119324.
It was not working for languages like de_DE which were normalised to de in one codepath but not the other
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* fix export
* Don't allow duplicate toasts.
* fix imports
* fix
* fix rel_type to be m.reference in tests
* Fix case where redactions were not longer checked.
* Ensure toastkey is calculated by the room call_id
* Ensure we fetch the call event if it does not exist locally.
* cleanup / reduce code complexity
* Add docs
* Add comment
* merge condition
* Fix ability to send rageshake during session restore failure
This fixes the specific edge case but also hardens the codepath to limit the effect of other similar edges popping up
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Improve coverage
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Improve coverage
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove babel
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove duplicated patch-package dep
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to @fetch-mock/vitest
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update tests to import & call vitest functions
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update test-utils imports
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update unit test snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from jest->vitest for unit tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update visual test screenshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from test-runner->vitest for visual tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update README
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update CI for shared-components unit & visual tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update yarn.lock
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update README
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix storybook trying to import vitest
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix css modules leaking between storybook tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tweak screenshot update script to accept args
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix mis-alignment of `Threads` right panel title
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Extract base recency sorter class
* Create unread sorter
* Write test
* Use new sorter in RLS
* Fix incorrect sort type
* Replace with a better comment
* Fall back to RecencySorter instead of throwing error
* Upgrade matrix-widget-api to 0.16.1
* Allow Element Call widgets to receive sticky events
In an upcoming version of Element Call, the call widget will be able to operate in an experimental ‘Matrix 2.0’ mode in which MatrixRTC memberships are sent as sticky events. We already auto-approve the capability for this widget to send sticky events, but we recently decided there should be a capability for receiving them as well and need to auto-approve that too.
* Fix compound.css - it is not pcss
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Improve types in shared-components storybook
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update i18n:sort script and remove patch-package
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendered svg for Field select decoration instead of SVG mask
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace warning.svg with Compound icon
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace device kind icons with Compound
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Draw notification badge decoration using SVG rather than CSS masks
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace {collapse,expand}-message icons with Compound
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove stale icon prefetch
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Render icons in AddExistingToSpaceDialog using SVGs rather than CSS masks
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Render icons in Jitsi landing page using SVGs rather than CSS masks
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Delint
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix field label
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Revert icon colour
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering icons as SVG over CSS masks in PollOption
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering icons as SVG over CSS masks in AnalyticsLearnMoreDialog
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove unused class
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering icons as SVG over CSS masks in customisedCancelButton mixin
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering icons as SVG over CSS masks in ThreadSummaryIcon mixin
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering icons as SVG over CSS masks in LegacyCallButton mixin
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove unused classes in TabbedView
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* delint
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* delint
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix `[Object object]`
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix layout issue
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Improve coverage
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Use typescript for vite config
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch shared-components to ESM
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove stale aliases
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove reference to element-web files from shared-components
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove spurious node polyfill
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
Fixed button color to inherit in following scenarios:
* RoomList now rooms follow room text compound color
* PinnedMessageBanner follow room text compound color
* RoomHeader follow room text compound color
Signed-off-by: Örnfeldt Philip (66140321) <philip.ornfeldt@forsakringskassan.se>
* chore: ignore jest-sonar.xml in gitconfig
* chore: add missing rtl types to shared component
* chore: add `symbol` to `Disposables.trackListener`
* feat: add room list header view to shared components
* fix: change `Space Settings` to `Space settings`
* feat: add room list header view model
* chore: remove old room list header
* chore: update i18n
* test: fix Room-test
* test: update playwright screenshot
* fix: remove extra margin at the top of Sort title in room options
* test: fix room status bar test
* fix: change for correct copyright
* refactor: use `Disposables#track` instead of manually disposing the listener
* refactor: avoid to recompute all the snapshot of `RoomListHeaderViewModel`
* wip
* fix: make header buttons the same size than figma
* test: update shared component snapshots
* test: update shared component screenshots
* test: update EW screenshots
* Update dependency await-lock to v3
* Change moduleResolution
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Make jest happier
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Patch await-lock to make jest happy
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Patch @vector-im/matrix-wysiwyg
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendered svg for Field select decoration instead of SVG mask
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace warning.svg with Compound icon
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace device kind icons with Compound
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Draw notification badge decoration using SVG rather than CSS masks
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace {collapse,expand}-message icons with Compound
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove stale icon prefetch
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Render icons in AddExistingToSpaceDialog using SVGs rather than CSS masks
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Render icons in Jitsi landing page using SVGs rather than CSS masks
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Delint
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix field label
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Revert icon colour
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix avatar decorations in thread activity centre not being atop avatar
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Delint
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Minor corrections shared-components-README.md
a few minor edits and clarifications
* Wrap lines at 80 characters
Mostly, this means that diff comments on PRs work better.
* Update packages/shared-components/README.md
* Apply suggestion from @richvdh
* Factor out E2ePadlock to its own file
* Show "Bob shared this message" on messages shared via MSC4268
If we received the keys for a given message from another user, indicate that in
the timeline, rather than just saying "authenticity not guaranteed"
* Apply suggestions from code review
Co-authored-by: Florian Duros <florianduros@element.io>
* Address review comments
* Move E2ePadlock to shared-components
* update snapshots
* Revert "update snapshots"
This reverts commit 751e31f9db901fda085143c98e5dffa3d2b4c099.
* Revert "Move E2ePadlock to shared-components"
This reverts commit 172ef9f70ab26fd36b0ac854379cfd3371d22c18.
---------
Co-authored-by: Florian Duros <florianduros@element.io>
* Switch to Compound icons to replace old icons
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Apply same treatment to missed icons
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove duplicated icon
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update icon
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from css masks to rendering svg in ImageView
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from css masks to rendering svg in ExtensionsCard
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from css masks to rendering svg in LegacyRoomListHeader
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from css masks to rendering svg in ImageSizePanel
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from css masks to rendering svg in LegacyRoomList
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove icon from CreateSecretStorageDialog title
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from css masks to rendering svg in LiveContentSummary
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from css masks to rendering svg in RoomCallBanner
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from css masks to rendering svg in NonUrgentEchoFailureToast
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from css masks to rendering svg in LegacyCallViewHeader
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from css masks to rendering svg in CallEvent
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Delint
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace dark-light-mode.svg with Compound
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Draw stop icon using svg rather than square mask
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace masks in RoomSublist with SVG icons
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace masks with SVG icons in LegacyCall views
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace masks with SVG icons in EventTile
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace masks with SVG icons in ForwardDialog
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove redundant css style
The `::before` has no content so is never rendered
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* delint
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update playwright tests & screenshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove snapshot as it causes issues
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Delint
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* More tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
So that localazy_download.yaml sorts & lints both
This will be cleaner in a proper monorepo where the root package.json isn't its own project
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to Compound icons to replace old icons
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Apply same treatment to missed icons
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove duplicated icon
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update icon
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from css masks to rendering svg in ImageView
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from css masks to rendering svg in ExtensionsCard
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from css masks to rendering svg in LegacyRoomListHeader
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from css masks to rendering svg in ImageSizePanel
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from css masks to rendering svg in LegacyRoomList
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove icon from CreateSecretStorageDialog title
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from css masks to rendering svg in LiveContentSummary
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from css masks to rendering svg in RoomCallBanner
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from css masks to rendering svg in NonUrgentEchoFailureToast
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from css masks to rendering svg in LegacyCallViewHeader
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from css masks to rendering svg in CallEvent
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Delint
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix error shown if accepting a 3pid invite
If no matrix ID was bound to the email address, the code would
just throw an exception and display a very generic error.
* Unused import
* I hate you too, yarn.
* i18n
* Add test
* Remove tests which assert feature_oidc_native_flow=false behaviour, that setting is long gone
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Upgrade fetch-mock-jest to @fetch-mock/jest
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update yarn.lock
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Make knip happy
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Disable broken tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix shared-components tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Support for stable MSC4191 account management action parameter
* Pass accountManagementActionsSupported around and refactor name
* Iterate
* Iterate
* Attempt to improve clarity of action fallback
* Use name "actions supported" consistently
* Update test cases for revised default behaviour
* fixup type
* Validate Element Call foci config
* revert changes
* Split out logic to CallStore so we don't repeat checks.
* Refactor to use CallStore so we only fetch once.
* Add test for useRoomCall
* lint
* Ensure we enable MatrixRTC when configuring element call.
* fix test
* Update @element-hq/element-web-playwright-common to 2.2.2 and enable matrix rtc
* lint
* Ensure call is configured for header test
* type
* Improve coverage
* Update based on feedback
* fix type
* Switch to Compound icons to replace old icons
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Apply same treatment to missed icons
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove duplicated icon
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update icon
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix emoji font in emoji picker header buttons
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screnshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace icons with Compound alternatives
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove unused icon
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace more icons with Compound alternatives
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Swap for outline icons in spotlight & update screenshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch emoji picker to use emoji for header icons
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update football emoji
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from svg masks to svg rendering in ExtensionsCard
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from svg masks to svg rendering in BaseCard
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from svg masks to svg rendering in EmojiPicker
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from svg masks to svg rendering in Spotlight
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tweak emoji and fix disabled state
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from svg masks to svg rendering in HomePage
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from svg masks to svg rendering in DecoratedRoomAvatar
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from svg masks to svg rendering in SpaceRoomView
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from svg masks to svg rendering in DialPadBackspaceButton
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from svg masks to svg rendering in NewRoomIntro
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from svg masks to svg rendering in SpaceCreateMenu
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from svg masks to svg rendering in InlineTermsAgreement
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from svg masks to svg rendering in PollCreateDialog
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from svg masks to svg rendering in ServerPicker
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Revert size change
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Delint
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace icons with Compound alternatives
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove unused icon
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace more icons with Compound alternatives
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Swap for outline icons in spotlight & update screenshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch emoji picker to use emoji for header icons
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update football emoji
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from svg masks to svg rendering in ExtensionsCard
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from svg masks to svg rendering in BaseCard
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from svg masks to svg rendering in EmojiPicker
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from svg masks to svg rendering in Spotlight
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tweak emoji and fix disabled state
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Revert size change
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Delint
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update dependency matrix-web-i18n to v3.5.0
* Update matrix-web-i18n
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update matrix-web-i18n in shared-components too
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* matrix-web-i18n is now ESM
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove extra encryption strings
Found their way in during the i18n changes
* Remove log level silent
to try & work out why it only fails on CI
* Try giving it its own prettierrc
so the import is correct
* Comment why it needs its own prettierrc & put log level silent back
* Comment the right .prettierrc
* Split translations between EW and shared components
Uses update module API with global TranslationKey type that can be
overridden.
WIP.
* Removed the wrong script (for now)
* Add the type files
* Add shared components i18n file
* More i18n strings
* Add i18n check for shared conmponents
* Needs a different name
* rerun i18n for merge from develop, fix test
* Move translated strings to shared components file
NB. there are lots of removed strings for a few languages where we
seem to have hit a localazy bug or something where the key/value
for plurals got switched, making the translations invalid. They've
been missing for a while so I'm removing them rather than trying to
restore them,
* Add shared components files to localazy
* Merge element web & shared component translations
for the built app
* Use right translations for shared component tests
and fix missign en_EN strings
* Pull shared components translations too
* Fix/disable warnings
* We can now remove the build:res call
...right? (right?)
* Remove webpack import for languages index
..and just load it using a relative path which we do for the individual
language files and also did anyway for the index because even in non-test
it was an object, not a string, so we always usesd the 'test' code path.
* Make the storybook language selector work
...without referring to the parent app's files
* Revert unnecessary yarn lock change
* Typo
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Add comment on why we use merge
* Fix localazy download config
to actually put the translations in the right place
* Better typescript syntax
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Watch both translations files
---------
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace icons with Compound alternatives
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove unused icon
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace more icons with Compound alternatives
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Swap for outline icons in spotlight & update screenshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch emoji picker to use emoji for header icons
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update football emoji
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tweak emoji and fix disabled state
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace icons with Compound alternatives
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove unused icon
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace more icons with Compound alternatives
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Swap for outline icons in spotlight & update screenshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix expand/collapse reply preview not showing in some cases
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Move tests to appropriate place
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add comments
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove superfluous rageshake label for Rust Crypto
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove old test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Delint
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them in SpacePanel
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix badly rendered icon in JoinRuleDropdown
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix badly rendered icon in RoomPreviewCard
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix badly rendered icon in Space menus
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix badly rendered icon in ThreadPanel
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove unused icon underfill
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add missing snapshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove unused AccessibleButton kinds
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them in EventTileBubble
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them in ReactionsRow
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them in MFileBody
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them in BaseCard
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them in RedactedBody
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them in E2ePadlock
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tidy up E2EIcon
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them in DialPad
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them in AccessSecretStorageDialog
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them in HiddenBody
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix overflow in base card size
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add missing screenshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* refactor: transform `FontWater.onAction` to switch
* fix: reload font after switching theme
Fix#26248#31588
When a theme is swiched, `clearCustomTheme` remove all css variables.
After the styles are re-applied but the custom fonts or emoji are not
re-applied.
* test: add test for `Action.ReloadFont`
* test: add missing tests for existing actions
* test(e2e): add tests to ensure that font and emoji stay unchanged
* Revert "fix: reload font after switching theme"
This reverts commit 2b0071af21c38bf2c86780356aa39d290e9d9148.
* Revert "refactor: transform `FontWater.onAction` to switch"
This reverts commit 411915860923230cabce3ad5498fb46696a9a65e.
* Revert "test: add test for `Action.ReloadFont`"
This reverts commit 31b3b224cd2c443663a2b9bba312a4140907a8ed.
* fix: don't remove custom emoji and cpd font when clearing custom theme
Fix#26248#31588
When a theme is swiched, `clearCustomTheme` remove all css variables.
After the styles are re-applied but the custom fonts or emoji are not
re-applied.
This fix avoid the custom font and emoji to be removed.
* test: add tests
* Open right panel timeline when jumping to event with maximised widget
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix types & update snapshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Do not alter text-decoration if an <a> tag is a Link.
* Update screenshots
* update compound web to 8.3.4
* Update snaps
* Update alllllll the snaps
* update screenshots
* recalculate mentions of forwarded messages
In transformEvent(), parse event body back into an EditorModel, and pass this into attachMentions(), so that it actually recalculates mentions.
* refactor ForwardDialog-test.tsx
Refactor test for stripping mentions on forwards to allow for more tests of mention recalculation
* add test to recalculate mention pills
Fails due to not mocking room membership
* fix lint
* fix test: add ability to provide source room stub
* show correct toast when cross-signing keys missing
If cross-signing keys are missing both locally and in 4S, show a new toast
saying that identity needs resetting, rather than saying that the device
needs to be verified.
* refactor: make DeviceListener in charge of device state
- move enum from SetupEncryptionToast to DeviceListener
- DeviceListener has public method to get device state
- DeviceListener emits events to update device state
* reset key backup when needed in RecoveryPanelOutOfSync
brings RecoveryPanelOutOfSync in line with SetupEncryptionToast behaviour
* update strings to agree with designs from Figma
* use DeviceListener to determine EncryptionUserSettingsTab display
rather than using its own logic
* prompt to reset identity in Encryption Settings when needed
* fix type
* calculate device state even if we aren't going to show a toast
* update snapshot
* make logs more accurate
* add tests
* make the bot use a different access token/device
* only log in a new session when requested
* Mark properties as read-only
Co-authored-by: Skye Elliot <actuallyori@gmail.com>
* remove some duplicate strings
* make accessToken optional instead of using empty string
* switch from enum to string union as per review
* apply other changes from review
* handle errors in accessSecretStorage
* remove incorrect testid
---------
Co-authored-by: Skye Elliot <actuallyori@gmail.com>
* feat: Update algorithm for history visible banner.
- The banner now only shows for rooms with `shared` or `worldReadable`
history visibility.
- The banner does not show in rooms in which the current user cannot
send messages.
* tests: Add `getHistoryVisibility` to stub room.
* docs: Add description to `visible` condition check.
* docs: Fix spelling.
Co-authored-by: Florian Duros <florian.duros@ormaz.fr>
* chore: Remove `jest-sonar.xml`.
---------
Co-authored-by: Florian Duros <florian.duros@ormaz.fr>
* Remove release announcements for new sounds & room list
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add a timeout for toast checks
* Add tests for room status bar
* Fix MAU toast never appearing.
* Also cover local room create fails.
* fix await
* docstring
* Enwiden
* Add a test for the changes
* Switch to non-solid compound icons for room settings & composer
Also manually fixes sticker.svg to be tintable until it is redrawn
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace sticker.svg
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* style: move compound loading order
* fix: spotlight fiting
* fix: don't use internal compound css var in settings subsection
* fix: don't use internaal compound css var in read receipt group
* fix: add important to font settings on body element
* fix: remove play pause button color and fix padding
This color wasn't apply because this PR. Removing to avoid visual
regression
* fix: add important to form help message override in preference settings
* fix: override compound in space panel buttons
* fix: layout of forgot password
* fix: height of encryption tab
* fix: widget avatar border radius
* build: fix shared component screenshot update
The yarn command `test:storybook:update` was running twice
`playwright-sceenshots`. However this script is using ryuk to delete
remaining containers/etc and ryuk does the cleanup after 50sec of idle.
So on the script second call, ryuk container was still running and the
script failed.
This PR introduces a shell script to install the dependencies and to run
the tests in the same playrwright-screenshots call.
* Update packages/shared-components/scripts/storybook-screenshot-update.sh
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update packages/shared-components/scripts/storybook-screenshot-update.sh
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* doc: fix duplicated documentation after github commit
---------
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* docs: Update documentation for HistoryVisibleBanner and VM.
* docs: Improve documentation for `HistoryVisibleBanner`, second pass.
* docs: Move documentation to prop types over FC.
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* fix: Simplify type for `HistoryVisibleBannerViewModel` `threadId`.
* docs: Apply suggestions from code review
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
---------
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Amend e2e normal icon from lock-solid to info (#31555)
* Amend e2e normal icon from lock-solid to info
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
(cherry picked from commit 773662e018)
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them in SpacePanel
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix badly rendered icon in JoinRuleDropdown
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix badly rendered icon in RoomPreviewCard
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix badly rendered icon in Space menus
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix badly rendered icon in ThreadPanel
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove unused icon underfill
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add missing snapshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Amend e2e normal icon from lock-solid to info
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Make AccessibleButton contrast control compatible
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them in left panel
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove unused stylesheet
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them for ExternalLink
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them for TabbedView
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them for JoinRuleDropdown
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them in ManageRestrictedJoinRuleDialog
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them in LeaveSpaceDialog
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them in ReplyPreview
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them in SearchBox
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them in RoomStatusBar
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix advanced.svg
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix bad merge conflict resolution
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them in Toasts
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them in RoomInfoLine
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them in UploadBar
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove unused class
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them in ConfirmSpaceUserActionDialog
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them in FeedbackDialog
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them in KeyBackupFailedDialog
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them in CopyableText
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them in EventTile
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them in InviteReason
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Delint
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them in left panel
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove unused stylesheet
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them for ExternalLink
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them for TabbedView
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them for JoinRuleDropdown
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them in ManageRestrictedJoinRuleDialog
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them in LeaveSpaceDialog
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them in ReplyPreview
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them in SearchBox
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch to rendering svg icons rather than masking them in RoomStatusBar
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix advanced.svg
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix bad merge conflict resolution
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tidy up token refresh code
This was a bit odd where the function to create a refresher sometimes
created a refresher and sometimes just returned null, including if the
init failed, in which case you would just end up with no token refresher.
Pairs with https://github.com/matrix-org/matrix-js-sdk/pull/5106 but
doesn't depend on either way.
* Remove deviceId property in favour of superclass one
* Fix tests
* Fix argument order in super call
redirect URI & device ID were swapped. It appears that gthe OIDS client
only actually sends the redirect URI when refreshing a token, so we will
have been sending a device ID for that when refreshing. I think this is safe
to fix since this is only when refreshing so it already would not have
matched what was passed at login time.
* Pass client ID into createOidcTokenRefresher
* refactor: move room list search to shared components
* refactor: add view model
* refactor: use view and vm in room list search component
* refactor: use room list id instead of class for landmark navigation
* refactor: remove old room list search css
* test: add screenshots test for room list search view
* test: fix e2e test using class as selector...
* refactor: useCreateAutoDisposedViewModel for audio player
* Update src/viewmodels/audio/AudioPlayerViewModel.ts
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Size Autocomplete relative to the RoomView height rather than the viewport height
* Add screenshot for the autocomplete in a regression changes the height
* Add cjk fonts to support rendering text emoticons displayed in slash command picker
* Maybe when actually running the tests?
* Try after system dependencies and clear font cache
* Add cjk fonts to support rendering text emoticons displayed in slash command picker
Try after system dependencies and clear font cache
Maybe when actually running the tests?
Revert "Add cjk fonts to support rendering text emoticons displayed in slash command picker"
This reverts commit 46fa014308b6010626174f8cd0d3a978488963ee.
* Render emoji autocoplete instead
* Remove font install that didn't work
* feat: Implement UI for history visibility acknowledgement.
Shows a banner above the message composer whenever a user opens a room
with non-join history visibility, which they can dismiss.
- Whenever a user opens an encrypted room with non-join history
visibility, show them a banner, unless we have already marked it as
dismissed.
- Whenever a user opens an encrypted room with joined history
visibility, we unmark it as dismissed.
Issue: https://github.com/element-hq/element-meta/issues/2875
* tests: Add test suite for `RoomStatusBarHistoryVisible`.
* docs: Document `RoomStatusBarHistoryVisible` and props interface.
* feat: Use newer `@vector-im/compound` components.
* test: Update snapshots for `RoomStatusBarHistoryVisible` tests.
* chore: Update playwright screenshots.
* feat: Move `RoomStatusBarHistoryVisible` to `shared-components`.
* fix: Address review comments on `RoomStatusBarHistoryVisible`.
* fix: Address review comments on `RoomStatusBar` and tests.
* chore: Move `RoomStatusBarHistoryVisible` to `room/RoomStatusBarHistoryVisible`
* chore: Fix linting issues.
* feat: Gate behind history visibility labs flag.
* feat: Add link to history sharing docs.
* fix: Resolve build issue with shared-components.
* tests: Enable history sharing lab for unit tests.
* tests: Set labs flag in SettingsStore mock.
* fix: Remove non-existent arg - documentation should be updated!
* chore: Remove old CSS rule filter.
* fix: Use package name for import over relative path.
* fix: Mark styles as important due to improper CSS load order.
* docs: Add doc comments to `!important` directives.
This change should restore my status as a good person.
* docs: Correct license header.
* tests: Update `RoomStatusBarHistoryVisible` snapshot.
* tests: Update shared history invite screenshot.
* tests: Revert spurious screenshot changes.
* feat: Update to use `Banner` component.
* chore: Remove broken import.
* chore: Remove unused translation string.
* tests: Add `getHistoryVisibility` to `currentState` of stub room.
* tests: Update screenshot.
* chore: Remove old snapshots.
* tests: Update playwright screenshot.
* feat: Separate `HistoryVisibleBanner` hooks into MVVM architecture.
* chore: Remove unused imports.
* feat: Use info link over action button for `HistoryVisibleBanner`
* tests: Update snapshot for `HistoryVisibleBanner`.
* chore: Remove unused imports.
* feat: Switch to MVVM architecture per style guide.
* tests: Update snapshot for `HistoryVisibleBanner`.
* tests: Update shared components snapshots.
* tests: Add unit tests for `HistoryVisibleBannerView` stories.
* fix: Linting errors from SonarCloud.
* feat: Finalise conversion to MVVM.
* fix: Silent `this` binding issue.
* tests: Update playwright snapshot.
* feat: Introduce wrapper component for `HistoryVisibleBanner`.
* tests: Update playwright screenshots for `HistoryVisibleBanner`.
* docs: Add doc comments to fields in `HistoryVisibleBannerViewModel`.
* tests: Update playwright snapshot.
* Update dependency is-ip to v5
* Fix import
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Make jest happier
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Check default PL when setting a new PL in createRoom
* Drop custom PL setting for video rooms
* lint files
* Add room version test
* Cleanup test
* fix import
* Fix e2e icon rendering
Regressed by change to compound icons, due to it relying on a hack of rendering icons atop each other to draw a background.
Also fixes a nested tooltip which became annoying during testing
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* EventIndex: add some documentation
... because comments are not subject to rationing.
* EventIndex: rationalise addInitialCheckpoints logic
* EventIndex: improve logging
* use a single `logger` instance to do the prefixing
* use `JSON.stringify` on the checkpoints so that the rageshakes are useful
* distinguish between logger.warn and logger.debug
* emit some logs if the crawler loop fails
* Move check for empty database to `init`
The problem with checking if the database is empty in `onSync` is that, by the
time we get there, it won't be.
Instead let's remember if the db was empty in `init`, and then once a sync
completes, we can add the checkpoints.
* Some tests for EventIndexer
* MessageEventIndexDialog: comments for state
* ManageEventIndexDialog: deduplicate some code
`updateCurrentRoom` has the same logic as `componentDidMount`, so let's factor
it out.
* ManageEventIndexDialog: distinguish indexed rooms
Just because a room is not currently awaiting indexing does not mean it has
been indexed. Update the dialog to show the actual number of indexed rooms, and
the number of rooms that are awaiting indexing.
* Apply suggestion from @richvdh
---------
Co-authored-by: Will Hunt <2072976+Half-Shot@users.noreply.github.com>
* Remove poll ended event UI.
* Add better aria labels for screen reader and change ui to match mobile UX.
- Checkmark and progress bar are only green if the poll is ended.
- Updated the Poll icon for open and ended state and added labels
- Right align total votes count and update text
* Update jest tests
* Fix total votes alignment
* Fix screenshots
* Update snapshot
* Update e2e tests
* fix more e2e tests
* Clean up CSS
* Add back text for undisclosed poll (total should be hidden)
* Update checkmark and progress colours to more closely match mobile
* Don't compute optionNumber on each render
* "Total votes" working doesn't really work with the current web behaviour
Web doesn't show the votes for undisclosed polls(mobile does). reverting and that behaviour change should be addressed in a different PR(or on mobile.).
* Fix e2e test
* Update screenshots
* Move positioning of total votes label back to the left side
as we are no longer changing the copy to match mobile
* Don't concatenate label
* Fix translation order
* Remove unneeded translations
* remove O(n^2) code
* fix snapshots
* Fix check style in poll option
* prettier
* Move `EditInPlace` out of `Form`
If it is part of the form saving will submit the inner form of
EditInPlace and reload EW.
* add tests and comments
* update snapshot
* fix playwright
* feat(room view): add `enableReadReceiptsAndMarkersOnActivity` props
For the multiroom module, we display several room views at the same
time. In order to avoid all the rooms to send read receipts and markers
automatically when we are interacting with the UI, we add
`enableReadReceiptsAndMarkersOnActivity`props.
When at false, the timeline doesn't listen to user activity to send
these receipts. Only when the room is focused, marker and read receipts
are updated.
* test(room view): add test for `enableReadReceiptsAndMarkersOnActivity`
* build(ew-api): update `@element-hq/element-web-module-api` to `v1.9.0`
* Fix cursor position bug during IME composition
Add IME composition check to BasicMessageComposer.onKeyDown to prevent
cursor position issues when pressing Tab key immediately after Japanese
input conversion. This matches the behavior in SendMessageComposer and
EditMessageComposer.
Fixes issue where cursor would jump to the beginning of the input field
after converting Japanese text and pressing Tab.
* Add tests for IME composition keydown handling
- Add test to verify keydown events are ignored during IME composition
- Add test to verify keydown events are handled normally when not composing
- Tests ensure the fix for Japanese IME cursor position bug works correctly
* Refer to ClientWidgetApi as "widget API" rather than "messaging"
* Rename StopGapWidgetDriver to ElementWidgetDriver
* Rename StopGapWidget to WidgetMessaging
* Fix WidgetMessaging's lifetime by storing it in WidgetMessagingStore
(Rather than storing just the raw ClientWidgetApi objects.)
* Unfail test
* use an error
* cleanup start
* Add docs
* Prettier
* link to store
* remove a let
* More logging, split up loop
* Add a test demonstrating a regression in Call.start
* Restore Call.start to a single, robust event loop
* Fix test failure by resetting the messaging store
* Expand on the WidgetMessaging doc comment
* Add additional tests to buff up coverage
* Add a test for the sticker picker opening the IM.
* reduce copy paste
---------
Co-authored-by: Half-Shot <will@half-shot.uk>
Co-authored-by: Timo K <toger5@hotmail.de>
* Use EditInPlace for identity server picker.
* Update test
* Add a test for setting an ID server.
* fix tests
* Reformat other :not sections
* forgot a comma
* Update Apperance settings to use toggle switches.
* Remove unused checkbox setting.
* Remove unused import.
* Update tests
* lint
* update apperance screenshot
* Begin replacing settings
* Refactor RoomPublishSetting
* Remove LabelledToggleSwitch
* Refactor SettingsFlag to use SettingsToggleInput
* Refactor CreateRoomDialog to use SettingsToggleInput
* Refactor DeclineAndBlockInviteDialog to use SettingsToggleInput
* Update DevtoolsDialog
* Refactor ReportRoomDialog to use SettingsToggle
* Update RoomUpgradeWarningDialog to use SettingsToggleInput
* Update WidgetCapabilitiesPromptDialog to use SettingsToggleInput
* Update trivial switchovers
* Update Notifications settings to use SettingsFlag where possible
* Update RoomPublishSetting and SpaceSettingVisibilityTab to use SettingsToggleInput with a warning
* revert changes to field
* Updated screenshots
* Prevent accidental submits
* Replace test ID tests
* Create new snapshot tests
* Add screenshot test for DeclineAndBlockDialog
* Add screenshot for create room dialog.
* Add devtools test
* Add upgrade rooms test
* Add widget capabilites prompt test
* Fix spec
* Add a test for the live location sharing prompt.
* fix copyright
* Add tests for notification settings
* Add tests for user security tab.
* Add test for room security tab.
* Add test for video settings tab.
* remove .only
* Test creating a video room
* Mask the IM name in the header.
* Add spaces vis tab test.
* Fixup unit tests to check correct attributes.
* Various fixes to components for tests.
* lint
* Update compound
* update setting names
* Cleanup tests
prettier
Updates some more playwright tests
Update more snapshots
Update switch
more fixes
drop .only
last screenshot round
fix video room flake
Remove console.logs
Remove roomId from devtools view.
lint
final screenshot
* Add playwright tests
* import pages/ remove duplicate create-room
* Update screenshots
* Fix accessibility for devtools
* Disable region test
* Fixup headers
* remove extra test
* Fix permissions dialog
* fixup tests
* update snapshot
* Update jest tests
* Clear up playwright tests
* update widget screenshot
* Fix wrong snaps from using wrong compound version
* Revert mistaken s/checkbox/switch/
* lint lint
* Update headings
* fix snap
* remove unused
* update snapshot
* update tab screenshot
* Update snapshots
* Fix margins
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Delint
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Tweak rendering of icons in legacy video feed
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove unused classes
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tweak rendering of icons in face pile
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tweak rendering of icons in overflow tile
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tweak rendering of icons in room search view
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tweak rendering of icons in top unread messages bar
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tweak rendering of icons in space basic settings
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tweak rendering of icons in thread summary tile
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tweak rendering of icons in legacy room tile
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tweak rendering of icons in incoming call toast
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tweak rendering of icons in labs jump to date
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tweak rendering of icons in field validation
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tweak rendering of icons in mini avatar uploader
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tweak rendering of icons in info tooltip
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tweak rendering of icons in network dropdown
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix the topic update workflow
* Update room IDs with the new ones after upgrades
* Make room name variable more descriptive
* Fail if the topic doesn't match
* Return when failing
* Add option to pick call options for voice calls.
* hook on the right thing
* Fix wrong call being disabled
* update snaps
* Add tests for menus
* more snaps
* snap snap
(cherry picked from commit a352a3838e)
Co-authored-by: Will Hunt <2072976+Half-Shot@users.noreply.github.com>
* Make ESLint's TS Root dir relative to .eslintrc.js
As per https://github.com/typescript-eslint/typescript-eslint/issues/251 seems
like this is the answer for having vscode not getting confused about
multiple projects in a monorepo with different tsconfigs.
* Add it here too for good measure
* Add option to pick call options for voice calls.
* hook on the right thing
* Fix wrong call being disabled
* update snaps
* Add tests for menus
* more snaps
* snap snap
* Upgrade module api package
* Add a wrapper component
So that we can render the decoration component with just the room.
* Implement module API method
* Add more tests
* Replace element-icons/chat-bubbles.svg with compound
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace element-icons/chat-bubbles.svg with compound
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace external-link.svg with compound
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace element-icons/hide.svg with compound
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace element-icons/explore.svg with compound
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace element-icons/hash-*.svg with compound
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace element-icons/share.svg with compound
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace element-icons/group-members.svg with compound
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace element-icons/mask-as-*.svg with compound
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace element-icons/low-priority.svg with compound
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace element-icons/plus-circle.svg with compound
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace element-icons/roles.svg with compound
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update jest snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Introduce i18nContext
* Adds a context that holds the module i1n API
* Switches shared components to use that instead of importing it directly
* Adds the context to MatrixChat and BaseDalog so it should be available most places in EW
This is a relatively small PR but does change the way the shared components do i18n so
just doing this one by itself (it stands by itself anyway).
This will allow shared components to use i18n when used in modules.
* Add the file
* Fix import lint
* Name the translate function _t
Then it should continue to get picked up by the script
This seems a bit flaky and ew but I'm not sure I want to get into
changing this in this PR.
* Put humanize back to calling something called _t too
* Missed one
* Add i18n context wrapper to stories
* Unused import
* Fix imports
* wrap richitem
* Wrap other richitem & richlist
* One day I will get my head around this syntax
* Fix import spacing
* Add wrapper to test
* unused import
* Hack around dependency cycle
* Make a moduleapi instance for tests
* Add i18n wrapper to jest-matrix-react
* Simple test for i18napi
* Import type
* Move i18n context wrapper to storybook template
* Unused imports & fix pill story
* Move i18n to its own provider
* Add i18ncontext wrapper to jest tests
* imports
* Bump module api to 1.7.0
* tsdoc
* MatrixChat: add a load of logging for view transitions
This stuff was essentially impossible to follow and debug. I think a load of
logging will help.
* Add more comments on `state.view`
* Add a new state between LOADING/SOFT_LOGOUT and LOGGED_IN
... so that we can transition into COMPLETE_SECURITY without going via
LOGGED_IN.
* Remove redundant check for `force_verification`
This check was previously necessary to keep the tests working, because:
* onLoggedIn would call `onShowPostLoginScreen`,
* which (without the check) would call `showScreenAfterLogin`
* which would queue up an action `Action.ViewHomePage`
* Then we would receive an already-queued `ClientStarted` action, which would
transition us (correctly) to the `COMPLETE_SECURITY` view
* Then we would receive the `ViewHomePage` action, taking us back to `LOGGED_IN`.
I don't think the check was necessary in practice, because in practice there
would be enough delay between the OnLoggedIn and ClientStarted actions that the
race didn't happen.
The *problem* with the check was that it meant that, whenever
`force_verification` was enabled, we would get stuck in the LOADING state.
The check is now unnecessary, because `onLoggedIn` no longer calls
`onShowPostLoginScreen`.
* `onShowPostLoginScreen` need no longer be `async`
* Regression test for https://github.com/element-hq/element-web/issues/31203
Add a workaround for the fact that MatrixChat attempts to use React state for
the state of a state machine: a small `sleep` to let the state settle.
As a result, it turns out we may not see the "Syncing..." state, and in general
`waitForSyncAndLoad` doesn't seem to be doing anything useful.
* fix: display the menu option on the room list item when clicked/opened
Fix#31366
`onBlur` was called when the room is opened, the focus is moved to the
composr. The hover state was removed.
The hover state is diplayed when `ìsFocused=true` so the keyboard
navigation is not impacted
* test: update room list e2e tests
* test: update marked as unread state
* Update vector-im
* Update Jest snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix playwright styling overrides
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Hold back Compound Design Tokens as threads icons unexpectedly grew a dot in the top corner where we conditionally draw a dot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update Compound Design Tokens to 6.4.1
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Revert snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tweak bubble
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update storybook snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update jest snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update jest snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix handling of SVGs
1. Ensure we always include thumbnails for them
2. Show `m.file` handler if we cannot render the SVG
3. When opening ImageView use svg thumbnail if the SVG cannot be rendered
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix UploadConfirmDialog choking under React devmode
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
In the upcoming work for encrypted state, we need to keep the spinner
until the m.room.encryption event is received. This change keeps the
spinner just a little longer than before: until the room is received
from the server.
I'm submitting this change partly because I think it makes sense to
delay until we can confirm the room exists and partly to separate this
change from other changes that will be involved in encrypted state. That
way if this causes problems we can discuss or revert it separately.
* Replace element-icons/room/composer/attach.svg with compound
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace element-icons/room/*/emoji.svg with compound
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace element-icons/room/message-bar/edit.svg with compound
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace element-icons/room/composer/poll.svg with compound
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace element-icons/room/composer/plain_text.svg with compound
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove unused star.svg
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace element-icons/upload.svg with compound
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace element-icons/settings/preference.svg with compound
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace element-icons/settings/flask.svg with compound
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace element-icons/settings/appearance.svg with compound
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace element-icons/call/dialpad.svg with compound
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace element-icons/call/hangup.svg with compound
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace element-icons/call/video-call.svg with compound
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace element-icons/call/voice-call.svg with compound
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace element-icons/cloud-off.svg with compound
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Replace element-icons/eye.svg with compound
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove debug
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add a fake ecall page
* Start to setup a test to check PiP works
* Complete test file
* cleanup
* lint
* use test fail
* lint again
* remove fake
* Fix flake
* better comment
* Initial implementation of MSC4380
* fix lint
* Update InviteRulesAccountSetting-test
* add some docs
* `block_all` -> `default_action`
* Add a unit test for BlockInvitesConfigController
* Tweak rendering of icons in dropdowns
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tweak rendering of icons in composer format bar
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tweak rendering of icons in jump to bottom button
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tweak rendering of icons in quick settings button
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tweak rendering of icons in left panel search
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Delint
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix margin
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tweak rendering of icons in security user settings tab
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tweak rendering of icons in space hierarchy
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Delint
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Simplify
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tidy
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove some unused CSS & icons
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix type
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove another unused class
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Move call to `tryPersistStorage` to `OnLoggedIn` handler
I think this needs to happen whether or not we are in the middle of a login
flow.
Fixes: https://github.com/element-hq/element-web/issues/31298
* Inline `MatrixChat.onLoggedIn`
It's now a one-liner, and its semantics are very confusing.
* Factor out `MatrixChat.onLoggedIn`
Now that we've got rid of the confusing `onLoggedIn` method, we can factor out
a method which *actually* handles `OnLoggedIn` actions.
* Allow the Login screen to use the dark theme
There is a whole bunch of code dedicated to attempting to force a "light" theme
onto the login view, even if the deployment is configured to prioritise the
dark theme.
Apparently this was done because, in the old days, the
login view looked rubbish with the dark theme, but now it looks fine.
Fixes https://github.com/element-hq/element-web/issues/31292
* Fix up background colour of auth screen in dark theme
In dark theme, the background of the login/register/welcome box needs to be
translucent black rather than translucent white.
To make this work, I've moved the style from inline to CSS, and used a PostCSS
variable to define the colour.
* Fix up Welcome page colours in dark theme
Make the text and image white, not black, in short.
* Fix incorrect merge
that will teach me to use the Github UI to address merge conflicts.
* Update all non-major dependencies
* Make knip happy
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
Because RoomViewStore used two slightly different conditions, the Call.presented flag could get out of sync with the viewingCall flag. But these should effectively be the same thing.
This was causing some subtle bugs if you would join a call, switch to another room, and then click back into the call room via the room list. The call would be visible but not know that it's presented, causing:
1. The hangup sound to get cut off at the end of the call
2. The widget to disappear immediately without offering a 'reconnect' button if you lose connectivity
* feat: implement `ExtrasApi#setRoomIdsForSpace`
* fix: message reply with multiple room views
* fix: message edition when multiple rooms are displayed
* test: check that the view room action is not dispatch when replying
* test: check that the view room action is not dispatch when editing
* refactor: use `ExtraApis#getVisibleRoomBySpaceKey` instead of `ExtraApis#setRoomIdsForSpace`
* test: update tests to use `getVisibleRoomBySpaceKey`
* add function to pause device listener
* add function to check if key backup key missing both locally and in 4s
* reset backup if backup key missing both locally and in 4s
* fixup! add function to check if key backup key missing both locally and in 4s
* Drop KEY_STORAGE_OUT_OF_SYNC_STORE in favour of checking cross-signing
Check if cross-signing needs resetting, because that seems to be what
KEY_STORAGE_OUT_OF_SYNC_STORE is actually trying to do.
* add a function for resetting key backup and waiting until it's ready
* trigger key storage out of sync toast when missing backup key locally
and fetch it when user enters their recovery key
* reset backup when needed if user forgets recovery key
* rename function as suggested in code review
* Remove unreachable code
`view_last_screen` is never used.
* Remove unused action `user_activity_started`
Nothing listens to this, so it's pointless.
* Symbolic constant for `Action.UserActivity`
* Define symbolic constants for more `Action`s
Constants for some actions that are emitted by `Lifecycle`
* Rename callback on E2eSetup component
`BaseDialog.onFinished` is unused when `hasCancel=false`, so this callback is
only used when the user clicks cancel. For clarity, rename it.
* Test for cancellation behaviour
* Fix invalid events crashing entire room rather than just their tile
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* feat: add options to hide right panel in room view
This option is added for the module API.
* test: add test for hideRightPanel=true of room view
* test: update snapshot ids
This was telling the browser that the children of this div will never go
out of the bounding rect of the div. This is incorrect because the
expand button is supposed to sit at the edge of the space panel with
half of it outside the bounding rect.
* Delayed event management: split endpoints, no auth
Use the new js-sdk client methods for calling the dedicated,
unauthenticated endpoints for each of the cancel/restart/send actions
for updating a delayed event.
Note that these methods are compatible with homeservers that support
only the original endpoint where the update action is in the request
body.
* REPLACEME: pull in dependant js-sdk branch
see matrix-org/matrix-js-sdk#5066
* Format with Prettier
* Update matrix-js-sdk
* Add voiceOnly options.
* tweaks
* Nearly working demo
* Lots of minor fixes
* Better working version
* remove unused payload
* bits and pieces
* Cleanup based on new hints
* Simple refactor for skipLobby (and remove returnToLobby)
* Tidyup
* Remove unused tests
* Update tests for voice calls
* Add video room support.
* Add a test for video rooms
* tidy
* remove console log line
* lint and tests
* Bunch of fixes
* Fixes
* Use correct title
* make linter happier
* Update tests
* cleanup
* Drop only
* update snaps
* Document
* lint
* Update snapshots
* Remove duplicate test
* add brackets
* fix jest
* Fix gen-workflow-mermaid to be compatible with Node 22.18+
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update jest to v30
* Update jest to v30
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Apply jsdom patch
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Update dependency vite to v7.1.11 [SECURITY]
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Update all non-major dependencies
* Make knip happy
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* fix: install shared components during EW install
* chore: ignore `@element-hq/web-shared-components` for knip
* chore: remove shared-components operation in layered.sh
EW `yarn install` is also installing shared-componenents dependencies.
`link:` in `package.json` works nearly like `yarn link`.
* Iterate
---------
(cherry picked from commit e883b05206)
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
Co-authored-by: Florian Duros <florianduros@element.io>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* fix: install shared components during EW install
* chore: ignore `@element-hq/web-shared-components` for knip
* chore: remove shared-components operation in layered.sh
EW `yarn install` is also installing shared-componenents dependencies.
`link:` in `package.json` works nearly like `yarn link`.
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Apply aria-hidden to emoji in SAS verification
So that for screen readers the canonical emoji description is preferred & we avoid the user being read each emoji twice.
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix room list handling of membership changes
Including knock->invite for ask to join
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* lint
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Inhibit keyboard highlight in spotlight dialog when effector is not in focus
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Inhibit keyboard highlight in forward dialog when effector is not in focus
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix search box height bouncing on focus/blur
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update docs for 'bug_report_endpoint_url' to use the dedicated subdomain
* Update {app,develop}.element.io to use the dedicated subdomain for 'bug_report_endpoint_url'
As the comment indicated, this apparently was necessary to get stuff
built the first time, but does not appear to be necessary anymore and
looks to be causing occasional flakiness, so let's remove it.
* feat: add props to hide header in `RoomView`
* feat: add props to hide composer in `RoomView`
* feat: pass `RoomViewProps` to room view in `renderRoomView`
* refactor: add doc and use existing types
* test: add tests for new room view props
* strip mentions from forwarded messages
fixeselement-hq/element-web#30883
* call attachMentions() for empty m.mentions in forwarded messages
As there is no EditorModel, attachMentions() currently does nothing
* fix lint and typecheck
* update test "should be navigable using arrow keys"
* update test "forwards pin drop event"
add empty mentions to expected content
* add doc to transformEvent() & elaborate on attachMentions()
* add test "strips mentions from forwarded messages"
* fix lint
* update source of `attachMentions()` import
---------
Co-authored-by: David Baker <dbkr@users.noreply.github.com>
* Module API experiments
* Move ResizerNotifier into SDKContext
so we don't have to pass it into RoomView
* Add the MultiRoomViewStore
* Make RoomViewStore able to take a roomId prop
* Different interface to add space panel items
A bit less flexible but probably simpler and will help keep things
actually consistent rather than just allowing modules to stick any
JSX into the space panel (which means they also have to worry about
styling if they *do* want it to be consistent).
* Allow space panel items to be updated
and manage which one is selected, allowing module "spaces" to be
considered spaces
* Remove fetchRoomFn from SpaceNotificationStore
which didn't really seem to have any point as it was only called from
one place
* Switch to using module api via .instance
* Fairly awful workaround
to actually break the dependency nightmare
* Add test for multiroomviewstore
* add test
* Make room names deterministic
So the tests don't fail if you add other tests or run them individually
* Add test for builtinsapi
* Update module api
* RVS is not needed as prop anymore
Since it's passed through context
* Add roomId to prop
* Remove RoomViewStore from state
This is now accessed through class field
* Fix test
* No need to pass RVS from LoggedInView
* Add RoomContextType
* Implement new builtins api
* Add tests
* Fix import
* Fix circular dependency issue
* Fix import
* Add more tests
* Improve comment
* room-id is optional
* Update license
* Add implementation for AccountDataApi
* Add implementation for Room
* Add implementation for ClientApi
* Create ClientApi in Api.ts
* Write tests
* Use nullish coalescing assignment
* Implement openRoom in NavigationApi
* Write tests
* Add implementation for StoresApi
* Write tests
* Fix circular dependency
* Add comments in lieu of type
and fix else block
* Change to class field
---------
Co-authored-by: R Midhun Suresh <hi@midhun.dev>
* Make shared component build work in isolation
* Add deps that were missing because they were getting picked up
from element-web main but shared-components needs itself
* Exclude test files from dts generation
* Bump version
* Change all the shared-component import to be the built artifact
* Don't randomly inhale eslint configs in parent dirs please
* maybe we don't need this anymore?
* maybe fix build
* Maybe fix docker build
* More build faff
* build:res on the parent as part of shared component prepare
* link shared component repo inn docker build
* 💅
* 💅x2
* Try converting the translation keys to a .d.ts file manually
so it gets bundled rather than left as a relative import to the json
file
* add the script
* Add this back for 2nd time now I think
* Shouldn't need this anymore
* patch-package on prepare
because we're patching a dev dependency so it won't be there if we're
installed as a dependency
* Unused import
* Prettier compliance
* Only use counterpart from shared components
as per comment
* Import shared components CSS
* Prettier
* Call the one from shared components
rather than recurse infinitely
* Hopefully make tests work
* wake up, comment goes before import
* Fix lint errors
* Fix dupe TranslationKey export
* Update compound-web to fix type error
An update to @types.react adds the 'hint' value to the enum of the
'popover' attribute and this version of compound-web uses the maching
verson of @types/react so they don't conflict.
* Maybe, hopefully, get the types working?
Please?
* Add copyright header to i18nkeys
as eslint complains otherwise since it's now in src
* prettier
* stop running shared-component tests in EW
* update snapshots
because flex is now from an external stylesheet I guess
* More snapshots
* Manual class update
* Avoid bundling compound bits
Because a) it's silly and b) it means we end up bundling a copy of
floating-ui too which causes absolute madness with its useDelayGroup
contexts.
* ignore test util files for coverage
* Add !important
because the styles are being applied in a different order now
* Another !important because css order has changed
* Try adding it here to make the test files ignored
* More !important
* commit yarn lock change
* Add shared components coverage file
* Update snapshots
Because the line height was being overridden to 22.5px somehow by
something I can't find, and now isn't: surely the normal 1.5rem is
more sensible.
* Update snapshots, attempt 2
* Another !important
* More snapshot updates
* Add test for i18n wrappers
& add test script
* lint
* Prettier
* Hopefully run shared component tests
* don't need this bit for non-matrix
* install ew deps
* rigfht coverage location
* Rename job here too
* Try different coverage filename
* Fix copyrights & comment
* Typo
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Only set active descendant when the user starts typing.
* Fix jest tests.
* Remove aria-hidden
It was failing code quality checks and it actually wasn't addressing the issue.
* Only show highlight on arrow key navigation or updating the search query.
* Update screenshots
* Enter should not select an emoji if it is not highlighted.
* On clearing a query and using arrow kets again the highlighted emoji should be reset to the first.
* Update selector in picker tests
* Add focus lock to emoji picker and e2e test.
* Remove direct use of FocusLock in favour of the ContextMenu prop.
* Apply returnFocus for ContextMenu focusLocks
* Remove import
* Add relevant aria attribute for selected emoji in the emoji picker
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add aria-multiselectable
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Do not specify aria-selected/pressed when element is disabled
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Use checkbox role for reaction picker as gridcell + aria-selected has very inconsistent screenreader support
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix keyboard handling for modified DOM structure
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix enter behaviour
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix tooltips within context menu portals being unreliable
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* fix(list view): avoid re-create `onFocus` function at each render of the child items
* fix(room list): update `onFocus` signature
* fix(member list): update `onFocus` signature
* fix(room list): avoid re-render at the beginning and end of the scroll
* test(room list): remove scrolling test and props
* test(member list): update member tile view tests
* test(room list): update `ListView` focus test
* test(member list): add `onFocus` test for member list tile
* We should focus the node in the DOM so that the browser focus(with outline) matches the our internal RovingIndex state
* Don't move focus from the input if we are in "virtual" focus(via active descendant)
* Improve logging in `DeviceListener`
Sometimes we get a logline `4S is missing secrets` but it's hard to see *which*
secrets are missing. https://github.com/matrix-org/matrix-js-sdk/pull/5054
added a method to the js-sdk which allows us to get more info: use it here.
* Use getSecretStorageStatus for analytics reporting too
* Fix unit tests
* Show timestamps when keyboard focus is within an event tile
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Ensure toolbar navigation pattern works in MessageActionBar
This requires all buttons within to be roving by using the ref callback given by useRovingTabIndex
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Use PureComponent in EventTile to avoid mass re-rendering due to transitive onFocus/onBlur calls
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove unused timestamp event tile prop
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Use MessageTimestamp to generate the wrapping anchor so that focusing it brings up the tooltip
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tweak MessageTimestamp
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch back to Component as we specify a shouldComponentUpdate already
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update jest tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update playwright timestamp masks
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Revert snapshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix IRC layout
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Use PureComponent in EventTile to avoid mass re-rendering due to transitive onFocus/onBlur calls
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove unused timestamp event tile prop
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Use MessageTimestamp to generate the wrapping anchor so that focusing it brings up the tooltip
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tweak MessageTimestamp
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch back to Component as we specify a shouldComponentUpdate already
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update jest tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update playwright timestamp masks
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Revert snapshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix IRC layout
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Lint styles
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix layout picker
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update screenshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix pcss comment
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate Playwright
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate Playwright
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
This requires all buttons within to be roving by using the ref callback given by useRovingTabIndex
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Pass roomViewStore to the RoomView and add to the RoomContext.
* lint
* lint
* Make constants more DRY
* Make constants more DRY
* Commend non-null assertion on roomViewStore property of the RoomContext
* Update tsdocs.
* Fix sort order in space hierarchy
To match spec and not add unexpected sorting by space vs room
* Update SpaceHierarchy.tsx
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* fix: use EW and shared component counterpart
* fix: exclude counterpart from build
* Revert "fix: use EW and shared component counterpart"
This reverts commit 1983d063c6b75a4f6e193e3c57e3bd9bae0888de.
* Revert "fix: exclude counterpart from build"
This reverts commit 8e41b137fc0b3d88c38921ac5762836e29c062f8.
* fix: force EW and shared components to use EW counterpart
* Fix highlights in messages (or search results) breaking links
Fixes#17011 and fixes#29807, by running the linkifier that turns text into links before the highlighter that adds highlights to text.
* Fix jest test
* Fix tests related to emojis and pills-inside-spoilers
* Remove dead code
* Address review comments around sanitizeParams
* Address review comment about linkify-matrix
* Fix code style
* Refactor if statement per review
---------
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove vm related code from element-web/src
* Add and export view model code from package
* Update imports
* Rewrite vm tests using vitest
* Add github action to run vm tests
* Fix lint errors
* Mvoe tests over to jest
* Try fixing code coverage
* Second attempt at fixing code coverage
* Change module API to be an instance getter
Helps with circular dependencies by not instantating the module API
on the initial evaluation of the files.
* Add basic test
* add another test
* fix: update jest config with new shared components path
* fix: update sonar config
* chore: add `storybook` & `@storybook/react-vite` to run the shared components tests
* Fix html exports by adding SDKContext
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* delint
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove auto-bump step from share component publishing
Avoids having to give release bot permission to commit directly to
the branch for now.
* Pass npm token & remove version bump param
* On this step?
* We have to provide a registry URL????
* Rename as it doesn't really release
* Simplify favicons and other web icons
browserconfig.xml seems to have died with Internet Explorer
`apple-touch-icon` is awfully documented but seems like larger sizes are now preferred
Use PNG for the favicon as things now support it across the board, we could even consider moving to SVG favicons in the future
Optimised using oxipng, this is to simplify icon replacement in `element-web-bin`
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix paths
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove border around favicons
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Move shared components to a packages/ directory
so they can be publish more sensibly
* Iterate towards split out shared-components module
* Move shared component source into src/ subdir
* Fix up imports
* Include shared components in babel-ing (again)
* Remove now unused dependencies
* Update import in storybook preview
* ...except of course they aren't unused
if we import the shared components by source
* Ignore shared components deps
* Add shared-components to i18n paths
and upgrade web-i18n to version that supports doing so
* Move storybook stuff to shared-components
* Seems we don't need this anymore...
* Remove unused deps
and remove storybook plugin from eslint
* Presumably working-directory is only valid on run steps
* Ignore dep & run prettier
* Prettier on knips.ts
* Hopefully run in right dir
* Remember how to software write
* Okay... how about THIS way?
* Oh right, they were git ignored. Sigh.
* Add concurrently
* Ignore in knip
* Better?
* Paaaaaaaackageeeeeeees
* More packages
* Move playwright snapshots
* Still need a custom snapshots dir
* Build shared components in their separate package
Port https://github.com/element-hq/element-web/pull/30963
to https://github.com/element-hq/element-web/pull/30962
* Add prepare script
* try making it a postinstall
* no, this probably does want to be prepare
postinstall doesn't really make sense since you would not have the
dev dependencies at that point
* Add workflow to publish shared components
* Put in the namespace
* Add eslint back
* Oh, now knip sees them
* Fix another import
* Don't lint shared-components with everything else
Okay, eslint & tsconfig are tied too closely for this to work and
running tsc on the shared components will need its deps installing
* Maybe lint shared components
please?
* Not quite
* Fix name, add main, move patch-package to dependencies
Although the only patched package is a dev dependency, but the postinstall
will fail if patch-package isn't there.
* Switch to npm for publishing
Mostly because knip seems to this that yarn publish doesn't exist,
although actually it seems super confused about versioning so let's
just skip it.
* Also hopefully enable provenance
because why not
* Maybe get exports right
* Add richlist
* Yeah, of course the keys are ordered
why would the keys not be ordered
* Build web resources first
Otherwise yarn prepare won't work
* Fix exports
and add web-i18n as a dep
* prettier
* build res for static analysis
* more build:res
* ViewModel is only an interface
so export type
* Prettier
* Bump to 5
as I'll do at least one test with the publish action
* Move shared components to a packages/ directory
so they can be publish more sensibly
* Iterate towards split out shared-components module
* Move shared component source into src/ subdir
* Fix up imports
* Include shared components in babel-ing (again)
* Remove now unused dependencies
* Update import in storybook preview
* ...except of course they aren't unused
if we import the shared components by source
* Ignore shared components deps
* Add shared-components to i18n paths
and upgrade web-i18n to version that supports doing so
* Move storybook stuff to shared-components
* Seems we don't need this anymore...
* Remove unused deps
and remove storybook plugin from eslint
* Presumably working-directory is only valid on run steps
* Ignore dep & run prettier
* Prettier on knips.ts
* Hopefully run in right dir
* Remember how to software write
* Okay... how about THIS way?
* Oh right, they were git ignored. Sigh.
* Add concurrently
* Ignore in knip
* Better?
* Paaaaaaaackageeeeeeees
* More packages
* Move playwright snapshots
* Still need a custom snapshots dir
* Add eslint back
* Oh, now knip sees them
* Fix another import
* Don't lint shared-components with everything else
Okay, eslint & tsconfig are tied too closely for this to work and
running tsc on the shared components will need its deps installing
* Maybe lint shared components
please?
* Not quite
* Remove storybook again
Re-check if it does work without it
* Remove storybook eslint plugin
as we're not linting storybook here anymore
* Remove this too
* We do need it here though
* fix: same member count in header and member list
* test: update test
* chore: use `useRoomMemberCount` to compute member count in member list
* test: add event emitter function on mocked `room.currentState`
* fix: duration of voice message in timeline
* Revert "Fix clocks rendering at 00:00 when playback had not begun."
This reverts commit 68bcfbed3e37e0a8c9529e92a3e17a5bc70bf7ed.
* refactor: cleaner clock states check
* refactor: cleaner `onPlaybackStateChange` condition
* fix: `timeSeconds` is always a number
* refactor: allow playing and paused state to update clock state
* test: add test
* test: add moar test
* refactor: use `currentClockState`
* Add overscan to avoid so many black spots when scrolling
* increaseViewportBy seems more like what we want
* Use constants and some comments for the magic numebrs.
* Move ResizerNotifier into SDKContext
so we don't have to pass it into RoomView
* Fix test
* Unused import
* Add tests
* Remove a bunch of resizeNotifier props
* Remove more resizeNotifier props
* Add resizenotifier to test
* Add more sdkcontext wrappers in tests
* More sdkcontext wrappers
* Even more sdkcontext wrappers
* Add test to make sonarcloud happy
* Context isn't always there unlike props
* Test actual resizing too
* Remove commented line
* Only set MSC4230 is_animated flag if we are able to tell if the media is animated
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Set blob type correctly to not need to weave the mimetype around
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Use ImageDecoder to determine whether media is animated or not, adding support for AVIF and other formats
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* update key storage toggle when key storage status changes
Listen for the CryptoEvent.KeyBackupStatus event and update the state
when it changes.
* fixup! update key storage toggle when key storage status changes
* add comment about handling event
* Fix jitsi widget popout
Unfortunately I don't think playwright or jest can write a test for
something successfully opening a new tab.
Fixes https://github.com/element-hq/element-desktop/issues/2527
* On second thoughts, this is probably overkill
* Clarify
* Add test
* Unused import
https://github.com/element-hq/matrix-react-sdk/pull/34 added support for a
custom UIA stage called `org.matrix.cross_signing_reset`, but neglected to add
that stage to the list of supported stages that is passed to the js-sdk. As a
result, if the server chooses to offer alternative flows that use unsupported
steps (as is proposed in MSC4312), the js-sdk will be unable to reliably choose between them.
* Change 'Verify Session' to 'Start Verification'
* Update strings for the verification dialog
This completes the Element Web part of
https://github.com/element-hq/element-meta/issues/2898
* fixup! Update strings for the verification dialog
Remove separate _unsent string
* Test that VerificationRequestDialog updates when phase changes
* Change the title of VerificationRequestDialog when a request is cancelled
Part of implementing
https://github.com/element-hq/element-meta/issues/2898 but split out as
a separate change because it involves making VerificationRequestDialog
listen for changes to the verificationRequest so it can update based on
changes to phase.
* Add support for emoji suggestions
To both the rich text/plain text modes of the RTE.
* Add emoji completion test to WysiwygComposer
* Fix code as per test case, do no-op for community case
* bump wysiwyg to the version with suggestions supported.
* Add more unit tests for processTextReplacement
* Simple refactor for skipLobby (and remove returnToLobby)
* Tidyup
* Remove unused tests
* Add video room support.
* Add a test for video rooms
* tidy
* Document
* Tests for VerificationRequestDialog
* Fix theoretical bug where VerificationRequestDialog uses an outdated request
We were passing on `this.props.verificationRequest` to `EncryptionPanel` but we
should be passing on the request in `this.state`. This would not cause a problem
in practice because the `EncryptionPanel` immediately overwrites the request if
you supply a `verificationRequestPromise`.
* Extract some setup code out of the call tests
* Don't force all rooms to be rechecked for calls when starting a call
* Remove misleading unused group call callbacks
The GroupCallEventHandler hasn't been relevant to our Element Call group calls for some time; instead we look at the state of the MatrixRTCSessionManager and WidgetStore to determine whether a call has been started.
* Avoid creating multiple call objects for the same widget
* fix test
---------
Co-authored-by: Will Hunt <will@half-shot.uk>
* Add tests
* Add test IDs
* Revert to pre-new-widget-refactors state
* Update codeowners
* Remove one of the test IDs
* Update snapshots as DMs don't have room names :)
* Remove only
* fix a import
* fix docstring
* update snaps
* remove a line
* update snaps
* refactor: move `humanize` in shared components
* feat: add `RichItem` component
* feat: add `RichList` component
* refactor: use `RichList` and `RichItem` in `InviteDialog`
* fix: exclude `InviteDialog` button to css override
* test: update selector in invite dialog
* test(e2e): update crypto test to use correct selector
* test(e2e): update invite dialog
* test: add test for `humanize.ts`
* fix: add space between the list and the input when the list is scrollable
* test(e2e): update screenshots
* Add ability to disable all formatting buttons
* Create hook to check if the content contains a slash command
* Disable the formatting buttons if the message content contains a slash command
* lint
* typo
* Fix broken unlabelled automation
when removing labels if needs info is no longer in the labels we move it from the needs info column to the triage column
* Remove unneeded param
* make action id more specific
* fix: avoid flicker of the room list filter on resize
* test: update existing test to render correctly
* test: add test to avoid flicker regression
(cherry picked from commit 841f12bd46)
Co-authored-by: Florian Duros <florianduros@element.io>
* Update dependency uuid to v13
* Make jest happier
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove redundant @types package
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Validate room upgrade relationships properly
Ensures only correctly related rooms are left when leaving the latest version of a room.
Ensures the room list does not wrongly hide rooms which have not yet been upgraded.
Ensures the breadcrumbs store finds the correct latest version of a room for a given stored room.
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Don't show release announcements while toasts are displayed
Otherwise they can clash and look like a mess.
* Dismiss the toast in the e2e test
* Update screenshot
* Add decline button to call notification toast (use new notification event)
- This make EW incompatible with the old style notify events.
Signed-off-by: Timo K <toger5@hotmail.de>
* update styling for call toast
Signed-off-by: Timo K <toger5@hotmail.de>
* skip lobby on join button click / dont skip lobby on toast click
Signed-off-by: Timo K <toger5@hotmail.de>
* dismiss toast on remote decline
Signed-off-by: Timo K <toger5@hotmail.de>
* fixup docstring and event_id
Signed-off-by: Timo K <toger5@hotmail.de>
* Add tests
Signed-off-by: Timo K <toger5@hotmail.de>
* remove unused var
Signed-off-by: Timo K <toger5@hotmail.de>
* test that decline event gets sent
Signed-off-by: Timo K <toger5@hotmail.de>
* make "go to lobby" accessible via keyboard (fix sonar cloud)
Signed-off-by: Timo K <toger5@hotmail.de>
* remove keyboard input
Signed-off-by: Timo K <toger5@hotmail.de>
* fix lint
Signed-off-by: Timo K <toger5@hotmail.de>
* use actual button
Signed-off-by: Timo K <toger5@hotmail.de>
* review style + toggle for join immediately
Signed-off-by: Timo K <toger5@hotmail.de>
* fix `getNotificationEventSendTs`
Signed-off-by: Timo K <toger5@hotmail.de>
* use story component
Signed-off-by: Timo K <toger5@hotmail.de>
* english text
Signed-off-by: Timo K <toger5@hotmail.de>
* dont use legacy toggle
Signed-off-by: Timo K <toger5@hotmail.de>
* fix lint
Signed-off-by: Timo K <toger5@hotmail.de>
* review
Signed-off-by: Timo K <toger5@hotmail.de>
* review (mostly docs)
Signed-off-by: Timo K <toger5@hotmail.de>
---------
Signed-off-by: Timo K <toger5@hotmail.de>
* Hold Electron toasts until after the client starts
as otherwise they won't be shown and will be reset out of existence
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Lint
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Default to new room list and enforce in config for app and develop
* Update jest tests
* Update LandmarkNavigation and e2e test
* Update viewRoomByName helper
* lint
* Update Add -> New Room flow
Keep legacy viewRoomByName until we delete the olds tests.
* Update e2e test to use Add -> Start Chat
* Update screenshots
* Fix viewRoomByName, can't use option as it contains more that just the room name. Using title which should be exact.
* Fix knocking tests
* fix layout.spec.ts and pstn.spec
* timeline snapshots
* Fix spotlight.spec
* TAC spaces and media preview settings
* Fix more screenshots and mark as unread tests
* Fix leftpanel test
* Bugfix for knocking use case. We should check EffectiveMembership when remove rooms from the new room list, so that knocking is handled
* Fix openCreateRoomDialog to new room list specifics to fix create-knock-room.spec.ts
* lint
* Fix Landmark navigation from left panel search to the next landmark
* lint
* Update window-12px-linux.png
* Update apps-drawer-linux.png
* Update sliding sync e2e tests
* Update some screenshots
* Revert change to the space create screenshot
* Use actual screenshot
as focused elements are different when generated locally
* Fix test selectors
* Morfe test screenshot selector / update
* Add test for landmark navigation
* Replace screenshots
* Fix another test that just got added an hour ago
* Not sure why this was changed, doesn't seem necessary
* Disambiguate selector
* Another screenshot that's now changed in width by 1px
* Revert changes to config files
It's being turned on by default so these are unnecessary
* Convert read.unread assertions to new room list
removing support for checking for activity in assertUnread which was
unused.
* Update room list order tests
that feel a bit like they ought to be in room-list rather than read-receipts but whatever
* Fix room titles in read receipts test
---------
Co-authored-by: David Baker <dbkr@users.noreply.github.com>
* Add mechanism for Electron to render toasts
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix enabling key backup not working if there is an untrusted key backup on the server.
* lint
* Add test for trust situations.
* remove conditional
* Update src/components/viewmodels/settings/encryption/KeyStoragePanelViewModel.ts
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Update src/components/viewmodels/settings/encryption/KeyStoragePanelViewModel.ts
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
---------
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* add variant of ResetIdentityBody for when the user has no verif. methods
* no longer distinguish between the using having a passphrase or not
* use vertical stack of buttons via EncryptionCard
and update wording
* swap logic order to match rendering order
* use the same dialog when no verification options available
* make it agree with the design more
* allow signing out on initial login
* apply styling changes and remove duplicate elements
* fix and add tests
* add missing snapshot
* Apply suggestions from code review
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* use a boolean property to disable blurring instead of adding a class
* change string identifiers
* apply changes from review -- simplify logic
* change class name to avoid confusion
---------
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Start to implement intents for DM calls.
* Refactor and fix intent bugs
* Do not default skipLobby in Element Web
* Remove hacks
* cleanup
* Don't template skipLobby or returnToLobby but inject as required
* Revert "Don't template skipLobby or returnToLobby but inject as required"
This reverts commit 35569f35bb254462dd86c16438dab38188db6fbc.
* lint
* Fix test
* lint
* Use other intents
* Ensure we test all intents
* lint
* cleanup
* Fix room check
* Update imports
* update test
* Fix RoomViewStore test
* Make landmark navigation work with new room list
Split out from https://github.com/element-hq/element-web/pull/30640
* Fix landmark selection to work with either room list
* Add test for landmark navigation
* Add test
* Fix test
* Clear mocks between runs
* fix: avoid to render `AudioPlayerViewModel` when `MAudioBody` is inherited
* fix: avoid `Playback.prepare` to fail when called twice
* fix: add `decoding` to playback type
* refactor: fix circular deps
* refactor: extract `MockedPlayback` from `AudioPlayerViewModel`
* test: add `MAudioBody` basic test
* test: add tests for `MVoiceMessageBody`
* fix: lint
* fix: align default avatar in composer pills
* fix: use correct color for avatar in composer pills when there is no image
* test(e2e): add test for cider mention
* chore: fix typo
* Use configured URL for link to desktop app in message search settings
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix history visibility when creating space rooms
This line was here which made history visibility different for space
rooms vs normal rooms, making history world readable for public rooms
and shared from the point of invite (rather than joining) for any other
rooms.
I can't see any reason this makes sense, or why space rooms should
have different history visibility defaults to other rooms. It wasn't
commented. Let's just remove the line and make them consistent.
* Fix import
* Add some tests
to asert that we don't randomly change the options that createRoom
passes to the HS.
* Fix local room encryption status always not enabled
* refactor: put back the e2e test after merge
* fix: look at e2eStatus in composer of local room
* doc: add docs to `LocalRoom.isEncryptionEnabled`
* test(e2e): check composer doesn't display unencrypted state
* test: update existing tests
* test(e2e): update existing tests
* refactor: move room encryption check in a dedicated function
* refactor: make `isEncryptionEnabled` cleaner
* test: add tests for `LocalRoom.isEncrypted`
* doc: fix `useIsEncrypted` comment
---------
Co-authored-by: Florian Duros <florian.duros@ormaz.fr>
* Remove 'beta' pill from Element Call option
This just removes the 'beta' lebelling: it does not take it out of
labs by default just yet.
* Appease import linter
* Playwright: split `logIntoElement` into two
Split up this helper function, so that rather than being a single function with
an optional argument, it is two separate functions.
* Playwright: fix flaky shields test
Wait for the application to redirect to `/#/home` after completing security, so
that we don't end up racing with it.
Fixes https://github.com/element-hq/element-web/issues/28836
* Add tests for axe violations for the new room list
* axe doesn't like a ul/li with roles listbox/option. Changing to div/button as we have elsewhere like RoomListitemView.
* Fix RoomListPrimaryFilters test
* Justify the items in the primary filter container
to get the dropdown button on the right again
* Update snapshot
* Make the room list itself focusable
As the comment said, there was no real reason it needed to be, except
that there was because of axe. Probably having the children focusable
would be better, but Virtuoso wraps them in more divs which doesn't
satisfy axe's requirements since those inner divs are not the scrollable
ones. I can't see a better option than this right now.
* Update snapshot
---------
Co-authored-by: David Baker <dbkr@users.noreply.github.com>
`Default empty createSecretStorageKey() => null` is unhelpful at best, and
indeed all the other logs from this file are redundant. Let's patch them out to
help log analysis.
* Mention our dev room in the contributing guide
It was in there, but only in the tests section, relating to how
to write tests. This adds it in the first section.
* Prettier
* Refactor StyledRadioButton to provide proper labels.
* Automatically change history settings to members only if room is made private
* Add tests
* lint
* lint further
* Fix clickable buttons
* Revert functional component-ing
* text tweaks
* update snapshots
* Add unit test for history vis changes
* lint
* Update snapshots
* Fix flakes
* lint
* Set nullglob
* Replace with a if statement (because we're using sh)
* combine if
(cherry picked from commit 1c30bec083)
Co-authored-by: Will Hunt <will@half-shot.uk>
* Remove remaining support for `secure_backup_setup_methods` option
Support for this .well-known setting had been removed everywhere except in a
rather obscure corner of the code. There are many other problems with this area
(https://github.com/element-hq/element-web/issues/29171) but removing support
for the outdated option is an easy step.
* Remove remaining `secure_backup_required` setting support
Again, this setting was only honoured in the obscure "New Recovery Method"
flow.
* fix: make url in topic in room intro clickable
* chore: remove extra line
* refactor: use tag instead variable
* test: add topic tests
* fix: update i18n key
* Block change recovery key button while a change is ongoing.
* Add disable check
* lint
* Ensure we test that spamming the button doesn't break it.
* Mock out modals
* lint
* add two more clicks
* lint
---------
Co-authored-by: Andy Balaam <andy.balaam@matrix.org>
* Update all non-major dependencies
* Make knip happy
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Make parseUserAgent happy
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* fix: improve aria role and label on pinned message banner
* fix: change pinned message badge background for contrast
* fix: link pinned message button to content
* test: update tests
* fix: add aria-describedby on pinned message badge
* feat: use `aria-describedby` instead of `aria-description`
* test: update room view snapshot
* test: update snapshot
* fix: put id only textual body upper div
* fix: use lodash uniqueId
* test: update snapshots
* Always show media from your own user
* Update usages of useMediaVisible
* lint
* Add a test for HideActionButton
* Improve docs
* Document the event
* fixup test
* Allow users to hide their own media if they wish.
* Update tests
* remove a check\
* tweak
* tweak
* Fix room joining over federation not specifying vias or using aliases
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Be consistent with viaServers
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Simplify modules
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Only consider canAskToJoin on 403 as per spec
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove unused helper which I only just added =(
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remember whether sidebar is shown for calls when switching rooms
Stores the sidebar state per-room in LegacyCallHandler, along with other details about calls.
* Hide the Show/Hide Sidebar from the Picture-in-Picture preview
The toggle sidebar button currently does nothing in PIP mode, since PIP mode never shows a sidebar (even when the call is made fullscreen from the PIP preview)
* Add test for Show/Hide Sidebar feature
* Add more tests for LegacyCallView and LegacyCallViewForRoom
Also, fix issue where LegacyCallViewForRoom used roomId and not callId for checking for sidebar state
* MatrixChat: only start session load once
When running in development mode, `MatrixChat.componentDidMount` is run twice,
meaning it checks the session lock twice. Sometimes, this means it shows the
"Element is running in another window" page.
The real problem is of course that we're running all this application logic
inside the `MatrixChat` component, but as a quick workaround, we can just
remember that we've started the session load code, and bail out on the second pass.
* Address review comments
* Update vector-im
* Update snapshots
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Make BaseDialog's div keyboard focusable and fix test.
* Update more e2e tests to use switch instead of checkbox
* fix useParticipants incorrectly returning an array when a map is expected
* Try again to fix calParticipants
* try fix RoomHeader tests again by also mocking useParticipants
* Revert "try fix RoomHeader tests again by also mocking useParticipants"
This reverts commit f83093cc44.
* Try with no dependencies
* try mocking useCall rather than just useParticipantCount
* Mock the call store rather than the hook
* Only mock the call object for tests that expect it.
* Revert "Only mock the call object for tests that expect it."
This reverts commit 043d812b1d.
* Revert "Mock the call store rather than the hook"
This reverts commit 644be3155c.
* Revert "try mocking useCall rather than just useParticipantCount"
This reverts commit 92034aaff9.
* Revert "Try with no dependencies"
This reverts commit fb502a68a0.
* Reapply "try fix RoomHeader tests again by also mocking useParticipants"
This reverts commit e456782efd.
* Revert "try fix RoomHeader tests again by also mocking useParticipants"
This reverts commit f83093cc44.
* Revert "Try again to fix calParticipants"
This reverts commit c45ad3063f.
* Revert "fix useParticipants incorrectly returning an array when a map is expected"
This reverts commit e06d76e3f7.
* bump compound-web
* Update snapshots
* Fix bad merge, we don't need the second call to escape. The comment a couple of lines up explains things.
* Trigger build to fix licence/cla check
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
Co-authored-by: David Langley <davidl@element.io>
* Add missing dependencies on `@types` packages
Because we import the typescript source from matrix-js-sdk rather than the
`.d.ts` files, `tsc` ends up type-checking the js-sdk source. That means that
we need to have the `@types` packages that js-sdk needs.
* Add missing type definitions for `setInterval` and `setTimeout`
Our source assumes that `setTimeout` returns a number, not a
`Timeout`. If we `yarn link` js-sdk, then (somehow) we end up using the
definitions from there, but it's not really correct.
* Configure knip to ignore new deps
* Fix: Allow triple-click text selection to flow around keyword pills
* Fix: Remove unnecessary align-items property from Pill component
* Change display property of .mx_Pill from inline to inline-block to fix rendering issue in Playwright tests
* Add test for triple-click message selection with pills
Previously we were watching for changes to the room state to know when you become connected to a call. However, the room state might not change if you had a stuck membership event prior to re-joining the call. It's going to be more reliable to watch for the 'join' action that Element Call sends, and use that to track the connection state.
* Introduce disposables to track sub vms and event listeners
* Remove old code
* Use disposable in BaseViewModel
* Update vm so that the listener is tracked through disposable
* No-op on dispose call instead of throwing error
* Throw error in trackListener as well
* Fix audio player vm
* Expose isDisposed through base vm
* Dispose AudioPlayerViewModel
* InviteDialog: show some words and a spinner while invites are being sent
* MultiInviter-test: avoid building unhandled rejected promises
If we don't handle rejected promises, jest gets confused by them. Instead,
let's create them on-demand.
* Open a "progress" dialog while invites are being sent
* Inhibit invite progress dialog when RoomUpgradeWarning dialog is kept open
... otherwise the `RoomUpgradeWarning` dialog disappears during the invites,
and the tests that assert that it is showing the correct thing fail.
enter the commit message for your changes. Lines starting
* Switch to compound CSS variables instead of old pcss vars
* update playwright screenshots
* Revert "update playwright screenshots"
This reverts commit b0a15d97f35a088fe5b67009085eab46be1316fd.
* Another go at updating screenshots
* Address review comments
* remove redundant Props
* Move Room List to ListView
- Also remove Space/Enter handing from keyboard navigation we can just leave the default behaviour of those keys and handle via onClick
* Update rooms when the primary filter changes
Otherwise when changing spaces, the filter does not reset until the next update to the RVS is made.
* Fix stickyRow/scrollIntoView when switiching space or changing filters
- Also remove the rest of space/enter keyboard handling use
* Remove the rest of space/enter keyboard handling use
* Remove useCombinedRef and add @radix-ui/react-compose-refs as we already depend on it
- Also remove eact-virtualized dep
* Update RoomList unit test
* Update snapshots and unit tests
* Fix e2e tests
* Remove react-virtualized from tests
* Fix e2e flake
* Update more screenshots
* Fix e2e test case where were should scroll to the top when the active room is no longer in the list
* Move from gitpkg to package-patch
* Update to latest react virtuoso release/api.
Also pass spaceId to the room list and scroll the activeIndex into view when spaceId or primaryFilter change.
* Use listbox/option roles to improve ScreenReader experience
* Change onKeyDown e.stopPropogation to cover context menu
* lint
* Remove unneeded exposure of the listView ref
Also move scrollIntoViewOnChange to useCallback
* Update unit test and snapshot
* Fix e2e tests and update screenshots
* Fix unit test and snapshot
* Update more unit tests
* Fix keyboard shortcuts and e2e test
* Fix another e2e and unit test
* lint
* Improve the naming for RoomResult and the documentation on it's fields meaning.
Also update the login in RoomList to check for any change in filters, this is a bit more future proof for when we introduce multi select than using activePrimaryFilter.
* Put back and fix landmark tests
* Fix test import
* Add comment regarding context object getting rendered.
* onKeyDown should be optional
* Use SpaceKey type on RoomResult
* lint
* tests: use stable MAS integration in Synapse
* Automatically follow MAS main branch
* Update the pinned Synapse container image to latest develop
* Update element-web-playwright-common to 1.4.5
* Fix the typing of the MAS config
* Update playwright-common to 1.4.6
* Use the modern MAS -> Synapse API
* Relax MAS rate limiting
* Revert using the modern API explicitly, it is now the default
* Better adjust the MAS rate limits
* Hide recovery key when asked to re-enter it when creating or changing key
* Use align-self to centre the eye icon
Co-authored-by: R Midhun Suresh <hi@midhun.dev>
* Use CSS vars for padding
Co-authored-by: R Midhun Suresh <hi@midhun.dev>
* Use CSS classes to avoid needing the highly specific rule
* Use a Compound variable for border width
* Add classes to snapshots
* Update screenshots
---------
Co-authored-by: R Midhun Suresh <hi@midhun.dev>
* Move `inviteUsersToRoom` to `RoomUpgrade`
This method is only used in one place, uses only public methods, and is
undocumented. Let's move it to the place where it is used, to simplify the API
for `RoomInvite`.
* Simplify `inviteUsersToRoom`
`inviteMultipleToRoom` basically never throws, so this code was effectively
unreachable.
* Update MultiInviter to take an options object
I'm going to add another option, so an options object is going to be more
flexible.
* Jump through the coverage hoop with another test
* Remove NoOneHere disabled reason.
This was used to prohibit starting calls if the user is alone in the room.
Since there are currently issues with the user count calculation this can disable the button even when not appropriate.
On top of that, there is a reason to start a call if the room was just created and the user is still waiting for the others to join the room to then join the call.
Signed-off-by: Timo K <toger5@hotmail.de>
* some ci fixes
Signed-off-by: Timo K <toger5@hotmail.de>
* fix test snapshots
Signed-off-by: Timo K <toger5@hotmail.de>
* fix test to expect enabled call buttons
* Update snapshot for unit-tests/components/views/rooms/RoomHeader/RoomHeader-test.tsx
---------
Signed-off-by: Timo K <toger5@hotmail.de>
Co-authored-by: fkwp <github-fkwp@w4ve.de>
* Remove unreferenced CSS class `mx_InviteDialog_hasFooter`
This is never used in the CSS (or elsewhere), so let's remove it
* Move `consultConnectSection` initialization
Since this only used and set when `kind === InviteKind.CallTransfer`, we can
simplify
* Factor out `title` logic
Move the logic for caclulating the title to a separate method. I want to be
able to reference it from a couple of places, so it will be easier if it is a
separate method.
(We'll actually be inlining it again later in this PR)
* Factor out `renderMainTab` method
Break the big `render` method in half by pulling the `usersSection` out into a
separate method.
* Split out `renderRegularDialog` and `renderCallTransferDialog`
`render` is now almost entirely two separate flows, so let's spit it into two
separate methods. Recommend reviewing this commit with whitespace changes
hidden.
* Inline `getTitle`
This method has served its purpose: we can now inline it again.
* Factor out `renderSuggestions`
Break up `renderMainTab` a bit more: pull out a new method which renders the
"suggestions" bit of the dialog, together with the associated warnings and footer.
It would previously say no permission if you had no perms for an EC call but had perms for a legacy call.
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix downloading files with authenticated media API
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update snapshot
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add `?no_universal_links=true` to OIDC cb url so EX doesn't try to handle it
This is specific to macOS and only affects cases where auth is attempted in the non-default browser
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Strip no_universal_links after auth
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update MAS
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update playwright-common
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Bump @element-hq/element-web-playwright-common
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Use userId to filter users in non-federated rooms.
* a line
* another line
* Add getDomain to Jest test
(cherry picked from commit 700068a558)
Co-authored-by: Will Hunt <will@half-shot.uk>
* Show a blue lock instead of a grey shield for unencrypted rooms
* Update screenshots and snapshot
* Update snapshots and fix e2e test that used to expect the grey shield
* lint and add tests for shield
* Update more screen shots
* finish unit test for left icon
* Remove unneeded check
* Don't bother adding stray props to E2EIcon for data-testid
* Upate snapshots
* Allow /upgraderoom command without developer mode enabled
This will make the instructions for upgrading rooms for hydra a lot
more straightforward, so maybe let's do this at least while hydra
upgrades happen.
* Update test to match
* Unused imports
(cherry picked from commit 4d3fde192d)
Co-authored-by: David Baker <dbkr@users.noreply.github.com>
* Allow /upgraderoom command without developer mode enabled
This will make the instructions for upgrading rooms for hydra a lot
more straightforward, so maybe let's do this at least while hydra
upgrades happen.
* Update test to match
* Unused imports
* Support for creator/owner power level
This just shows them as 'Owner' in the list.
* Add test for owner level
(cherry picked from commit 96dbddcb14)
Co-authored-by: David Baker <dbkr@users.noreply.github.com>
* Better handle for resizer for new room list that doesn't support collapsing.
* Add unit test
* Test the new guards/checks on resize
* Finish cleaning up mock resets
* MultiInviter: remove cancellation support
This is unused and untested, so we can basically assume it doesn't work.
* MultiInviter: factor out `handleUnknownProfileUsers` method
* MultiInviter: remove unused `ignoreProfile` arg from `inviteMore`
* MultiInviter: simplify `deferred` usage
No point in doing `deferred.resolve(this.completionStates)` everywhere
* MultiInviter.doInvite: do not `reject` for known fatal errors
Using `reject` for known, handled, fatal errors is somewhat confusing here,
since it looks like we swallow the error. (It's actually up to the caller to
check the recoreded `errors` and report them.)
Rather than rejecting, rely on the `_fatal` flag.
* MultiInviter: move finish logic to `.invite`
... for less `deferred` complication
* MultiInviter: rewrite loop as a `for` loop
Async functions are a thing in modern javascript, and way easier to grok than a
stack of promises.
* Move Element Call event types to a more appropriate file
To remove the potential for import cycles in src/models/Call.ts, which I was accidentally creating when I tried to reference data from the RoomListStore in the ElementCall class.
* Make sure ElementCall tests clean up the call object
* Upgrade Element Call to v0.14.1
* Delegate the sending of call notifications to Element Call
As of Element Call version 0.14.0, the widget is now capable of sending call notifications itself if we just request this with the sendNotificationType URL parameter. This makes Element Web's group call code a little bit more succinct.
* Fix createRoom test
* feat: add `PlayPauseButton` to storybook
* feat: add generic media body
* feat: add seekbar component
* chore: add ViewWrapper to help writing stories with vm
* refactor: move `formatBytes` from `formattingUtils` into shared component
* refactor: add `className` props to `Clock`
* feat: add new audio player component
* test(e2e): add screenshots for new shared components
* feat: add AudioPlayerViewModel
* feat: use new audio player in `MAudioBody`
* refactor: remove old audio player
* test(e2e): update existing tests
* refactor: remove unused `DurationClock`
* refactor: rename `SeekBar` into `LegacySeekBar`
15f1291cbc was really close to making widgets just work again in React development mode following the upgrade to React 19, but I forgot to test one thing: that persistent widgets (such as Element Call) still reuse the same iframe across their entire lifecycle as expected. The solution is to not manually destroy the iframe when AppTile is being unmounted; even if it turns out that the widget isn't actually persistent, React will still destroy it automatically for us.
* Introduce snapshot class to track snapshot updates
This avoids the hassle of having to manually call emit.
* Better viewmodel ergonomics
- Rename `SubscriptionViewModel` to `BaseViewModel`. I feel this is
appropriate since that class does more than just manage subscriptions.
- `getSnapshot` is no longer an abstract method. It's simply a method
that returns the current snapshot state. This ensures that getSnapshot
result is cached by default which is required by `useSyncExternalStore`.
- `props` are a property of the base vm class so that actual VMs don't
have to keep creating this property.
* Update `TextualEventViewModel`
* Fix test
* Rename `TextualEvent` to `TextualEventView`
* Fix snapshot object not being merged
* Rename directory to `EventTileView`
* Fix broken snapshot
* Add test for snapshot class
Since the upgrade to React 19, widget initialization (most notably affecting group calls) has been broken in development mode. This is because React now executes all callback refs twice, and the callback ref that receives the widget's iframe was not prepared to deal with that. I've fixed this by creating and attaching the iframe to the DOM in the callback ref, which allows us to properly couple its lifetime to that of the StopGapWidget. I've also added some insurance against strict mode-style races in StopGapWidget (doesn't hurt).
* Update for compatibility with v12 rooms
Stop using powerLevelNorm and reading PL events manually.
To support https://github.com/matrix-org/matrix-js-sdk/pull/4937
* Add test for leave space dialog
* Don't compute stuff if we don't need it
* Use room.client
* Use getSafeUserId
* Remove client arg
* Use getJoinedMembers
and add doc
* Fix tests
* Fix more tests
* Fix other test
* Clarify comment
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Update dependency linkifyjs to v4.3.2 [SECURITY]
* Bump the other linkify deps
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* implement basic scrolling and keyboard navigation
* Update focus style and improve keyboard navigation
* lint
* Use avatar tootltip for the title rather than the whole button
It's more performant and feels less glitchy than the button tooltip moving around when you scroll.
* lint
* Add tooltip for invite buttons active state
As we have for other icon based buttons in the right panel/app
* Fix location of scrollToIndex and add useCallback
* Improve voiceover experience
- As well as stylng cells, set the tabIndex(roving)
- Natively focus the div with .focus() so screen reader actually moves over the cells
- improve labels and roles
* Fix jest tests
* Add aria index/counts and remove repeating "Open" string in label
* update snapshot
* Add the rest of the keyboard navigation and handle the case when the list looses focus.
* lint and update snapshot
* lint
* Only focus first/lastFocsed cell if focus.currentTarget is the overall list.
So it isn't erroneously called during onClick of an item.
* Put back overscan and fix formatting
* Extract ListView out of MemberList
* lint and fix e2e test
* Update screenshot
It looks like it is slightly better center aligned in the new list, as if maybe it was 1 px to high with the old one.
* Fix default overscan value and add ListView tests
* Just leave the avatar as it was
* We removed the tooltip that showed power level. Removing string.
* Use key rather than index to track focus.
* Remove overscan, fix typos, fix scrollToItem logic
* Use listbox role for member list and correct position/count values to account for the separator
* Fix inadvertant scrolling of the timeline when using pageUp/pageDown
* Always set the roving tab index regardless of whether we are actually focused.
Fixes the issue of not being able to shift+t
* Add aria-hidden to items within the option to avoid the SR calling it a group.
Also
* Make sure there is a roving tab set if the last one has been removed from the list.
* Update snapshot
* Add labs option for "share history on invite"
* Set `acceptSharedHistory` when joining a room
* set `shareEncryptedHistory` when sending an invite
* Update src/i18n/strings/en_EN.json
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
These deprecated parameters will be removed very soon (planned for Element Call version 0.15.0) and we no longer have to care about backward compatibility with old versions of Element Call (due to the embedding/bundling work), so now is the right time to migrate.
* MatrixChat-test: clean up better in `afterEach`
Make the MatrixChat tests behave better by letting them finish their work in an
`act` in afterEach. Otherwise we can end up mounting new components during
cleanup, which run tasks in the background
* MatrixChat-test: clean up dispatcher test
This test was kicking off a dispatcher job which would then open a
UserDeviceSettings dialog once the test had finished. That would then throw
exceptions because some of the mock environment had been torn down.
We're just testing that it opens the right dialog, so better to intercept
`createDialog`.
Aso add an `act` to reduce warnings, and replace a `flushPromises` with a
`waitFor` to make the test more robust.
* Allow Element Call to send call notifications
Currently Element Web is responsible for sending the call notification event, but this is planned to be changed soon. As of the upcoming Element Call 0.14.0 release, it will request the capability to send call notifications itself, and we should auto-approve this capability.
* Add reaction capability missing from test
Element Call does in fact request this one.
* Work around jest bug that swallows console output
Hacky workaround for https://github.com/jestjs/jest/issues/15747
* Fix unit test
* Only write logs if there are some to write
* Another test fix
A forthcoming change to the js-sdk will add a new event shield reason. To avoid
a compile-time failure, add a `default` case to the code handling those
reasons.
* Add title attribute for message preview
So that the full message is shown in a tooltip on hover.
* Fix test
* Update src/components/views/rooms/RoomListPanel/RoomListItemView.tsx
Co-authored-by: Florian Duros <florianduros@element.io>
---------
Co-authored-by: Florian Duros <florianduros@element.io>
* Very first pass at shared component views
Turn the trivial TextualEvent into a shared component with a separate view
model for element web. Args to view model will probably change to be more
specific and VM typer needs abstracting out into an interface, but should
give the general idea.
* Remove old TextualEvent
* Pass showHiddenEvents
Because we used it anyway, we just cheated by getting it from the context
* Factor out common view model stuff
* Move ViewModel interface into the shared components
* Add tiny wrapper hook
* Move showHiddenEvents into props fully
* Fill in stories / test
* chore: setup storybook
cherry pick edc5e8705674b8708d986910b02b5d2545777fb3
from florianduros/storybook
* Add TextualEvent component to storybook
* Add mock view model & snapshot
* Remove old style stories entry
* Change import
* Change import
* Prettier
* Add paxckage patch to @types/mdx
for React 19 compat
* Pass getSnapshot as getServerSnapshot too
* Maybe make sonar regognise tests as tests
* Typo
* Use storybook reacvt-vite
There's no reason to use the react-webpack plugin just because our app
is stuck on webpack, it just means we have vite as a dependency too.
* Change here too
* Workaround for incomatible types in rollup
https://github.com/rollup/rollup/issues/5199
* Remove webpack styling addon
Not necessary now we're using vite
* Hopefully do screenshot testing...
* need newer node
* quote issues
* Make it an npm script
* colons
* use right port
* Install playwright browsers
* Try without the if
* Oh right, we need the headless shell
* Pass flag to store received screenshots
and upload diffs too
* Update snapshot from received
* Include platform in snapshot / received dir
because font rendering differs between platforms
* Suffix snapshots with platform instead
like we do for playwright
* Remove unnecessary env vars
and better name
* Add some comments
* Prettier
* Fix yarn.lock
* Memoise vm creation
Co-authored-by: Florian Duros <florianduros@element.io>
* Add implements
Co-authored-by: Florian Duros <florianduros@element.io>
* Fix listener interface
* Add implements
Co-authored-by: Florian Duros <florianduros@element.io>
* Fix types
* Fix more types
* Revert useMemo
as this isn't a hook
* Unused import
* Add missing playwright step
* Add return type annotation
* Change to add / remove subscription callback
* Change to 'add' rather than 'subs.subscribe'
* Add cache specifier for only shell playwright browsers
* Add copyright headers
* Upload visual diffs from storybook testing
* Replace tab
---------
Co-authored-by: Florian Duros <florian.duros@ormaz.fr>
Co-authored-by: Florian Duros <florianduros@element.io>
* Very first pass at shared component views
Turn the trivial TextualEvent into a shared component with a separate view
model for element web. Args to view model will probably change to be more
specific and VM typer needs abstracting out into an interface, but should
give the general idea.
* Remove old TextualEvent
* Pass showHiddenEvents
Because we used it anyway, we just cheated by getting it from the context
* Factor out common view model stuff
* Move ViewModel interface into the shared components
* Add tiny wrapper hook
* Move showHiddenEvents into props fully
* Fill in stories / test
* chore: setup storybook
cherry pick edc5e8705674b8708d986910b02b5d2545777fb3
from florianduros/storybook
* Add TextualEvent component to storybook
* Add mock view model & snapshot
* Remove old style stories entry
* Change import
* Change import
* Prettier
* Add paxckage patch to @types/mdx
for React 19 compat
* Pass getSnapshot as getServerSnapshot too
* Maybe make sonar regognise tests as tests
* Typo
* Use storybook reacvt-vite
There's no reason to use the react-webpack plugin just because our app
is stuck on webpack, it just means we have vite as a dependency too.
* Change here too
* Workaround for incomatible types in rollup
https://github.com/rollup/rollup/issues/5199
* Remove webpack styling addon
Not necessary now we're using vite
* Hopefully do screenshot testing...
* need newer node
* quote issues
* Make it an npm script
* colons
* use right port
* Install playwright browsers
* Try without the if
* Oh right, we need the headless shell
* Pass flag to store received screenshots
and upload diffs too
* Update snapshot from received
* Include platform in snapshot / received dir
because font rendering differs between platforms
* Suffix snapshots with platform instead
like we do for playwright
* Remove unnecessary env vars
and better name
* Add some comments
* Prettier
* Fix yarn.lock
* Memoise vm creation
Co-authored-by: Florian Duros <florianduros@element.io>
* Add implements
Co-authored-by: Florian Duros <florianduros@element.io>
* Fix listener interface
* Add implements
Co-authored-by: Florian Duros <florianduros@element.io>
* Fix types
* Fix more types
* Add a superclass that simple view models can extend
to reduce boilerplate
* Revert useMemo
as this isn't a hook
* Unused import
* Actually commit the file the branch is named after
* Add missing playwright step
* Add return type annotation
* Change to add / remove subscription callback
* Change to 'add' rather than 'subs.subscribe'
* Add cache specifier for only shell playwright browsers
* Add copyright headers
* Better comment wording
* Make amit an arrow function
so it can be passed directly as a callback
* Add a test
---------
Co-authored-by: Florian Duros <florian.duros@ormaz.fr>
Co-authored-by: Florian Duros <florianduros@element.io>
* Add quote functionality to MessageContextMenu (#29893)
* Remove unused import of getSelectedText from strings utility in EventTile component
* Add space after quoted text in ComposerInsert action
* Add space after quoted text in MessageContextMenu test
* add new line before and after the formated text
* refactor: extract i18n from languageHandler to not import matrix-js-sdk, settings...
* fix: circular deps
* feat: add language selector to storybook
* fix: make visual test works in CI
There are two potential problems here:
1. mouse.scroll returns before the scroll is completed
2. visibility check does not check if the element is actually in the
viewport.
I've added a helper function to make it easier to scroll to the end of
an infinite list.
* Very first pass at shared component views
Turn the trivial TextualEvent into a shared component with a separate view
model for element web. Args to view model will probably change to be more
specific and VM typer needs abstracting out into an interface, but should
give the general idea.
* Remove old TextualEvent
* Pass showHiddenEvents
Because we used it anyway, we just cheated by getting it from the context
* Factor out common view model stuff
* Move ViewModel interface into the shared components
* Add tiny wrapper hook
* Move showHiddenEvents into props fully
* Fill in stories / test
* chore: setup storybook
cherry pick edc5e8705674b8708d986910b02b5d2545777fb3
from florianduros/storybook
* Add TextualEvent component to storybook
* Add mock view model & snapshot
* Remove old style stories entry
* Change import
* Change import
* Prettier
* Add paxckage patch to @types/mdx
for React 19 compat
* Pass getSnapshot as getServerSnapshot too
* Maybe make sonar regognise tests as tests
* Typo
* Use storybook reacvt-vite
There's no reason to use the react-webpack plugin just because our app
is stuck on webpack, it just means we have vite as a dependency too.
* Change here too
* Workaround for incomatible types in rollup
https://github.com/rollup/rollup/issues/5199
* Remove webpack styling addon
Not necessary now we're using vite
* Hopefully do screenshot testing...
* need newer node
* quote issues
* Make it an npm script
* colons
* use right port
* Install playwright browsers
* Try without the if
* Oh right, we need the headless shell
* Pass flag to store received screenshots
and upload diffs too
* Update snapshot from received
* Include platform in snapshot / received dir
because font rendering differs between platforms
* Suffix snapshots with platform instead
like we do for playwright
* Remove unnecessary env vars
and better name
* Add some comments
* Prettier
* Fix yarn.lock
* Memoise vm creation
Co-authored-by: Florian Duros <florianduros@element.io>
* Add implements
Co-authored-by: Florian Duros <florianduros@element.io>
* Fix listener interface
* Add implements
Co-authored-by: Florian Duros <florianduros@element.io>
* Fix types
* Fix more types
* Revert useMemo
as this isn't a hook
* Unused import
* Add missing playwright step
* Add return type annotation
* Change to add / remove subscription callback
* Change to 'add' rather than 'subs.subscribe'
* Add cache specifier for only shell playwright browsers
* Add copyright headers
---------
Co-authored-by: Florian Duros <florian.duros@ormaz.fr>
Co-authored-by: Florian Duros <florianduros@element.io>
* fix: remove white background on e2e verification icon and put white on the checkmark
* test(e2e): add non regression tests
* chore: remove unused CSS mask
(cherry picked from commit a05ca97409)
Co-authored-by: Florian Duros <florianduros@element.io>
* fix: remove white background on e2e verification icon and put white on the checkmark
* test(e2e): add non regression tests
* chore: remove unused CSS mask
* Add support for allowDownloadingMedia
* Add tests.
* Allow downloading when no event is associated.
* fix lint
* Update module API
* Update lock file too
* force CI
* Fix the default mobile_guide links.
Whilst the script should update these if it fails these should link to Element X which is now the default app that we link out to from this page.
* Rename the mobile_guide_app_variant values to be clearer.
Also handle invalid config values by defaulting to Element X.
* Rename snapshots to match new app variant identifiers.
* remove resetCrossSigning flag, which is no longer in use
* drop unnecessary check for cross-signing
The only place where verifyUser is called already checks that cross-signing is
set up. (The function name is also incorrect, since it checks for the
cross-signing key, and not for 4S.)
* avoid calling accessSecretStorage to set up cross-signing or 4S
Send the user to the Encryption settings tab instead
* only create secret storage when specifically asked to
* deprecate using accessSecretStorage to create new 4S
* also remove the obsolete snapshot
* add tests
* Tweak comment
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
---------
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Reapply "Update the mobile_guide page to the new design. (#30006)" (#30104)
This reverts commit c51823db5e.
* Use Element X as the default mobile_guide_app_variant when omitted.
* Fix a build error on Windows.
Additionally revert "Remove unnecessary <%= require %> usages" and let webpack handle all of the assets (without a manual copy rule).
* Exclude mobile_guide from coverage gate
It has playwright tests
* Revert the re-introduction of <%= require %>
* Fix snapshot tests on mobile_guide.
---------
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Submit filtered settings to rageshakes and sentry.
* Add flag to omit some settings from being exported.
* Hide user timezone
* Hide recent searches and media event ids
* Lint
* use better wording
* lint
* Prevent language from being sent
* Add tests to check keys are prevented from being uploaded.
* don't export invite rules
* Update tests
* remove incorrect check for cross-signing
SETUP_ENCRYPTION tries to set up everything (4S, cross-signing and key backup),
rather than just setting up encryption, as its name would imply.
crossSigningReady == false happens when the user's device isn't verified, so it
should trigger VERIFY_THIS_SESSION rather than SETUP_ENCRYPTION
* reorder conditions in allSystemsReady to match the order in the if statements
* explicitly handle secrets missing from 4S
rather than falling back to the SETUP_ENCRYPTION catch-all. Also, remove
SETUP_ENCRYPTION since it is no longer used.
* convert button handlers to switch statements for consistency
(almost) all the other functions that use make decisions based on Kind use
switch statements
* update i18n (remove obsolete string)
* Update playwright to v1.53.1
* Update snapshots
Presumably chrome's font rendering has changed slightly in the new major version
* Scroll until room list item is in view
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: David Baker <dbkr@users.noreply.github.com>
The latest mobile designs for Element Call have it displaying the room name in an "app bar". So the Element Call widget will soon start requesting the capability to learn the room name, and Element Web should auto-approve this capability.
* chore: update compound-web
* chore: remove unused export
* feat: export content of more option menu
* feat: add context menu
* feat: add `showContextMenu` to vm
* feat: use context menu in new room list
* test: add tests for room list item
* test: fix room list test
* test: add `showContextMenu` test for `useRoomListItemViewModel`
* test: add e2e test for context menu
* chore: update compound
* test: update snapshots and e2e test
* fix: avoid icon blinking when we reopen the context menu
* test: add test for menu closing
* doc: remove useless tsdoc param
* chore: update `@vector-im/compound-web`
* refactor: remove manual focus
* test(e2e): fix focus after closing notification menu
* doc: remove useless jobs
* Add new custom component api.
* Remove context menu, refactor
* fix types
* Add a test for custom modules.
* tidy
* Rewrite for new API
* Update tests
* lint
* Allow passing in props to original component
* Add hinting
* Update tests to be complete
* lint a bit more
* update docstring
* update @element-hq/element-web-module-api to 1.1.0
* fix types
* updates
* hide jump to bottom button that was causing flakes
* lint
* lint
* Use module matrix event interface instead.
* update to new module sdk
* adapt custom module sample
* Issues caught by Sonar
* lint
* fix issues
* make the comment make sense
* fix import
* Use stale-screenshot-reporter from playwright-common
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Show indicator in settings dialog when user doesn't have recovery set up
* Update settings headers to use red dot for recommended settings
* update recovery setup toast and remember if the user dismisses it
* update playwright snapshots
* use typed event emitters
* reverse logic for the account data flag
* fix comment and type
* feat: mvvm split user info, create userinfoadmintools container component
* test: mvvm userinfoadmintools and view
* feat: user info admin components more split and comments
* test: mvvm user admin info mute view models more coverage
* chore: rename user-info folder to user_info
* Use nav for new room list and label sections
The old room list had a nav element but it was missed in the new one,
so add it and albel the sections. Also remove the test ID and use
this instead.
* Update snapshots
* Use the function we define above
* feat: add new hook to check if a node is visible
* feat: filters in new room list can be collapsed
* feat: add animation to filter list
* feat: hide chevron when list fit on one line
* fix: use correct label for expand button
* test: update room list panel snapshots
* test: add tests for useIsNodeVisible
* chore: update i18n
* test: add tests for primary filters
* test(e2e): update existing screenshots
* test(e2e): update primary filter tests
* chore: typo in css file
* refactor: replace ternary by if in filter condition
* feat: compute filter height instead of hardcoded value
* fix: floor floating computation on filter
* refactor: move hooks to dedicated files
* test: update tests
* feat: rework collapse feature
* test: remove room list panel snapshot
* test: update room list primary filter tests
* test(e2e): update screenshots
* test(e2e): update screenshots
* test(e2e): fix favourite filter in scroll behaviour test
* fix: accessibility order when tabbing
Most (if not all) video chat apps show my local video mirrored. Element
not doing it by default is makes it confusing at first.
Even my phone camera app does it.
Not only matching other video chat tools out there, 99% of times you see
yourself in your day to day life is through a mirror, which flips the
image. So matching that makes the most sense, to preserve continuity.
This setting was made optional in https://github.com/element-hq/element-web/pull/5437
but not defaulted to true.
Fixes https://github.com/element-hq/element-web/issues/10651
Co-authored-by: David Baker <dbkr@users.noreply.github.com>
* Add avatar decoration for low priority rooms
* Write tests
* Remove unnecesasry step in test
* Make the vm expose which decoration to render
* Fix jest test
* Fix broken e2e test
* Add ability to prevent window content being captured by other apps (Desktop)
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Increase coverage
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Increase coverage
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Improve coverage
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Delint
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* AccessSecretStorageDialog: clear notice when input is empty
* AccessSecretStorageDialog: Simplify logic for calculating feedback
No functional changes, just simplification
* AccessSecretStorageDialog: use the right icon
Should be a ! in a circle, not an X. Also requires use of `Flex` to fix the
vertical alignment.
* AccessSecretStorageDialog: fix resizing when key is correct
* AccessSecretStorageDialog: remove confirmation on dialog close
Per discussion on https://github.com/element-hq/element-web/issues/30024, we
don't want this any more.
* BaseDialog: fix documentation, and make `onFinished` optional
Since `onFinished` isn't used if `hasCancel` is false, it's a bit silly to make
it mandatory.
* AccessSecretStorageDialog: fix inability to enter recovery key
Wrap AccessSecretStorageDialog in a `BaseDialog`. The main thing this achieves
is a `FocusLock`.
* playwright: factor out helper for verification
We have two copies of the same code, and we're about to add a third...
* playwright: test for verifying from Settings
* Add a unit test for BaseDialog
* Fix failure to upload thumbnail causing image to send as file
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
The devices section in OIDC frontend has changed to include a heading
with the device name. The device name and the client name both contain
"Element", so playwright fails.
To avoid locking the user into the popup due to focus lock clash
Fixes#29985
(cherry picked from commit 7eb133286b)
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* basic implementation of an /share?msg=foo endpoint
* SharePayload
* add sharing html & md while we're at it
* remove whitespace from imports to appease linter
* lint
* Add unit test
* More tests
* Test for showScreen
* Use one of the typed strings
* Test nasty tags stripped out
* Add playwright test
* Fix flake
by not relying on the name being synced as soon as we load
---------
Co-authored-by: David Baker <dbkr@users.noreply.github.com>
* initial application of recovery key input redesign
* update styling to agree more with design, and fix jest tests
* look for the right element for entering the key
* fix more playwright tests
* use return value of validation function instead of state
* Downstream test element-modules in merge queue
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Typo
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update cache key to be arch-aware
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* feat: move secondary filters into primary filters in vm
* test: update room list view model tests
* feat: remove secondary filter menu
* test: update and remove secondary filter component tests
* feat: update i18n
* test: update remaining tests
* test(e2e): update screenshots and tests
* feat: add new cases for empty room list
* test(e2e): add more tests for empty room list for new primary filters
* Assert that we set backup_disabled when turning off key storage
* Prompt the user when key storage is unexpectedly off
* Playwright tests for the Turn on key storage toast
* feat: create roomsummarycard viewmodel
* feat: use roomsummurycard vm in component
* test: jest unit RoomSummaryCard and RoomSummaryCardViewModel
* chore: rename to roomsummarycardview
* feat: reput room topic without vm
* test: roomSummaryCard and roomSummaryCardVM tests
* chore: add comments on roomsummarycardVM
* fix: merge conflict with roomsummarytopic, and move to vm right_panel
* fix(roomsummarycard): remove usetransition for search update
* fix: merged file that should be deleted
* fix: roomsummurycard not well merge with roomtopic
* test: update snapshots
* Re-order primary filters
to match EX
* Update tests
* Update screenshots
* Try to make screenshot deterministic
* Just use the screenshot the CI spits out
* Try again
* Another screenshot
* Dispatch an action when room is forgotten
* Dispatch an action when room is forgotten
* Remove room on action
* Add test
* Write test for matrixchat
* Add payload info to comment
* Don't toggle to the minimised left bar size.
* Don't re-style old room list when at the minimum size
* Only apply larger minimised with on new room list
* Don't tell child views we are minimised for the new room list
* move comment to the correct place
* address PR comments
* Don't wrap search text and add truncation down to a minimum of 50px
* Put min-width on the button so that we don't have to hardcode the 50px
* Keep the flex display, shrink and truncate just the search text and keep the shortcut
* Update snapshots
* Add comment for magic value
* Make inner search text a span
* Add e2e test for smallscreen to test responsiveness
* Update snapshots
* Forcing an empty commit to fix PR
* Change minWidth to 224
This widget driver method was mistakenly filtering all state events out of the responses to read_events fromWidget actions. This was a hold-over from back when read_events had two different behaviors depending on whether you specified a state_key (i.e. before the introduction of the update_state action).
This wasn't testing what it thought it was testing because the primary
filters aren't present at all after selecting a secondary filter that's
not compatible with them, so it was just asserting that some other filter
(which had the same index as the old one) was disabled. It breaks if
the primary filters get reordered.
* Guard against counterpart.translate returning non-string values
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Outdent and fixup comment, remove stale development-only behaviour
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Debug flaky jest test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Discard changes to jest.config.ts
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Stop migrationg to MSC4278 if the config exists.
* Run migration after we have synced the client.
* Setup the SettingsController with a client.
* Add tests to check migration behaviour.
* update copyright
* Wait for sync properly
* Catch failure
* Docs
* licence
* Inline async code
* Fix migrateURLPreviewsE2EE too
* drop an import
* go away
* Ensure consistent download file name on download from ImageView
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Ensure consistent download file name on download from ImageView
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch from defer to PromiseWithResolvers
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add modernizr check
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* feat: support up/down arrow navigation in the new room list
* feat: support tabbing in the new room list
* test: update snapshots
* test(e2e): fix room list test
* test(new room list): add landmark navigation test
* test(e2e): update screenshot test
* test: add test to `RoomListItemView`
* test(e2e): add keyboard navigation tests
* refactor: rename `setIsHover` on `setIsHoverWithDelay`
* Write failing playwright test
Basically when someone changes their name, any old tombstoned rooms that
were previously hidden would suddenly show up in the list.
* Split addRoom into two methods
- `reInsertRoom` that re-inserts a room that is already known by the skiplist.
- `addNewRoom` to add new rooms
The idea is that sometimes you only want to re-insert to noop, eg: when
you get an event in an old room that was upgraded.
* Use new methods in the RLS
Only use `addNewRoom` when absolutely necessary. Most events should
instead use `reInsertRoom` which will noop when the room isn't already
known by the skiplist.
* Fix broken tests
* Add new test
* Fix playwright test
* add loading state to view model and spinner to room list vieqw
* Update snapshots and add loading test
* avoid nested ternary operator
* Add room list skeleton loading state
* Fix loading logic
- Create RoomListStoreV3Event as to not conflict with loading event definition in Create RoomListStoreEvent.
- Add a loaded event
- Use it to determine loaded state in useFilteredRooms rather than the update event which gets fired in other cases.
* Fix isLoadingRooms logic
* update snapshots and fix test
* Forcing an empty commit to fix PR
* Fix _components.pcss order
* Fix test that wasn't doing anything
* fix tests
* Allow providing an empty title to InteractiveAuthDialog
* Make OIDC identity reset consistent with EX
* Translation changes for OIDC Identity reset (already added to Localazy)
* Fix auth tests for new wording 'Continue to account'
* Fix up type for `finished` result of Modal
The `finished` promise can be called with an empty array, for example if the
dialog is closed by a background click. This was not correctly represented in
the typing. Fix that, and add some documentation while we're at it.
* Type fixes to onFinished callbacks from Modal
These can all be called with zero arguments, despite what the type annotations
may say, so mark them accordingly.
* Remove uses of Modal `onFinished` property
... because it is confusing.
Instead, use the `finished` promise returned by `createDialog`.
* Modal: remove support for now-unused `onFinished` prop
* StopGapWidgetDriver: use `await` instead of promise chaining
* Fix up unit tests
* Allow jumping to message search from spotlight
replaces the message search hint which referenced the old UX
Fixes#29831
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update RoomSummaryCard.tsx
* Update actions.ts
* Delete src/hooks/useTransition.ts
* Update RoomSummaryCard.tsx
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Add test
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
As of #29089, `modules.ts` is no longer auto-generated, so should not be
gitignored. Indeed, having a copy sitting around in your working copy can
produce unexpected results, and removing it from the ignorelist at least gives
maintainers a hint about what might be going wrong.
* Fix battery drain from Web Audio
* move suspend away from constructor
* await on resume()
* Delint
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove room when new membership is leave
It doesn't really matter what the previous membership was.
* Fix test
* Remove on join/invite only
* Exclude kicked rooms from being removed
* Add message preview support to the new room list
* Support showing message previews in the room list items
* Add the secondary filters bar with the '...' menu, containing
just the option for message previews for now
* Change message preview toggle hook to update when setting is updated
* Use new compund release
* Unused i18n keys
* Unused imports
* Fix test & update snapshot
* Fix more snapshots
* Fix test
Split into two tests that test setting & updating
* Type import
* Snapshots
* Remove unnecessary Flex container
and update screenshots as the room list has got shorter from the added bar
* More snapshots & screenshots
* More snapshots
* Add test and remove active filter that's not done yet
* Update snapshots & screenshots again
* Other screenshot
* Add more tests
* Fix syntax
* Fix tests
* Use setter directly
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix CSS
* Remopve filter button css for now
* Update to remove forwardRef
* Add comment on why lack of TypedEventEmitter
* snapshots again
* Screenshots again
* Use original screenshots, maybe they'll work now
* Add comment
---------
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* fix: recompute notification when room change in room list item vm
* test: add use case when room list change
* test(e2e): add screenshot to unread filter test
* Modify useMediaVisible to take a room.
* Add initial support for a account data level key.
* Update controls.
* Update settings
* Lint and fixes
* make some tests go happy
* lint
* i18n
* update preferences
* prettier
* Update settings tab.
* update screenshot
* Update docs
* Rewrite controller
* Rewrite tons of tests
* Rewrite RoomAvatar to be a functional component
This is so we can use hooks to determine the setting state.
* lint
* lint
* Tidy up comments
* Apply media visible hook to inline images.
* Move conditionals.
* copyright all the things
* Review changes
* Update html utils to properly discard media.
* Types fix
* Fixing tests that break settings getValue expectations
* Fix logic around media preview calculation
* Fix room header tests
* Fixup tests for timelinePanel
* Clear settings in matrixchat
* Update tests to use SettingsStore where possible.
* fix bug
* revert changes to client.ts
* copyright years
* Add header
* Add a test for MediaPreviewAccountSettingsTab
* Mark initMatrixClient as optional
* Improve on types
* Ensure we do not set the account data twice.
* lint
* Review changes
* Ensure we include the client on rendered messages.
* Fix test
* update labels
* clean designs
* update settings tab
* update snapshot
* copyright
* prevent mutation
* feat: add support to `Action.ViewRoomDelta`
* test: add tests for support of `Action.ViewRoomDelta`
* test(e2e): add tests for shortcuts
* doc: improve comments in `useRoomListNavigation`
* feat: warn self change on roles settings
* test: update RolesRoomSettingsTab to match new modal condition
* test: update e2e RolesRoomSettingsTab to add new modal
* feat: powerlevelselector reput initial value if cancel
* fix: avoid extra render in the new room list
* fix: listen to room name changes
* fix: trigger render when notification state change
* test: fix room list item tests
* chore: fix typo `RoomNotificationState.isUnsentMessage`
* refactor: move `isNotificationDecorationVisible` into `useRoomListItemViewModel`
* refactor: recalculate notification values on notification state changes
* refactor: rename `isNotificationDecorationVisible` to `showNotificationDecoration`
* test: add test for room list item view
* test: add notification tests in room list item vm
* fix: listen to notification updates in `NotificationDecoration`
* test: update notification decoration tests
* refactor: display notification decoration according to vm
* test: update room list item view tests
* fix: a11y label computation after room name change
* refactor: improve notification handling
* feat: rework invitation styling in room list item
* test: update notification decoration test
* test: add test for vm
* test(e2e): update to new invitation styling
* Mask mxid from screenshot
* s/hot/not/
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Hide the mxid entirely
* Add new snapshot
---------
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* fix(call): reset call value when the roomId changes
* fix(call): reset presence indicator when the room changes
* refactor: use existing `usePresence`
* test: fix room avatar view test
* test: update snapshots
* Refactor RoomAvatar into a functional component
* Add useRoomAvatar hook
* Remove useRoomAvatar hook and fix RoomAvatarEvents not using thumbnails.
* lint
* Ensure stable version of roomIdName
* Use new hook
* lint
* remove unused param
* Fixup tests
* remove console
* Update test
* test: fix flaky MatrixChat `should persist login credentials` test
* test: fix flaky MatrixChat `should log and return to welcome page with correct error when login state is not found` test
* test: fix flaky MatrixChat `should store clientId and issuer in session storage` test
* fix: recompute public variable when room changes in room list item view model
* test: add test to check that isPublic is computed correctly when the room changes
* feat: add video call and EC call to room list item vm
* feat: add video call notification decoration to notification decoration component
* feat: add video call support to room list item view
* feat: add new RoomAvatarView component
* feat: deprecate `DecoratedRoomAvatar`
* feat: use `RoomAvatarView` in room list item
* feat: allow custom class for `RoomAvatar`
* test: update notification decoration
* test: update room list item view
* test: update room list snapshot
* test: add tests for room avatar vm
* test: add tests for room avatar view
* test(e2e): update snapshots
* fix: video room creation rights
* test: e2e add test for public and video room
* Fix custom theme support for hex colours other than 6-char
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* fix: use correct color for room list header
* fix: use error solid icon
* fix: rename Unread as Unreads
* test: update jest snapshots
* test(e2e): update screenshots
* test: fix test
* Fix converttoroom & converttodm not working
setAccountData uses `deepCompare` within to avoid writing no-op updates
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Use filterValidMDirect utility in setDMRoom
Ensure we do not mutate the account data as this would then upset `setAccountData`'s deepCompare later
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update react monorepo to v19
* Import JSX explicitly for React 19 compatibility
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update usages of refs for React 19 compatibility
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update react imports
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Avoid legacy contexts as much as possible
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Avoid deprecated React symbols
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Stash
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Update usages of refs for React 19 compatibility
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Switch pillify to use a html-react-parser approach rather than DOM muddling
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate react html parsing
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate react html parsing
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate html parsing
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Memoize the EventContentBody component
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate html parsing
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Simplify
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Discard changes to src/Linkify.tsx
* Discard changes to src/components/views/messages/TextualBody.tsx
* Discard changes to src/settings/handlers/AbstractLocalStorageSettingsHandler.ts
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Prepare for React 19 upgrade
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Iterate
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Remove stale comment
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Allow setting the Encryption settings tab to any initial state
* Add a variant to the reset flow for 'sync_failed'
* Catch errors after syncing recovery
Fixes#29229
* fixup! Allow setting the Encryption settings tab to any initial state
* fixup! Add a variant to the reset flow for 'sync_failed'
* Move docs for identity panel variants to ResetIdentityPanelVariant
* feat(security tab)!: remove secure backup panel
BREAKING CHANGE: the key storage user interaction are moved into the Encryption tab. The debugging information are moved into the devtools.
* feat(security tab)!: remove cross signing section
BREAKING CHANGE: the cryptographic identity can be reseted in the Encryption tab. The debugging information are moved into the devtools
* feat(security tab)!: remove cryptography section
BREAKING CHANGE: this section can be found in the Advanced section of the encryption tab.
* test(security tab): update snapshot
* chore(security tab): remove unused component and function
* chore(security tab): update i18n
* test(e2e): remove `backups.spec.ts`
* Add report room dialog button/dialog.
* Update copy
* fixup tests / lint
* Fix title in test.
* update snapshot
* Add unit tests for dialog
* lint
* First pass at adding a report room on invite.
* Use a single line input field for reason to avoid bumping the layout.
* Fixups
* Embed reason to make it clear on grouping
* Revert accidental commit
* lint
* Add some playwright tests.
* tweaks
* Make ignored users list more accessible.
* i18n
* Fix sliding sync test.
* Add unit test
* Even more unit tests.
* move test
* Update to match designs.
* remove console statements
* fix css
* tidy up
* improve comments
* fix css
* updates
* fix(room list item): add bold when there is a notification
* fix(room list item menu): fix color of check icon
* fix(menu): remove chevron
* chore: update @vector-im/compound-web
* test(room list): update tests
* test(e2e): update snapshots
* Sort muted rooms to the bottom of the room list
* Re-insert room on mute/unmute
* Write tests
* Fix broken playwright test
Muted rooms are at the bottom, so we need to scroll.
* feat: add `utils.hasAccessToNotificationMenu`
* feat(room list item view model): use `hasAccessToNotificationMenu` to compute `showHoverMenu`
* feat(room list item menu view model): add notification options menu attributes
* feat(room list item menu view): add notification options
* test: add tests for `utils.hasAccessToNotificationMenu`
* test(room list item view model): add test for `showHoverMenu`
* test(room list item menu view model): add tests for new attributes
* test(room list item menu view): add tests for notification options menu
* chore: update i18n
* test(e2e): update screenshots
* test(e2e): add tests for notification options menu
* Scroll to top when active room is not in list
So that when filters are applied and the active room is not in the list
anymore, the list is scrolled to the top.
* Write test
jitsi.md was linked both here and in the 'setup' section and I think
it's more relevant to setup. The duplicate links are now breaking the
deploy for some reason. We probably shouldn't have both.
2025-04-01 14:28:34 +00:00
5108 changed files with 374907 additions and 263193 deletions
- [ ] I have read through [review guidelines](https://github.com/element-hq/element-web/blob/develop/docs/review.md) and [CONTRIBUTING.md](https://github.com/element-hq/element-web/blob/develop/CONTRIBUTING.md).
- [ ] Tests written for new code (and old code if feasible).
- [ ] New or updated `public`/`exported` symbols have accurate [TSDoc](https://tsdoc.org/) documentation.
# The bot exceeded its API rate limit. Disabling for now (adding workflow dispatch so the workflow file stays valid & we can test to see if it starts working again)
workflow_dispatch:{}
# We run it on a schedule instead of on pull_request_* events to not create confusing messaging in the PR
* Remove automatic rageshakes on UTD labs feature ([#32778](https://github.com/element-hq/element-web/pull/32778)). Contributed by @Half-Shot.
* Remove automaticErrorReporting labs feature ([#32781](https://github.com/element-hq/element-web/pull/32781)). Contributed by @Half-Shot.
## ✨ Features
* Upgrade Element Call for new picture-in-picture designs ([#32816](https://github.com/element-hq/element-web/pull/32816)). Contributed by @robintown.
* Room list: add sections to shared components ([#32735](https://github.com/element-hq/element-web/pull/32735)). Contributed by @florianduros.
* feat: Devtool for sticky events MSC4354 ([#32741](https://github.com/element-hq/element-web/pull/32741)). Contributed by @BillCarsonFr.
* Port URL Preview components to MVVM ([#32525](https://github.com/element-hq/element-web/pull/32525)). Contributed by @Half-Shot.
* Add support for Widget \& Room Header Buttons module APIs ([#32734](https://github.com/element-hq/element-web/pull/32734)). Contributed by @dbkr.
* Port over linkifyJS to shared-components. ([#32731](https://github.com/element-hq/element-web/pull/32731)). Contributed by @Half-Shot.
* Redesign widget pip and move into shared component ([#32654](https://github.com/element-hq/element-web/pull/32654)). Contributed by @toger5.
* Implement customisations \& login component Module API 1.11.0 ([#32687](https://github.com/element-hq/element-web/pull/32687)). Contributed by @t3chguy.
* Realign MessageActionBar to Figma designs ([#32722](https://github.com/element-hq/element-web/pull/32722)). Contributed by @t3chguy.
* Implement new widget permissions module api ([#32565](https://github.com/element-hq/element-web/pull/32565)). Contributed by @langleyd.
## 🐛 Bug Fixes
* [Backport staging] Fix soft crash of room list when trying to open a room ([#32872](https://github.com/element-hq/element-web/pull/32872)). Contributed by @RiotRobot.
* Fix "key storage out of sync" appearing when key storage is actually fine ([#32811](https://github.com/element-hq/element-web/pull/32811)). Contributed by @andybalaam.
* Fix remove button styling in local address list of room settings ([#32798](https://github.com/element-hq/element-web/pull/32798)). Contributed by @florianduros.
* Always check \& update the users timezone on their profile on startup ([#32764](https://github.com/element-hq/element-web/pull/32764)). Contributed by @Half-Shot.
* Fix nx configuration to actually run type linter ([#32776](https://github.com/element-hq/element-web/pull/32776)). Contributed by @richvdh.
* Fix expand space panel button not being shown on keyboard focus ([#32746](https://github.com/element-hq/element-web/pull/32746)). Contributed by @t3chguy.
* Reset key storage if restoring from Recovery encounters the wrong decryption key ([#32668](https://github.com/element-hq/element-web/pull/32668)). Contributed by @andybalaam.
Changes in [1.12.12](https://github.com/element-hq/element-web/releases/tag/v1.12.12) (2026-03-10)
* Add stable support for MSC4380 invite blocking ([#31966](https://github.com/element-hq/element-web/pull/31966)). Contributed by @richvdh.
* Hide the names of banned users behind a spoiler tag ([#32424](https://github.com/element-hq/element-web/pull/32424)). Contributed by @andybalaam.
* Room list: remove bold effect on selected room ([#32593](https://github.com/element-hq/element-web/pull/32593)). Contributed by @florianduros.
* Use Compound buttons in auth screens ([#32562](https://github.com/element-hq/element-web/pull/32562)). Contributed by @t3chguy.
* Track room list sorting algorithm changes ([#32556](https://github.com/element-hq/element-web/pull/32556)). Contributed by @MidhunSureshR.
* Update `sso_redirect_options` to work for Native OIDC ([#32537](https://github.com/element-hq/element-web/pull/32537)). Contributed by @t3chguy.
## 🐛 Bug Fixes
* Room list: avoid excessive re-renders on room list store update or filter change ([#32663](https://github.com/element-hq/element-web/pull/32663)). Contributed by @florianduros.
* Room list: listen to call event to check number of participants ([#32677](https://github.com/element-hq/element-web/pull/32677)). Contributed by @florianduros.
* Fix invite-specific join errors not being shown ([#32621](https://github.com/element-hq/element-web/pull/32621)). Contributed by @Half-Shot.
* Prevent logging lots of "Browser unsupported" lines ([#32647](https://github.com/element-hq/element-web/pull/32647)). Contributed by @Half-Shot.
* Update critical gradient for room status bar ([#32575](https://github.com/element-hq/element-web/pull/32575)). Contributed by @Half-Shot.
* Room list: avoid header overflowing when too long ([#32645](https://github.com/element-hq/element-web/pull/32645)). Contributed by @florianduros.
* Room list: center focus outline of room list item ([#32637](https://github.com/element-hq/element-web/pull/32637)). Contributed by @florianduros.
* Fix misaligned cross in complete security dialog ([#32614](https://github.com/element-hq/element-web/pull/32614)). Contributed by @dbkr.
* Room list: fix keyboard navigation ([#32585](https://github.com/element-hq/element-web/pull/32585)). Contributed by @florianduros.
* Don't show empty privacy section ([#32582](https://github.com/element-hq/element-web/pull/32582)). Contributed by @dbkr.
* Disable room list image dragging ([#32590](https://github.com/element-hq/element-web/pull/32590)). Contributed by @florianduros.
* Update UserMenu theme toggle to use IconButton ([#32591](https://github.com/element-hq/element-web/pull/32591)). Contributed by @t3chguy.
* Room list: make room list item scales with large font size ([#32523](https://github.com/element-hq/element-web/pull/32523)). Contributed by @florianduros.
Changes in [1.12.11](https://github.com/element-hq/element-web/releases/tag/v1.12.11) (2026-02-24)
* Remove UIFeature.BulkUnverifiedSessionsReminder setting ([#31943](https://github.com/element-hq/element-web/pull/31943)). Contributed by @andybalaam.
* Remove unused function to auto-rageshake when key backup is not set up ([#31942](https://github.com/element-hq/element-web/pull/31942)). Contributed by @andybalaam.
## ✨ Features
* Room list: update the visuals in order to have better contrast ([#32421](https://github.com/element-hq/element-web/pull/32421)). Contributed by @florianduros.
* Set history visibility to "invited" for DMs and new non-public rooms when creating a room ([#31974](https://github.com/element-hq/element-web/pull/31974)). Contributed by @langleyd.
* Remove server acl status/summaries from timeline ([#32461](https://github.com/element-hq/element-web/pull/32461)). Contributed by @langleyd.
* Update `globalBlacklistUnverifiedDevices` on setting change ([#31983](https://github.com/element-hq/element-web/pull/31983)). Contributed by @kaylendog.
* Add badge for history visibiltity to room info panel ([#31927](https://github.com/element-hq/element-web/pull/31927)). Contributed by @richvdh.
## 🐛 Bug Fixes
* Default useOnlyCurrentProfiles to true ([#32524](https://github.com/element-hq/element-web/pull/32524)). Contributed by @dbkr.
* Keep custom theme active after reload ([#32506](https://github.com/element-hq/element-web/pull/32506)). Contributed by @florianduros.
* Update font format from 'ttf' to 'truetype' ([#32493](https://github.com/element-hq/element-web/pull/32493)). Contributed by @all-yall.
* Fix videos on Firefox ([#32497](https://github.com/element-hq/element-web/pull/32497)). Contributed by @p1gp1g.
* Use a dedicated FAQ/help entry for key storage. ([#32480](https://github.com/element-hq/element-web/pull/32480)). Contributed by @mxandreas.
* Avoid showing two chat timelines side by side after a call ([#32484](https://github.com/element-hq/element-web/pull/32484)). Contributed by @robintown.
* Update screenshot for reactive display name disambiguation ([#32431](https://github.com/element-hq/element-web/pull/32431)). Contributed by @aditya-cherukuru.
* Fix Status Bar being unreadable when the user overrides the default OS light/dark theme. ([#32442](https://github.com/element-hq/element-web/pull/32442)). Contributed by @Half-Shot.
* fix: Remove state\_key: null from Seshat search results ([#31524](https://github.com/element-hq/element-web/pull/31524)). Contributed by @shinaoka.
* Fix user pill deserialisation ([#31947](https://github.com/element-hq/element-web/pull/31947)). Contributed by @t3chguy.
Changes in [1.12.10](https://github.com/element-hq/element-web/releases/tag/v1.12.10) (2026-02-10)
* Support additional\_creators in /upgraderoom (MSC4289) ([#31934](https://github.com/element-hq/element-web/pull/31934)). Contributed by @andybalaam.
* Update room header icon for world\_readable rooms ([#31915](https://github.com/element-hq/element-web/pull/31915)). Contributed by @richvdh.
* Show an icon in the room header for shared history ([#31879](https://github.com/element-hq/element-web/pull/31879)). Contributed by @richvdh.
* Remove "history may be shared" banner. ([#31881](https://github.com/element-hq/element-web/pull/31881)). Contributed by @kaylendog.
* Allow dismissing 'Key storage out of sync' temporarily ([#31455](https://github.com/element-hq/element-web/pull/31455)). Contributed by @andybalaam.
* Add `resolutions` entry for `matrix-widget-api` to package.json ([#31851](https://github.com/element-hq/element-web/pull/31851)). Contributed by @toger5.
* Improve visibility under contrast control mode ([#31847](https://github.com/element-hq/element-web/pull/31847)). Contributed by @t3chguy.
* Unread Sorting - Add option for sorting in `OptionsMenuView` ([#31754](https://github.com/element-hq/element-web/pull/31754)). Contributed by @MidhunSureshR.
* Unread sorting - Implement sorter and use it in the room list store ([#31723](https://github.com/element-hq/element-web/pull/31723)). Contributed by @MidhunSureshR.
* Allow Element Call widgets to receive sticky events ([#31843](https://github.com/element-hq/element-web/pull/31843)). Contributed by @robintown.
* Improve icon rendering accessibility ([#31791](https://github.com/element-hq/element-web/pull/31791)). Contributed by @t3chguy.
* Add message preview toggle to room list header option ([#31821](https://github.com/element-hq/element-web/pull/31821)). Contributed by @florianduros.
## 🐛 Bug Fixes
* [Backport staging] Fix room list not being cleared ([#32438](https://github.com/element-hq/element-web/pull/32438)). Contributed by @RiotRobot.
* Fix failure to update room info panel on joinrule change ([#31938](https://github.com/element-hq/element-web/pull/31938)). Contributed by @richvdh.
* Throttle space notification state calculation ([#31922](https://github.com/element-hq/element-web/pull/31922)). Contributed by @dbkr.
* Fix emoji verification responsive layout ([#31899](https://github.com/element-hq/element-web/pull/31899)). Contributed by @t3chguy.
* Add patch for linkify to fix doctype handling ([#31900](https://github.com/element-hq/element-web/pull/31900)). Contributed by @dbkr.
* Fix rooms with no messages appearing at the top of the room list ([#31798](https://github.com/element-hq/element-web/pull/31798)). Contributed by @MidhunSureshR.
* Fix room list menu flashes when menu is closed ([#31868](https://github.com/element-hq/element-web/pull/31868)). Contributed by @florianduros.
* Message preview toggle is inverted in room list header ([#31865](https://github.com/element-hq/element-web/pull/31865)). Contributed by @florianduros.
* Fix duplicate toasts appearing for the same call if two events appear. ([#31693](https://github.com/element-hq/element-web/pull/31693)). Contributed by @Half-Shot.
* Fix ability to send rageshake during session restore failure ([#31848](https://github.com/element-hq/element-web/pull/31848)). Contributed by @t3chguy.
* Fix mis-alignment of `Threads` right panel title ([#31849](https://github.com/element-hq/element-web/pull/31849)). Contributed by @t3chguy.
* Unset buttons does not include color inherit ([#31801](https://github.com/element-hq/element-web/pull/31801)). Contributed by @Philldomd.
Changes in [1.12.9](https://github.com/element-hq/element-web/releases/tag/v1.12.9) (2026-01-27)
* Allow local log downloads when a rageshake URL is not configured. ([#31716](https://github.com/element-hq/element-web/pull/31716)). Contributed by @Half-Shot.
* Improve icon rendering accessibility ([#31776](https://github.com/element-hq/element-web/pull/31776)). Contributed by @t3chguy.
* Show "Bob shared this message" on messages shared via MSC4268 ([#31684](https://github.com/element-hq/element-web/pull/31684)). Contributed by @richvdh.
* Update the way we render icons for accessibility ([#31731](https://github.com/element-hq/element-web/pull/31731)). Contributed by @t3chguy.
* Switch from css masks to rendering svg ([#31681](https://github.com/element-hq/element-web/pull/31681)). Contributed by @t3chguy.
* Support for stable MSC4191 account management action parameter ([#31701](https://github.com/element-hq/element-web/pull/31701)). Contributed by @hughns.
* Support for stable m.oauth UIA stage from MSC4312 ([#31704](https://github.com/element-hq/element-web/pull/31704)). Contributed by @hughns.
* Switch to Compound icons to replace old icons ([#31667](https://github.com/element-hq/element-web/pull/31667)). Contributed by @t3chguy.
* Switch from svg masks to svg rendering in more places ([#31652](https://github.com/element-hq/element-web/pull/31652)). Contributed by @t3chguy.
* Switch from svg masks to svg rendering in more places ([#31650](https://github.com/element-hq/element-web/pull/31650)). Contributed by @t3chguy.
* Update notification icons using Compound icons ([#31671](https://github.com/element-hq/element-web/pull/31671)). Contributed by @t3chguy.
* Memoise ListView context ([#31668](https://github.com/element-hq/element-web/pull/31668)). Contributed by @t3chguy.
* Switch emoji picker to use emoji for header icons ([#31645](https://github.com/element-hq/element-web/pull/31645)). Contributed by @t3chguy.
* Replace icons with Compound alternatives ([#31642](https://github.com/element-hq/element-web/pull/31642)). Contributed by @t3chguy.
## 🐛 Bug Fixes
* Fix avatar decorations in thread activity centre not being atop avatar ([#31789](https://github.com/element-hq/element-web/pull/31789)). Contributed by @t3chguy.
* Fix room settings roles tab getting confused if power level change fails ([#31768](https://github.com/element-hq/element-web/pull/31768)). Contributed by @t3chguy.
* Custom themes now import highlights in css ([#31758](https://github.com/element-hq/element-web/pull/31758)). Contributed by @Philldomd.
* Use correct translation for url preview settings ([#31740](https://github.com/element-hq/element-web/pull/31740)). Contributed by @florianduros.
* Fix error shown if accepting a 3pid invite ([#31735](https://github.com/element-hq/element-web/pull/31735)). Contributed by @dbkr.
* Ensure correct focus configuration for Element Call before allowing users to call. ([#31490](https://github.com/element-hq/element-web/pull/31490)). Contributed by @Half-Shot.
* Fix emoji font in emoji picker header buttons ([#31679](https://github.com/element-hq/element-web/pull/31679)). Contributed by @t3chguy.
* fix flaky test by waiting for chat panel before counting messages ([#31633](https://github.com/element-hq/element-web/pull/31633)). Contributed by @BillCarsonFr.
Changes in [1.12.8](https://github.com/element-hq/element-web/releases/tag/v1.12.8) (2026-01-13)
* Remove `element_call.participant_limit` config and associated code. ([#31638](https://github.com/element-hq/element-web/pull/31638)). Contributed by @Half-Shot.
## ✨ Features
* Switch to rendering svg icons rather than masking them ([#31557](https://github.com/element-hq/element-web/pull/31557)). Contributed by @t3chguy.
* Update history visibility UX ([#31635](https://github.com/element-hq/element-web/pull/31635)). Contributed by @langleyd.
* Show correct call icon for joining a call. ([#31489](https://github.com/element-hq/element-web/pull/31489)). Contributed by @Half-Shot.
* Update StopGapWidgetDriver to support sticky events ([#31205](https://github.com/element-hq/element-web/pull/31205)). Contributed by @Half-Shot.
* Remove release announcements for new sounds \& room list ([#31544](https://github.com/element-hq/element-web/pull/31544)). Contributed by @t3chguy.
* Add button to restore from backup into /devtools ([#31581](https://github.com/element-hq/element-web/pull/31581)). Contributed by @mxandreas.
* Switch to non-solid compound icons for room settings \& composer ([#31561](https://github.com/element-hq/element-web/pull/31561)). Contributed by @t3chguy.
* Support encrypted state events MSC4362 ([#31513](https://github.com/element-hq/element-web/pull/31513)). Contributed by @andybalaam.
* Update prop type \& documentation for HistoryVisibleBanner and VM. ([#31545](https://github.com/element-hq/element-web/pull/31545)). Contributed by @kaylendog.
* Switch to Compound icons in more places ([#31560](https://github.com/element-hq/element-web/pull/31560)). Contributed by @t3chguy.
* Switch to rendering svg icons rather than masking them ([#31550](https://github.com/element-hq/element-web/pull/31550)). Contributed by @t3chguy.
* Make AccessibleButton contrast control compatible ([#31308](https://github.com/element-hq/element-web/pull/31308)). Contributed by @t3chguy.
* Switch to compound-design-tokens for platform icons ([#31543](https://github.com/element-hq/element-web/pull/31543)). Contributed by @t3chguy.
* Switch to rendering svg icons rather than masking them ([#31531](https://github.com/element-hq/element-web/pull/31531)). Contributed by @t3chguy.
* Switch to rendering svg icons rather than css masking ([#31517](https://github.com/element-hq/element-web/pull/31517)). Contributed by @t3chguy.
* Auto approve matrix rtc member event (`m.rtc.member`) (sticky events) ([#31452](https://github.com/element-hq/element-web/pull/31452)). Contributed by @toger5.
* Size Autocomplete relative to the RoomView height rather than the viewport height ([#31425](https://github.com/element-hq/element-web/pull/31425)). Contributed by @langleyd.
* Implement UI for history visibility acknowledgement. ([#31156](https://github.com/element-hq/element-web/pull/31156)). Contributed by @kaylendog.
* Export disposing hook from package ([#31498](https://github.com/element-hq/element-web/pull/31498)). Contributed by @MidhunSureshR.
* Change `header-panel-bg-hover` to use `var(--cpd-color-bg-action-secondary-hovered)` for better custom theming ([#31457](https://github.com/element-hq/element-web/pull/31457)). Contributed by @th0mcat.
* Improve icon rendering in iconized context menu ([#31458](https://github.com/element-hq/element-web/pull/31458)). Contributed by @t3chguy.
## 🐛 Bug Fixes
* [Backport staging] Fix space settings visibility tab crashing ([#31705](https://github.com/element-hq/element-web/pull/31705)). Contributed by @RiotRobot.
* Fix expand/collapse reply preview not showing in some cases ([#31639](https://github.com/element-hq/element-web/pull/31639)). Contributed by @t3chguy.
* Fix bundled font or custom font not applied after theme switch ([#31591](https://github.com/element-hq/element-web/pull/31591)). Contributed by @florianduros.
* Add ol override CSS for markdown-body ([#31618](https://github.com/element-hq/element-web/pull/31618)). Contributed by @niamu.
* Fix reaction left margin in timeline card ([#31625](https://github.com/element-hq/element-web/pull/31625)). Contributed by @t3chguy.
* Open right panel timeline when jumping to event with maximised widget ([#31626](https://github.com/element-hq/element-web/pull/31626)). Contributed by @t3chguy.
* Fix Compound Link elements not having an underline. ([#31583](https://github.com/element-hq/element-web/pull/31583)). Contributed by @Half-Shot.
* Recalculate mentions metadata of forwarded messages based on message body ([#31193](https://github.com/element-hq/element-web/pull/31193)). Contributed by @twassman.
* Fix Room Preview Card Layout ([#31611](https://github.com/element-hq/element-web/pull/31611)). Contributed by @germain-gg.
* Fix: WidgetMessaging not properly closed causing side effects and bugs ([#31598](https://github.com/element-hq/element-web/pull/31598)). Contributed by @BillCarsonFr.
* Handle cross-signing keys missing locally and/or from secret storage ([#31367](https://github.com/element-hq/element-web/pull/31367)). Contributed by @uhoreg.
* fix: Allow wrapping in `Banner` component. ([#31532](https://github.com/element-hq/element-web/pull/31532)). Contributed by @kaylendog.
* Update algorithm for history visible banner. ([#31577](https://github.com/element-hq/element-web/pull/31577)). Contributed by @kaylendog.
* Fix styling issue when using EW modules ([#31533](https://github.com/element-hq/element-web/pull/31533)). Contributed by @florianduros.
* Prevent history visible banner from displaying in threads. ([#31535](https://github.com/element-hq/element-web/pull/31535)). Contributed by @kaylendog.
* Make the feedback icon be the right color in dark theme ([#31527](https://github.com/element-hq/element-web/pull/31527)). Contributed by @robintown.
Changes in [1.12.7](https://github.com/element-hq/element-web/releases/tag/v1.12.7) (2025-12-16)
* Replace legacy icons with compound ([#31424](https://github.com/element-hq/element-web/pull/31424)). Contributed by @t3chguy.
* Update polls UX to match EX Mobile and improve accessibility ([#31245](https://github.com/element-hq/element-web/pull/31245)). Contributed by @langleyd.
* Add option to enable read receipt and marker when user interact with UI ([#31353](https://github.com/element-hq/element-web/pull/31353)). Contributed by @florianduros.
* Introduce a hook to auto dispose view models ([#31178](https://github.com/element-hq/element-web/pull/31178)). Contributed by @MidhunSureshR.
* Update settings toggles to use consistent design across app. ([#30169](https://github.com/element-hq/element-web/pull/30169)). Contributed by @Half-Shot.
* Add ability to the room view to hide widgets ([#31400](https://github.com/element-hq/element-web/pull/31400)). Contributed by @langleyd.
* call: Pass the echo cancellation and noise suppression settings to EC ([#31317](https://github.com/element-hq/element-web/pull/31317)). Contributed by @BillCarsonFr.
* Tweak rendering of icons for a11y ([#31358](https://github.com/element-hq/element-web/pull/31358)). Contributed by @t3chguy.
* Implement new `renderNotificationDecoration` from module API ([#31389](https://github.com/element-hq/element-web/pull/31389)). Contributed by @MidhunSureshR.
* Replace more icons with compound ([#31381](https://github.com/element-hq/element-web/pull/31381)). Contributed by @t3chguy.
* Replace more icons with compound ([#31378](https://github.com/element-hq/element-web/pull/31378)). Contributed by @t3chguy.
*`<Banner/>`: Hide `Dismiss` button if `onClose` handler is not provided. ([#31362](https://github.com/element-hq/element-web/pull/31362)). Contributed by @kaylendog.
* Replace batch of legacy icons with compound design tokens ([#31360](https://github.com/element-hq/element-web/pull/31360)). Contributed by @t3chguy.
* MSC4380: Invite blocking ([#31268](https://github.com/element-hq/element-web/pull/31268)). Contributed by @richvdh.
* Tweak rendering of icons for accessibility ([#31346](https://github.com/element-hq/element-web/pull/31346)). Contributed by @t3chguy.
* Implement a shared `Banner` component. ([#31266](https://github.com/element-hq/element-web/pull/31266)). Contributed by @kaylendog.
* Allow the Login screen to use the dark theme ([#31293](https://github.com/element-hq/element-web/pull/31293)). Contributed by @richvdh.
## 🐛 Bug Fixes
* [Backport staging] Amend e2e normal icon from lock-solid to info ([#31559](https://github.com/element-hq/element-web/pull/31559)). Contributed by @t3chguy.
* [Backport staging] Fix CSS specificity causing icon issues in e2e verification ([#31548](https://github.com/element-hq/element-web/pull/31548)). Contributed by @RiotRobot.
* [Backport staging] Fix e2e icons in CompleteSecurity \& SetupEncryptionBody ([#31522](https://github.com/element-hq/element-web/pull/31522)). Contributed by @RiotRobot.
* [Backport staging] Remove an extra paragraph in advanced room settings ([#31511](https://github.com/element-hq/element-web/pull/31511)). Contributed by @RiotRobot.
* [Backport staging] Don't show the key storage out of sync toast when backup disabled ([#31507](https://github.com/element-hq/element-web/pull/31507)). Contributed by @RiotRobot.
* Fix composer button visibility in contrast colour mode ([#31255](https://github.com/element-hq/element-web/pull/31255)). Contributed by @t3chguy.
* Ensure correct room version is used and permissions are appropriately sert when creating rooms ([#31464](https://github.com/element-hq/element-web/pull/31464)). Contributed by @Half-Shot.
* Fix e2e icon rendering ([#31454](https://github.com/element-hq/element-web/pull/31454)). Contributed by @t3chguy.
* EventIndexer: ensure we add initial checkpoints when the db is first opened ([#31448](https://github.com/element-hq/element-web/pull/31448)). Contributed by @richvdh.
* Fix `/join <alias>` command failing due to race condition ([#31433](https://github.com/element-hq/element-web/pull/31433)). Contributed by @MidhunSureshR.
* MessageEventIndexDialog: distinguish indexed rooms ([#31436](https://github.com/element-hq/element-web/pull/31436)). Contributed by @richvdh.
* Move `EditInPlace` out of `Form` (Fixes: reloading EW on EC url update) ([#31434](https://github.com/element-hq/element-web/pull/31434)). Contributed by @toger5.
* Fixes issue where cursor would jump to the beginning of the input field after converting Japanese text and pressing Tab ([#31432](https://github.com/element-hq/element-web/pull/31432)). Contributed by @shinaoka.
* Fix widgets getting stuck in loading states ([#31314](https://github.com/element-hq/element-web/pull/31314)). Contributed by @robintown.
* Room list: fix room options remaining on room item after mouse leaving ([#31414](https://github.com/element-hq/element-web/pull/31414)). Contributed by @florianduros.
* Make `RoomList.showMessagePreview` configurable by `config.json` ([#31419](https://github.com/element-hq/element-web/pull/31419)). Contributed by @florianduros.
* Fix bug which caused app not to load correctly when `force_verification` is enabled ([#31265](https://github.com/element-hq/element-web/pull/31265)). Contributed by @richvdh.
* Room list: display the menu option on the room list item when clicked/opened ([#31380](https://github.com/element-hq/element-web/pull/31380)). Contributed by @florianduros.
* Fix handling of SVGs ([#31359](https://github.com/element-hq/element-web/pull/31359)). Contributed by @t3chguy.
* Fix word wrapping in expanded left panel buttons ([#31377](https://github.com/element-hq/element-web/pull/31377)). Contributed by @t3chguy.
* Fix aspect ratio on error view background ([#31361](https://github.com/element-hq/element-web/pull/31361)). Contributed by @t3chguy.
* Fix failure to request persistent storage perms ([#31299](https://github.com/element-hq/element-web/pull/31299)). Contributed by @richvdh.
* Fix calls sometimes not knowing that they're presented ([#31313](https://github.com/element-hq/element-web/pull/31313)). Contributed by @robintown.
Changes in [1.12.6](https://github.com/element-hq/element-web/releases/tag/v1.12.6) (2025-12-03)
* Update Emojibase to v17 ([#31307](https://github.com/element-hq/element-web/pull/31307)). Contributed by @t3chguy.
* Adds tooltip for compose menu ([#31122](https://github.com/element-hq/element-web/pull/31122)). Contributed by @byteplow.
* Add option to hide pinned message banner in room view ([#31296](https://github.com/element-hq/element-web/pull/31296)). Contributed by @florianduros.
* update twemoji to not monochromise emoji with BLACK in their name ([#31281](https://github.com/element-hq/element-web/pull/31281)). Contributed by @ara4n.
* upgrade to twemoji 17.0.2 and fix #14695 ([#31267](https://github.com/element-hq/element-web/pull/31267)). Contributed by @ara4n.
* Add options to hide right panel in room view ([#31252](https://github.com/element-hq/element-web/pull/31252)). Contributed by @florianduros.
* Delayed event management: split endpoints, no auth ([#31183](https://github.com/element-hq/element-web/pull/31183)). Contributed by @AndrewFerr.
* Support using Element Call for voice calls in DMs ([#30817](https://github.com/element-hq/element-web/pull/30817)). Contributed by @Half-Shot.
* Improve screen reader accessibility of auth pages ([#31236](https://github.com/element-hq/element-web/pull/31236)). Contributed by @t3chguy.
* Add posthog tracking for key backup toasts ([#31195](https://github.com/element-hq/element-web/pull/31195)). Contributed by @Half-Shot.
## 🐛 Bug Fixes
* Return to using Fira Code as the default monospace font ([#31302](https://github.com/element-hq/element-web/pull/31302)). Contributed by @ara4n.
* Fix case of home screen being displayed erroneously ([#31301](https://github.com/element-hq/element-web/pull/31301)). Contributed by @langleyd.
* Fix message edition and reply when multiple rooms at displayed the same moment ([#31280](https://github.com/element-hq/element-web/pull/31280)). Contributed by @florianduros.
* Key storage out of sync: reset key backup when needed ([#31279](https://github.com/element-hq/element-web/pull/31279)). Contributed by @uhoreg.
* Fix invalid events crashing entire room rather than just their tile ([#31256](https://github.com/element-hq/element-web/pull/31256)). Contributed by @t3chguy.
* Fix expand button of space panel getting cut off at the edges ([#31259](https://github.com/element-hq/element-web/pull/31259)). Contributed by @MidhunSureshR.
* Fix pill buttons in dialogs ([#31246](https://github.com/element-hq/element-web/pull/31246)). Contributed by @dbkr.
* Fix blank sections at the top and bottom of the member list when scrolling ([#31198](https://github.com/element-hq/element-web/pull/31198)). Contributed by @langleyd.
* Fix emoji category selection with keyboard ([#31162](https://github.com/element-hq/element-web/pull/31162)). Contributed by @langleyd.
Changes in [1.12.4](https://github.com/element-hq/element-web/releases/tag/v1.12.4) (2025-11-18)
* Apply aria-hidden to emoji in SAS verification ([#31204](https://github.com/element-hq/element-web/pull/31204)). Contributed by @t3chguy.
* Add options to hide header and composer of room view for the module api ([#31095](https://github.com/element-hq/element-web/pull/31095)). Contributed by @florianduros.
* Experimental Module API Additions ([#30863](https://github.com/element-hq/element-web/pull/30863)). Contributed by @dbkr.
* Change polls to use fieldset/legend markup ([#31160](https://github.com/element-hq/element-web/pull/31160)). Contributed by @langleyd.
* Use compound Button styles for Jitsi button ([#31159](https://github.com/element-hq/element-web/pull/31159)). Contributed by @Half-Shot.
* Add FocusLock to emoji picker ([#31146](https://github.com/element-hq/element-web/pull/31146)). Contributed by @langleyd.
* Move room name, avatar, and topic to IOpts. ([#30981](https://github.com/element-hq/element-web/pull/30981)). Contributed by @kaylendog.
* Add a devtool for looking at users and their devices ([#30983](https://github.com/element-hq/element-web/pull/30983)). Contributed by @uhoreg.
## 🐛 Bug Fixes
* Fix room list handling of membership changes ([#31197](https://github.com/element-hq/element-web/pull/31197)). Contributed by @t3chguy.
* Fix room list unable to be resized when displayed after a module ([#31186](https://github.com/element-hq/element-web/pull/31186)). Contributed by @florianduros.
* Inhibit keyboard highlights in dialogs when effector is not in focus ([#31181](https://github.com/element-hq/element-web/pull/31181)). Contributed by @t3chguy.
* Strip mentions from forwarded messages ([#30884](https://github.com/element-hq/element-web/pull/30884)). Contributed by @twassman.
* Don't allow pin or edit of messages with a send status ([#31158](https://github.com/element-hq/element-web/pull/31158)). Contributed by @langleyd.
* Hide room header buttons if the room hasn't been created yet. ([#31092](https://github.com/element-hq/element-web/pull/31092)). Contributed by @Half-Shot.
* Fix screen readers not indicating the emoji picker search field is focused. ([#31128](https://github.com/element-hq/element-web/pull/31128)). Contributed by @langleyd.
* Fix emoji picker highlight missing when not active element ([#31148](https://github.com/element-hq/element-web/pull/31148)). Contributed by @t3chguy.
* Add relevant aria attribute for selected emoji in the emoji picker ([#31125](https://github.com/element-hq/element-web/pull/31125)). Contributed by @t3chguy.
* Fix tooltips within context menu portals being unreliable ([#31129](https://github.com/element-hq/element-web/pull/31129)). Contributed by @t3chguy.
* Avoid excessive re-render of room list and member list ([#31131](https://github.com/element-hq/element-web/pull/31131)). Contributed by @florianduros.
* Make emoji picker height responsive. ([#31130](https://github.com/element-hq/element-web/pull/31130)). Contributed by @langleyd.
* Emoji Picker: Focused emoji does not move with the arrow keys ([#30893](https://github.com/element-hq/element-web/pull/30893)). Contributed by @langleyd.
* Fix audio player seek bar position ([#31127](https://github.com/element-hq/element-web/pull/31127)). Contributed by @florianduros.
* Add aria label to emoji picker search ([#31126](https://github.com/element-hq/element-web/pull/31126)). Contributed by @langleyd.
Changes in [1.12.3](https://github.com/element-hq/element-web/releases/tag/v1.12.3) (2025-11-04)
* Remove allowVoipWithNoMedia feature flag ([#31087](https://github.com/element-hq/element-web/pull/31087)). Contributed by @Half-Shot.
## ✨ Features
* Change module API to be an instance getter ([#31025](https://github.com/element-hq/element-web/pull/31025)). Contributed by @dbkr.
## 🐛 Bug Fixes
* Show hover elements when keyboard focus is within an event tile ([#31078](https://github.com/element-hq/element-web/pull/31078)). Contributed by @t3chguy.
* Ensure toolbar navigation pattern works in MessageActionBar ([#31080](https://github.com/element-hq/element-web/pull/31080)). Contributed by @t3chguy.
* Ensure sent markers are hidden when showing thread summary. ([#31076](https://github.com/element-hq/element-web/pull/31076)). Contributed by @Half-Shot.
* Fix translation in dev mode ([#31045](https://github.com/element-hq/element-web/pull/31045)). Contributed by @florianduros.
* Fix sort order in space hierarchy ([#30975](https://github.com/element-hq/element-web/pull/30975)). Contributed by @t3chguy.
* New Room list: don't display message preview of thread ([#31043](https://github.com/element-hq/element-web/pull/31043)). Contributed by @florianduros.
* Revert "A11y: move focus to right panel when opened" ([#30999](https://github.com/element-hq/element-web/pull/30999)). Contributed by @florianduros.
* Fix highlights in messages (or search results) breaking links ([#30264](https://github.com/element-hq/element-web/pull/30264)). Contributed by @bojidar-bg.
* Add prepare script ([#31030](https://github.com/element-hq/element-web/pull/31030)). Contributed by @dbkr.
* Fix html exports by adding SDKContext ([#30987](https://github.com/element-hq/element-web/pull/30987)). Contributed by @t3chguy.
Changes in [1.12.2](https://github.com/element-hq/element-web/releases/tag/v1.12.2) (2025-10-21)
* Room List: Extend the viewport to avoid so many black spots when scrolling the room list ([#30867](https://github.com/element-hq/element-web/pull/30867)). Contributed by @langleyd.
* Hide calling buttons in room header before a room is created ([#30816](https://github.com/element-hq/element-web/pull/30816)). Contributed by @Half-Shot.
* Improve invite dialog ui - Part 2 ([#30836](https://github.com/element-hq/element-web/pull/30836)). Contributed by @florianduros.
## 🐛 Bug Fixes
* Fix platform settings race condition and make auto-launch tri-state ([#30977](https://github.com/element-hq/element-web/pull/30977)). Contributed by @t3chguy.
* Fix: member count in header and member list ([#30982](https://github.com/element-hq/element-web/pull/30982)). Contributed by @florianduros.
* Fix duration of voice message in timeline ([#30973](https://github.com/element-hq/element-web/pull/30973)). Contributed by @florianduros.
* Fix voice notes rendering at 00:00 when playback had not begun. ([#30961](https://github.com/element-hq/element-web/pull/30961)). Contributed by @Half-Shot.
* Improve handling of animated images, add support for AVIF animations ([#30932](https://github.com/element-hq/element-web/pull/30932)). Contributed by @t3chguy.
* Update key storage toggle when key storage status changes ([#30934](https://github.com/element-hq/element-web/pull/30934)). Contributed by @uhoreg.
* Fix jitsi widget popout ([#30908](https://github.com/element-hq/element-web/pull/30908)). Contributed by @dbkr.
* Improve keyboard navigation on invite dialog ([#30930](https://github.com/element-hq/element-web/pull/30930)). Contributed by @florianduros.
* Prefer UIA flows with supported UIA stages ([#30926](https://github.com/element-hq/element-web/pull/30926)). Contributed by @richvdh.
* Enhance accessibility of dropdown ([#30928](https://github.com/element-hq/element-web/pull/30928)). Contributed by @florianduros.
* Improve accessibility of the `\<AvatarSetting> component ([#30907](https://github.com/element-hq/element-web/pull/30907)). Contributed by @MidhunSureshR.
Changes in [1.12.1](https://github.com/element-hq/element-web/releases/tag/v1.12.1) (2025-10-07)
* New Room List: Change the order of filters to match those on mobile ([#30905](https://github.com/element-hq/element-web/pull/30905)). Contributed by @langleyd.
* New Room List: Don't clear filters on space change ([#30903](https://github.com/element-hq/element-web/pull/30903)). Contributed by @langleyd.
* Add release announcement for the sounds ([#30900](https://github.com/element-hq/element-web/pull/30900)). Contributed by @langleyd.
* Rich Text Editor: Add emoji suggestion support ([#30873](https://github.com/element-hq/element-web/pull/30873)). Contributed by @langleyd.
* feat: Disable session lock when running in element-desktop ([#30643](https://github.com/element-hq/element-web/pull/30643)). Contributed by @kaylendog.
* Improve invite dialog ui - Part 1 ([#30764](https://github.com/element-hq/element-web/pull/30764)). Contributed by @florianduros.
* Update Message Sound for Element ([#30804](https://github.com/element-hq/element-web/pull/30804)). Contributed by @beatdemon.
* Add new and improved ringtone ([#30761](https://github.com/element-hq/element-web/pull/30761)). Contributed by @Half-Shot.
* Disable RTE formatting buttons when the content contains a slash command ([#30802](https://github.com/element-hq/element-web/pull/30802)). Contributed by @langleyd.
## 🐛 Bug Fixes
* New Room List: Improve robustness of keyboard navigation ([#30888](https://github.com/element-hq/element-web/pull/30888)). Contributed by @langleyd.
* Fix a11y issue on list in invite dialog ([#30878](https://github.com/element-hq/element-web/pull/30878)). Contributed by @florianduros.
* Switch Export and Import Icons to match intuition ([#30805](https://github.com/element-hq/element-web/pull/30805)). Contributed by @micartey.
* Hide breadcrumb option when new room list is enabled ([#30869](https://github.com/element-hq/element-web/pull/30869)). Contributed by @florianduros.
* Avoid creating multiple call objects for the same widget ([#30839](https://github.com/element-hq/element-web/pull/30839)). Contributed by @robintown.
* Add a test for #29882, which is fixed by matrix-org/matrix-js-sdk#5016 ([#30835](https://github.com/element-hq/element-web/pull/30835)). Contributed by @andybalaam.
* fix: use `help_encryption_url` of config instead of hardcoded `https://element.io/help#encryption5` ([#30746](https://github.com/element-hq/element-web/pull/30746)). Contributed by @florianduros.
* Fix html export when feature\_jump\_to\_date is enabled ([#30828](https://github.com/element-hq/element-web/pull/30828)). Contributed by @langleyd.
* Fix #30439: "Forgot recovery key" should go to "reset" ([#30771](https://github.com/element-hq/element-web/pull/30771)). Contributed by @andybalaam.
Changes in [1.12.0](https://github.com/element-hq/element-web/releases/tag/v1.12.0) (2025-09-23)
* Remove remaining support for outdated .well-known settings ([#30702](https://github.com/element-hq/element-web/pull/30702)). Contributed by @richvdh.
## ✨ Features
* Add decline button to call notification toast (use new notification event) ([#30729](https://github.com/element-hq/element-web/pull/30729)). Contributed by @toger5.
* Use the new room list by default ([#30640](https://github.com/element-hq/element-web/pull/30640)). Contributed by @langleyd.
* "Verify this device" redesign ([#30596](https://github.com/element-hq/element-web/pull/30596)). Contributed by @uhoreg.
* Set Element Call "intents" when starting and answering DM calls. ([#30730](https://github.com/element-hq/element-web/pull/30730)). Contributed by @Half-Shot.
* Add axe compliance for new room list ([#30700](https://github.com/element-hq/element-web/pull/30700)). Contributed by @langleyd.
* Stop ringing and remove toast if another device answers a RTC call. ([#30728](https://github.com/element-hq/element-web/pull/30728)). Contributed by @Half-Shot.
* Automatically adjust history visibility when making a room private ([#30713](https://github.com/element-hq/element-web/pull/30713)). Contributed by @Half-Shot.
* Release announcement for new room list ([#30675](https://github.com/element-hq/element-web/pull/30675)). Contributed by @dbkr.
## 🐛 Bug Fixes
* [Backport staging] Room list: make the filter resize correctly ([#30795](https://github.com/element-hq/element-web/pull/30795)). Contributed by @RiotRobot.
* [Backport staging] Avoid flicker of the room list filter on resize ([#30794](https://github.com/element-hq/element-web/pull/30794)). Contributed by @RiotRobot.
* Don't show release announcements while toasts are displayed ([#30770](https://github.com/element-hq/element-web/pull/30770)). Contributed by @dbkr.
* Fix enabling key backup not working if there is an untrusted key backup ([#30707](https://github.com/element-hq/element-web/pull/30707)). Contributed by @Half-Shot.
* Force `preload` to be false when setting an intent on an Element Call. ([#30759](https://github.com/element-hq/element-web/pull/30759)). Contributed by @Half-Shot.
* Fix handling of 413 server response when uploading media ([#30737](https://github.com/element-hq/element-web/pull/30737)). Contributed by @hughns.
* Make landmark navigation work with new room list ([#30747](https://github.com/element-hq/element-web/pull/30747)). Contributed by @dbkr.
* Prevent voice message from displaying spurious errors ([#30736](https://github.com/element-hq/element-web/pull/30736)). Contributed by @florianduros.
* Align default avatar and fix colors in composer pills ([#30739](https://github.com/element-hq/element-web/pull/30739)). Contributed by @florianduros.
* Use configured URL for link to desktop app in message search settings ([#30742](https://github.com/element-hq/element-web/pull/30742)). Contributed by @t3chguy.
* Fix history visibility when creating space rooms ([#30745](https://github.com/element-hq/element-web/pull/30745)). Contributed by @dbkr.
* Check HTML-encoded quotes when handling translations for embedded pages (such as welcome.html) ([#30743](https://github.com/element-hq/element-web/pull/30743)). Contributed by @Half-Shot.
* Fix local room encryption status always not enabled ([#30461](https://github.com/element-hq/element-web/pull/30461)). Contributed by @BillCarsonFr.
* fix: make url in topic in room intro clickable ([#30686](https://github.com/element-hq/element-web/pull/30686)). Contributed by @florianduros.
* Block change recovery key button while a change is ongoing. ([#30664](https://github.com/element-hq/element-web/pull/30664)). Contributed by @Half-Shot.
* Hide advanced settings during room creation when `UIFeature.advancedSettings=false` ([#30684](https://github.com/element-hq/element-web/pull/30684)). Contributed by @florianduros.
* A11y: improve accessibility of pinned messages ([#30558](https://github.com/element-hq/element-web/pull/30558)). Contributed by @florianduros.
Changes in [1.11.112](https://github.com/element-hq/element-web/releases/tag/v1.11.112) (2025-09-16)
* Do not hide media from your own user by default ([#29797](https://github.com/element-hq/element-web/pull/29797)). Contributed by @Half-Shot.
* Remember whether sidebar is shown for calls when switching rooms ([#30262](https://github.com/element-hq/element-web/pull/30262)). Contributed by @bojidar-bg.
* Open the proper integration settings on integrations disabled error ([#30538](https://github.com/element-hq/element-web/pull/30538)). Contributed by @Half-Shot.
* Show a "progress" dialog while invites are being sent ([#30561](https://github.com/element-hq/element-web/pull/30561)). Contributed by @richvdh.
* Move the room list to the new ListView(backed by react-virtuoso) ([#30515](https://github.com/element-hq/element-web/pull/30515)). Contributed by @langleyd.
## 🐛 Bug Fixes
* [Backport staging] Ensure container starts if it is mounted with an empty /modules directory. ([#30705](https://github.com/element-hq/element-web/pull/30705)). Contributed by @RiotRobot.
* Fix room joining over federation not specifying vias or using aliases ([#30641](https://github.com/element-hq/element-web/pull/30641)). Contributed by @t3chguy.
* Fix stable-suffixed MSC4133 support ([#30649](https://github.com/element-hq/element-web/pull/30649)). Contributed by @dbkr.
* Fix i18n of message when a setting is disabled ([#30646](https://github.com/element-hq/element-web/pull/30646)). Contributed by @dbkr.
* ListView should not handle the arrow keys if there is a modifier applied ([#30633](https://github.com/element-hq/element-web/pull/30633)). Contributed by @langleyd.
* Make BaseDialog's div keyboard focusable and fix test. ([#30631](https://github.com/element-hq/element-web/pull/30631)). Contributed by @langleyd.
* Fix: Allow triple-click text selection to flow around pills ([#30349](https://github.com/element-hq/element-web/pull/30349)). Contributed by @AlirezaMrtz.
* Watch for a 'join' action to know when the call is connected ([#29492](https://github.com/element-hq/element-web/pull/29492)). Contributed by @robintown.
* Fix: add missing tooltip and aria-label to lock icon next to composer ([#30623](https://github.com/element-hq/element-web/pull/30623)). Contributed by @florianduros.
* Don't render context menu when scrolling ([#30613](https://github.com/element-hq/element-web/pull/30613)). Contributed by @langleyd.
Changes in [1.11.110](https://github.com/element-hq/element-web/releases/tag/v1.11.110) (2025-08-27)
* Hide recovery key when re-entering it while creating or changing it ([#30499](https://github.com/element-hq/element-web/pull/30499)). Contributed by @andybalaam.
* Add `?no_universal_links=true` to OIDC url so EX doesn't try to handle it ([#29439](https://github.com/element-hq/element-web/pull/29439)). Contributed by @t3chguy.
* Show a blue lock for unencrypted rooms and hide the grey shield for encrypted rooms ([#30440](https://github.com/element-hq/element-web/pull/30440)). Contributed by @langleyd.
* Add support for Module API 1.4 ([#30185](https://github.com/element-hq/element-web/pull/30185)). Contributed by @t3chguy.
* MVVM - Introduce some helpers for snapshot management ([#30398](https://github.com/element-hq/element-web/pull/30398)). Contributed by @MidhunSureshR.
## 🐛 Bug Fixes
* A11y: move focus to right panel when opened ([#30553](https://github.com/element-hq/element-web/pull/30553)). Contributed by @florianduros.
* Fix e2e warning icon should be white ([#30539](https://github.com/element-hq/element-web/pull/30539)). Contributed by @florianduros.
* Remove NoOneHere disabled reason. ([#30524](https://github.com/element-hq/element-web/pull/30524)). Contributed by @toger5.
* Fix downloading files with authenticated media API ([#30520](https://github.com/element-hq/element-web/pull/30520)). Contributed by @t3chguy.
* Fix call permissions check confusion around element call ([#30521](https://github.com/element-hq/element-web/pull/30521)). Contributed by @t3chguy.
* Fix line wrap around emoji verification ([#30523](https://github.com/element-hq/element-web/pull/30523)). Contributed by @t3chguy.
* Don't highlight redacted events ([#30519](https://github.com/element-hq/element-web/pull/30519)). Contributed by @t3chguy.
* Fix matrix.to links not being handled in the app ([#30522](https://github.com/element-hq/element-web/pull/30522)). Contributed by @t3chguy.
* Fix issue of new room list taking up the full width ([#30459](https://github.com/element-hq/element-web/pull/30459)). Contributed by @langleyd.
* Fix widget persistence in React development mode ([#30509](https://github.com/element-hq/element-web/pull/30509)). Contributed by @robintown.
* Fix widget initialization in React development mode ([#30463](https://github.com/element-hq/element-web/pull/30463)). Contributed by @robintown.
Changes in [1.11.109](https://github.com/element-hq/element-web/releases/tag/v1.11.109) (2025-08-11)
This release supports the upcoming v12 ("hydra") Matrix room version and is necessary to view and participate in these rooms.
## ✨ Features
* [Backport staging] Allow /upgraderoom command without developer mode enabled ([#30529](https://github.com/element-hq/element-web/pull/30529)). Contributed by @RiotRobot.
* [Backport staging] Support for creator/owner power level ([#30526](https://github.com/element-hq/element-web/pull/30526)). Contributed by @RiotRobot.
* New room list: change icon and label of menu item for to start a DM ([#30470](https://github.com/element-hq/element-web/pull/30470)). Contributed by @florianduros.
* Implement the member list with virtuoso ([#29869](https://github.com/element-hq/element-web/pull/29869)). Contributed by @langleyd.
* Add labs option for history sharing on invite ([#30313](https://github.com/element-hq/element-web/pull/30313)). Contributed by @richvdh.
* Bump wysiwyg to 2.39.0 adding support for pasting rich text content in the Rich Text Edtior ([#30421](https://github.com/element-hq/element-web/pull/30421)). Contributed by @langleyd.
* Support `EventShieldReason.MISMATCHED_SENDER` ([#30403](https://github.com/element-hq/element-web/pull/30403)). Contributed by @richvdh.
* Change unencrypted and public pills to blue ([#30399](https://github.com/element-hq/element-web/pull/30399)). Contributed by @florianduros.
* Change color of public room icon ([#30390](https://github.com/element-hq/element-web/pull/30390)). Contributed by @florianduros.
* Script for updating storybook screenshots ([#30340](https://github.com/element-hq/element-web/pull/30340)). Contributed by @dbkr.
* Add toggle to hide empty state in devtools ([#30352](https://github.com/element-hq/element-web/pull/30352)). Contributed by @toger5.
## 🐛 Bug Fixes
* [Backport staging] Use userId to filter users in non-federated rooms when showing the InviteDialog ([#30537](https://github.com/element-hq/element-web/pull/30537)). Contributed by @RiotRobot.
* [Backport staging] Catch error when encountering invalid m.room.pinned\_events event ([#30536](https://github.com/element-hq/element-web/pull/30536)). Contributed by @RiotRobot.
* Update for compatibility with v12 rooms ([#30452](https://github.com/element-hq/element-web/pull/30452)). Contributed by @dbkr.
* New room list: fix tooltip on presence ([#30474](https://github.com/element-hq/element-web/pull/30474)). Contributed by @florianduros.
* New room list: add tooltip for presence and room status ([#30472](https://github.com/element-hq/element-web/pull/30472)). Contributed by @florianduros.
* Fix: Clicking on an item in the member list causes it to scroll to the top rather than show the profile view ([#30455](https://github.com/element-hq/element-web/pull/30455)). Contributed by @langleyd.
* Put the 'decrypting' tooltip back ([#30446](https://github.com/element-hq/element-web/pull/30446)). Contributed by @dbkr.
* Use server name explicitly for via. ([#30362](https://github.com/element-hq/element-web/pull/30362)). Contributed by @Half-Shot.
* fix: replace hardcoded string in poll history dialog ([#30402](https://github.com/element-hq/element-web/pull/30402)). Contributed by @florianduros.
* fix: replace hardcoded string on qr code back button ([#30401](https://github.com/element-hq/element-web/pull/30401)). Contributed by @florianduros.
* Fix color of icon button with outline ([#30361](https://github.com/element-hq/element-web/pull/30361)). Contributed by @florianduros.
Changes in [1.11.108](https://github.com/element-hq/element-web/releases/tag/v1.11.108) (2025-07-30)
* [Backport staging] Fix downloaded attachments not being decrypted ([#30434](https://github.com/element-hq/element-web/pull/30434)). Contributed by @RiotRobot.
Changes in [1.11.107](https://github.com/element-hq/element-web/releases/tag/v1.11.107) (2025-07-29)
* Message preview should show tooltip with the full message on hover ([#30265](https://github.com/element-hq/element-web/pull/30265)). Contributed by @MidhunSureshR.
* Support rendering notification badges on platforms that do their own icon overlays ([#30315](https://github.com/element-hq/element-web/pull/30315)). Contributed by @Half-Shot.
* Add SubscriptionViewModel base class ([#30297](https://github.com/element-hq/element-web/pull/30297)). Contributed by @dbkr.
* Enhancement: Save image on CTRL+S ([#30330](https://github.com/element-hq/element-web/pull/30330)). Contributed by @ioalexander.
* Add quote functionality to MessageContextMenu (#29893) ([#30323](https://github.com/element-hq/element-web/pull/30323)). Contributed by @AlirezaMrtz.
* Initial structure for shared component views ([#30216](https://github.com/element-hq/element-web/pull/30216)). Contributed by @dbkr.
## 🐛 Bug Fixes
* [Backport staging] Fix e2e shield being invisible in white mode for encrypted room ([#30411](https://github.com/element-hq/element-web/pull/30411)). Contributed by @RiotRobot.
* Force ED titlebar color for new room list ([#30332](https://github.com/element-hq/element-web/pull/30332)). Contributed by @florianduros.
* Add a background color to left panel for macos titlebar in element desktop ([#30328](https://github.com/element-hq/element-web/pull/30328)). Contributed by @florianduros.
* Fix: Prevent page refresh on Enter key in right panel member search ([#30312](https://github.com/element-hq/element-web/pull/30312)). Contributed by @AlirezaMrtz.
Changes in [1.11.106](https://github.com/element-hq/element-web/releases/tag/v1.11.106) (2025-07-15)
* Add support for module message hint `allowDownloadingMedia` ([#30252](https://github.com/element-hq/element-web/pull/30252)). Contributed by @Half-Shot.
* Update the mobile\_guide page to the new design and link out to Element X by default. ([#30172](https://github.com/element-hq/element-web/pull/30172)). Contributed by @pixlwave.
* Filter settings exported when rageshaking ([#30236](https://github.com/element-hq/element-web/pull/30236)). Contributed by @Half-Shot.
* Allow Element Call to learn the room name ([#30213](https://github.com/element-hq/element-web/pull/30213)). Contributed by @robintown.
* New room list: add context menu to room list item ([#29952](https://github.com/element-hq/element-web/pull/29952)). Contributed by @florianduros.
* Support for custom message components via Module API ([#30074](https://github.com/element-hq/element-web/pull/30074)). Contributed by @Half-Shot.
* Prompt users to set up recovery ([#30075](https://github.com/element-hq/element-web/pull/30075)). Contributed by @uhoreg.
* Update `IconButton` colors ([#30124](https://github.com/element-hq/element-web/pull/30124)). Contributed by @florianduros.
* New room list: filter list can be collapsed ([#29992](https://github.com/element-hq/element-web/pull/29992)). Contributed by @florianduros.
* Show `EmptyRoomListView` when low priority filter matches zero rooms ([#30122](https://github.com/element-hq/element-web/pull/30122)). Contributed by @MidhunSureshR.
## 🐛 Bug Fixes
* Fix untranslatable string "People" in notifications beta ([#30165](https://github.com/element-hq/element-web/pull/30165)). Contributed by @t3chguy.
* Force verification even after logging in via delegate ([#30141](https://github.com/element-hq/element-web/pull/30141)). Contributed by @andybalaam.
* Hide add integrations button based on UIComponent.AddIntegrations ([#30140](https://github.com/element-hq/element-web/pull/30140)). Contributed by @t3chguy.
* Use nav for new room list and label sections ([#30134](https://github.com/element-hq/element-web/pull/30134)). Contributed by @dbkr.
* Spacestore should emit event after rebuilding home space ([#30132](https://github.com/element-hq/element-web/pull/30132)). Contributed by @MidhunSureshR.
* Handle m.room.pinned\_events being invalid ([#30129](https://github.com/element-hq/element-web/pull/30129)). Contributed by @t3chguy.
Changes in [1.11.104](https://github.com/element-hq/element-web/releases/tag/v1.11.104) (2025-06-17)
* Update the mobile\_guide page to the new design. ([#30006](https://github.com/element-hq/element-web/pull/30006)). Contributed by @pixlwave.
* Provide a devtool for manually verifying other devices ([#30094](https://github.com/element-hq/element-web/pull/30094)). Contributed by @andybalaam.
* Implement MSC4155: Invite filtering ([#29603](https://github.com/element-hq/element-web/pull/29603)). Contributed by @Half-Shot.
* Add low priority avatar decoration to room tile ([#30065](https://github.com/element-hq/element-web/pull/30065)). Contributed by @MidhunSureshR.
* Add ability to prevent window content being captured by other apps (Desktop) ([#30098](https://github.com/element-hq/element-web/pull/30098)). Contributed by @t3chguy.
* New room list: move message preview in user settings ([#30023](https://github.com/element-hq/element-web/pull/30023)). Contributed by @florianduros.
* New room list: change room options icon ([#30029](https://github.com/element-hq/element-web/pull/30029)). Contributed by @florianduros.
* RoomListStore: Sort low priority rooms to the bottom of the list ([#30070](https://github.com/element-hq/element-web/pull/30070)). Contributed by @MidhunSureshR.
* Add low priority filter pill to the room list UI ([#30060](https://github.com/element-hq/element-web/pull/30060)). Contributed by @MidhunSureshR.
* New room list: remove color gradient in space panel ([#29721](https://github.com/element-hq/element-web/pull/29721)). Contributed by @florianduros.
* /share?msg=foo endpoint using forward message dialog ([#29874](https://github.com/element-hq/element-web/pull/29874)). Contributed by @ara4n.
## 🐛 Bug Fixes
* Do not send empty auth when setting up cross-signing keys ([#29914](https://github.com/element-hq/element-web/pull/29914)). Contributed by @gnieto.
* Settings: flip local video feed by default ([#29501](https://github.com/element-hq/element-web/pull/29501)). Contributed by @jbtrystram.
* AccessSecretStorageDialog: various fixes ([#30093](https://github.com/element-hq/element-web/pull/30093)). Contributed by @richvdh.
* AccessSecretStorageDialog: fix inability to enter recovery key ([#30090](https://github.com/element-hq/element-web/pull/30090)). Contributed by @richvdh.
* Fix failure to upload thumbnail causing image to send as file ([#30086](https://github.com/element-hq/element-web/pull/30086)). Contributed by @t3chguy.
* Low priority menu item should be a toggle ([#30071](https://github.com/element-hq/element-web/pull/30071)). Contributed by @MidhunSureshR.
* Add sanity checks to prevent users from ignoring themselves ([#30079](https://github.com/element-hq/element-web/pull/30079)). Contributed by @MidhunSureshR.
* Fix issue with duplicate images ([#30073](https://github.com/element-hq/element-web/pull/30073)). Contributed by @fatlewis.
* Handle errors returned from Seshat ([#30083](https://github.com/element-hq/element-web/pull/30083)). Contributed by @richvdh.
Changes in [1.11.103](https://github.com/element-hq/element-web/releases/tag/v1.11.103) (2025-06-10)
* EW: Modernize the recovery key input modal ([#29819](https://github.com/element-hq/element-web/pull/29819)). Contributed by @uhoreg.
* New room list: move secondary filters into primary filters ([#29972](https://github.com/element-hq/element-web/pull/29972)). Contributed by @florianduros.
* Prompt the user when key storage is unexpectedly off ([#29912](https://github.com/element-hq/element-web/pull/29912)). Contributed by @andybalaam.
* New room list: move sort menu in room list header ([#29983](https://github.com/element-hq/element-web/pull/29983)). Contributed by @florianduros.
* New room list: rework spacing of room list item ([#29965](https://github.com/element-hq/element-web/pull/29965)). Contributed by @florianduros.
* RLS: Remove forgotten room from skiplist ([#29933](https://github.com/element-hq/element-web/pull/29933)). Contributed by @MidhunSureshR.
* Add room list sorting ([#29951](https://github.com/element-hq/element-web/pull/29951)). Contributed by @dbkr.
* Don't use the minimised width(68px) on the new room list ([#29778](https://github.com/element-hq/element-web/pull/29778)). Contributed by @langleyd.
## 🐛 Bug Fixes
* [Backport staging] Close call options popup menu when option has been selected ([#30054](https://github.com/element-hq/element-web/pull/30054)). Contributed by @RiotRobot.
* RoomListStoreV3: Only add new rooms that pass `VisibilityProvider` check ([#29974](https://github.com/element-hq/element-web/pull/29974)). Contributed by @MidhunSureshR.
* Re-order primary filters ([#29957](https://github.com/element-hq/element-web/pull/29957)). Contributed by @dbkr.
* Fix leaky CSS adding `!` to all H1 elements ([#29964](https://github.com/element-hq/element-web/pull/29964)). Contributed by @t3chguy.
* Fix extensions panel style ([#29273](https://github.com/element-hq/element-web/pull/29273)). Contributed by @langleyd.
* Fix state events being hidden from widgets in read\_events actions ([#29954](https://github.com/element-hq/element-web/pull/29954)). Contributed by @robintown.
* Remove old filter test ([#29963](https://github.com/element-hq/element-web/pull/29963)). Contributed by @dbkr.
Changes in [1.11.101](https://github.com/element-hq/element-web/releases/tag/v1.11.101) (2025-05-20)
* New room list: add keyboard navigation support ([#29805](https://github.com/element-hq/element-web/pull/29805)). Contributed by @florianduros.
* Use the JoinRuleSettings component for the guest link access prompt. ([#28614](https://github.com/element-hq/element-web/pull/28614)). Contributed by @toger5.
* Add loading state to the new room list view ([#29725](https://github.com/element-hq/element-web/pull/29725)). Contributed by @langleyd.
* Make OIDC identity reset consistent with EX ([#29854](https://github.com/element-hq/element-web/pull/29854)). Contributed by @andybalaam.
* Support error code for email / phone adding unsupported (MSC4178) ([#29855](https://github.com/element-hq/element-web/pull/29855)). Contributed by @dbkr.
* Update identity reset UI (Make consistent with EX) ([#29701](https://github.com/element-hq/element-web/pull/29701)). Contributed by @andybalaam.
* Add secondary filters to the new room list ([#29818](https://github.com/element-hq/element-web/pull/29818)). Contributed by @dbkr.
* Fix battery drain from Web Audio ([#29203](https://github.com/element-hq/element-web/pull/29203)). Contributed by @mbachry.
## 🐛 Bug Fixes
* Fix go home shortcut on macos and change toggle action events shortcut ([#29929](https://github.com/element-hq/element-web/pull/29929)). Contributed by @florianduros.
* New room list: fix outdated message preview when space or filter change ([#29925](https://github.com/element-hq/element-web/pull/29925)). Contributed by @florianduros.
* Stop migrating to MSC4278 if the config exists. ([#29924](https://github.com/element-hq/element-web/pull/29924)). Contributed by @Half-Shot.
* Ensure consistent download file name on download from ImageView ([#29913](https://github.com/element-hq/element-web/pull/29913)). Contributed by @t3chguy.
* Add error toast when service worker registration fails ([#29895](https://github.com/element-hq/element-web/pull/29895)). Contributed by @t3chguy.
* New Room List: Prevent old tombstoned rooms from appearing in the list ([#29881](https://github.com/element-hq/element-web/pull/29881)). Contributed by @MidhunSureshR.
* Remove lag in search field ([#29885](https://github.com/element-hq/element-web/pull/29885)). Contributed by @florianduros.
* Respect UIFeature.Voip ([#29873](https://github.com/element-hq/element-web/pull/29873)). Contributed by @langleyd.
* Allow jumping to message search from spotlight ([#29850](https://github.com/element-hq/element-web/pull/29850)). Contributed by @t3chguy.
Changes in [1.11.100](https://github.com/element-hq/element-web/releases/tag/v1.11.100) (2025-05-06)
* Move rich topics out of labs / stabilise MSC3765 ([#29817](https://github.com/element-hq/element-web/pull/29817)). Contributed by @Johennes.
* Spell out that Element Web does \*not\* work on mobile. ([#29211](https://github.com/element-hq/element-web/pull/29211)). Contributed by @ara4n.
* Add message preview support to the new room list ([#29784](https://github.com/element-hq/element-web/pull/29784)). Contributed by @dbkr.
* Global configuration flag for media previews ([#29582](https://github.com/element-hq/element-web/pull/29582)). Contributed by @Half-Shot.
* New room list: add partial keyboard shortcuts support ([#29783](https://github.com/element-hq/element-web/pull/29783)). Contributed by @florianduros.
* MVVM RoomSummaryCard Topic ([#29710](https://github.com/element-hq/element-web/pull/29710)). Contributed by @MarcWadai.
* Warn on self change from settings > roles ([#28926](https://github.com/element-hq/element-web/pull/28926)). Contributed by @MarcWadai.
* New room list: new visual for invitation ([#29773](https://github.com/element-hq/element-web/pull/29773)). Contributed by @florianduros.
## 🐛 Bug Fixes
* Fix incorrect display of the user info display name ([#29826](https://github.com/element-hq/element-web/pull/29826)). Contributed by @langleyd.
* RoomListStore: Remove invite rooms on decline ([#29804](https://github.com/element-hq/element-web/pull/29804)). Contributed by @MidhunSureshR.
* Fix the buttons not being displayed with long preview text ([#29811](https://github.com/element-hq/element-web/pull/29811)). Contributed by @dbkr.
* New room list: fix missing/incorrect notification decoration ([#29796](https://github.com/element-hq/element-web/pull/29796)). Contributed by @florianduros.
* New Room List: Prevent potential scroll jump/flicker when switching spaces ([#29781](https://github.com/element-hq/element-web/pull/29781)). Contributed by @MidhunSureshR.
* New room list: fix incorrect decoration ([#29770](https://github.com/element-hq/element-web/pull/29770)). Contributed by @florianduros.
Changes in [1.11.99](https://github.com/element-hq/element-web/releases/tag/v1.11.99) (2025-04-23)
* print better errors in the search view instead of a blocking modal ([#29724](https://github.com/element-hq/element-web/pull/29724)). Contributed by @Jujure.
* New room list: video room and video call decoration ([#29693](https://github.com/element-hq/element-web/pull/29693)). Contributed by @florianduros.
* Remove Secure Backup, Cross-signing and Cryptography sections in `Security & Privacy` user settings ([#29088](https://github.com/element-hq/element-web/pull/29088)). Contributed by @florianduros.
* Allow reporting a room when rejecting an invite. ([#29570](https://github.com/element-hq/element-web/pull/29570)). Contributed by @Half-Shot.
* RoomListViewModel: Reset primary and secondary filters on space change ([#29672](https://github.com/element-hq/element-web/pull/29672)). Contributed by @MidhunSureshR.
* RoomListStore: Support specific sorting requirements for muted rooms ([#29665](https://github.com/element-hq/element-web/pull/29665)). Contributed by @MidhunSureshR.
* New room list: add notification options menu ([#29639](https://github.com/element-hq/element-web/pull/29639)). Contributed by @florianduros.
* Room List: Scroll to top of the list when active room is not in the list ([#29650](https://github.com/element-hq/element-web/pull/29650)). Contributed by @MidhunSureshR.
## 🐛 Bug Fixes
* Fix unwanted form submit behaviour in memberlist ([#29747](https://github.com/element-hq/element-web/pull/29747)). Contributed by @MidhunSureshR.
* New room list: fix public room icon visibility when filter change ([#29737](https://github.com/element-hq/element-web/pull/29737)). Contributed by @florianduros.
* Fix custom theme support for short hex \& rgba hex strings ([#29726](https://github.com/element-hq/element-web/pull/29726)). Contributed by @t3chguy.
* New room list: minor visual fixes ([#29723](https://github.com/element-hq/element-web/pull/29723)). Contributed by @florianduros.
* Fix getOidcCallbackUrl for Element Desktop ([#29711](https://github.com/element-hq/element-web/pull/29711)). Contributed by @t3chguy.
* Fix some webp images improperly marked as animated ([#29713](https://github.com/element-hq/element-web/pull/29713)). Contributed by @Petersmit27.
* Revert deletion of hydrateSession ([#29703](https://github.com/element-hq/element-web/pull/29703)). Contributed by @Jujure.
* Fix converttoroom \& converttodm not working ([#29705](https://github.com/element-hq/element-web/pull/29705)). Contributed by @t3chguy.
* Ensure forceCloseAllModals also closes priority/static modals ([#29706](https://github.com/element-hq/element-web/pull/29706)). Contributed by @t3chguy.
* Continue button is disabled when uploading a recovery key file ([#29695](https://github.com/element-hq/element-web/pull/29695)). Contributed by @Giwayume.
* Catch errors after syncing recovery ([#29691](https://github.com/element-hq/element-web/pull/29691)). Contributed by @andybalaam.
* New room list: fix multiple visual issues ([#29673](https://github.com/element-hq/element-web/pull/29673)). Contributed by @florianduros.
* New Room List: Fix mentions filter matching rooms with any highlight ([#29668](https://github.com/element-hq/element-web/pull/29668)). Contributed by @MidhunSureshR.
* Fix truncated emoji label during emoji SAS ([#29643](https://github.com/element-hq/element-web/pull/29643)). Contributed by @florianduros.
* Remove duplicate jitsi link ([#29642](https://github.com/element-hq/element-web/pull/29642)). Contributed by @dbkr.
Changes in [1.11.97](https://github.com/element-hq/element-web/releases/tag/v1.11.97) (2025-04-08)
Everyone is welcome to contribute code to Element Web, provided that they are willing to license their contributions to Element under a [Contributor License Agreement](https://cla-assistant.io/element-hq/element-web) (CLA). This ensures that their contribution will be made available under an OSI-approved open-source license, currently licensed under Affero General Public License v3 (AGPLv3) or General Public License v3 (GPLv3) at your choice.
If you're contributing, or thinking about contributing, please come & chat to
us in our development room, [#element-dev](https://matrix.to/#/#element-dev:matrix.org).
This is the best place to ask questions about the code, how to work on the project
or whether a change is likely to be accepted.
## How to contribute
The preferred and easiest way to contribute changes to the project is to fork
@@ -41,6 +46,9 @@ As for your PR description, it should include these things:
- Add comments to the diff for the reviewer that might help them to understand
why the change is necessary or how they might better understand and review it.
Please **_do not use force push_** in your PRs. Doing so means we can't see what
has changed. We use squash merge to get a "clean" git history.
### Changelogs
There's no need to manually add Changelog entries: we use information in the
@@ -179,6 +187,16 @@ Please ensure your changes match the cosmetic style of the existing project,
and **_never_** mix cosmetic and functional changes in the same commit, as it
makes it horribly hard to review otherwise.
## Shared Components
When creating new UI components, consider whether they should be added to the shared components package (`packages/shared-components`) rather than directly in the main `src/` directory. Components should be placed in shared components if they:
- Are reusable across different parts of the application
- Could potentially be used by other Element projects (Element Desktop, Aurora, Element modules...)
- Follow established patterns and don't have tight coupling to specific application logic
For more details, see the [shared components README](./packages/shared-components/README.md).
## Attribution
Everyone who contributes anything to Matrix is welcome to be listed in the
@@ -27,7 +27,7 @@ Element has several tiers of support for different environments:
- Best effort
- Definition:
- Issues **accepted**, regressions **do not block** the release
- The wider Element Products(including Element Call and the Enterprise Server Suite) do still not officially support these browsers.
- The wider Element Products(including Element Call and the Enterprise Server Suite) do still not officially support these browsers.
- The element web project and its contributors should keep the client functioning and gracefully degrade where other sibling features (E.g. Element Call) may not function.
- Last major release of Firefox ESR and Chrome/Edge Extended Stable
- Community Supported
@@ -42,8 +42,8 @@ Element has several tiers of support for different environments:
The period of support for these tiers should last until the releases specified above, plus 1 app release cycle(2 weeks). In the case of Firefox ESR this is extended further to allow it land in Debian Stable.
For accessing Element on an Android or iOS device, we currently recommend the
Header set Content-Security-Policy "frame-ancestors 'self'"
```
Note: In case you are already setting a `Content-Security-Policy` header
elsewhere, you should modify it to include the `frame-ancestors` directive
instead of adding that last line.
# Building From Source
Element is a modular webapp built with modern ES6 and uses a Node.js build system.
Ensure you have the latest LTS version of Node.js installed.
Using `yarn` instead of `npm` is recommended. Please see the Yarn [install
guide](https://classic.yarnpkg.com/en/docs/install) if you do not have it already.
1. Install or update `node.js` so that your `node` is at least the current recommended LTS.
1. Install `yarn` if not present already.
1. Clone the repo: `git clone https://github.com/element-hq/element-web.git`.
1. Switch to the element-web directory: `cd element-web`.
1. Install the prerequisites: `yarn install`.
- If you're using the `develop` branch, then it is recommended to set up a
proper development environment (see [Setting up a dev
environment](#setting-up-a-dev-environment) below). Alternatively, you
can use <https://develop.element.io> - the continuous integration release of
the develop branch.
1. Configure the app by copying `config.sample.json` to `config.json` and
modifying it. See the [configuration docs](docs/config.md) for details.
1.`yarn dist` to build a tarball to deploy. Untaring this file will give
a version-specific directory containing all the files that need to go on your
web server.
Note that `yarn dist` is not supported on Windows, so Windows users can run `yarn build`,
which will build all the necessary files into the `webapp` directory. The version of Element
will not appear in Settings without using the dist script. You can then mount the
`webapp` directory on your web server to actually serve up the app, which is
entirely static content.
To learn more about Element Web [click here](apps/web/README.md)
# Running as a Desktop app
@@ -153,33 +78,6 @@ Many thanks to @aviraldg for the initial work on the Electron integration.
The [configuration docs](docs/config.md#desktop-app-configuration) show how to override the desktop app's default settings if desired.
# config.json
Element supports a variety of settings to configure default servers, behaviour, themes, etc.
See the [configuration docs](docs/config.md) for more details.
# Labs Features
Some features of Element may be enabled by flags in the `Labs` section of the settings.
Some of these features are described in [labs.md](https://github.com/element-hq/element-web/blob/develop/docs/labs.md).
# Caching requirements
Element requires the following URLs not to be cached, when/if you are serving Element from your own webserver:
```
/config.*.json
/i18n
/home
/sites
/index.html
```
We also recommend that you force browsers to re-validate any cached copy of Element on page load by configuring your
webserver to return `Cache-Control: no-cache` for `/`. This ensures the browser will fetch a new version of Element on
the next page load after it's been deployed. Note that this is already configured for you in the nginx config of our
Dockerfile.
# Development
Please read through the following:
@@ -214,3 +112,6 @@ This software is multi licensed by New Vector Ltd (Element). It can be used eith
(3) under the terms of a paid-for Element Commercial License agreement between you and Element (the terms of which may vary depending on what you and Element have agreed to).
Unless required by applicable law or agreed to in writing, software distributed under the Licenses is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the Licenses for the specific language governing permissions and limitations under the Licenses.
Please contact [licensing@element.io](mailto:licensing@element.io) to purchase
Header set Content-Security-Policy "frame-ancestors 'self'"
```
Note: In case you are already setting a `Content-Security-Policy` header
elsewhere, you should modify it to include the `frame-ancestors` directive
instead of adding that last line.
# Building From Source
Element is a modular webapp built with modern ES6 and uses a Node.js build system.
Ensure you have the latest LTS version of Node.js installed.
Using `pnpm` instead of `npm` is recommended. Please see the pnpm [install
guide](https://pnpm.io/installation#using-corepack) if you do not have it already.
1. Install or update `node.js` so that your `node` is at least the current recommended LTS.
1. Install `pnpm` if not present already.
1. Clone the repo: `git clone https://github.com/element-hq/element-web.git`.
1. Switch to the element-web directory: `cd element-web/apps/web`.
1. Install the prerequisites: `pnpm install`.
- If you're using the `develop` branch, then it is recommended to set up a
proper development environment (see [Setting up a dev
environment](../../developer_guide.md#setting-up-a-dev-environment) below). Alternatively, you
can use <https://develop.element.io> - the continuous integration release of
the develop branch.
1. Configure the app by copying `config.sample.json` to `config.json` and
modifying it. See the [configuration docs](../../docs/config.md) for details.
1.`pnpm dist` to build a tarball to deploy. Untaring this file will give
a version-specific directory containing all the files that need to go on your
web server.
Note that `pnpm dist` is not supported on Windows, so Windows users can run `pnpm build`,
which will build all the necessary files into the `webapp` directory. The version of Element
will not appear in Settings without using the dist script. You can then mount the
`webapp` directory on your web server to actually serve up the app, which is
entirely static content.
# config.json
Element supports a variety of settings to configure default servers, behaviour, themes, etc.
See the [configuration docs](../../docs/config.md) for more details.
# Labs Features
Some features of Element may be enabled by flags in the `Labs` section of the settings.
Some of these features are described in [labs.md](https://github.com/element-hq/element-web/blob/develop/docs/labs.md).
# Caching requirements
Element requires the following URLs not to be cached, when/if you are serving Element from your own webserver:
```
/config.*.json
/i18n
/home
/sites
/index.html
```
We also recommend that you force browsers to re-validate any cached copy of Element on page load by configuring your
webserver to return `Cache-Control: no-cache` for `/`. This ensures the browser will fetch a new version of Element on
the next page load after it's been deployed. Note that this is already configured for you in the nginx config of our
Dockerfile.
# Development
Please read through the following:
1. [Developer guide](../../developer_guide.md)
2. [Code style](../../code_style.md)
3. [Contribution guide](../../CONTRIBUTING.md)
# Extending Element Web with Modules
Element Web supports a module system that allows you to extend or modify functionality at runtime. Modules are loaded dynamically and provide a safe, predictable API for customization.
## What are modules?
Modules are extensions that can add or modify Element Web's functionality. They are:
- Built using the [`@element-hq/element-web-module-api`](https://github.com/element-hq/element-modules/tree/main/packages/element-web-module-api)
- Loaded in EW via [config.json](../../docs/config.md#modules)
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.