* First stage
1. Make avatar BIGGER!
2. Move status button out to its own component so we can reuse it
* Working version
but using context menu rather than dropdown menu which almost looks
right but not quite.
* Commit the set status view component
* Change to use dropdown with custom trigger
* Show full set status component in user menu
and styling tweaks
* In user menu, clicking takes you to settings
* Add the view model
* oxfmt
because apparently mine had decided to go away
* Fix type import
* Pass set status viewmodel in story
* Bump compound-web
for customisable dropdown
* Snapshot
* Add explicit aria label
as combobox role things don't just inherit from their inner text
* snapshot again
* Only show user status if feature flag enabled
* Make status btton view not a button
because it doesn't need to be. Also rename accordingly.
* Screenshots
* Disable in settings if feature flag off
* Snapshot
* Snapshot again
* Update screenshots
including room settings one which wasn't really supposed to change
although the avatar now takes up the space it's in - leaving it for
design to check.
* Fix size & positioning of the status button
* Update screenshots
* Screenshots
* Test for SetStatusViewModel
* Update set status view on status change
* Use a link component for the status button
which has built in hover state
* Float the status button in a 28px container
vs making it actually 28px min height
* Separate user menu profile into two sections
With 8px gap between things in the two sections and 12px gap between
sections (ie. in practice, 12px gap between the status control and username).
* Screenshot
* Screenshots
* Pass set status view model in the state
rather than as an extra prop. Fixes it in the story too.
* Pass ownprofilestore into the viewmodel
* Don't use snapshot for testing the view model
Avoids getting all the random stuff from the sub VM in the snapshot
and better to test what we care about anyway.
* don't mention the bad word
* Here too
* Don't show user status for guests
* Update guest story to remove user status
* refactor(room-list): migrate SpaceStore off the legacy room list store
SpaceStore.setActiveRoomInSpace iterated the legacy RoomListStore's
`orderedLists` in `TAG_ORDER`; switch it to the space-aware
RoomListStoreV3.getSortedRoomsInActiveSpace() accessor. This drops the
last non-UI dependency on the legacy store and on `TAG_ORDER` (exported
from LegacyRoomList, deleted next).
* feat(room-list)!: remove the legacy room list UI
Delete the old sublist-based room list and its components now that the
new RoomListPanel is the default. Removed: LegacyRoomList,
LegacyRoomListHeader, RoomSublist, ExtraTile, RoomTile (+ Subtitle/
CallSummary), RoomBreadcrumbs and RoomSearch, plus their styles and
tests.
LeftPanel collapses to the RoomListPanel-only path. The shared
`contextMenuBelow` helper is relocated into RoomResultContextMenus (its
only remaining consumer).
* feat(room-list)!: remove the legacy RoomListStore
The legacy sublist-based room list UI is gone, so the old
`stores/room-list` store (Algorithm, sorters, filters, layout store,
space
watcher) has no remaining consumers. Delete the directory and its tests.
MatrixChat.forgetRoom no longer calls the legacy `manualRoomUpdate`; the
new room list store removes the room on the `AfterForgetRoom` dispatch
that still fires. Drop the `mxRoomListStore`/`mxRoomListLayoutStore`
globals and the now-dead test imports.
* feat(room-list)!: remove the feature_new_room_list labs flag
The new room list is now the only room list, so remove the
feature_new_room_list labs flag and make its enabled behaviour
unconditional everywhere it was gated:
- LoggedInView: always use the resizable layout and
NEW_ROOM_LIST_MIN_WIDTH;
drop the collapsible/minimized legacy path.
- SpaceStore: People and Favourites are dropped from metaSpaceOrder (per
the
long-standing TODO on the removed accessor).
- MessagePreviewStore: stop appending thread replies to previews.
- Settings, SidebarUserSettingsTab, PreferencesUserSettingsTab,
QuickSettingsButton, SpacePanel, LandmarkNavigation: drop the flag
reads and
legacy branches.
Update the tests that toggled the flag; the People/Favourites meta space
tests covered behaviour that the flag (default on) already disabled.
* feat(room-list)!: remove the dead legacy left-panel resizer
LoggedInView still built the old `Resizer`/`CollapseDistributor` over an
`lp-resizer` ResizeHandle and persisted `mx_lhs_size`. That handle is no
longer rendered (the resizable layout is now driven by
LeftResizablePanelView + ResizerViewModel, which persists its own state
via RoomList.panelSize/RoomList.isPanelCollapsed), so the old resizer
was
inert dead code left over from the legacy room list.
Remove createResizer/loadResizer/loadResizerPreferences, the
_resizeContainer/resizeHandler refs, the ResizeHandle render, the
mx_lhs_size handling and NEW_ROOM_LIST_MIN_WIDTH, plus the unit tests
that
exercised the mocked resizer.
* feat(room-list)!: update i18n files
* refactor(room-list): remove the now-unused collapseLhs state
`collapseLhs` is write-only since the left panel no longer collapses: it
was last read by LoggedInView's `shouldUseMinimizedUI`, removed with the
feature_new_room_list flag. Drop it from MatrixChat's IState (and its
assignments), collapsing the hide/show_left_panel handlers to just the
`notifyLeftHandleResized()` call they still need, and from
LoggedInView's
IProps and the test props.
* fix(room-list): instantiate message previewers lazily
Removing the unused SettingsStore import from MessagePreviewStore (when
the
feature_new_room_list flag was dropped) changed module load order and
exposed a latent circular dependency: ReactionEventPreview imports
MessagePreviewStore, which eagerly did `new ReactionEventPreview()` at
module-eval — so importing ReactionEventPreview first (as its unit test
does) hit "ReactionEventPreview is not a constructor".
Construct the previewers lazily on first use (cached) instead of at
module
load, so nothing dereferences a mid-evaluation module. Fixes
ReactionEventPreview-test.
* test(room-list): remove `feature_new_room_list` labs flag in e2e tests
* chore: remove remaining `newRoomList` flag
* chore: cleanup theme files
* fix: restore the re-resizable TouchEvent polyfill
* chore: remove usage of breadcrumbs settings in BreadcrumbStore
* Revert "fix(room-list): instantiate message previewers lazily"
This reverts commit 4e6eedfff0449c68a96c0470a4eb425b5aec5512.
* chore: remove unused function in BreadCrumbStore
* test: remove unused fuction of BreadcrumStore in tests
* test: add tests for RoomResultContextMenu
* First version of shared component
* Refactor as a functional component
* Add unit tests and more documentation
* Fix problem where wrappedRef was used by parent before assignment was performed.
* Use the shared component in app/web
* Clean up unused styling
* Added scrollbar-gutters as default styling in shared component
* Make sure the legacy mx_AutoHideScrollbar is set in app/web
* Updated snapshots
* Removing default style, scrollbar-gutter: stable;
* Updated snapshots
* useRef on wrapperRef to avoid loop in rendering
* scrollbar-width does not propagate
* Add AutoHideScrollbar to RoomListView
* Fix Prettier issue
* Updated snapshots
* Updated snapshot after merge
* Fix Sonar issue
Sort out duplication between presence icon code, have the MemberIconView
position the presence icon rather than the presence icon trying to position
itself.
* PoC Sign in with QR on new EW using generated QR for MSC4108 v2024
* Revert package.json changes
* Prettier
* Fix i18n
* Tidy up
* Remove unused state variable
* Iterate tests
* Partial revert
* Iterate
* Wire up qr_login route
* Iterate UI
* Fix React dev mode double rendering issue
* Fix react key warning
* Hide flow header on login
* Re-roll qr code on channel expiry
* Switch to AbortSignal
* Improve auto-retry QR UX
* Ensure we only show sign in with QR button if enabled
* XXX: enable labs flag on Netlify builds
* Tweak QR code sizing
* Move qr login flow into a dialog to match designs
* Fix null deviceId
* Remove duplicate log
* Iterate
* Fix tests
* Fix types
* Fix tests
* Fix tests
* Make Netlify more useful
* Make Netlify more useful v2
* Update copy
* Refactor QR link flow to use new SDK methods
Requires https://github.com/matrix-org/matrix-js-sdk/pull/5283
For element-hq/wat-internal#188
Split out from https://github.com/element-hq/element-web/pull/33184
* Link to js-sdk branch
* Update tests
* Simplify
* Revert js-sdk linking
* Iterate
* Iterate
* Refactor to handle most of the TODOs
* Remove unused code
* Remove unused code
* Use js-sdk isSignInWithQRAvailable API to simplify code
* Restore app-test.ts
* Improve coverage
* Improve coverage
* Remove unused prop/state
* Iterate
* Fix tests
* Iterate
* Tests
* Handle TODOs
* Docs
* Remove redundant call to crossSignDevice()
* Workaround to remove training slash on the serverName before auto-discovery
* Revert "Workaround to remove training slash on the serverName before auto-discovery"
This reverts commit 0335a8fdd1b8e8d949ab7fca17c76f8fab335b58.
* setLoggedIn not to be used with OIDC flows as it clears storage
as per docs on setLoggedIn we should use restoreSessionFromStorage
* Don't show the security_code_prompt unconditionally(i.e. for the web logging in mobile flow)
* Update LoginWithQRFlow-test.tsx.snap
* Update MatrixChat-test from setLoggedInSpy to restoreSessionSpy
* Add todo for server switch
* Add todo about handling base URL or server name
* Handle server name or base URL being returned
* Format
* Fix loading state height
* Handle the homeserver URL differing during QR code login
* Comments
* Comments
* Register OIDC client ID after homeserver swap
* Make QrLoginDialog async to minimise the impact on bundle size
* Handle unsupported HS earlier in the flow
* Iterate
* Delint
* Fix test
* Discard changes to apps/web/element.io/develop/config.json
---------
Co-authored-by: Hugh Nimmo-Smith <hughns@element.io>
Co-authored-by: David Langley <langley.dave@gmail.com>
* apply new design to logout dialog
* factor out check for other verified devices
* only show recovery warning when user has no other verified devices
* fix playwright tests
* tweak style to better match design
* another playwright test fix
* fix playwright
* Look for the remove button within the dialog
* Use testid to locate 'Remove this device' button
* move rendering to sub-components, rather than embedded functions
* use <Type> element
* use <Text> for the <a> element
---------
Co-authored-by: Andy Balaam <andy.balaam@matrix.org>
* Remove border from roomlist container
The separator will act as the border so we no longer need the roomlist
border.
* Use pointer events to detect click event
Otherwise the onClick handler would run when you resize the panel.
* Support showing the border in separator
* Update tests
* Disable double click behaviour on separator
* Fix screenshot tests failing
* Clean up unused app/web styling for ReactionsRow
* Align shared Storybook theme root with app/web
* Move PlayPauseButton styling into shared component
* Use closest compound icon color for all crypto events in both app/web and Storybook
* Updated snapshot
* Experimental strict color matching threshold for playwright
* Experimental color matching threshold for playwright
* Revert color matching threshold for playwright to the default value
* Updated screenshots after matching icon size in audio player with other media body components
* Changed icon color for crypto events accroding to recommendation from the design team
* Use --cpd-color-icon-primary for all crypto events
* Updated snapshots and screenshots after icon color changes
* Updated app/web snapshots and screenshots
* Tweak new user menu design
* Update screenshots
* More screenshots
* Add story with no avatar
* add story to test
* Expand the menu so it actually shows what it's supposed to show
* Use the open parameter
which is the param to open the menu
* snapshot
* Add test for normal open menu version
* Move menu to the right of the avatar
and make it appear on top of the display name
* Fix user menu layout
* screenshots
* snapshot
* screenshots
* more screenshots
* Shift toasts to the left slightly
So they completely cover the display name of the user menu when
it's expanded. Also down slightly so they're level with the user menu.
* Tweak toast border radius & position
to match & sit on top of the user menu
* Close toasts in cider tests
* Only close the toast if it's actually there
* Fix some toasts to be dismissed & update screenshots
more to come though
* Make closeKeyStorageToast actually optional
* Fix some more toasts & races
* Screenshots again again (again)
* More screenshots
* Convert to rejectToast
* Fix toast rejectors to not wait and update screenshots
* Apparently 1ms is not long enough
* Apply event presentation attributes to timeline previews and errors
* Make TextualEventView render the same in web and storybook
* Make TileErrorView render the same in app/web and storybook
* Updated snapshots
* Make it possible to view shared components with default app/web base styling.
* Adjust styling and add underline to pass tests
* Fix Sonar issue
* Rename base css to root css
* Handle font styling correctly
* Initial quick settings menu
* Total refactor
* Quick design fixes.
* Refactor to use a view model.
* Remove unused strings
* Apply label
* Refactor naming
* Fixup most tests
* Remove specific theming for old user menu
* prettier
* Lots of cleanup
* Allow overriding the menu classes
* update snap
* Oops translations
* tidy
* Cleanup guest flows.
* Copyrights
* Remove unused classname
* Match guest view to designs
* Add guest screenshots
* Update guests
* snapshot
* Cleanup
* fix import
* Update tests
* More sceenshot fixes
* update collapsed
* move statements to prevent flake
* update snap
* Kick it along
* Click the room list
* Fiddle with the room video list.
* More screenshot adjustments
* fix imports
* fix another import
* Update snaps
* update snaps
* Fix snap flakes
* Refactor to move actions to view component, and callbacks to Actions
* Cleanup
* Cleanup
* Cleanup
* invert auth
* More bits
* fix
* Change md buttons to sm
* Try to assemble the snapshot component of the house of cards
* Consistent newlines between tests
* Update snapshot
Not sure why this was like this, this seems consistet for a logged in user
* Update snapshot
again these seem sensible for a guest
* Remove test
I don't really understand why the thing it asserts matters, so I'm removing
it for now.
* Update snapshot
* screenshot
* Don't show profile picture for guests
I'm not really sure what it meant for this interface to have a
property with a default value, so I've removed it and added the
property to the view model.
* Show avatar in story
* update snapshots for showAvatar
* Update screenshots
& hopefully make hover consistent in one
* Use outline home icon
---------
Co-authored-by: David Baker <dbkr@users.noreply.github.com>
Fixes a regression in b0ee6f5323 where a 'grab' cursor would be shown when hovering over a space, even though the most salient way to interact with it is by clicking.
* Layer Compound and shared component CSS
* Layer app theme CSS
* Remove !important flags from ActionBarView
* Remove unnecessary !important statements from shared components
* Avoid dead code errors for *.pcss just because layer is specified after @import url
* Remove unnecessary !important styling
* Override Banner defaults in RoomStatusBarView
* Updated snaps
* Updated snaps
* Fix styling of media body in app/web
* Fix styling for Compound anchors
* Fix styling issues in app/web
* More styling fixes
* Fix a problem extracting css for HTMLExport
* Revert changes
* Fix for theme styling
* Add test to improve coverage
* Prettier
* Fix styling issues
* Add data-kind attribute to avoid global styling override
* Update screenshot that now is correct
* Revert data-kind attribute
* Handle LinkPreview styling in .pcss
* Fix flaky test: Avoid racing the lazy-loaded ManageEventIndexDialog
* Take care of review comments
* Updated snaps
* Updated snaps again after merge
* Remove !important from RoomStatusBar
* feat(sc): add section menu to section header
* feat(rls): add edit and remove sections
* feat(dialog): add editing mode to CreateSectionDialog
* feat(dialog): add remove section dialog
* feat(vm): wire up vm and stores
* test: update existing snapshots
* test(e2e): add playwright tests to edit and remove a section
* chore: fix remove section i18n key
* fix: able to send empty sections
* chore: update create section editing docs
* chore: remove useless fallback
* chore: add logs when section is unknown
* feat: use different wording when removing an empty section
* fix: only animate the chevron icon in the section header
* fix: change dialog subtitle weight to medium
* Update design of incoming call notifications
* Make toast show avatars of group call participants
* Further expand test coverage for call notifications
* Update screenshots
* Update screenshots
* Delete unused variables
* Upgrade Element Call to v0.19.2
For the new group call intents.
* Consolidate some branches
* Apply Compound spacing variables a little more
* Fix lints
* Exclude Element Call assets from being re-minified to fix build
* InviteDialog: factor out startDmOrSendInvites
Factor out the logic of calling `startDm` or `inviteUsers` to a helper
function. We're going to need to call this from a second location soon, so this
is useful groundwork.
* Add `UnknownIdentityUsersWarningDialog`
* Add unit tests
* Update playwright tests
* Convert if/else to switch statement
* Convert helper functions to React components
* Factor out "onRemove" callback
* Add clarifying comment
* Convert welcome.html to React component
In advance of changes to use Compound
* Fix types
* Fix tests
* Update styling to match Figma
* Fix random capitalisation
* Tweak styling
* Regenerate i18n
* Update tests
* Make linter happy
* Iterate
* feat: add creation section dialog
* feat: add in skip list a method to change filters
* feat: add helper to creation section
* feat: add custom sections data to Settings
* feat: add custom section to room list store v3
* feat: update header and room list item vms
* feat: add toast to room list vm
* feat: add new translation
* chore: move util functions of room list specs
* test: add custom section playwright tests
* chore: call loadCustomSections in RoomListStoreV3 ctor
* Remove unused 'draggable' prop from PictureInPictureDragger
* Show a 'grab' cursor on picture-in-picture view
To give it a proper affordance for dragging.
* Remove global h2 css rule in favour of heading styles/components
* Use Compound Heading in shared-components
and forbid hX elements
* Use Compound Heading in settings
add back margin to some legacy headings
* Tweak some headings
* Update screenshots
* Update screenshots
* Update snapshots
* Tweak .gitignore
* Update snapshots
* Iterate
* Update screenshots
* Update screenshots
* Update screenshot
* Refactor MessageActionBar into MVVM ActionBarView
* Adding tooltips for menu items and correct i18n strings
* Layout changes
* Renaming some properties
* Rename property
* Create a first version of the view model and refactor media visibility logic
* Refactor view to take options and rections menu as optional properties
* Cleaner interface between view and view model
* Refactor view properties and replace Menu and MenuItem
* Bugfixes and switching to ActionBarView instead of MessageActionBar in element-web
* Avoid creating view models and render toolbar until it is actually shown
* Added unit and playwright tests and documented the view
* Added view model unit tests and updated snapshots of dependant tests
* Remove unused components and unnecessary css
* Remove unused language tags
* Fix for handling join-rules correctly
* Prettier
* Add handling of stale view model in async calls
* Prettier
* Split the element-web css into two different. One for legacy components and one for the ActionBarView
* Missing variables used for linting
* Fix for showing ActionBarView when using keyboard for navigation
* Handle visibility on context menu closing
* ThreadPanel uses the ActionBarView so restore css rule
* Fix for visibility of the ActionBarView in Thread panel
* Fix for ActionBarVuew visibility when closing right-click context menu and not still hovering
* Add roving index to function as a toolbar
* Adjust the RoomView test to send hover to the EventTile instead of the message text
* Fix SonarCloud issues
* Fix for SonarCloud issue
* Merge fix
* Rename mx_LegacyActionBar to mx_ThreadActionBar
* Added documentation and simplified join rules
* Generalize the ActionBarView and move logic to view model
* Add the four new buttons to the ActionBarView
* Update view model and tests to use the updated ActionBarView
* Refactor element-web to use ActionBarView
* Clean up styling in element-web
* Clean up and updating snaps and screenshots
* Added unit-tests for better coverage
* Moving ActionBarView to the correct folder in shared components
* Update snaps in element-web
* Better documentation in stories
* Merge fixes
* Updates after review comments
* Review comment fixes
* Added documentation to view models and updated snaps
* Hide button had the wrong label
* Replace createRef with useRef
* init MVideoBody to shared components, including test, stories and view
* fix prettier and other warnings
* move video message body to shared view + app viewmodel
* Fix prettier warnings and masking spinner for tests
* stabilize VideoBodyView screenshots with local media asset
* Disable spinner from changing image all the time
* Added mask over video spinner to prevent issues with new generated images on playwright tests
* Update prettier fix
* Update snapshot
* Add tests to cover different states of Video
* Update code to prevent the previous component Hack fix regarding jumps on the timeline.
* Update snapshot
* Update code to improve code quality for Sonar + update snapshot
* adde documentation snippets
* refactor: move m.video rendering into body factory
* docs: add tsdoc for video body view model
* docs: add thumbnail tsdoc for video body view model
* docs: add content-url tsdoc for video body view model
* docs: add dimensions tsdoc for video body view model
* docs: add aspect-ratio tsdoc for video body view model
* docs: add tsdoc for video body view state
* refactor: replace video body view state enum
* refactor: remove duplicate video body state init
* refactor: drop unused video body view state attribute
* Fix Prettier
* Update snapshot screenshot
* test: restore video story screenshot mask
* chore: refresh PR head
* Add mask to screenshot to pass CI tests
* test: narrow video story mask hook
* Fix easy Sonar warnings in video body components
* Move shared message body views into event-tile layout
* Move shared message body visual baselines
* Revert unrelated shared message body moves
* refactoring and creation of shared-components for reductedBodyView
* move redacted message rendering to shared MVVM view
* Update snapshots + fix lint errors
* Remove MatrixClientPeg and use reguler react matrix client context
* Stop resyncing redacted body view models with mxEvent
* Fix redacted_because test fixtures for stricter event typing
* Simplify redacted body client access
* Watch timestamp setting in redacted body view model
* Refactor redacted and decryption failure body factories into MBodyFactory
* Prettier Fix
* Refactor FileBody into same pattern for consitancy