https://github.com/element-hq/matrix-react-sdk/pull/92 changed the default mode
for encryption to throw an error when sending a message and the room contains either:
- a verified user with an unverified device
- a verifeid user who has changed their identity.
We're not really ready for this (we lack the UI to deal with it), so roll that
back.
Add a labs option which will, when set, switch into the "invisible crypto"
mode of refusing to send keys to, or decrypt messages from, devices that have
not been signed by their owner.
* remove "Manually verify all remote sessions" setting
And remove all of the advanced encryption settings section, since that was the
only setting in there.
* yarn i18n
* also remove now-unused OrderedMultiController and PushToMatrixClientController
* Use Rust crypto stack universally
Ignore the `feature_rust_crypto` and `RustCrypto.staged_rollout_percent`
settings, and just use RustCrypto everywhere.
* Remove labs setting for rust crypto
* Remove support for legacy crypto stack in `StorageManager`
We're not going to use the legacy stack any more.
* Update docs on `Features.RustCrypto`
* Remove now-unreachable `tryToUnlockSecretStorageWithDehydrationKey`
* Comment out test which doesn't work
* fix typo
* Initial commit
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Remove commented code
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Change function to reflect it's proxy not native support
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Re-add check for servers with native support
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Add native support check back in
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Re-add endpoint health check function
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Use inbuilt `getWellKnown` function
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Change the error message to the correct function
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Stop storing the proxyurl in the settings for now
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Make the logger messages more useful
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Start moving the checking logic directly into the controller
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Add missing import
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Get the client rather than passing it in to the functions
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* remove invalid `function` keyword
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Fix imports
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Our new functions are private
We shouldn't(?) have to use these check in future elsewhere
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Change our proxy check function to return a boolean
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Make `nativeSlidingSyncSupport` also return boolean, add in health check
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Disable the sliding sync option if the server doesn't support
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Only enable the setting if it passes (again)
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Update our comments to better match what's going on
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Remove unused dialog
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Add a well-known check on start-up, if sliding sync has been enabled
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Check against the correct endpoint...
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Extract baseUrl as we'll reuse it
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Make the logs differentiate between the types of proxy
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Grab the client well-known directly for use
Can't use the client object at this point, it hasn't read in the well-known
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Add myself to the copyright assignation
I wrote the majority of this file...
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Only return `true` if it's actually there
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Correct the `proxySlidingSyncSupport` function comment to match the code
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Correct the `nativeSlidingSyncSupport`function comment to match the code
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Another comment/functionality paring
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Remove duplicated types from the doc
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Move await to the previous line
Removes brackets, and corrects `wellKnown` from being a `Promise`
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* use `waitForClientWellKnown` to avoid a race condition with the request
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Move getting the client out of the `if`, use `waitForClientWellKnown`
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Remove `beforeChange` override
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Move proxy setup logic into `SlidingSyncManager`
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Swap `configure` to private, we call it from `setup` which handles proxy
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Promises are always `true`
TIL.
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* use `timeoutSignal`
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Change message when there's no server support
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Refactor `slidingSyncHealthCheck`
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Refactor `nativeSlidingSyncSupport` with try/catch
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Change comment to hotlink
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Try and make the toggle disabled when there's no endpoint
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Move the if statement outside the refactored fn to avoid an await
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Revert "Swap `configure` to private, we call it from `setup` which handles proxy"
This reverts commit c80a00b50c261becc9ad58e08d2a893d572d8426.
* Remove unused import
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Further refactor `slidingSyncHealthCheck`
`proxySlidingSyncSupport` already checks the client well-known is there
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Make `proxySlidingSyncSupport` log on success
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Clarify log message for proxy being up
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Move the logic into SlidingSyncManager
All so we can set a static variable because the disabled check isn't asynchronous :)
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Obviously this isn't a return so don't overwrite with false!
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Remove outdated comment
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* No need to pass in the client
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Activating SS should probably be info level logs
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* If we've not enabled sliding sync, push the logs down a bit
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Update i18n error message
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Remove unused i18n strings
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Correct log message
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Prettier
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Remove many of the log messages
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Short out of `checkSupport` if it's `true`
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Add the endpoint back into the log when we're enabling it
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Note in the comment that `feature_sliding_sync_proxy_url` is legacy
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Expand the well-known liveness check log
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* No need to stall the client waiting for sliding sync support
* `AutoDiscovery.findClientConfig` throws if the baseUrl is blank
* Fix `getProxyFromWellKnown` (?)
* Add missing semicolon
Sorry, linter!
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Pass our `MatrixClient` through instead of trying to grab it
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Add missing return in function comment
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Actually pass through our Client, not the Peg object
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Remove SonarCube smell complaint
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Neew to make our other two methods public to test
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* First passing test
Hurrah!
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Two more tests, this time on `checkSupport`
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Reset our `serverSupportsSlidingSync` between tests
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Check the static member is being set
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Move the static assignation down to the relevant tests
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Pull getProxyFromWellKnown mocking up
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Check we /haven't/ shorted out
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Move our spy up so we can reuse it
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Check spidering is being called
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Test the proxy is declared
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Test entered manually
Signed-off-by: Ed Geraghty <ed@geraghty.family>
* Sorry, linter
* I guess these strings are wrong?
* Replace any with string
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Ed Geraghty <ed@geraghty.family>
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* WIP Use browser font size instead of hardcoded 16px
* Add font migration to v3
* Remove custom font size input
* Use a dropdown instead of a slider
* Add margin to the font size dropdown
* Fix `UpdateFontSizeDelta` action typo
* Fix `fontScale`in `Call.ts`
* Rename `baseFontSizeV3` to `fontSizeDelta`
* Update playwright test
* Add `default` next to the browser font size
* Remove remaining `TODO`
* Remove falsy `private`
* Improve doc
* Update snapshots after develop merge
* Remove commented import
* `LabsUserSettingsTab-test.tsx`: use a real `SdkConfig`
... instead of mocking it out. Doing so allows us more flexibility, and gives a
more realistic test.
* Enable the rust-crypto labs button
* fix up a test
* Disable Twemoji emoji font by default
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Force Twemoji font in SAS Verification
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 tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Improve tests
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
---------
Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
* Integrate compound design tokens
The icons should not be included in this repo, and should live in the compound design token repo, but for simplicity sake at this phase of the integration they will be added here
* Delete unused or incorrect - sass variables
* Typography pass
* Deprecate _font-weights.pcss and use Compound instead
* lint fix
* Fix snapshot
* Fix typography pass feedback
* Remove unwanted e2e test
cypress tests should test functionality not visual output. And we should not test visual output by inspecting CSS properties
* lintfix
* Migration script for baseFontSize
* Updates after design review
* Update font scaling panel to use min/max size
* Fix custom font
* Fix font slider e2e test
* Update custom font
* Update new baseFontSizeV2
* Disambiguate heading props
* Fix appearance test
* change max font size
* fix e2ee test
* fix tests
* test baseFontSize migration code
* typescript strict
* Migrate baseFontSize account setting
* Change assertion for font size
* Fix font size controller test
Add stable unstable version (`org.matrix.msc3030.stable`) for jump to date [before `v1.6` is fully supported on a homeserver](https://github.com/matrix-org/synapse/issues/15089).
Related to https://github.com/vector-im/element-web/issues/24362 but does not solve immediately because Synapse does not supply `org.matrix.msc3030.stable` yet
Also refactored `ServerSupportUnstableFeatureController` to support multiple feature groups where any one of them will enable the setting. All features in a feature group are required. This way having either `org.matrix.msc3030` or `org.matrix.msc3030.stable` will enable the jump to date feature flag with a config of `[["org.matrix.msc3030"], ["org.matrix.msc3030.stable"]]`
This PR adds an option to `config.json` which will make the js-sdk use the rust crypto sdk, instead of the libolm implementation.
To use it, you need to add something like this to `config.json`:
```
"features": {
"feature_rust_crypto": true
},
```
We don't (yet) have any way to migrate a device between implementations, so the setting that was in use when you log in is persisted to the device; it is *visible* via the labs section but cannot currently be changed.
This is part of https://github.com/vector-im/element-web/issues/21972, and enables the functionality added to the js-sdk in https://github.com/matrix-org/matrix-js-sdk/pull/2969.
* Add labs flag for sliding sync; add sliding_sync_proxy_url to config.json
* Disable the labs toggle if sliding_sync_proxy_url is not set
* Do validation checks on the sliding sync proxy URL before enabling it in Labs
* Enable sliding sync and add SlidingSyncManager
* Get room subscriptions working
* Hijack renderSublists in sliding sync mode
* Add support for sorting alphabetically/recency and room name filters
* Filter out tombstoned rooms; start adding show more logic
list ranges update but the UI doesn't
* update the UI when the list is updated
* bugfix: make sure the list sorts numerically
* Get invites transitioning correctly
* Force enable sliding sync and labs for now
* Linting
* Disable spotlight search
* Initial cypress plugins for Sliding Sync Proxy
* Use --rm when running Synapse in Docker for Cypress tests
* Update src/MatrixClientPeg.ts
Co-authored-by: Travis Ralston <travisr@matrix.org>
* Update src/components/views/rooms/RoomSublist.tsx
Co-authored-by: Travis Ralston <travisr@matrix.org>
* Update src/settings/controllers/SlidingSyncController.ts
Co-authored-by: Travis Ralston <travisr@matrix.org>
* Update src/components/views/rooms/RoomSublist.tsx
Co-authored-by: Travis Ralston <travisr@matrix.org>
* WIP add room searching to spotlight search
* Only read sliding sync results when there is a result, else use the local cache
* Use feature_sliding_sync not slidingSync
* Some review comments
* More review comments
* Use RoomViewStore to set room subscriptions
* Comment why any
* Update src/components/views/rooms/RoomSublist.tsx
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* Fix cypress docker abstraction
* Iterate sliding sync proxy support
* Stash mostly functional test
* Update sliding sync proxy image
* i18n
* Add support for spaces; use list ID -> index mappings
- Mappings are more reusable and easier to understand than
racing for index positions.
- Register for all spaces immediately on startup.
* When the active space is updated, update the list registration
* Set spaces filter in the correct place
* Skeleton placeholder whilst loading the space
* Filter out spaces from the room list
* Use the new txn_id promises
* Ensure we actually resolve list registrations
* Fixmatrix-org/sliding-sync#30: don't show tombstoned search results
* Remove unused imports
* Add SYNCV3_SECRET to proxy to ensure it starts up; correct aliases for SS test
* Add another basic sliding sync e2e test
* Unbreak netlify
* Add more logging for debugging duplicate rooms
* If sliding sync is enabled, always use the rooms result even if it's empty
* Drop-in copy of RoomListStore for sliding sync
* Remove conditionals from RoomListStore - we have SlidingRoomListStore now
* WIP SlidingRoomListStore
* Add most sliding sync logic to SlidingRoomListStore
Still lots of logic in RoomSublist. Broken things:
- Join count is wrong completely.
- No skeleton placeholder when switching spaces.
* Migrate joined count to SS RLS
* Reinstate the skeleton UI when the list is loading
* linting
* Add support for sticky rooms based on the currently active room
* Add a bunch of passing SS E2E tests; some WIP
* Unbreak build from git merge
* Suppress unread indicators in sliding sync mode
* Add regression test for https://github.com/matrix-org/sliding-sync/issues/28
* Add invite test flows; show the invite list
The refactor to SS RLS removed the invite list entirely.
* Remove show more click as it wasn't the bug
* Linting and i18n
* only enable SS by default on netlify
* Jest fixes; merge conflict fixes; remove debug logging; use right sort enum values
* Actually fix jest tests
* Add support for favourites and low priority
* Bump sliding sync version
* Update sliding sync labs to be user configurable
* delint
* To disable SS or change proxy URL the user has to log out
* Review comments
* Linting
* Apply suggestions from code review
Co-authored-by: Travis Ralston <travisr@matrix.org>
* Update src/stores/room-list/SlidingRoomListStore.ts
Co-authored-by: Travis Ralston <travisr@matrix.org>
* Review comments
* Add issue link for TODO markers
* Linting
* Apply suggestions from code review
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
* More review comments
* More review comments
* stricter types
Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
Co-authored-by: Travis Ralston <travisr@matrix.org>
* Remove all mentions of Piwik
* Kill off all consumer of the old Piwik Analytics module
* Simplify ModalManager interface
* i18n
* Attempt to fix old e2e tests
* Remove unused component
* Iterate PR
Adds maplibre as a dependency, and behind a labs flag, lets users send and receive [MSC3488](https://github.com/matrix-org/matrix-doc/blob/matthew/location/proposals/3488-location.md) style location shares - with backwards compatibility with old school `m.location` `msgtype` location shares too.
For this to work, you have to define a valid maptile server and API in your config.json's `map_style_url`.
* Add a new flag pseudonymousAnalyticsOptIn replacing analyticsOptIn, stored at account level, so people only need to opt in once.
* Show a toast in login to users that have analyticsOptIn set but not yet pseudonymousAnalyticsOptIn prompting them confirm the new method is okay. Update the copy of the existing opt-in toast. Don't notify users that previously opted out.
* Update the copy in settings
* Add a new learn more dialog
* Support a new config flag analyticsOwner which is used in these toasts when explaining which entity the data is sent to ("Help improve %(analyticsOwner)"). If unset, display brand. This allows deployments whose brand differs from the receiver of the analytics to explain the situation to their users (e.g. AcmeCorp badges their app, but explains the data is sent to Element, not them)
* The new opt-in and flags are only used when posthog is configured; prior to that there are no changes to UX or tracking behaviour.