Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prepare for Matrix v1.1 #16876

Closed
24 tasks done
Tracked by #28
turt2live opened this issue Apr 6, 2021 · 2 comments · Fixed by matrix-org/matrix-js-sdk#3007
Closed
24 tasks done
Tracked by #28

Prepare for Matrix v1.1 #16876

turt2live opened this issue Apr 6, 2021 · 2 comments · Fixed by matrix-org/matrix-js-sdk#3007
Assignees
Labels
T-Task Tasks for the team like planning Z-TravisR

Comments

@turt2live
Copy link
Member

turt2live commented Apr 6, 2021

See matrix-org/synapse#11079 for what the server-side changes look like, and for a definition of how the versioning works.

For Element, and other clients, the important detail is that servers will start advertising v1.1 in the /versions response. Clients should check for this and use any per-endpoint versioned endpoints when talking to the homeserver. For Matrix 1.1, all endpoints for the client-server API will be available under /v3 instead of /r0. r0 should still be available for backwards compatibility reasons.

For future versions of Matrix, the endpoint versions might change. The implementation suggestion here is to hardcode use of /v3 in all endpoint calls for now, and when an endpoint changes shape (ie: gets a version bump) then add the if statement to switch between /v3 and /v4 as needed/supported by the server.

To clarify: All endpoints will be /v3 for Matrix 1.1, but Matrix 1.2 may very well introduce a breaking change to an endpoint. When that happens, /v4 will become the new current version for that endpoint with /v3 on its way out through deprecation. If the server advertises support for v1.2, then the client should use the /v4 endpoint. Otherwise, the /v3 endpoint.

In addition to the versioning changes, the following features become stable and should be expected as such on Matrix 1.1 compatible servers.

Identity Servers

Homeservers

  • Knocking support (room version 7)
    • Non-essential support
  • Added v1.1 to /versions endpoint
  • Event bodies are formally declared as untrusted - please validate your inputs
  • Identity server validation errors for .well-known has been downgraded to FAIL_PROMPT
  • A device_id is now present on /account/whoami
  • Secret Storage has been added
  • Key backup has been added
  • Cross-signing has been added
  • Social Login (multiple SSO providers) has been added
  • Key verification can now happen with in-room messages instead of to-device
  • <details> and <summary> are suggested to be legal HTML in events
  • QR code verification has been added
  • Spoilers have been added, as has a color attribute
  • Guests can now view the members of a room
  • reason and score are now optional on /report
  • Push rule endpoints can now return 404 M_NOT_FOUND
  • A reason is now possible on all membership events
  • A device_id is now present/possible on login fallback
  • Withholding decryption keys can now (optionally) be an explicit message to other devices. Ie: "I am not sending you this key"
  • [BREAKING] m.key.verification.ready and m.key.verification.done are now required in the key verification framework.
  • [BREAKING] curve25519-hkdf-sha256 is the new key agreement method for SAS verification, with other methods being deprecated.

Of note is Spaces: it will not be present in Matrix 1.1 at the moment. Clients can still use the m.space room type as stable, however other aspects such as the summary/hierarchy APIs are not currently eligible for stable usage as of writing. Room versions 8 and 9 will be added if time permits, though this shouldn't affect clients too much beyond knowing that "restricted" rooms exist.

@turt2live turt2live added T-Task Tasks for the team like planning Z-TravisR labels Apr 6, 2021
@turt2live turt2live self-assigned this Apr 6, 2021
@turt2live
Copy link
Member Author

for the people subscribed to this issue: I've edited it to include a checklist

@turt2live
Copy link
Member Author

With a couple minor changes ([1] [2]), we appear to already have the basis for v1.1 support.

We do need to call the /v3 endpoints instead of /r0, however that requires a dialog/warning to say that someone's homeserver is too old to run Element Web. That is being worked on.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
T-Task Tasks for the team like planning Z-TravisR
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants