* 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
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 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>
- 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 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 1983d063c6.
* Revert "fix: exclude counterpart from build"
This reverts commit 8e41b137fc.
* 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
* 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)
type FooViewModel = ViewModel<FooViewSnapshot> & FooViewActions;
interface FooViewProps {
@@ -54,7 +54,7 @@ This is anywhere your data or business logic comes from. If your view model is a
```
5. Multiple views can share the same view model if necessary.
6. A full example is available [here](https://github.com/element-hq/element-web/blob/develop/src/shared-components/audio/AudioPlayerView/AudioPlayerView.tsx)
6. A full example is available [here](https://github.com/element-hq/element-web/blob/develop/packages/shared-components/src/audio/AudioPlayerView/AudioPlayerView.tsx)
* The component to render, which should accept a `vm` prop of type `V`.
*/
Component: ComponentType<{vm: V}>;
/**
* The props to pass to the component, which can include both snapshot data and actions.
*/
props: Record<string,any>;
}
/**
* A wrapper component that creates a view model instance and passes it to the specified component.
* This is useful for testing components in isolation with a mocked view model and allows to use primitive types in stories.
*
* Props is parsed and split into snapshot and actions. Where values that are functions (`typeof Function`) are considered actions and the rest is considered the snapshot.
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.