Keyboard shortcuts

Press ← or β†’ to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Tuwunel MSC Implementation Status

Columns

  • Inv: inventory status (matrix-spec-proposals state). One of merged, open, closed, unknown.
  • Status: βœ… yes / 🟨 partial / ❌ no / ⬛ n/a, followed by a confidence glyph (● high / ◐ med / β—‹ low / Β· unknown) that reflects confidence in the assessment, not in the implementation.
  • Correct/Impl: two absolute percentages of the total proposal, e.g. 70/80. Correct is the share of the proposal’s requirements Tuwunel adheres to correctly; Impl is the share that has any code path attempting adherence. By definition Correct <= Impl. Either may be ?. Proposals are loosely normative, so this is NOT just MUST/SHOULD: every requirement-shaped statement counts (β€œthe server returns X”, β€œthis field is added to Y”, etc.).

Counts

  • βœ… yes: 213
  • 🟨 partial: 87
  • ❌ no: 424
  • ⬛ n/a: 289

Status by inventory bucket

Invyespartialnon/atotal
merged149351557256
open5651373172652
closed81365297
unknown00088

Merged

Sorted by MSC number, highest first. Out-of-scope rows are listed in the Out of scope section.

MSCStatusCorrect/ImplTitleNote
MSC4380🟨 ●70/70Invite blockingphase A landed (invite-creating endpoints gated, M_INVITE_BLOCKED 403); phase…
MSC4376βœ… ●100/100Remove /v1/send_join and /v1/send_leavev1 send_join and v1 send_leave routes are not registered
MSC4341❌ ●0/0Support for RFC 8628 Device Authorization GrantOAuth Device Authorization Grant (RFC 8628) not advertised
MSC4335❌ ●0/0M_USER_LIMIT_EXCEEDED error codeM_USER_LIMIT_EXCEEDED error code not used
MSC4326βœ… ●100/100Device masquerading for appservicesappservice query device_id asserted; M_UNKNOWN_DEVICE-equivalent on missing
MSC4323βœ… ●100/100User suspension & locking endpointssrc/api/client/admin.rs four routes at stable v1 paths; m.account_moderation …
MSC4312βœ… ●90/100Resetting cross-signing keys in the OAuth worldcross-signing reset issues m.oauth flow with account-management URL
MSC4311🟨 ◐0/?Ensuring the create event is available on invitescomplement: 0p/1f
MSC4307βœ… ●100/100Validate that auth_events are in the correct roomauth_event room_id mismatch rejected
MSC4304βœ… ●90/100Room Version 12V12 supported as stable; default is V11
MSC4297βœ… ●100/100State Resolution v2.1src/service/rooms/state_res/resolve.rs:257 conflicted state subgraph; tests pass
MSC4291🟨 ●80/90Room IDs as hashes of the create eventhydra.11 room id format and auth rules in event_auth, pdu format checks
MSC4289βœ… ●100/100Explicitly privilege room creatorssrc/service/tests/state_res/fixtures/MSC4297-problem-A/pdus-hydra.json:5; com…
MSC4284βœ… ●90/90Policy Serversoutbound /sign, inbound verify, fetch-on-missing, refusal/backoff cache; v13 …
MSC4277🟨 ◐30/40Harmonizing the reporting endpointsevent and room report endpoints exist; user report endpoint absent
MSC4267βœ… ●100/100Automatically forgetting rooms on leaveforget_forced_upon_leave config honored on Leave or Ban; capability advertised
MSC4260βœ… ●100/100Reporting users (Client-Server API)src/api/client/report.rs:63; admin notification, 404 M_NOT_FOUND on unknown u…
MSC4254βœ… ●100/100Usage of [RFC7009] Token Revocation for Matrix client logoutsrc/api/oidc/revoke.rs:37; RFC7009 form-urlencoded; revokes both tokens; 200 …
MSC4239βœ… ●100/100Room version 11 as the default room versiondefault_default_room_version = V11
MSC4230βœ… ●100/100β€˜Animated’ flag for imagesevent-only; passthrough; merged in spec
MSC4225🟨 ◐50/50Specification of an order in which one-time-keys should be issuedOTKs scanned in lexicographic key-id order; not strict upload order
MSC4222❌ ●0/0Adding state_after to /syncMSC4222 commit lives only on the 4222 feature branch, not dev
MSC4213βœ… ●90/90Remove server_name parameterjoin/knock use via; server_name still accepted via Ruma fallback
MSC4210βœ… ●100/100Remove legacy mentionsdeprecated mention push rules removed at /pushrules read time
MSC4191🟨 ◐50/80Account management for OAuth 2.0 APImetadata wired but action names diverge from MSC
MSC4190βœ… ●100/100Device management for application servicesappservices with device_management can create, update, delete devices without…
MSC4189βœ… ◐80/100Allowing guests to access uploaded mediaguest tokens accepted on authenticated media routes
MSC4180βœ… ●100/100Add a stable flag to MSC3916stable feature flag for MSC3916 advertised
MSC4178🟨 ◐10/30Error codes for requestTokenrequestToken returns ThreepidDenied; not the new codes
MSC4175βœ… ●100/100Profile field for user time zonetimezone PUT/DELETE/GET routes; m.tz aliased in profile and over federation
MSC4170βœ… ◐100/100403 error responses for profile APIsprofile lookup unrestricted; MUST minimum satisfied
MSC4169βœ… ●100/100Backwards-compatible redaction sending using /sendsrc/api/client/send.rs:42; lifts content.redacts into PduBuilder.redacts; adv…
MSC4163βœ… ●100/100Make ACLs apply to EDUsACLs applied on receipt and typing EDUs
MSC4156βœ… ●100/100Migrate server_name to viavia parameter handled via Ruma
MSC4151βœ… ●100/100Reporting rooms (Client-Server API)POST /rooms/{roomId}/report implemented and routed
MSC4138βœ… ●100/100Update allowed HTTP methods in CORS responsesCORS METHODS list includes HEAD and PATCH; excludes CONNECT/TRACE
MSC4133βœ… ●90/90Extending User Profile API with Custom Key:Value PairsGET/PUT/DELETE profile field endpoints routed at unstable prefix
MSC4126βœ… ●100/100Deprecation of query string authdeprecation of query string auth; server still accepts both
MSC4115❌ ●0/0membership metadata on eventsunsigned.membership not populated on events served to clients
MSC4041βœ… ◐90/90Use http header Retry-After to enable library-assisted retry handlingRuma error type emits Retry-After header for LimitExceeded responses.
MSC4040βœ… ●100/100Update SRV service name to IANA registrationTuwunel queries _matrix-fed first then falls back to _matrix.
MSC4026βœ… ◐80/90Allow /versions to optionally accept authenticationversions endpoint accepts optional auth via Ruma
MSC4025🟨 ●50/50Local user erasure requestsphase A landed (account-data wipe); phase B (per-event visibility gate) deferred
MSC4010βœ… ●100/100Push rules and account datam.push_rules and m.fully_read rejected on /account_data
MSC4009βœ… ●100/100Expanding the Matrix ID grammar to enable E.164 IDsE.164 + character allowed via Ruma localpart validation
MSC3989βœ… ●100/100Redact origin property on eventsV11 redaction drops origin via Ruma RedactionRules
MSC3987βœ… ●90/90Push actions clean-upunknown push actions ignored as no-ops
MSC3981βœ… ●100/100/relations recursion/relations recurse parameter implemented with depth 3
MSC3980❌ ◐0/0Dotted Field Consistencyevent_fields filter escaping not enforced
MSC3970βœ… ●90/100Scope transaction IDs to devicestransaction IDs scoped per (user, device, txn_id)
MSC3967βœ… ●100/100Do not require UIA when first uploading cross signing keyskeys/device_signing/upload skips UIA when user has no existing cross-signing …
MSC3966βœ… ●100/100event_property_contains push rule conditionevent_property_contains supported via Ruma push conditions
MSC3958βœ… ●100/100Suppress notifications from message editsSuppressEdits push rule provided via Ruma server_default ruleset
MSC3952βœ… ◐80/90Intentional MentionsIntentional mentions push rules ride on Ruma server_default; flag advertised.
MSC3943βœ… ●100/100Partial joins to nameless rooms should include heroes’ memberships.send_join partial-state response includes hero memberships and their auth chains
MSC3939βœ… ●100/100Account lockingsrc/api/router/auth.rs locked_account_gate; M_USER_LOCKED 401 with soft_logou…
MSC3938βœ… ◐80/80Remove deprecated keyId parameters from /keys endpointsNew /key/v2/server (no keyId) implemented; deprecated form retained for compat.
MSC3930🟨 ◐0/?Polls push rules/notificationscomplement: 0p/2f
MSC3925🟨 ◐50/50m.replace aggregation with full eventTuwunel doesn’t replace content (good) but also lacks bundled m.replace aggre…
MSC3916βœ… ●90/100Authentication for media access, and new endpoint namesNew /client/v1/media and /federation/v1/media auth endpoints implemented.
MSC3905βœ… ●100/100Application services should only be interested in local userssrc/service/appservice/append.rs:66; local-user guard at the three event-inte…
MSC3882βœ… ●90/100Allow an existing session to sign in a new sessionPOST /login/get_token implemented with UIA
MSC3873βœ… ●100/100event_match dotted keysdotted-key escape semantics handled in ruma flattened JSON
MSC3861🟨 ◐60/70Next-generation auth for Matrix, based on OAuth 2.0/OIDCOIDC core endpoints implemented but not advertised as MSC3861 itself
MSC3860🟨 ◐30/40Media Download Redirectsforwards allow_redirect to remote fetch but does not emit own redirect
MSC3856🟨 ◐40/60Threads List APIGET /threads route present but participated filter and latest-event order mis…
MSC3844βœ… ●100/100Remove β€œMjolnir” (policy room) sharing mechanismremoval of unused Mjolnir share endpoint; Tuwunel never implemented it
MSC3828βœ… ●100/100Content Repository Cross Origin Resource Policy (CORP) Headersmedia endpoints return Cross-Origin-Resource-Policy: cross-origin
MSC3827βœ… ●100/100Filtering of /publicRooms by room type/publicRooms supports room_types filter and returns room_type
MSC3824🟨 ◐60/60OAuth 2.0 API aware clientsoauth_aware_preferred set in /login; SSO redirect action param ignored
MSC3823βœ… ●100/100Account Suspensionsrc/service/rooms/timeline/build.rs check_pdu_for_suspended_sender + auth.rs …
MSC3821βœ… ●90/100Update redaction rules, againredact_in_place uses Ruma RedactionRules.V11 with keep third_party_invite.signed
MSC3820βœ… ●90/100Room Version 11v11 stable; redaction and auth rules dispatch via Ruma RoomVersionRules
MSC3818βœ… ●100/100Copy room type on upgradeupgrade reuses old m.room.create content; type preserved by default
MSC3816🟨 ◐20/40Clarify Thread ParticipationBundledThread.current_user_participated hardcoded true on first reply only
MSC3787🟨 ●70/?Allowing knocks to restricted roomscomplement: 33p/14f
MSC3786βœ… ●100/100Add a default push rule to ignore m.room.server_acl eventsserver_acl predefined push rule via Ruma defaults
MSC3773❌ ●0/10Notifications for threadssync returns empty unread_thread_notifications map
MSC3771❌ ●0/10Read receipts for threadsthread_id discarded; receipts always Unthreaded
MSC3765🟨 ◐30/40Rich text in room topicstopic_block accepted via Ruma; createRoom only writes plain topic
MSC3758βœ… ●90/100Add event_property_is push rule condition kindevent_property_is dispatched via Ruma Ruleset::get_actions
MSC3743βœ… ●90/100Standardized error response for unknown endpointsM_UNRECOGNIZED 404/405 fallback wired in router
MSC3715βœ… ●100/100Add a pagination direction parameter to /relationsdir parameter on /relations is parsed and used
MSC3706βœ… ●90/100Extensions to /_matrix/federation/v2/send_join/{roomId}/{eventId} for parti…send_join supports omit_members, members_omitted, servers_in_room
MSC3667βœ… ●100/100Enforce integer power levelsinteger_power_levels enforced via RoomVersionRules from V10+
MSC3666❌ ●0/0Bundled aggregations for server side searchsearch results do not include bundled aggregations
MSC3604βœ… ●100/100Room Version 10V10 supported; integer_power_levels and knock_restricted enforced
MSC3589βœ… ●100/100Room version 9 as a defaultdefault_room_version defaults to V11 (exceeds V9)
MSC3582βœ… ●100/100Remove m.room.message.feedbackfeedback removal; tuwunel never produces or dispatches on m.room.message.feed…
MSC3567βœ… ●100/100Allow requesting events from the start/end of the room historyfrom is optional; defaults to start/end based on dir
MSC3550🟨 ◐50/50Add HTTP 403 to possible profile lookup responsesfederation 403 returned; client /profile still 404 only
MSC3442βœ… ●100/100move the prev_content key to unsignedprev_content placed under unsigned in created/appended PDUs
MSC3440βœ… ●80/80MSC3440 Threading via m.thread relation[β†’ MSC3856] thread bundling, /threads, /relations with rel_type filter
MSC3419❌ ◐0/0Guest State Eventsguests still cannot send arbitrary state events
MSC3383βœ… ●100/100Include destination in X-Matrix Auth HeaderX-Matrix destination field validated on inbound federation
MSC3381🟨 ◐0/?Chat Pollscomplement: 0p/2f
MSC3375βœ… ●100/100Room Version 9room v9 stable; redaction keeps join_authorised_via_users_server
MSC3316βœ… ●100/100Proposal to add timestamp massaging to the specappservice ts honored on /send and /state
MSC3289βœ… ●100/100Room Version 8room v8 listed stable; restricted join rule auth implemented
MSC3288❌ ●0/0Add room type to /_matrix/identity/v2/store-invite APIno /_matrix/identity/v2/store-invite call site; no room_type forwarded
MSC3283🟨 ◐30/30Expose enable_set_displayname, enable_set_avatar_url and enable_3pid_changes …only m.3pid_changes capability set; set_displayname/set_avatar_url absent
MSC3267🟨 ◐50/50reference relationshipsreference relations queryable via /relations; no m.relations bundling
MSC3266βœ… ●100/100Room Summary APIsummary endpoint routed at unstable and (via Ruma) stable paths
MSC3231βœ… ●100/100Token Authenticated Registrationregistration token UIA + validity endpoint implemented
MSC3173βœ… ●100/100Expose stripped state events to any potential joinersummary_stripped includes recommended events incl create
MSC3083βœ… ●100/100Restricting room membership based on membership in other roomsrestricted_join_rule auth via RoomVersionRules; v8/v9
MSC3069βœ… ◐80/100Allow guests to use /account/whoamiwhoami returns is_guest; uses is_deactivated heuristic
MSC3030🟨 ●60/80Jump to date API endpointclient and federation timestamp_to_event handlers; no remote fallback when lo…
MSC2998βœ… ●100/100Room Version 7V7 listed in STABLE_ROOM_VERSIONS; full knock support present
MSC2967βœ… ●80/90API scopesurn:matrix:client:device:* scope honored; api:* scope advertised
MSC2966βœ… ●80/90Usage of OAuth 2.0 Dynamic Client Registration in Matrixdynamic client registration endpoint
MSC2965βœ… ●90/100OAuth 2.0 Authorization Server Metadata discoveryauth_issuer and auth_metadata routes return OAuth provider metadata
MSC2964βœ… ●90/100Usage of OAuth 2.0 authorization code grant and refresh token grantOAuth2 authorize/token/refresh implemented
MSC2946βœ… ●90/100Spaces Summaryclient and federation hierarchy endpoints implemented
MSC2918βœ… ●90/100Refresh tokens/refresh, expires_in_ms, refresh_token in /login and /register
MSC2870βœ… ◐100/100Protect server ACLs from redactionredaction dispatches on RoomVersionRules.redaction; ruma MSC2870 enabled
MSC2867βœ… ◐100/100Marking rooms as unreadclient convention; account data type stored generically
MSC2858βœ… ●100/100Multiple SSO Identity Providersidentity_providers in /login flows; /login/sso/redirect/{idpId} routed
MSC2844βœ… ●90/90Using a global version number for the entire specificationsrc/api/client/versions.rs advertises v1.1 through v1.15
MSC2832βœ… ●100/100Homeserver -> Application Service authorization headersrc/service/appservice/request.rs sends Bearer header and query
MSC2788βœ… ●100/100Room version 6 as a defaultdefault_default_room_version is V11 in src/core/config/mod.rs:3676
MSC2778βœ… ●100/100Providing authentication method for appservice userssrc/api/client/session/appservice.rs implements m.login.application_service
MSC2746🟨 β—‹40/40Improved Signalling for 1:1 VoIPEvents relayed; no specific server hooks
MSC2732βœ… ●100/100Olm fallback keyssrc/api/client/keys/claim_keys.rs:86; upload, claim-fallback, sync-unused-lis…
MSC2705🟨 ◐30/40Animated thumbnailsanimated param accepted; thumbnails always PNG static
MSC2702βœ… ●100/100Content-Disposition usage in the media repoContent-Disposition and inline allowlist enforced for media downloads, thumbn…
MSC2701βœ… ◐90/90Media and the Content-Type relationshipOptional Content-Type accepted; stored and returned
MSC2689βœ… ◐100/100Allow guests to operate in encrypted roomsAuth treats guests like users; /members open
MSC2677βœ… ●80/90Annotations and ReactionsDuplicate annotation rejected; reactions plumbed
MSC2676🟨 ●50/60Message editingedits accepted/relayed; no m.replace bundle or new_content apply
MSC2675🟨 ●50/60Serverside aggregations of message relationships/relations exists; only m.thread bundling, no m.replace bundle
MSC2674βœ… ●90/100Event relationshipsrelates_to handled in append; rel_type tracked
MSC2666βœ… ●90/100Get rooms in common with another usersrc/api/client/unstable.rs:21 GET /unstable/uk.half-shot.msc2666/user/mutual_…
MSC2663βœ… ●100/100Errors for dealing with non-existent push rulessrc/api/client/push.rs all 7 endpoints return NotFound
MSC2659βœ… ●100/100Application service ping endpointsrc/api/client/appservice.rs:11 calls AS /_matrix/app/v1/ping
MSC2611βœ… ●100/100Remove m.login.token User-Interactive Authentication type from the specific…AuthType::Token UIAA not advertised; m.login.token login is unrelated
MSC2610βœ… ●100/100Remove m.login.oauth2 User-Interactive Authentication type from the specifi…AuthType::OAuth2 not advertised; only Password/Sso/Jwt flows
MSC2540🟨 ◐20/40Stricter event validation: JSON complianceruma exposes strict_canonical_json flag; Tuwunel does not enforce floats reje…
MSC2526βœ… ●100/100Add ability to delete key backupssrc/api/client/backup.rs:134 delete_backup_version_route
MSC2457βœ… ●100/100Invalidating devices during password modificationsrc/api/client/account.rs:41 honors body.logout_devices
MSC2454βœ… ●90/90User-Interactive Authentication for SSO-backed homeserversrc/api/router/auth/uiaa.rs:53 sso_flow; sso/uiaa.rs serves fallback
MSC2451βœ… ●100/100Remove the query_auth federation endpointNo /query_auth route registered in src/api/router.rs
MSC2432βœ… ◐80/90Updated semantics for publishing room aliasesalt_aliases wired; canonical_alias resolve check; rooms/{}/aliases route present
MSC2414βœ… ●100/100Make reason and score optional for reporting contentreason and score are Option in ruma report types; route accepts both
MSC2409🟨 ●70/70Proposal to send typing, presence and receipts to appservicestyping+receipt EDUs sent to AS; presence not forwarded
MSC2403βœ… ●90/90Add β€œknock” featureKnock CS+SS endpoints, sync key, public-rooms join_rule all wired
MSC2367βœ… ●100/100Allowing Reasons in all Membership Eventsreason field handled in invite/leave/kick/ban/unban/join membership routes
MSC2334βœ… ●100/100MSC2334 - Change defaul…Default room version is V11, well past V5
MSC2290❌ ●0/0Separate Endpoints for Binding ThreepidsNo /account/3pid/add or /bind handlers; 3PID generally not impl
MSC2285βœ… ●90/100Private read receiptssrc/api/client/read_marker.rs handles ReadPrivate via private_read_set
MSC2249βœ… ●90/100Require users to have visibility on an event when submitting reportssrc/api/client/report.rs:113 verifies sender is room member; PDU lookup gated
MSC2246βœ… ●100/100Asynchronous media uploadsasync media routes wired; create_pending, upload_pending, error codes present
MSC2244❌ ●0/0Mass redactionsSingle-target redactions only; no array redacts handling
MSC2240βœ… ●100/100Room Version 6V6 in STABLE_ROOM_VERSIONS; v6 auth rules and rules engine implemented
MSC2209βœ… ●100/100Update auth rules to check notifications key in m.room.power_levelslimit_notifications_power_levels enforced for v6+
MSC2197βœ… ●100/100Search Filtering in Public Room Directory over FederationPOST /_matrix/federation/v1/publicRooms with filter implemented
MSC2181βœ… ●100/100Add an Error Code for Signaling a Deactivated UserM_USER_DEACTIVATED returned by login paths
MSC2176βœ… ●100/100Update the redaction rulesredact_in_place uses room_version_rules.redaction
MSC2175βœ… ●100/100Remove the creator field from m.room.create eventscreator() falls back to sender when use_room_create_sender
MSC2174βœ… ●100/100move the redacts property to contentsrc/core/matrix/event/redact.rs handles redacts move per room rules
MSC2078❌ ●0/0Sending Third-Party Request Tokens via the Homeserver3PID requestToken handlers return ThreepidDenied; submit_url not added
MSC2077βœ… ●100/100Room version 5src/core/config/room_version.rs:7; v5 unstable but supported
MSC2076🟨 ◐40/50Enforce key-validity periods when validating event signaturesminimum_valid_until_ts passed for fetches; per-event ts check absent
MSC2033βœ… ●100/100Proposal to include device IDs in /account/whoamisrc/api/client/account.rs:74 returns device_id in whoami response
MSC2002βœ… ●100/100MSC 2002 - Rooms V4v4 in supported_room_versions; ruma rules implement v4
MSC1983βœ… ●100/100Proposal to add reasons for leaving a roomsrc/api/client/membership/leave.rs:21 passes body.reason to leave
MSC1960🟨 ◐40/40OpenID Connect information exchange for widgetsserver openid endpoint exists; widget exchange is client-side
MSC1957❌ ◐0/0Integration manager discoverymerged; m.integrations not present in /.well-known/matrix/client
MSC1954βœ… ●100/100Remove prev_content from the essential keys listmerged; identical to MSC1953; ruma redact omits prev_content
MSC1946βœ… ◐80/90Secure Secret Storage and Sharinggeneric account_data + to-device pipe carry secret storage/sharing
MSC1930βœ… ●100/100Proposal to add a default push rule for m.room.tombstone eventsruma Ruleset::server_default includes ConditionalPushRule::tombstone()
MSC1929🟨 ●60/80MSC1929 Homeserver Admin Contact and Support page/.well-known/matrix/support implemented; only single contact via config (no a…
MSC1915🟨 ◐40/40MSC 1915 - Add unbind 3PID APIsdeactivate returns no-support; 3pid stack not implemented
MSC1884βœ… ●100/100Proposal to replace slashes in event IDsroom v4 supported via ruma EventIdFormatVersion::V3 (URL-safe base64)
MSC1866🟨 β—‹60/70MSC 1866 - Unsupported Room Version Error Code for Invitesfederation invite errors propagated; not explicitly mapped
MSC1831βœ… ●100/100Proposal to do SRV lookups after .well-known to discover homeserverssrc/service/resolver/actual.rs:79 well-known before SRV
MSC1819βœ… ●100/100Remove references to presence listsduplicate of MSC1818; presence lists not implemented
MSC1812βœ… ●100/100MSC 1813 - Federation Make Membership Room Versionsrc/api/server/make_leave.rs:34 and make_join.rs:52 set room_version
MSC1804βœ… ●100/100Proposal for advertising capable room versions to clientssrc/api/client/capabilities.rs sets RoomVersionsCapability
MSC1802βœ… ●100/100Remove the β€˜200’ value from some federation responsessrc/api/server/send_join.rs:30 and send_leave.rs:15 handle v2
MSC1794βœ… ●100/100MSC 1794 - Federation v2 Invite APIsrc/api/server/invite.rs:27 implements PUT /federation/v2/invite
MSC1772βœ… ●90/90Proposal for Matrix β€œspaces” (formerly known as β€œgroups as rooms (take 2)”)spaces implemented; src/api/client/space.rs hierarchy + room create with type
MSC1767❌ ◐0/0Extensible events in Matrixno extensible-events handling; relies on generic event relay
MSC1759🟨 ◐50/50MSC 1759 - Rooms V2v2 algorithm in use for v3+; v2 itself not in supported_room_versions
MSC1756βœ… ●90/100Cross-signing devices with device signing keyssrc/api/client/keys/upload_signing_keys.rs and upload_signatures.rs implement…
MSC1753βœ… ●100/100client-server capabilities APIsrc/api/client/capabilities.rs handles GET /capabilities incl m.change_password
MSC1730βœ… ●100/100Mechanism for redirecting to an alternative server during loginsrc/api/client/session/mod.rs:176 sets well_known on login response
MSC1721βœ… ●100/100Rename m.login.cas to m.login.ssosrc/api/client/session/sso.rs and uiaa.rs advertise m.login.sso
MSC1717βœ… ◐90/100Key verification mechanismsto_device transport carries m.key.verification.* events
MSC1711βœ… ◐100/100X.509 certificate verification for federation connectionsreqwest+rustls; tls_fingerprints not exposed; standard CA validation
MSC1708βœ… ●100/100.well-known support for server name resolutionsrc/service/resolver/well_known.rs; resolver/actual.rs ordering matches spec
MSC1704βœ… ●100/100matrix.to permalink navigationserver-side requirement is via= on /join; src/api/client/membership/join.rs:84
MSC1693βœ… ●100/100Specify how to handle rejected events in new state resrejected event handling in iterative auth check matches MSC1442 amendment
MSC1692🟨 ◐40/80Terms of service at registrationAuthType::Terms exists in Ruma but Tuwunel’s register flow does not advertise…
MSC1659βœ… ●90/100Changing Event IDs to be Hashesreference_hash event IDs; v3 in UNSTABLE_ROOM_VERSIONS; auth_events as list-o…
MSC1501βœ… ●90/90Room version upgradesupgrade endpoint present; tombstone, predecessor, PL freeze all implemented
MSC1466βœ… ●100/100Soft Remote Logout Proposalsoft_logout=true returned for expired tokens in 401 responses
MSC1442βœ… ●90/100State Resolution: Reloadedstate res v2 implemented in src/service/rooms/state_res/resolve.rs
MSC1219βœ… ●90/100Storing megolm keys serversidekey backup endpoints fully implemented in src/api/client/backup.rs

Spec compliance gaps

Merged MSCs (in the live Matrix spec) that Tuwunel does not fully implement. These are the highest-priority items to fix for spec compliance.

MSCStatusCorrect/ImplTitleNote
MSC4291🟨 ●80/90Room IDs as hashes of the create eventhydra.11 room id format and auth rules in event_auth, pdu format checks
MSC2409🟨 ●70/70Proposal to send typing, presence and receipts to appservicestyping+receipt EDUs sent to AS; presence not forwarded
MSC3787🟨 ●70/?Allowing knocks to restricted roomscomplement: 33p/14f
MSC4380🟨 ●70/70Invite blockingphase A landed (invite-creating endpoints gated, M_INVITE_BLOCKED 403); phase…
MSC1866🟨 β—‹60/70MSC 1866 - Unsupported Room Version Error Code for Invitesfederation invite errors propagated; not explicitly mapped
MSC1929🟨 ●60/80MSC1929 Homeserver Admin Contact and Support page/.well-known/matrix/support implemented; only single contact via config (no a…
MSC3030🟨 ●60/80Jump to date API endpointclient and federation timestamp_to_event handlers; no remote fallback when lo…
MSC3824🟨 ◐60/60OAuth 2.0 API aware clientsoauth_aware_preferred set in /login; SSO redirect action param ignored
MSC3861🟨 ◐60/70Next-generation auth for Matrix, based on OAuth 2.0/OIDCOIDC core endpoints implemented but not advertised as MSC3861 itself
MSC1759🟨 ◐50/50MSC 1759 - Rooms V2v2 algorithm in use for v3+; v2 itself not in supported_room_versions
MSC2675🟨 ●50/60Serverside aggregations of message relationships/relations exists; only m.thread bundling, no m.replace bundle
MSC2676🟨 ●50/60Message editingedits accepted/relayed; no m.replace bundle or new_content apply
MSC3267🟨 ◐50/50reference relationshipsreference relations queryable via /relations; no m.relations bundling
MSC3550🟨 ◐50/50Add HTTP 403 to possible profile lookup responsesfederation 403 returned; client /profile still 404 only
MSC3925🟨 ◐50/50m.replace aggregation with full eventTuwunel doesn’t replace content (good) but also lacks bundled m.replace aggre…
MSC4025🟨 ●50/50Local user erasure requestsphase A landed (account-data wipe); phase B (per-event visibility gate) deferred
MSC4191🟨 ◐50/80Account management for OAuth 2.0 APImetadata wired but action names diverge from MSC
MSC4225🟨 ◐50/50Specification of an order in which one-time-keys should be issuedOTKs scanned in lexicographic key-id order; not strict upload order
MSC1692🟨 ◐40/80Terms of service at registrationAuthType::Terms exists in Ruma but Tuwunel’s register flow does not advertise…
MSC1915🟨 ◐40/40MSC 1915 - Add unbind 3PID APIsdeactivate returns no-support; 3pid stack not implemented
MSC1960🟨 ◐40/40OpenID Connect information exchange for widgetsserver openid endpoint exists; widget exchange is client-side
MSC2076🟨 ◐40/50Enforce key-validity periods when validating event signaturesminimum_valid_until_ts passed for fetches; per-event ts check absent
MSC2746🟨 β—‹40/40Improved Signalling for 1:1 VoIPEvents relayed; no specific server hooks
MSC3856🟨 ◐40/60Threads List APIGET /threads route present but participated filter and latest-event order mis…
MSC2705🟨 ◐30/40Animated thumbnailsanimated param accepted; thumbnails always PNG static
MSC3283🟨 ◐30/30Expose enable_set_displayname, enable_set_avatar_url and enable_3pid_changes …only m.3pid_changes capability set; set_displayname/set_avatar_url absent
MSC3765🟨 ◐30/40Rich text in room topicstopic_block accepted via Ruma; createRoom only writes plain topic
MSC3860🟨 ◐30/40Media Download Redirectsforwards allow_redirect to remote fetch but does not emit own redirect
MSC4277🟨 ◐30/40Harmonizing the reporting endpointsevent and room report endpoints exist; user report endpoint absent
MSC2540🟨 ◐20/40Stricter event validation: JSON complianceruma exposes strict_canonical_json flag; Tuwunel does not enforce floats reje…
MSC3816🟨 ◐20/40Clarify Thread ParticipationBundledThread.current_user_participated hardcoded true on first reply only
MSC4178🟨 ◐10/30Error codes for requestTokenrequestToken returns ThreepidDenied; not the new codes
MSC3381🟨 ◐0/?Chat Pollscomplement: 0p/2f
MSC3930🟨 ◐0/?Polls push rules/notificationscomplement: 0p/2f
MSC4311🟨 ◐0/?Ensuring the create event is available on invitescomplement: 0p/1f
MSC1767❌ ◐0/0Extensible events in Matrixno extensible-events handling; relies on generic event relay
MSC1957❌ ◐0/0Integration manager discoverymerged; m.integrations not present in /.well-known/matrix/client
MSC2078❌ ●0/0Sending Third-Party Request Tokens via the Homeserver3PID requestToken handlers return ThreepidDenied; submit_url not added
MSC2244❌ ●0/0Mass redactionsSingle-target redactions only; no array redacts handling
MSC2290❌ ●0/0Separate Endpoints for Binding ThreepidsNo /account/3pid/add or /bind handlers; 3PID generally not impl
MSC3288❌ ●0/0Add room type to /_matrix/identity/v2/store-invite APIno /_matrix/identity/v2/store-invite call site; no room_type forwarded
MSC3419❌ ◐0/0Guest State Eventsguests still cannot send arbitrary state events
MSC3666❌ ●0/0Bundled aggregations for server side searchsearch results do not include bundled aggregations
MSC3771❌ ●0/10Read receipts for threadsthread_id discarded; receipts always Unthreaded
MSC3773❌ ●0/10Notifications for threadssync returns empty unread_thread_notifications map
MSC3980❌ ◐0/0Dotted Field Consistencyevent_fields filter escaping not enforced
MSC4115❌ ●0/0membership metadata on eventsunsigned.membership not populated on events served to clients
MSC4222❌ ●0/0Adding state_after to /syncMSC4222 commit lives only on the 4222 feature branch, not dev
MSC4335❌ ●0/0M_USER_LIMIT_EXCEEDED error codeM_USER_LIMIT_EXCEEDED error code not used
MSC4341❌ ●0/0Support for RFC 8628 Device Authorization GrantOAuth Device Authorization Grant (RFC 8628) not advertised

Open

Sorted by MSC number, highest first. Out-of-scope rows are listed in the Out of scope section.

MSCStatusCorrect/ImplTitleNote
MSC4460❌ ●0/0Extensible Events - Alternative unstable supportClient-side hybrid extensible-events rendering rules; no Tuwunel dispatch.
MSC4459❌ ●0/0Image pack referencesClient-side image pack reference field; homeserver passes events through tran…
MSC4458βœ… ◐80/80Handling incoming JSON in the server-server APIIncoming PDUs deserialized via serde_json into CanonicalJsonObject
MSC4457❌ ●0/0Generic reporting APINo /_matrix/client/v1/safety/report endpoint
MSC4453🟨 ●20/30Deprecate old room versionsv3-v5 marked unstable; v6-v9 still stable; create/upgrade not gated
MSC4452❌ ●0/0Preview URL capabilities APINo m.preview_url or io.element.msc4452.preview_url capability
MSC4450🟨 ●10/20Identity Provider selection for User-Interactive Authentication with Legacy S…UIAA SSO fallback derives idp from session, not idp_id query
MSC4449🟨 ●20/30Updated /members filteringSingle membership filter only; no array support, no mutual-exclusion error
MSC4448❌ ●0/0Preview URL Site LogosNo matrix:site_logo or msc4448:site_logo in preview_url response
MSC4447❌ ●0/0Move OpenID userinfo endpoint out of /_matrix/federationOld /federation/v1/openid/userinfo present; new /_matrix/openid/v1/userinfo n…
MSC4446🟨 ●10/30Allow moving the fully read marker to older eventsNo allow_backward field; no monotonicity check on m.fully_read
MSC4445❌ ◐0/0Clarify /sync timeline orderNo msc4445 unstable_features flags advertised
MSC4440❌ ●0/0Profile Biography via Global ProfilesGeneric MSC4133 passthrough only; no m.biography validation
MSC4439❌ ●0/0Encryption key URIs in /.well-known/matrix/supportNo pgp_key field on /.well-known/matrix/support contacts
MSC4438βœ… ●100/100Message bookmarks via account dataPure account-data convention; existing endpoints store arbitrary types
MSC4437❌ ●0/0Endpoint to replace entire profileNo PUT /_matrix/client/v3/profile/{userId} replace-all endpoint
MSC4436βœ… ●100/100Make server ACLs case insensitiveRuma is_allowed uses WildMatch::new_case_insensitive
MSC4435❌ ●0/0Room slowmodeNo m.room.slowmode handling
MSC4433❌ ●0/0Image Packs and Room UpgradesRoom upgrade does not transfer m.room.image_pack or update m.image_pack.rooms
MSC4432❌ ●0/0Server-wide room name overridesNo m.room.name.server_wide propagation; no capability
MSC4431❌ ●0/0Personalised room name overridesServer side passively allows m.room.name.private as account data
MSC4430❌ ●0/0Member KeysNo member-key room version, no /member_key federation endpoint
MSC4429❌ ●0/0Profile Updates for Legacy SyncNo top-level users field in /sync; no profile_fields filter
MSC4428❌ ●0/0Stable identifiers for Room MembersNo member_info or unsigned.stable_id added to events or sync
MSC4427❌ ●0/0Custom banners for user profilesNo m.banner_url or chat.commet.profile_banner support
MSC4426🟨 ◐50/60User Status Profile FieldsProfile keys passthrough via MSC4133 endpoints; no specific m.status/m.call v…
MSC4425❌ ●0/0Ephemeral mediano ephemeral query param; no DELETE on /_matrix/client/v1/media/…/….
MSC4423βœ… ●100/100Undefine order of room directoryundefines /publicRooms ordering; Tuwunel’s existing order is now compatible.
MSC4420❌ ●0/0Duplicate one-time key error response for /keys/uploadadd_one_time_key silently overwrites; no M_DUPLICATE_ONE_TIME_KEY emitted.
MSC4418βœ… ●100/100Make destination a required server authentication fielddestination required on inbound and outbound; cited verbatim in MSC.
MSC4417❌ ●0/0URL Previews via Appservicesclient preview_url exists; no appservice fan-out or namespace check.
MSC4416❌ ●0/0Optionally requiring policy server signatures in a roomdepends on MSC4284; no policy-server signature checks anywhere.
MSC4413βœ… ◐100/100Remove private join_ruleprivate join_rule treated as unknown; effective semantics already aligned.
MSC4406🟨 ●70/70M_SENDER_IGNORED error codesrc/api/client/{room/event.rs:74,context.rs:86,relations.rs:175}; M_SENDER_IG…
MSC4403❌ ●0/0Forbid event_id on PDUs received over federationnew room version forbidding event_id on PDUs; com.nhjkl.msc4403.opt2 absent.
MSC4401❌ ◐0/0Publishing client capabilities via profilesgeneric profile keys exist; logout cleanup of client_capability missing.
MSC4400❌ ●0/0Remove the depth field from PDUsnew room version removing depth field; com.nhjkl.msc4400.opt1 absent.
MSC4396❌ ●0/0Inline linked mediano multipart/mixed event-with-media; no m.media mixin or M_GONE wired.
MSC4390❌ ●0/0Room Blocking API[β†’ MSC4375?] no client admin endpoints for room block/delete; only federation…
MSC4388❌ ●0/0Secure out-of-band channel for sign in with QRno /_matrix/client/v1/rendezvous endpoints; rendezvous API absent.
MSC4387❌ ●0/0M_SAFETY error codeM_SAFETY errcode not used anywhere in src/; no harms field handling.
MSC4384🟨 ◐?/50Supporting alternative room directory sortingLargest-first sort is hardcoded; no alt-sort hook
MSC4383βœ… ●100/100Client-Server Discovery of Server Versionsrc/api/client/versions.rs:33; populates Server { name, version, compiler } o…
MSC4382❌ ●0/0Peppered hash verification for E2EE content moderationNo verification_hash check on report endpoint
MSC4375❌ ●0/0Admin Room ManagementNo /_matrix/client/v1/admin/rooms/* endpoints
MSC4373βœ… ●80/80Server opt-out of specific EDU typessrc/api/server/edu_types.rs:9; advertises types tied to allow_incoming_* conf…
MSC4371❌ ●0/0On the elimination of federation transactions.No PUT /_matrix/federation/v2/send/{eventId|eduId} endpoint
MSC4370❌ ●0/0Federation endpoint for retrieving current extremitiesNo /_matrix/federation/v1/extremities endpoint
MSC4369❌ ●0/10M_CAPABILITY_NOT_ENABLED error code for when capability is not enabled on an …Endpoints exist but return M_FORBIDDEN/Unknown not M_CAPABILITY_NOT_ENABLED
MSC4368❌ ●0/0Combine definitions of M_RESOURCE_LIMIT_EXCEEDED error code and m.server_noti…M_RESOURCE_LIMIT_EXCEEDED unused; no limit_type field
MSC4367❌ ●0/0via routes in the published room directoryPublishedRoomsChunk has no via field
MSC4366❌ ●0/0Resident servers in and around the room directorypublicRooms not filtered to rooms with joined members
MSC4365❌ ●0/0Canonical ignore list roomsNo ignored_user_list_rooms server-side filtering
MSC4363❌ ●0/0OAuth step up authenticationNo M_INSUFFICIENT_USER_AUTHENTICATION error or acr_values
MSC4362❌ ●0/0Simplified Encrypted State EventsNo encrypt_state_events handling in m.room.encryption
MSC4361βœ… ●100/100Non-federating Membership Authorization Rule Amendmentssrc/service/rooms/state_res/event_auth/room_member.rs:56; reject m.room.membe…
MSC4360❌ ●0/0Threads extension to Sliding SyncNo /thread_updates endpoint or threads sliding sync extension
MSC4358❌ ●0/0Out of room server discoveryNo /discover_common_rooms federation endpoint
MSC4354❌ ●0/0Sticky EventsNo sticky events handling on send or sync
MSC4353❌ ●0/0Per-origin linear chainNo origin_predecessor field or per-origin chain validation
MSC4352❌ ●0/0Customizable HTTPS permalink base URLs via server discoveryNo permalink_base_url in /.well-known/matrix/client output
MSC4351βœ… ●100/100Odd Context LimitsContext handler biases remainder to events_after via div_ceil(2)
MSC4350❌ ●0/0Permitting encryption impersonation for appservicesNo impersonator field in device keys, no /keys/query handling
MSC4349❌ ●0/0Causal barriers and enforcementcausal barrier terminology and deferred authorization not adopted
MSC4348❌ ●0/0Portable and serverless accounts in roomsportable accounts (account keys); not implemented
MSC4345❌ ●0/0Server key identity and room membershipserver key as room identity; massive auth-rule changes; not implemented
MSC4344❌ ●0/0Strike deprecated SRV service name.deprecated _matrix._tcp SRV still queried
MSC4343❌ ●0/0Making mass redactions use a new event typem.room.redactions (mass redactions) event not used; depends on MSC2244
MSC4342❌ ●0/0Limiting the number of devices per user ID30-device limit and M_TOO_MANY_DEVICES not enforced
MSC4340❌ ●0/0Prompts and partial commands for in room commands.bot command prompts; client-side concern, no server changes
MSC4339❌ ●0/0Allow the user directory to return full profilesuser_directory v4 with profile_fields not implemented
MSC4337❌ ●0/0Appservice API to supplement user profilesappservice profile supplement endpoint not queried
MSC4334❌ ●0/0Add m.room.language state event.m.room.language state event; not whitelisted/handled specially
MSC4333❌ ●0/0Room state API for moderation botsmoderation bot state event; client-side concern
MSC4332❌ ●0/0In-room bot commandsin-room bot commands; client-side concern, no server changes
MSC4331❌ ●0/0Device Account Dataper-device account data routes not implemented
MSC4330🟨 ◐50/50specify HTTP and TLS versions which must be supportedHTTP/2 via axum/hyper available; TLS 1.2+ via rustls; not enforced as MUST
MSC4329❌ ●0/0Inviting with authorizationfederation /v3/invite with create event in state not implemented
MSC4325❌ ●0/0Presence privacypresence privacy filtering by m.presence_sharing_config not implemented
MSC4324βœ… ◐80/80Fixing MSC4289’s power level for tombstonestombstone PL=150 set; matches highest-anchored intent for default config
MSC4322❌ ●0/0Simple Media Self-Redaction[β†’ MSC3911?] media self-redaction; no /media/redact endpoint or EDU
MSC4321❌ ●0/0Policy Room Upgrade Semanticspolicy room upgrade move/transition semantics not handled
MSC4320❌ ●0/0Rich PresenceRich Presence m.rpc; no support for activity/media profile field
MSC4319❌ ●0/0Room member events for invite and knock rooms in the /sync responsestate key in InvitedRoom/KnockedRoom; not added to /sync responses
MSC4310🟨 ◐30/30MatrixRTC decline m.rtc.notificationevent-only MSC; ruma feature enabled, no homeserver-specific behavior
MSC4309❌ ●0/0Finalised delayed events on syncfinalised delayed events on /sync; depends on MSC4140; no impl
MSC4308🟨 ◐0/?Thread Subscriptions extension to Sliding Synccomplement: 0p/3f
MSC4306🟨 ●8/?Thread Subscriptionscomplement: 1p/12f
MSC4305❌ ●0/0Pushed Authorization Requests (PARs) for OAuth authenticationOIDC auth_metadata lacks PAR endpoint fields
MSC4303❌ ●0/0Disallowing non-compliant user IDs in roomsno future room version banning non-compliant user IDs
MSC4298❌ ●0/0Room version components for β€˜Redact on ban’no future room version protecting redact_events from redaction
MSC4293❌ ●0/0Redact on kick/banMSC4293 commit lives only on Continuwuity branches; current tree has no redac…
MSC4282❌ ●0/0Hint that a /rooms/{room_id}/messages request is interactiveno interactive query parameter on /messages
MSC4279❌ ●0/0Server notice roomsno notice room presets, no leave_rules, no server_notice room type filter
MSC4276❌ ●0/0Soft unfailure for self redactionsno self-redaction soft-fail bypass
MSC4271❌ ◐0/0Recommended enabled-ness for default push rulesno admin override knob; uses Ruma defaults verbatim
MSC4266❌ ●0/0Policies in /.well-known/matrix/supportpolicies field not added to /.well-known/matrix/support
MSC4265🟨 ◐50/50Data Protection Officer contact in /.well-known/matrix/supportsupport_role configurable; MSC role string accepted as Custom
MSC4264❌ ●0/0Tokens for Contacting Accounts or Joining Semi-Public RoomsTokens for contact / semi-public-room joins not implemented
MSC4263🟨 ◐50/50Preventing MXID enumeration via key queriesMUST floor met implicitly; MAY restriction unused
MSC4262❌ ●0/0Sliding Sync Extension: Profile UpdatesSliding-sync profiles extension not implemented
MSC4259❌ ●0/0Profile Update EDUs for Federationm.profile EDU broadcast not implemented
MSC4258❌ ●0/0Federated User DirectoryFederated user_directory/search not implemented
MSC4257❌ ●0/0Profiles Arent Auth: Move profile contents to a separate eventm.room.member.profile separate event not supported
MSC4256❌ ●0/0RFC 9420 MLS mode MatrixMLS mode rooms not implemented
MSC4255❌ ●0/0Bulk Profile UpdatesBulk PUT/PATCH /profile not implemented
MSC4250❌ ●0/0Authenticated media v2 (Cookie authentication for Client-Server API)set_auth_cookie media auth not implemented
MSC4249βœ… ●100/100Removal of legacy media endpointsallow_legacy_media defaults to false; legacy disabled
MSC4247🟨 ◐40/40User PronounsMSC4133 generic profile fields cover m.pronouns transparently
MSC4246❌ ●0/0Sending to-device messages as/to a serverEmpty-localpart server addressing for to-device absent
MSC4245❌ ●0/0Immutable encryption algorithmencryption_algorithm in m.room.create not honored
MSC4244❌ ●0/0RFC 9420 MLS for MatrixMLS for Matrix not implemented
MSC4243❌ ●0/0User ID localparts as Account KeysAccount keys / federation query/accounts not implemented
MSC4242❌ ●0/0State DAGsState DAGs not implemented; uses standard auth chain
MSC4235❌ ●0/0via query param for hierarchy endpointhierarchy endpoint lacks via query parameter
MSC4234❌ ●0/0Update app badge counts when rooms are readcleared_notifs read-receipt flag not handled
MSC4233❌ ●0/0Remembering which server a user knocked throughknock_servers field in /sync not added; no via tracking
MSC4232❌ ●0/0Attribute-Based Access Control (ABAC)ABAC permissions model; no room version implements it
MSC4228❌ ●0/0Search Redirectionoptional 403 search redirection not used
MSC4227❌ ●0/0Audio based quick loginno MSC4108 rendezvous support; audio/DTMF login absent
MSC4226❌ ●0/0Reports as roomsreports-as-rooms (m.report room type) not implemented
MSC4224❌ ●0/0CBOR Serializationapplication/cbor content negotiation not implemented
MSC4223❌ ●0/0Error code for disallowing threepid unbinding3pid unbind/delete endpoints not implemented at all
MSC4221βœ… ●100/100Room Bannersevent-only; passthrough
MSC4220❌ ●0/0Local call rejection (m.call.reject_locally)event-only; m.call.reject_locally not interpreted
MSC4218❌ ●0/0Improving performance of profile changessynthetic events / m.room.user_profile not implemented
MSC4211βœ… ●100/100WebXDC on Matrixevent-only; passthrough
MSC4208🟨 ◐40/50Adding User-Defined Custom Fields to User Global Profilescustom profile fields work; u.* namespace not validated
MSC4207❌ ●0/0Media identifier moderation policym.policy.rule.mxc not interpreted
MSC4206❌ ●0/0Moderation policy auditing and contextm.policy.rule.context not interpreted server-side
MSC4205❌ ●0/0Hashed moderation policy entitieshashed entity policies not interpreted
MSC4204❌ ●0/0m.takedown moderation policy recommendationno m.takedown recommendation handling
MSC4203🟨 ●10/20Sending to-device events to appservicesto_device field wired in transaction body but always empty
MSC4202🟨 ◐40/40Reporting User Profilesclient report endpoint exists; federation forwarding absent
MSC4201❌ ●0/10Profiles as Rooms v2only generic /profile/{user} exists; no roomID profile lookup
MSC4198❌ ●0/0Usage of OIDC login_hintlogin_hint not handled at OIDC auth
MSC4197βœ… ●100/100Copy-Paste Hintsevent content field; passthrough
MSC4196❌ ●0/0MatrixRTC voice and video calling application m.callm.call MatrixRTC slots; no m.rtc.member or m.call.intent handling
MSC4195🟨 ◐40/40MatrixRTC Transport using LiveKit Backendlivekit advertised in /rtc/transports; JWT and delayed events out of scope
MSC4194❌ ●0/0Batch redaction of events by sender within a room (including soft failed events)POST /rooms/{}/redact/user/{} not wired
MSC4193βœ… ●100/100Spoilers on Mediaevent content field; passthrough; nothing for HS to do
MSC4188❌ ●0/0Handling HTTP 410 Gone Status in Matrix Server Discovery410 Gone not specially handled in well-known resolver
MSC4186βœ… ●90/90Simplified Sliding Syncsync v5 implementation routed at simplified_msc3575 path
MSC4185❌ ●0/0Event Visibility APIno can_user_see_event endpoint
MSC4184❌ ●0/0Dynamic Notification Suppressionno m.push_rules_executed field on events
MSC4177❌ ●0/0Add upload location hints proposalno m.upload.locations or location query param
MSC4176❌ ●0/0Translatable Errorsno localized error messages map
MSC4174❌ ●0/0Web pushno webpush pusher kind or VAPID
MSC4173❌ ●0/0test pusherno /pushers/push test endpoint
MSC4171❌ ●0/0Service membersno service members handling in heroes
MSC4168🟨 ●60/60Update m.space.* state on room upgradesrc/api/client/room/upgrade.rs:447; copies m.space.parent always plus m.space…
MSC4167❌ ●0/0Copy bans on room upgradebans not copied during room upgrade
MSC4166βœ… ●100/100Specify /turnServer response when no TURN servers are availableturnServer returns 404 M_NOT_FOUND when no TURN URIs configured
MSC4165βœ… ●100/100Remove own power level on deactivationpower level entry removed for self on deactivation
MSC4164βœ… ●100/100Leave all rooms on deactivationdeactivation leaves all joined/invited/knocked rooms
MSC4162🟨 ◐30/30One-Time Key Reset Endpointno /keys/reset; claim ordering is implicit via key prefix iter
MSC4158βœ… ◐80/100MatrixRTC focus information in .well-knownrtc_foci exposed in .well-known/matrix/client
MSC4155❌ ●0/0Invite filteringno m.invite_permission_config handling
MSC4154βœ… ●100/100Request max body sizemax_request_size default 24MB, M_TOO_LARGE returns 413
MSC4152❌ ●0/0Room labeling and filteringroom labels and /rooms/{roomId}/labels not implemented
MSC4149🟨 ◐80/80Update CSP Directives for Media Repositoryglobal CSP aligns with MSC; missing font-src and script-src β€˜none’
MSC4148❌ ●0/0Permitting HTTP(S) URLs for SSO IdP iconsSSO IdP icon limited to mxc URIs in config; HTTP(S) not allowed
MSC4145❌ ●0/0Simple verified accountsm.verified profile field and endpoint not implemented
MSC4143βœ… ◐90/90MatrixRTCGET rtc/transports routed; only HS-side requirement of the MSC
MSC4141❌ ●0/0Time based notification filteringtime_and_day push rule condition not supported
MSC4140❌ ●0/0Cancellable delayed eventsdelayed events endpoints not implemented despite Ruma types
MSC4136❌ ●0/0Shared retry hints between serversretry_hints in /send_join response not implemented
MSC4128βœ… ●100/100Error on invalid auth where it is optionalinvalid token returns error even on optional auth endpoints
MSC4127❌ ●0/0Removal of query string authremoval of query string auth not implemented; still accepted
MSC4125βœ… ●90/100Specify servers to join via for federated invitesfederation invite via field used both inbound and outbound
MSC4121βœ… ●100/100m.role.moderator /.well-known/matrix/support role.m.role.moderator served via Ruma ContactRole alias and config
MSC4120❌ ●0/0Allow HEAD on /downloadHEAD on /download not wired; routes mounted via Ruma metadata GET only
MSC4117❌ ●0/0Reinstating Events (Reversible Redactions)m.room.reinstate (reversible redactions) not implemented
MSC4110❌ ●0/0Fewer Featuresm.room.event_features state event has no special server handling
MSC4109❌ ●0/0Appservices & soft-failed eventsappservice v2/transactions endpoint with soft-failed events absent
MSC4108🟨 ◐20/20Mechanism to allow OAuth 2.0 API sign in and E2EE set up via QR codeauth_metadata route present; rendezvous and device grant absent
MSC4107❌ ●0/0Feature-focused versioningfeatures key on /versions not added
MSC4106❌ ●0/0Join as Mutedjoin-as-muted default_membership not implemented
MSC4104❌ ●0/0Auth Lock: Soft-failure-be-gone!m.auth_lock event and auth-rule not implemented
MSC4103❌ ◐0/0Make threaded read receipts opt-in in /syncthreaded_read_receipts sync filter not implemented
MSC4102❌ ◐0/0Clarifying precedence in threaded and unthreaded read receipts in EDUsunthreaded-takes-precedence aggregation rule not enforced
MSC4101❌ ●0/0Hashes for unencrypted mediahashes field on unencrypted media info not consumed by server
MSC4100❌ ●0/0Scoped signing keysscoped signing keys / X-Matrix-Scoped not implemented
MSC4097❌ ●0/0Interactions between media redirection and authenticationmedia redirect symmetric encryption not implemented
MSC4096❌ ●0/0Proposal to make forceTurn option configurable server-sideforceTurn not advertised in well-known
MSC4095🟨 ◐40/40Bundled URL previewsRuma type-defs enabled; server is content-agnostic for events
MSC4094❌ ●0/0Sync Server and Client Times with endpointGET /_matrix/client/v3/get_server_now endpoint missing
MSC4089❌ ●0/0Delivery Receiptsm.delivery receipts not implemented
MSC4086❌ ●0/0Event media reference countingevent-media reference counting not implemented
MSC4084❌ ●0/0Improving security of MSC2244v4 send endpoint with UIA for redactions not implemented
MSC4083❌ ●0/0Delta-compressed E2EE file transfersdelta-compressed media transfers not implemented
MSC4081❌ ●0/0Eagerly sharing fallback keys with federated serverseager fallback key sharing not implemented
MSC4080❌ ●0/0Cryptographic Identities (Client-Owned Identities)cryptographic identities/send_pdus endpoint not implemented
MSC4079❌ ●0/0Server-Defined Client Landing Pageslanding_page in well-known not implemented
MSC4078❌ ●0/0Registering pushers against push notification services should forward back fa…upstream_errcode/upstream_error not surfaced from /pushers/set
MSC4076βœ… ●90/100Let E2EE clients calculate app badge counts themselves (disable_badge_count)disable_badge_count honored when sending push notifications
MSC4075❌ ●0/0MatrixRTC Notification Event (call ringing)m.rtc.notification push rule and event handling absent
MSC4074❌ ●0/0Server side annotation aggregationserver-side annotation aggregation not implemented
MSC4072❌ ●0/0Handling devices with no one-time keys in /keys/claimMissing/exhausted devices are filtered out, not returned as empty objects.
MSC4071❌ ●0/0Pagination Token HeadersNo X-Matrix-Pagination-* header handling.
MSC4069❌ ●0/0Inhibit profile propagationNo ?propagate query parameter on profile endpoints.
MSC4060❌ ●0/0Accept room rules before speakingNo m.room.rules state event or acceptance gating.
MSC4059❌ ●0/0Mutable event contentNo mutable-event EDU or hashes-omitted detection.
MSC4058❌ ●0/0Additive EventsNo m.additive EDU or unsigned.m.additive metadata pipeline.
MSC4057❌ ●0/0Static Room AliasesNo .well-known/matrix/rooms lookup before federation directory.
MSC4056❌ ●0/0Role-Based Access Control (mk II)No m.role / m.role_map RBAC support.
MSC4053❌ ◐0/0Extensible Events - Mentions mixinNo mixin push rules with room_version_supports condition.
MSC4051βœ… ◐80/80Using the create event as the room IDV12 RoomVersionRules.room_create_event_id_as_room_id dispatched.
MSC4049❌ ●0/0Sending events as a server or roomNo room version permitting non-user-ID senders.
MSC4048❌ ●0/0Authenticated key backupNo m.backup.v2.curve25519-aes-sha2 algorithm or backup_mac handling.
MSC4047❌ ●0/0Send KeysNo m.room.send_key state event or send-key auth path.
MSC4046❌ ●0/0Make & send PDU endpointsNone of the four make_pdu/send_pdu endpoints implemented.
MSC4045❌ ●0/0Deprecating the use of IP addresses in server namesNo room version banning IP-literal server names.
MSC4044❌ ●0/0Enforcing user ID grammar in roomsNo room version enforcing strict user ID grammar.
MSC4043❌ ●0/0Presence Override APINo /presence/{userId}/override endpoint.
MSC4042❌ ●0/0Disabled Presence StateNo β€˜disabled’ presence state.
MSC4038❌ ●0/0Key backup for MLSNo MLS or m.dmls_backup.v1.aes-hmac-sha2 backup algorithm support.
MSC4037🟨 β—‹?/40Thread root is not in the threadReceipts allowed for thread roots; spec wording is mostly client-facing.
MSC4034❌ ●0/0Media limitsNo /usage endpoint and no m.storage.* fields in /config.
MSC4033❌ ●0/0Explicit ordering of events for receiptsNo order field on events or receipts.
MSC4031❌ ●0/0Pre-generating invites and room invite codespre-generated invites and m.room.invite state event not implemented
MSC4029🟨 ◐40/50Fixing X-Matrix request authenticationX-Matrix verification covers basics; canonicalization rules not fully specified
MSC4028❌ ●0/0Push all encrypted events except for muted rooms.m.rule.encrypted_event server-default override rule absent
MSC4023❌ ●0/0Thread ID for second-order relationunsigned.thread_id not added to events
MSC4021❌ ●0/0Archive client controlsm.room.archive_controls not relayed in /publicRooms
MSC4020❌ ●0/0Room model configurationm.room.create model object flagging not supported
MSC4019❌ ●0/0Encrypted event relationshipsm.room.relationship_encryption flag not handled by server
MSC4014❌ ●0/0Pseudonymous Identitiespseudonymous identities (sender_key, mxid_mapping) not implemented
MSC4011❌ ●0/0Thumbnail media negotiationthumbnail Accept header negotiation not implemented
MSC4005❌ ◐0/0Explicit read receipts for sent eventsServer does not auto-generate read receipt on send
MSC4001🟨 ●0/40Return start of room state at context endpointcontext returns state at LAST event, MSC asks for state at FIRST
MSC4000❌ ●0/0Forwards fill (/backfill forwards)forwards_fill federation endpoint not implemented
MSC3999❌ ●0/0Add causal parameter to /timestamp_to_eventtimestamp_to_event causal event_id parameter not supported
MSC3998❌ ●0/0Add timestamp massaging to /join and /knockjoin/knock ts query param not honored
MSC3997❌ ●0/0Add timestamp massaging to /createRoomcreateRoom ts query param not honored (always timestamp: None)
MSC3996❌ ●0/0Encrypted mentions-only roomsm.has_mentions cleartext flag and is_encrypted_mention rule not present
MSC3995❌ ●0/0Linearized MatrixLinearized Matrix hub/participant architecture not implemented
MSC3994❌ ●0/0Display why an event caused a notificationrule_kind/rule_id not added to /notifications
MSC3993❌ ●0/0Room takeoverroom takeover variants not implemented
MSC3991❌ ●0/0Power level up! Taking the room to new heightsraise own power level above max not allowed
MSC3985❌ ●0/0Break-out roomsm.breakout state event not handled
MSC3984❌ ●0/0Sending key queries to appserviceskey query proxy to appservice not implemented
MSC3983❌ ●0/0Sending One-Time Key (OTK) claims to appservicesOTK claim proxy to appservice not implemented
MSC3982❌ ●0/0Limit maximum number of events sent to an ASno 100-event cap on appservice transactions
MSC3971❌ ●0/0Sharing image packsimage pack sharing/links not implemented
MSC3964❌ ●0/0Notifications for room tagsroom_tag push condition not implemented
MSC3963❌ ●0/0Oblivious Matrix over HTTPSOblivious MoH endpoints absent
MSC3961βœ… ●90/100Sliding Sync Extension: Typing Notificationssliding sync typing extension implemented
MSC3960βœ… ●90/100Sliding Sync Extension: Receiptssliding sync receipts extension implemented
MSC3959βœ… ●90/100Sliding Sync Extension: Account Datasliding sync account_data extension implemented
MSC3955❌ ●0/0Extensible Events - Automated event mixin (notices)m.automated mixin for extensible events not implemented
MSC3954❌ ●0/0Extensible Events - Text EmotesExtensible m.emote event type not specifically handled.
MSC3947❌ ●0/0Allow Clients to Request Searching the User Directory Constrained to Only Hom…exclude_sources parameter on user_directory/search not implemented.
MSC3946❌ ●0/0Dynamic room predecessorm.room.predecessor state event not handled.
MSC3944❌ ●0/0Dropping stale send-to-device messagesStale-to-device cancellation/dedup logic not implemented.
MSC3934❌ ●0/0Bulk push rules change endpointPUT /pushrules_bulk/…/actions and /enabled endpoints not implemented.
MSC3933❌ ●0/0Core push rules for Extensible EventsExtensible-event default underride push rules not added.
MSC3932❌ ●0/0Extensible events room version push rule feature flagExtensible-event room version push rule gating not enabled.
MSC3931❌ ●0/0Push rule condition for room version featuresroom_version_supports push condition not enabled in tuwunel.
MSC3927❌ ●0/0Extensible Events - AudioExtensible m.audio event type not specifically dispatched.
MSC3926❌ ●0/0Disable server-default notifications for bot users by defaultenable_predefined_push_rules registration body field not implemented.
MSC3922❌ ●0/0Removing SRV records from homeserver discoverySRV record discovery still active; would need code removal.
MSC3917❌ ●0/0Cryptographically Constrained Room MembershipCryptographic membership (RRK / RSK / signed memberships) not implemented.
MSC3915❌ ●0/0Owner power levelPL150 owner role / creator-defaults-to-150 not implemented.
MSC3914❌ ●0/0Matrix native group call push rule.m.rule.room.call push rule + call_started condition not implemented.
MSC3912❌ ●0/0Redaction of related eventswith_rel_types / with_relations on /redact not implemented.
MSC3911❌ ●0/0Linking media to eventsattach_media query, /media/copy, restrictions block in federation media not p…
MSC3909❌ ●0/0Membership based mutesMembership-based mutes via new mute/leave-mute states; not implemented.
MSC3902🟨 ◐30/40Faster remote room joins over federation (overview)sends omit_members but immediately fetches full state
MSC3901❌ ◐0/0Deleting Statemeta-MSC of sub-proposals; obsolete-state cleanup not implemented
MSC3896❌ ●0/0Appservice mediaappservice media namespace not implemented
MSC3895❌ ●0/0Federation API Behaviour of Partial-State Resident ServersM_UNABLE_DUE_TO_PARTIAL_STATE error code not implemented
MSC3890🟨 ◐0/?Remotely silence local notificationscomplement: 0p/2f
MSC3885βœ… ●100/100Sliding Sync Extension: To-Deviceto_device extension uses its own opaque since token in v5 sync
MSC3884βœ… ●90/100Sliding Sync Extension: E2EEsliding sync e2ee extension implemented
MSC3883❌ ●0/0Fundamental state changesdraft proposal, no concrete API; would require new room version
MSC3881❌ ●0/0Remotely toggling push notifications for another clientpusher enabled and device_id fields not exposed
MSC3874🟨 ◐0/?MSC3874 Loading Messages excluding Threadscomplement: 0p/1f
MSC3872❌ ◐0/0Order of rooms in Spacesmanual room ordering in spaces; vague proposal, no API defined
MSC3871🟨 ●50/?Gappy timelinecomplement: 3p/3f
MSC3870❌ ●0/0Async media upload extension: upload to URLupload_url field and /complete endpoint not implemented
MSC3866❌ ●0/0M_USER_AWAITING_APPROVAL error codeM_USER_AWAITING_APPROVAL error code not implemented
MSC3865βœ… ●100/100User-given attributes for usersclient-side; uses generic account_data endpoints already implemented
MSC3864βœ… ●100/100User-given attributes for roomsclient-side; uses generic account_data endpoints already implemented
MSC3862❌ ●0/0event_match (almost) anythingevent_match only matches strings; non-string primitives not converted
MSC3857❌ ●0/0Welcome messages/screeningno m.room.welcome state event handling
MSC3852❌ ●0/0Expose user agent information on Devicelast_seen_user_agent not exposed on Device
MSC3851❌ ●0/0Allow custom room presets when creating a roomonly standard RoomPreset variants accepted; no custom string presets
MSC3849❌ ●0/0Observations and Reinforcementno observation/reinforcement event handling
MSC3848❌ ●0/0Introduce errcodes for specific event sending failures.no M_INSUFFICIENT_POWER/M_NOT_JOINED/M_ALREADY_JOINED errcodes emitted
MSC3847❌ ●0/0Ignoring invites with policy roomsno policy room handling for m.policies account data
MSC3845❌ ●0/0Draft: Expanding policy rooms to reputationno m.opinion recommendation handling
MSC3843❌ ●0/0Reporting content over federationfederation /rooms/{}/report/{} endpoint not implemented
MSC3840❌ ◐0/0Ignore invitesclient-side ignored invites account data; no server behavior required
MSC3837❌ ●0/0Cascading profile tags for push rulesno profile_tags array; only single profile_tag handled
MSC3834❌ ●0/0Opportunistic user key pinning (TOFU)TOFU signing key is client-side; no server hooks
MSC3825❌ ◐0/0Obvious relation fallback locationis_falling_back location handled by Ruma types passively
MSC3814βœ… ●80/90Dehydrated devices with SSSSdehydrated devices SSSS routes wired with put/get/delete and events pagination
MSC3779❌ ●0/0β€œOwned” state eventsowned state events require new room version
MSC3772❌ ●0/0Push rule for mutually related eventsrelation_match push condition not implemented
MSC3767❌ ●0/0Time based notification filteringtime_and_day push condition not present
MSC3761❌ ●0/0State event change controlm.event.acl ACL events for state not implemented
MSC3760❌ ●0/0State sub-keysstate_subkey requires new room version; not present
MSC3759❌ ●0/0Leave event metadata for deactivated usersdeactivation leaves omit m.deactivated metadata
MSC3757🟨 ◐0/?Restricting who can overwrite a state event.[β†’ MSC4354] complement: 0p/1f
MSC3744❌ ●0/0Support for flexible authenticationno flexible-auth /register or /account/authenticator endpoints
MSC3741❌ ●0/0Revealing the useful login flows to clients after a soft logoutlogin does not return per-user flows for soft-logout tokens
MSC3726❌ ●0/0Safer Password-based Authentication with BS-SPEKEopen MSC; no BS-SPEKE login/register/password flows
MSC3723❌ ●0/0Federation /versionsopen MSC; no /_matrix/federation/versions endpoint
MSC3720❌ ●0/0Account status endpointbranch MSC; no /account_status endpoints (CS or federation)
MSC3713❌ ●0/0Alleviating ACL exhaustion with ACL Slotsopen MSC; no ACL slot state-key handling
MSC3682❌ ●0/0Sending Account Data to Application ServicesAS transactions do not include account_data field
MSC3673❌ ●0/0Encrypting ephemeral data unitsbranch MSC; no encrypted EDU envelope support
MSC3672❌ ●0/0Sharing ephemeral streams of location databranch MSC; no m.beacon EDU support or location streaming
MSC3664❌ ●0/0Pushrules for relationsno related_event_match push rule condition implemented
MSC3647❌ ●0/0Bring Your Own Bridge - Decentralising BridgesWIP bridge negotiation; no spec-level details, no server impl
MSC3618❌ ◐0/0Simplify federation /send responsebranch MSC; tuwunel returns full pdus map per current spec
MSC3613❌ ●0/0Combinatorial join rulesbranch MSC; no combinatorial join_rules array logic in tuwunel
MSC3593❌ ●0/0Safety Controls through a generic Administration APInone of the proposed /admin/* endpoints exist; tuwunel uses admin room
MSC3585βœ… ●100/100Allow the base event to be omitted from /federation/v1/event_auth responseevent_auth handler omits the requested event itself per MSC
MSC3575βœ… ◐?/?Sliding Sync (aka Sync v3)[β†’ MSC4186] src/api/client/sync/v5.rs:62
MSC3574❌ ●0/0Marking up resourcesno m.markup.resource or annotation handling
MSC3572❌ ◐0/0Relation aggregation cleanupno relations rename; m.relations only
MSC3571❌ ●0/0Aggregation paginationno /aggregations endpoint; no aggregation pagination
MSC3570❌ ◐0/0Relation history visibility changesno special history visibility for relations; new room version needed
MSC3554❌ ●0/0Extensible Events - Translatable Messagesno lang field handling; ruma feature not enabled
MSC3553❌ ●0/0Extensible Events - Videosunstable-msc3553 not enabled in ruma features
MSC3552❌ ●0/0Extensible Events - Images and Stickersunstable-msc3552 not enabled in ruma features
MSC3551❌ ●0/0Extensible Events - Filesunstable-msc3551 not enabled; no extensible m.file event
MSC3547❌ ●0/0Allow appservice bot user to read any rooms the appservice is part ofappservice still must masquerade or be a member
MSC3523❌ ●0/0Timeboxed/ranged relations endpointno from_target/to_target query params on /relations
MSC3489🟨 ◐50/50m.beacon: Sharing streams of location data with historyunstable-msc3489 ruma feature on; no specific beacon logic
MSC3488🟨 ◐40/40m.location: Extending events with location datalocation event types pass through; no m.tile_server in well-known
MSC3480🟨 ◐50/50Make device names privateallow_device_name_federation config gates device name exposure
MSC3469🟨 β—‹?/50Mandate HTTP Range on Content Repository Endpointsdepends on object_store / hyper response writer for ranges
MSC3468❌ ●0/0MXC to Hashesno MXC-to-hash endpoints; no /clone or /hash routes
MSC3417βœ… ●100/100Call room room typecreation_content type=m.call passes through createRoom
MSC3414❌ ●0/0Encrypted state eventsno encrypted state event handling or encrypted_state in publicRooms
MSC3401❌ ●0/10Native Group VoIP signallingonly default PL for m.call/m.call.member; no to-device signaling
MSC3395❌ ●0/0Synthetic Appservice Eventsno synthetic appservice events emitted on register/login/logout
MSC3394❌ ●0/0New auth rule that only allows someone to post a message in relation to anoth…no auth rule restricting top-level vs threaded messages
MSC3389❌ ●0/0Redaction changes for events with a relationno m.relates_to preservation in redactions
MSC3386❌ ●0/0Unified Join Rulesno unified allow_join/allow_knock; no new room version
MSC3385🟨 ◐30/40Bulk small improvements to room upgradesupgrade copies fixed list of state, not all m.* state nor account_data
MSC3368❌ ●0/0Message Content Tagsno message-content tag awareness
MSC3361❌ ●0/0Opportunistic Direct Pushno direct pusher kind or notifications in sync
MSC3360❌ ●0/0Server Statusno /server/status endpoint or m.server.status event
MSC3359❌ ●0/0Delayed Pushno jitter pusher field; not advertised in versions
MSC3356❌ ●0/0Add additional OpenID user info fieldsopenid userinfo returns only sub
MSC3338❌ ●0/0Adding iframe specifics to preview jsonurl preview has no iframe/oEmbed support
MSC3325❌ ●0/0Upgrading invite-only roomsupgrade does not switch invite-only rooms to restricted
MSC3309❌ ●0/0Room Countersno m.room.counter event handling
MSC3306❌ ●0/0How to count unread messagesnotification_count uses push-rule Notify actions, not MSC3306 algo
MSC3277❌ ●0/0Scheduled messagesno scheduled-message at= query param support
MSC3269❌ ●0/0An error code for busy serversno M_SERVER_BUSY error code
MSC3262❌ ●0/0aPAKE authenticationSRP6a aPAKE login/registration not implemented
MSC3219❌ ●0/0Space Flairspace flair events and member flag not implemented
MSC3217❌ ●0/0Clientside hints for a soft kickm.softkick hint on member event not implemented
MSC3216❌ ●0/0Synchronized access control for Spacesspace-level synchronized PL replication absent
MSC3215❌ ●0/0Aristotle - Moderation in all thingsdecentralized moderation room scheme not implemented
MSC3214βœ… ◐90/100Allow overriding m.room.power_levels using initial_stateinitial_state PL effectively replaces default via later append
MSC3202🟨 ●30/40Encrypted Appservicesdevice_id masquerading present; AS txn extensions missing
MSC3192❌ ●0/0Batch state endpointbatch_state endpoint not implemented
MSC3189❌ ●0/0Per-room/per-space profilesper-room/space scoped profile API not implemented
MSC3174❌ ●0/0An error code for spam rejectionsM_ANTISPAM_REJECTION error code not used
MSC3144❌ ●0/0Allow Widgets By Default in Private Roomsprivate_chat preset does not lower widgets PL
MSC3105❌ ●0/0Previewing user-interactive flowsOPTIONS preflight for UIA flows not implemented
MSC3089❌ ●0/0File treesclient-only data trees on m.space; no server change required
MSC3088❌ ●0/0Room subtypingclient-only m.room.purpose state event; no server change required
MSC3079❌ ●0/0Low Bandwidth Client-Server APIbranch; no CoAP/CBOR/DTLS support
MSC3060❌ ●0/0Room labelsbranch; m.room.labels not surfaced in publicRooms
MSC3051❌ ◐0/0A scalable relation formatopen; m.relations array not handled
MSC3038❌ ●0/0Typed Typing Notificationsbranch; no events field on typing
MSC3032🟨 ◐40/40Thoughts on updating presenceeffective presence; busy supported, profile-as-rooms absent
MSC3026βœ… ●100/100busy presence statePresenceState::Busy and msc3026.busy_presence flag
MSC3020❌ ◐0/0Support for private federation networksbranch; same proposal as MSC3018, not implemented
MSC3018❌ ◐0/0Support for private federation networksbranch; no m.networks capability or network query
MSC3014❌ ●0/0HTTP Pushers for the full event with extra rooms informationopen; no full_event_with_rooms pusher format
MSC3012❌ ●0/0Post-registration terms of service APIbranched; no /terms endpoint or m.terms account data
MSC2970🟨 ◐60/80Remove pusher path requirementpath/scheme constraints relaxed; lacks fragment/userinfo/8000-char checks
MSC2962❌ ●0/0Managing power levels via Spacesno auto_users or m.room.power_level_mappings handling
MSC2961🟨 ◐20/40External Signaturesendpoint accepts arbitrary signature keys; object form discarded
MSC2943❌ ●0/0Return an event ID for membership endpointsmembership endpoint responses lack event_id
MSC2938❌ ●0/10Report content to moderatorstarget field and room_moderators routing not implemented
MSC2923❌ ◐0/0Matrix to Matrix connectionsspeculative idea-stage; no concrete API
MSC2895❌ ●0/0Improving the way membership lists are queriedno /rooms endpoint nor ?membership query on /members
MSC2883❌ ●0/0[WIP] Matrix-flavoured MLSWIP MLS; no DMLS support
MSC2882❌ ◐0/0[WIP] Tempered Transitive TrustWIP; new public_user_signing key, m.device.signature EDU not implemented
MSC2855❌ ◐0/0Server-Initiated Client Clear-Cache & Reloadno clear-cache signal mechanism
MSC2848❌ ●0/10Globally unique event IDsonly legacy GET /event/:eventId; new room-scoped path absent
MSC2846❌ ●0/0Decentralizing media through CIDsopen; CID-based MXC URLs not implemented
MSC2845🟨 ◐0/20Thirdparty Lookup API for Telephone Numberssrc/api/client/thirdparty.rs returns empty protocols TODO
MSC2836🟨 ●0/10Threadingadvertises org.matrix.msc2836 in /versions but no event_relationships
MSC2828❌ ◐0/0Proposal to restrict allowed user IDs over federationno extended_user_id_char auth rule restriction
MSC2821❌ ●0/0Test PusherPOST /pushers/push test endpoint not implemented
MSC2815βœ… ◐90/100Proposal to allow room moderators to view redacted event contentinclude_unredacted_content honored; admin or redact PL gates access
MSC2812❌ ●0/0Role-based power structuresrole-based power proposal still draft; no m.role events
MSC2802❌ ●0/0Full Room Abstractionopen meta proposal to redesign spec; not implementable as-is
MSC2787❌ ●0/0Portable Identitiesno UPK/UDK/attestation infrastructure
MSC2785❌ ●0/0Event notification attributes and actionsno notification_attribute_data or notifications_profile endpoints
MSC2782🟨 ◐60/80Pushers with the full event contentsrc/service/pusher/send.rs sends full event when format != event_id_only
MSC2772❌ ◐0/0Notifications for Jitsi Callsno .m.jitsi default underride push rules
MSC2757❌ ●0/0Sign EventsNo event_signing key type; no client signature plumbing
MSC2755❌ ●0/0Lazy load roomsNo room_limit_by_complexity filter handling
MSC2753❌ ●0/0Peeking via Sync (Take 2)No /peek or /unpeek; no peek section in sync
MSC2749❌ ●0/0Per-user E2EE on/off settingNo m.encryption capability; no force/preference logic
MSC2730❌ ●0/0Verifiable forwarded eventsNo /forward/{targetRoomId}; no signature validation
MSC2716❌ ●0/0Incrementally importing history into existing roomsNo /batch_send; no m.room.insertion/batch/marker handling
MSC2706❌ ●0/0IPFS as a media repositoryNo IPFS support; no m.ipfs capability
MSC2704βœ… ◐100/100Handling duplicate media on /upload + clarifying the origin of an MXC URIFresh MXC per upload; no dedup
MSC2703βœ… ●100/100Media ID grammar32-char alphanumeric media IDs; opaque
MSC2700🟨 ◐50/50Thumbnail requirements for the media repoimage crate handles png/jpeg/gif; no svg/video
MSC2695🟨 ●40/40Get event by ID over federationFederation /event exists; no client /events/{eventId} revival
MSC2673❌ ●0/0Notification LevelsNo notification_levels concept; push rules used
MSC2654❌ ●0/0Unread countsNo unread_count in sync; no msc2654 markers
MSC2638❌ ●0/0Ability for clients to request homeservers to resync device listsNo /devices/refresh endpoint; no msc2638 marker in src
MSC2625❌ ◐0/0Add mark_unread push rule actionNo mark_unread action; sync exposes only highlight/notification counts
MSC2596❌ ◐0/0Proposal to always allow rescinding invitesVendor room version net.maunium.msc2596 not registered; no rescind exception …
MSC2513❌ ◐0/10Allow clients to specify content for membership eventsMembership endpoints accept reason only; no content body param
MSC2499🟨 ◐30/40Fixes for Well-known URIssrc/service/resolver/well_known.rs follows redirects; 12288B cap; uses /versions
MSC2487❌ ◐0/0Filtering for AppservicesNo filter field on appservice registration
MSC2477❌ ◐0/0User-defined ephemeral events in roomsNo PUT /rooms/{roomId}/ephemeral/{type}/{txnId} route
MSC2448βœ… ●90/100Using BlurHash as a Placeholder for Matrix Mediablurhash on profile, federation query, media upload, member events
MSC2444🟨 ●30/30Proposal for implementing peeking over federation (peek API)world_readable allowed on some federation reads; no /peek subscription API
MSC2438❌ ●0/10Local and Federated User Erasure Requestsdeactivate present but no erase param, no fed/AS erase endpoints
MSC2437βœ… ◐100/100Store tagged events in Room Account Datam.tagged_events stored via existing room account_data routes
MSC2391❌ ●0/0Federation point-queries.No federation point-query state endpoint
MSC2380❌ ●0/0Matrix Media Information APINo /media/r0/info/{origin}/{media_id} endpoint
MSC2379❌ ●0/0MSC 2379: Add /versions endpoint to Appservice API.No /_matrix/app/versions probe code
MSC2375❌ ◐0/0Appservice Invite StatesAppservice transactions send raw PDU JSON without invite_room_state injection
MSC2370❌ ●0/0Resolve URL APINo /resolve_url endpoint in source
MSC2356❌ ●0/0Bulk /joined_members endpointNo POST /joined_members bulk endpoint in src/api
MSC2326❌ ●0/0Label based filteringNo labels/not_labels EventFilter support; no m.label handling
MSC2316❌ ●0/0Federation queries to aid with database recoveryNo /_matrix/federation/v1/query/members route
MSC2314❌ ●0/40Backfilling Current Statesrc/api/server/state.rs:14 requires event_id; no current-state branch
MSC2306βœ… ◐100/100Removing MSISDN password resetsmsisdn pw reset endpoint absent; ThreepidDenied on msisdn
MSC2301❌ ●0/0Proposal for an /info endpoint on the CS APINo /info merger of /versions; no branding fields exposed
MSC2300❌ ●0/0Proposal for a /ping endpoint on the CS APINo GET /_matrix/client/r0/ping route
MSC2278❌ ◐0/10Proposal for deleting content for expired and redacted messagesNo DELETE /media client API; only admin-only delete helper
MSC2271❌ ●0/0Proposal for TOTP 2FANo TOTP endpoints, no m.login.totp UIA stage
MSC2261βœ… ●100/100Allow m.room.aliases events to be redacted by room adminsSubsumed by MSC2432/v6 redaction rules
MSC2260βœ… ●100/100Update the auth rules for m.room.aliases eventsSubsumed by MSC2432/v6 auth rules; aliases sender-domain check enforced
MSC2233❌ ●0/0Unauthenticated Capabilities APIno /capabilities/server unauthenticated endpoint
MSC2228❌ ●0/0Proposal for self-destructing messagesself_destruct fields not honored
MSC2214❌ ●0/0Joining upgraded private roomsm.room.previous_member event not implemented
MSC2213❌ ●0/0Rejoinability of private roomsrejoin_rule field not implemented
MSC2212❌ ●0/0Third party user power levelsthird_party_users not present in PL handling or auth rules
MSC2199❌ ●0/0Canonical DMs (server-side middle ground edition)no m.kind in sync summary; uses legacy m.direct account data
MSC2190βœ… ◐80/80Allow appservice bots to use /syncappservice token defaults to sender_localpart user
MSC2153βœ… ●100/100Add a default push rule to ignore m.reaction eventsRuleset::server_default() includes .m.rule.reaction via Ruma
MSC2127❌ ●0/0Proposal for a federation capabilities APIfederation /capabilities and per-room capabilities not present
MSC2108❌ ●0/0Sync over Server Sent Eventsno /sync/sse or text/event-stream paths
MSC2102❌ ◐0/0Enforce Canonical JSON on the wire for the S2S APIno canonical-JSON wire enforcement on inbound S2S
MSC2061βœ… ●100/100make the trailing slash on GET /_matrix/key/v2/server/ optionalsrc/api/router.rs:246 routes both /key/v2/server and /server/{key_id}
MSC2000❌ ●0/0MSC 2000: Proposal for server-side password policiesbranch; no /password_policy endpoint or password validation
MSC1974❌ ●0/0Crypto Puzzle Challengeopen; hashcash-style proof-of-work never adopted
MSC1973❌ ●0/0Hash Key User IDopen; speculative scheme never adopted
MSC1953βœ… ●100/100Remove prev_content from the essential keys listruma redact() does not retain prev_content
MSC1943βœ… ●100/100Set v3 to be the default room versiondefault room version V11 (>= v3)
MSC1921❌ ◐0/0Cancellation of 3pid validation tokens3pid cancelToken endpoints not implemented; 3pid stack stubbed
MSC1862🟨 ◐50/50Presence flag for capabilities APIpresence on/off enforced; m.presence not in /capabilities response
MSC1849🟨 ◐20/40Proposal for aggregations via relations[β†’ MSC2674/MSC2675/MSC2676] modern /relations API present; MSC1849 specifics …
MSC1818βœ… ●100/100Remove references to presence listspresence list endpoints absent (compliant by removal)
MSC1797❌ ●0/0Proposal for more granular profile error codesbranch; M_USER_NOT_FOUND/M_PROFILE_* error codes not used
MSC1796❌ ◐0/0Proposal for improving notifications for E2E encrypted roomsbranch; m.mentions on encrypted events not honored server-side
MSC1780❌ ●0/0Add DIDs and DID names as admin accounts to HSopen; m.did medium not supported in 3pid endpoints
MSC1777❌ ●0/0Proposal for implementing peeking over federation (server pseudousers)branch; server pseudouser peeking not implemented
MSC1776❌ ●0/0Proposal for implementing peeking via /sync in the CS APIbranch; POST /sync with peek not implemented
MSC1769❌ ●0/0Proposal for extensible profiles as roomsbranch; profile-as-rooms not implemented
MSC1768❌ ●0/0Proposal to authenticate with public keysopen; m.login.proof.* not implemented
MSC1763❌ ●?/0Proposal for specifying configurable per-room message retention periods.no m.room.retention support; /retention/configuration endpoint absent
MSC1740❌ ◐?/0Using the Accept header to select an encodingno Accept-based content negotiation; only application/json supported
MSC1731❌ ◐0/0Mechanism for redirecting to an alternative server during SSO loginbranch; homeserver query param on sso loginToken redirect not added
MSC1716❌ ●?/0Open on device APIclient-only m.openondevice event type; nothing server-side to implement
MSC1714❌ ●0/0using the TLS private key to sign federation-signing keysbranch/abandoned 2018; no rsa key id, no TLS-cross-signing in src/api/server/…
MSC1700βœ… ◐80/80Improving .well-known discovery of homeserverswell-known client+server discovery served from config
MSC1687❌ ●?/0Proposal for storing an encrypted recovery key on the server to aid recovery …no PBKDF passphrase backup logic; auth_data passes through opaquely
MSC1607🟨 ◐20/30Proposal for room alias grammaralias parsing delegated to Ruma RoomAliasId; no NFKC/punycode/blacklist logic
MSC1597🟨 ◐20/30Grammars for identifiers in the Matrix protocolidentifier validation delegated to Ruma; proposal is exploratory
MSC1228❌ ●?/0Removing MXIDs from eventsremoving mxids never merged; no user_room_key or pseudo IDs in src

Closed

Sorted by MSC number, highest first. Out-of-scope rows are listed in the Out of scope section.

MSCStatusCorrect/ImplTitleNote
MSC4317❌ ●0/0Signed profile datasigned profile data; no m.signed profile field handling
MSC4316❌ ●0/0External cross-signing signatures with X.509 certificates and (semi-)automate…X.509 cross-signing; no external signature support
MSC4294❌ ●0/0Ignore and mass ignore invitesno ignored_inviters list, no auto invite cleanup
MSC4214❌ ●0/0Embedding Widgets in Messagesclosed MSC; m.widget event/capability not implemented
MSC4124❌ ●0/0Simple Server Authorizationm.server.knock/participation auth events not implemented
MSC4123❌ ●0/0Allow knock -> join transitionnew room version with knock to join transition not implemented
MSC4113❌ ●0/0Image hashes in Policy Listsm.policy.media_hash unknown to server (closed MSC)
MSC4098❌ ●0/0Use the SCIM protocol for provisioningSCIM user provisioning endpoints absent (closed MSC)
MSC4018❌ ●0/0Reliable call membershipReliable call membership endpoints (PUT/DELETE) not present
MSC3978❌ ●0/0Deprecate room taggingroom tagging not deprecated; still implemented
MSC3975❌ ●0/0rel_type for Repliesm.reply rel_type not handled
MSC3969❌ ●0/0Size limitsm.room.size_limits state event not enforced
MSC3968❌ ●0/0Poorer featuresm.room.event_features state event not enforced
MSC3945🟨 ◐50/50Private device namesFederation hides device names by default; CSAPI /keys/query still leaks them …
MSC3887❌ ◐0/0List matching push rulesclosed MSC; list-matching in event_match not implemented
MSC3859❌ ●0/0Add well known media domain proposalno m.media_server in well-known responses
MSC3782❌ ●0/0Matrix public key login specm.login.publickey login type not implemented
MSC3754❌ ●0/0Removing profile information[β†’ MSC4133?] DELETE profile endpoints not exposed
MSC3659❌ ●0/0Invite Rulesclosed MSC; no invite_rules account data dispatch
MSC3464❌ ●0/0Allow Users to Post on Behalf of Other Usersno m.on_behalf_of or m.allows_on_behalf_of handling
MSC3429❌ ●0/0Individual room preview APIno /rooms/{id}/preview endpoint
MSC3391βœ… ●100/100API to delete account datasrc/api/client/account_data.rs:126; both DELETE routes via Ruma<R>; tombstone…
MSC3286❌ ●0/0Media spoilersserver passes events opaquely; no spoiler-aware code
MSC3244❌ ●0/10Room version capabilitiescapabilities lacks room_capabilities knock/restricted info
MSC3137βœ… ●100/100Define space room type, subset of MSC1772type:m.space in m.room.create accepted; used in directory and spaces
MSC3125❌ ●0/0Limits API β€” Part 5: per-Instance limitsper-instance limits admin API absent
MSC3073❌ ●0/0Role based access controlclosed; rbac/m.role not implemented
MSC3053❌ ●0/0Limits API β€” Part 2: per-Room limitsclosed; no admin/limits endpoints or m.limits.* events
MSC3013❌ ●0/0Encrypted Pushclosed; no encrypted-push algorithm support
MSC3007❌ ●0/0Forced insertion and room blocking by self-banningclosed; no insert_member power or /insert endpoint
MSC3006❌ ●0/0Bot Interactionsclosed; bot-interaction event types not implemented
MSC3005❌ ●0/0Streaming Federation Eventsclosed; no streaming federation transport
MSC2957❌ ●0/0Cryptographically Concealed CredentialsPAKE-style login flow; closed; not implemented
MSC2912❌ ●0/0Setting cross-signing keys during registrationno device_signing field accepted by /register
MSC2839❌ ◐0/0Dynamic User-Interactive Authenticationclosed; UIA flows are static in Tuwunel
MSC2835❌ ◐0/10Add UIA to the /login endpointclosed; /login does not consume UIA auth dict
MSC2773❌ ◐0/0Room kindsclosed; no m.kind summary or m.room.kind handling
MSC2631βœ… ◐80/80Add default_payload to PusherDataruma HttpPusherData flattens custom data; default_payload accepted via passth…
MSC2463❌ ◐0/0Exclusion of MXIDs in push rules content matchingclosed MSC; no MXID exclusion in push rule content matching
MSC2416βœ… ●90/100Add m.login.jwt authentication typem.login.jwt fully wired in session module
MSC1998❌ ●0/0Two-Factor Authentication Providersclosed; TOTP/recovery 2FA never adopted by spec
MSC1888βœ… ●90/100Proposal to send EDUs to appservices[β†’ MSC2409] appservice receive_ephemeral with EDU push; src/service/sending/s…
MSC1497βœ… ●100/100Advertising support of experimental features in the CS APIunstable_features map present in /_matrix/client/versions
MSC1425βœ… ●100/100Room Versioningroom versioning fully present; STABLE_ROOM_VERSIONS in core/config
MSC1227βœ… ●80/90Proposal for lazy-loading room members to improve initial sync speed and clie…lazy_load_members supported via filter; service in rooms/lazy_loading

Out of scope

MSCs marked n/a: out of scope for a homeserver (3PID-only, identity-server-only, integration-manager-only, widget/client-only, governance/process, or superseded by another MSC). Listed here for audit; the Inv column carries each row’s inventory bucket in place of the (uniformly empty) Correct/Impl cell.

MSCStatusInvTitleNote
MSC4932⬛ ●unknownNo proposal exists; MSC number is a typo or refers to deleted issue.
MSC4456⬛ ●openHarms taxonomyPure spec appendix listing harm identifiers
MSC4455⬛ ●openCatch-all property for spacesClient-only space catch-all state event; MSC says servers not required
MSC4454⬛ ●openDeprecating Spoiler Fallback In Media RepositoryClient-side spoiler text behavior; no server change
MSC4451⬛ ●openDeprecate notifications endpointSpec-only deprecation; endpoint still served per MSC
MSC4444⬛ ●closedMalicious PDUsApril Fools joke MSC, status closed
MSC4441⬛ ●openEncrypted User Profile Annotations via Account DataClient-side only encrypted account data convention
MSC4421⬛ ●closedStandardize the spec on US Englishspec house-style proposal (en-US); no protocol surface.
MSC4415⬛ ●closedMake /_matrix/client/v3/admin/whois/{userId} only available to admins/_matrix/client/v3/admin/whois not implemented at all in Tuwunel.
MSC4414⬛ ●openDesign decision - Errorsdesign-direction proposal with no technical changes.
MSC4412⬛ ●openWidget Base PostMessage APIwidget postMessage protocol; entirely client/host-widget.
MSC4411⬛ ●openWidget State Eventwidget state event schema only; server stores the state event opaquely.
MSC4409⬛ ●openClarify thumbnailing behavior in E2EEclarifies client thumbnail behavior in E2EE; no server change.
MSC4407⬛ ●openSticky Events (Widget API)widget API for sticky events; no homeserver involvement beyond MSC4354.
MSC4405⬛ ●openDeprecate the emoji method for SAS verificationdeprecates emoji SAS in favor of decimal; client-side method choice.
MSC4404⬛ ●openCompare emoji by name rather than imageadds accept_languages to to-device verification; client SAS UI guidance.
MSC4402⬛ ●openConsistent redirects for .well-known-files[β†’ MSC2499?] client-side guidance to follow 30x on /.well-known/matrix/client.
MSC4397⬛ ●openTags as Spacesaccount_data key m.tag_space points at a private space; server is opaque.
MSC4392⬛ ●openEncrypted reactions and repliesclient puts m.relates_to inside encrypted payload; server forwards untouched.
MSC4391⬛ ●openSimplified in-room bot commandsin-room bot command UI; state and message events forwarded opaquely.
MSC4389⬛ ●openImage ordering within packsimage pack ordering is account-data; server passes through opaque blobs.
MSC4386⬛ ●openAutomatically sharing secrets after device verificationclient-to-client to-device verification protocol; server forwards opaque events.
MSC4385⬛ ●openPushing secrets to other devicesClient-side to-device event convention
MSC4381⬛ ◐mergedRemove plaintext sender keyRemoval of plaintext sender_key is client-side; server is opaque
MSC4377⬛ ●openClarify Image Pack OrderingImage pack ordering is client-side account/state data convention
MSC4359⬛ ●openβ€œDo not Disturb” notification settingsClient-side account data event; no server behavior required
MSC4357⬛ ●openLive Messages via Event ReplacementClient-only convention reusing m.replace; no server work
MSC4356⬛ ●mergedRecently used emojiPure client-side account data convention; no server work
MSC4347⬛ ●openEmoji verification imagesclient-side emoji image rendering for SAS verification; not server
MSC4313⬛ ●mergedRequire HTML <ol> start Attribute supportclient HTML rendering requirement; not applicable to homeserver
MSC4302⬛ ●openExchanging FHIR resources via Matrix eventsnew event type for FHIR, no server logic
MSC4301⬛ ●closedEvent capability negotiation between clientsclient-to-client capability negotiation
MSC4300⬛ ●openProcessing status requests & responsesclient-to-client status request/response in events
MSC4299⬛ ◐opentrusted usersfoundation MSC; defines account-data only, no concrete server behavior
MSC4296⬛ ●openMentions for device IDsclient-side mentions field extension
MSC4295⬛ ●openBot bounce limit - a better loop prevention mechanismbot/client behavior; servers relay events unmodified
MSC4292⬛ ●openHandling incompatible room versions in clients[β†’ MSC4331]
MSC4287⬛ ●mergedSharing key backup preference between clientsclient-side account data for key backup preference
MSC4286⬛ ●openApp store compliant handling of payment links within eventsclient-side HTML rendering attribute
MSC4283⬛ ●openDistinction between Ignore and Blockterminology MSC, no implementation surface
MSC4281⬛ ●closedMitigating Membership Mistakes, or β€œInvisible” Cryptographyclosed April 1 joke MSC; client-only encryption mode
MSC4278⬛ ●openMedia preview controlsclient-side account data preferences
MSC4274⬛ ●openInline media galleries via msgtypesnew client msgtype m.gallery, no server logic
MSC4273⬛ ●openApprove and Disapprove ratings for moderation policiesnew event type for moderation tools, no server logic
MSC4270⬛ ●openMatrix Glossaryglossary/spec doc proposal, not an implementation feature
MSC4269⬛ ●openUnambiguous mentions in bodyclient-side message body composition
MSC4268⬛ ●mergedSharing room keys for past messagesclient-only E2EE key sharing; server only relays to-device and stores media
MSC4261⬛ ●openβ€œDo not encrypt for device” flagdo_not_encrypt is a client-only device key flag
MSC4253⬛ ●openModifying or rejecting accepted MSCsSpec process MSC; no implementable behavior
MSC4252⬛ ●openExtensible Events modification: State event handlingClient-side guidance for extensible state events
MSC4238⬛ ●openPinned events read markerClient-set m.read.pinned_events account data only
MSC4231⬛ ●openBackwards compatibility for media captionsClient-side caption fallback rendering; no server work
MSC4229⬛ ●openPass through unsigned data from /keys/upload to /keys-querytemplate/example proposal; no real change
MSC4209⬛ ●openUpdating endpoints in-placedeprecation policy clarification; no code
MSC4192⬛ ●openComparison of proposals for ignoring invitescomparison/research document, not a feature
MSC4183⬛ ●mergedAdditional Error Codes for submitToken endpointsidentity service API; Tuwunel is not an IS
MSC4179⬛ ●openModeration event hidingclient-side rendering hint
MSC4161⬛ ●openCrypto terminology for non-technical userscrypto terminology guidance for clients
MSC4159⬛ ●mergedRemove the deprecated name attribute on HTML anchor elementsclient-side HTML rendering recommendation
MSC4157⬛ ●openDelayed Events (widget-api)widget-api only; not a homeserver concern
MSC4153⬛ ●mergedExclude non-cross-signed devicesclient-side cross-signing enforcement and to-device filtering
MSC4150⬛ ●openm.allow recommendation for moderation policy listsm.allow recommendation for policy lists is client-side
MSC4147⬛ ●mergedIncluding device keys with Olm-encrypted to-device messagessender_device_keys in Olm plaintext is client-side
MSC4146⬛ ●openShared Message Draftsshared message drafts via m.drafts rooms is client-side
MSC4144⬛ ●openPer-message profilesm.per_message_profile is client-only event content
MSC4142⬛ ●mergedRemove unintentional intentional mentions in repliesclient-side guidance for m.mentions in replies
MSC4139⬛ ●openBot buttons & conversationsm.prompts mixin is client-only event content
MSC4132⬛ ●mergedDeprecate Linking to an Event Against a Room Alias.deprecation of event-on-room-alias URIs is client-only
MSC4131⬛ ●openHandling m.room.encryption eventsclient-side guidance on handling m.room.encryption events
MSC4119⬛ ●openVoluntary content flaggingclient-only m.room.context flagging mixin; server is content-agnostic
MSC4114⬛ ●openMatrix as a password managerclient-only password manager via rooms; no server-side requirements
MSC4092⬛ ●openEnforce tests around sensitive parts of the specificationprocess MSC about test enforcement; no protocol changes
MSC4077⬛ ●mergedImproved process for handling deprecated HTML featuresprocess MSC for HTML feature deprecation; no server work
MSC4073⬛ ●openShepherd teamsprocess MSC about SCT shepherd teams; not protocol
MSC4062⬛ ◐openAdd a push rule tweak to disable email notificationTuwunel has no email pusher; tweak only affects email pushers.
MSC4052⬛ ●closedHiding read receipts UI in certain roomsPure client-side hint via m.hide_ui state event.
MSC4050⬛ ●openMXID verificationPure client/third-party signaling via custom event types.
MSC4039⬛ ●openAccess the Content repository with the Widget APIWidget API extension; entirely client-to-widget scope.
MSC4036⬛ ●openRoom organization by promoting threadsPure client UI behavior toggled by m.promote_threads state event.
MSC4032⬛ ●openAsset CollectionsAsset Collections defines client-side data structures for 3D worlds; no serve…
MSC4027⬛ ●openCustom Images in Reactionscustom image reactions, m.annotation key semantics
MSC4016⬛ ●openStreaming and resumable E2EE file transfer with random accessstreaming E2EE file transfer needs new media transport
MSC4015⬛ ●closedVoluntary Bot indicatorsvoluntary bot flag, profile and member event content
MSC4013⬛ ●openPoll history cacheclient convention using existing relations API
MSC4006⬛ ●openAnswered Elsewhere for VoIPVoIP m.call.hangup reason value, client concern
MSC4004⬛ ●openunified view of identity serviceidentity service API, not homeserver
MSC4003⬛ ●openSemantic table attributesHTML table sanitization is client concern
MSC4002⬛ ●openWalkie talkieWalkie-talkie real-time voice, vague client-driven proposal
MSC3979⬛ ●openRevised feature profilesclient feature profiles, not a homeserver concern
MSC3977⬛ ●openIntroductionIETF MIMI framework draft, not a Matrix MSC
MSC3973⬛ ●openSearch users in the user directory with the Widget APIwidget API extension; client/embedder feature
MSC3972⬛ ●closedLexicographical strings as an ordering mechanismclient-side ordering algorithm
MSC3956⬛ ●openExtensible Events - Encrypted Eventsclient-side extensible encrypted event format
MSC3949⬛ ●openPower Level TagsPower-level tag state event is client UX; no server enforcement.
MSC3948⬛ ●openRepository room for ThirdroomThirdRoom 3D-asset repository room type; no homeserver semantics.
MSC3935⬛ ●openCute Events against social distancingClient-side cute event msgtype; no server behavior.
MSC3923⬛ ●mergedBringing Matrix into the IETF processSpec-process MSC about IETF coordination; no homeserver code.
MSC3919⬛ ●openMatrix Message Format (IETF/MIMI)IETF informational draft on Matrix message format; not a server feature.
MSC3918⬛ ●openMatrix Message Transport (IETF/MIMI)IETF informational draft about Matrix as MIMI transport; not a server feature.
MSC3910⬛ ●openContent tokens for media[β†’ MSC3916]
MSC3908⬛ ●openExpiring Policy List Recommendationsexpiring policy field interpreted by clients/bots
MSC3907⬛ ●openMute Policy Recommendationmute policy recommendation enforced by clients/bots
MSC3906⬛ ●openProtocol to use an existing Matrix client session to complete login and setup…[β†’ MSC4108]
MSC3903⬛ ●openX25519 Elliptic-curve Diffie-Hellman ephemeral for establishing secure channe…[β†’ MSC4108] client-to-client X25519 ECDH; no server role
MSC3898⬛ ●openNative Matrix VoIP signalling for cascaded SFUsVoIP SFU signalling is opaque events between clients
MSC3892⬛ ●openCustom Emotes with Encryptioncustom emotes are pure client/state-event feature
MSC3888⬛ ◐openVoice Broadcastvoice broadcast is opaque events, no server change required
MSC3886⬛ ●openSimple client rendezvous capability[β†’ MSC4108]
MSC3880⬛ ●opendummy replies for Olmclient-side Olm dummy event behavior
MSC3879⬛ ●openTrusted key forwardsE2EE key forwarding flag is client-side
MSC3869⬛ ●openRead event relations with the Widget APIWidget API extension; homeservers do not implement widget API
MSC3868⬛ ◐openRoom Contributioncustom state event for room contribution, no server requirements
MSC3846⬛ ●openAllowing widgets to access TURN serverswidget TURN access; client-widget API only
MSC3842⬛ ●openPower levels on message (extensible) eventsproposal body is TBD; nothing to implement
MSC3839⬛ ●openprimary-identity-as-keyspeculative login system replacement; not actionable as a proposal
MSC3819⬛ ●openAllowing widgets to send/receive to-device messageswidget to-device is client-widget API only
MSC3817⬛ ●openAllow widgets to create roomswidget API only, no server-side surface
MSC3815⬛ ●open3D Worlds3D worlds is client-side room type and state events; no server behavior
MSC3813⬛ ●openObfuscated eventsobfuscated events; client-side dummy traffic
MSC3812⬛ ●openHint buttons in messageshint buttons in messages; client UI
MSC3803⬛ ●openMatrix Widget API v2Widget API v2 issue placeholder
MSC3796⬛ ◐openAuth/linking for content repo (and enforcing GDPR erasure)[β†’ MSC3916]
MSC3790⬛ ●closedRegister Clientsclient launcher registry; client-only
MSC3784⬛ ●openUsing room type of m.policy for policy roomsm.policy room-type identifier; informational only
MSC3783⬛ ●mergedFixed base64 for SAS verificationSAS MAC scheme is client-to-client crypto
MSC3780⬛ ●openKnocking on action=joinmatrix-uri client UX fallback for knock
MSC3775⬛ ●openMarkup Locations for Audiovisual Mediaevent content schema for media markup
MSC3768⬛ ●openPush rule action for in-app notifications[β†’ MSC2625]
MSC3755⬛ ●openMember pronounspronouns are client member-content fields
MSC3752⬛ ●openMarkup locations for textevent content schema for text markup locations
MSC3751⬛ ●openAllowing widgets to read account dataWidget API permission, not a homeserver concern
MSC3746⬛ ●closedRender image data in reactions[β†’ MSC4027] image reactions are client-only event content
MSC3735⬛ ◐openAdd device information to m.room_key.withheld messageclient-side to-device field; server relays unchanged
MSC3725⬛ ●openContent warningsclient-side content warning event content; no server changes
MSC3700⬛ ◐mergedDeprecate plaintext sender_keyclient-side ignoring of sender_key/device_id; server is transparent
MSC3676⬛ ◐mergedTransitioning away from reply fallbacks.client-side reply-fallback transition rules; no server gate
MSC3662⬛ ●openAllow Widgets to share user MxIds to the clientwidget-to-client API; no server involvement
MSC3644⬛ ●openExtensible Events: Edits and repliesclient-side extensible event format; no server-side dispatch
MSC3639⬛ ●openMatrix for the social media use caseclient-side social media room/event conventions; no server changes
MSC3635⬛ ●openEarly Media for VoIPclient-side VoIP signalling; no server changes required
MSC3592⬛ ●openMarkup locations for PDF documentsclient-side PDF markup event types; no server implementation required
MSC3588⬛ ●closedWIP: MSC3588: Encrypted Stories As Roomsclient-only feature; explicitly says no server changes required
MSC3531⬛ ●openLetting moderators hide messages pending moderationclient-only m.visibility event; server explicitly unchanged
MSC3517⬛ ●closedβ€œMention” Pushrule[β†’ MSC3952]
MSC3510⬛ ●openLet users with the same power level kick/ban/demote each other.[β†’ MSC3915]
MSC3382⬛ ●openInline message AttachmentsPR-style amendment to MSC2881, not a standalone proposal
MSC3302⬛ ●closedStories via To-Device-Messagingclient uses generic to-device which is supported
MSC3291⬛ ●mergedMuting in VoIP callsserver passes call events opaquely; ruma has the type
MSC3282⬛ ●closedExpose enable_set_displayname in capabilities response[β†’ MSC3283]
MSC3279⬛ ●closedExpose enable_set_displayname in capabilities response[β†’ MSC3283]
MSC3270⬛ ●closedSymmetric megolm backupserver stores backup auth_data/session_data opaquely
MSC3265⬛ ●closedLogin and SSSS with a Single Passwordclient-only construction; explicitly no server-side changes
MSC3255⬛ ●closedUse SRV record for homeservers discovery by clientsclient-side discovery via SRV; closed proposal
MSC3246⬛ ●openAudio waveforms (extensible events)client message-content field; no server role
MSC3245⬛ ●openVoice messages (using extensible events)client message type; ruma feature enabled but server has no role
MSC3230⬛ ●openSpaces top level orderm.space_order is account_data; uses generic API
MSC3226⬛ ●mergedPer-room spell checkper-room spellcheck language is account_data; no server logic
MSC3196⬛ ●unknownunknown MSC; no proposal text exists
MSC3184⬛ ●openChallenges Messagesclient-only challenge message types
MSC3160⬛ ●openAttach timezone metadata to time information in messagesclient-only HTML <time> markup in messages
MSC3131⬛ ●openVerifying with QR codes v2client-only QR verification v2 method names
MSC3124⬛ ●closedHandling spoilers in plain-text message fallbackclient-only spoiler fallback handling
MSC3122⬛ ●mergedDeprecate starting key verifications without requesting firstclient-only deprecation of to-device verification start
MSC3086⬛ ●openAsserted Identity for VoIP Callsclient VoIP event content; server transparent
MSC3077⬛ ●mergedSupport for multi-stream VoIPmerged; sdp_stream_metadata is event content
MSC3074⬛ ●closedProposal for URIs conforming to RFC 3986 syntax.client URI scheme; not a server feature
MSC3068⬛ ●closedCompliance tiersinformational compliance terminology only
MSC3067⬛ ●closedPrevent/remove legacy groups from being in the specmeta MSC; spec-process decision to drop legacy groups
MSC3062⬛ ●openBot verificationclient-only verification method
MSC3061⬛ ●openSharing room keys for past messagesclient-only; sender-flagged room key property
MSC3015⬛ ●openRoom state personal overridesclient-only; account data convention
MSC3009⬛ ●openWebsocket transport for client <–> widget communicationsclient to widget transport; not server-side
MSC3008⬛ ●openScoped access for widgetswidget client/UA concern; obsoleted by OIDC scopes
MSC2997⬛ ●openAdd t-shirtjoke proposal; t-shirt design
MSC2974⬛ ●openWidgets: Re-exchange capabilitieswidget-side request_capabilities; client-only
MSC2949⬛ ●openProposal to clarify β€œRequires auth” and β€œRate-limited” in the specspec-text clarification; no homeserver behavior
MSC2931⬛ ●openWidget navigate permissionwidget navigate capability; client-only
MSC2881⬛ ●openMessage Attachmentsnew event content schema (m.attachment relation); generic event passthrough
MSC2876⬛ ●closedAllowing widgets to read events in a roomwidget read_events action; client-only
MSC2874⬛ ●mergedSingle SSSSclient interpretation of SSSS default key; account data passthrough
MSC2873⬛ ●openIdentifying clients and user settings in widgetswidget URL template variables and theme_change; client-only
MSC2872⬛ ●openMove the widget title to the rootwidget definition field reorder; client-only
MSC2871⬛ ●openSending approved capabilities back to the widgetwidget-only feature; homeserver not involved
MSC2813⬛ ●openHandling invalid Widget API requestsclient/widget error handling rules
MSC2810⬛ ◐closedConsistent globs specificationclosed glob spec doc; ACLs/push rules already use existing globs
MSC2801⬛ ●mergedMake it explicit that event bodies are untrusted dataspec note: clients should treat events as untrusted
MSC2790⬛ ●openWidgets - Prompting for user input within the clientclient-side widget modal API
MSC2781⬛ ●mergedRemove reply fallbacks from the specificationremoves client-side reply fallback; client behavior change
MSC2779⬛ ●closedClarify that event IDs are globally uniquespec clarification issue; closed; no server behavior change
MSC2775⬛ ◐openLazy loading room membership over federation[β†’ MSC3706/MSC3902]
MSC2774⬛ ●mergedGiving widgets their ID so they can communicateclient widget URL template variable
MSC2771⬛ ●closedBookmarksclient-side bookmarks via account_data; closed
MSC2765⬛ ●mergedWidget avatarsclient-side widget definition field
MSC2762⬛ ●openAllowing widgets to send/receive eventsclient-side widget API; homeserver not involved
MSC2758⬛ ●mergedCommon grammar for textual identifiersmeta grammar guideline for future identifiers; not directly implementable
MSC2747⬛ ●openTransferring VoIP CallsClient-only m.call.replaces event semantics
MSC2723⬛ ●openForwarded message metadataClient-side m.forwarded content field only
MSC2713⬛ ●mergedRemove deprecated Identity Service endpointsIdentity Service endpoints; not a homeserver feature
MSC2697⬛ ◐closedDevice dehydration[β†’ MSC3814] Superseded by MSC3814 dehydration v2; closed
MSC2644⬛ ●openmatrix.to URI syntax v2matrix.to URI syntax; client-only
MSC2630⬛ ◐mergedChecking public keys in SAS verificationClient SAS verification crypto; server transports key.verification events
MSC2618⬛ ●openHelping others with mandatory implementation guidesSpec process MSC; no homeserver behavior
MSC2604⬛ ◐mergedParameters for Login FallbackClient login fallback HTML page; Tuwunel does not serve /login/fallback
MSC2589⬛ ◐closedImprove repliesClient reply rendering; closed MSC; server ignores reply_body fields
MSC2582⬛ ◐mergedRemove mimetype from EncryptedFile objectRemoves mimetype example from spec; pure spec/client cleanup
MSC2579⬛ β—‹closedImproved tagging supportClient tag-ordering account_data; server stores opaquely
MSC2557⬛ ◐mergedClarifications on spoilersClient-only spoiler rendering clarification
MSC2545⬛ ◐openImage Packs (Emoticons & Stickers)Client emote/sticker pack rendering; server stores account_data and state events
MSC2530⬛ ◐mergedBody field as media captionClient rendering of body+filename for media msgtypes
MSC2529⬛ ◐openUse existing m.room.message/m.text events as captions for images[β†’ MSC2530] Client-only relation/caption rendering; superseded by MSC2530
MSC2516⬛ ◐closedAdd a new message type for voice messagesClient-only msgtype; server does no msgtype-specific handling
MSC2475⬛ β—‹closedAPI versioningSpec process meta-MSC about API version naming; closed
MSC2474⬛ ◐openAdd key backup version to SSSS account dataClient-side SSSS field; server stores account_data opaquely
MSC2472⬛ ◐mergedSymmetric SSSSClient-side SSSS crypto; server only stores account_data
MSC2461⬛ ◐closedProposal for Authenticated Content Repository API[β†’ MSC3916]
MSC2427⬛ ◐openProposal for JSON-based message formattingClient-only message formatting alternative to HTML
MSC2425⬛ ●openRemove Authentication on /submitToken Identity Service APIIdentity Server endpoint; not a homeserver concern
MSC2422⬛ ◐mergedAllow color as attribute for <font> in messagesClient HTML sanitizer change for <font color>
MSC2413⬛ ●openRemove client_secret3PID-only proposal; Tuwunel does not support 3PID
MSC2399⬛ ◐mergedReporting that decryption keys are withheldClient-only m.room_key.withheld to-device event
MSC2398⬛ ◐openproposal to allow mxc:// in the β€œa” tag within messagesClient HTML rendering policy for <a href=mxc:>
MSC2390⬛ ◐closedOn the EDU-to-PDU transition.Process MSC; closed; recommends no further EDU use
MSC2389⬛ ◐closedToward the EDU-to-PDU transition: Typing.Typing as PDU; closed proposal, Tuwunel uses EDU
MSC2388⬛ ◐openToward the EDU-to-PDU transition: Read Receipts.Receipts as PDU; superseded direction, Tuwunel uses EDU
MSC2385⬛ ◐openDisable URL Previews, alternative methodClient-only url_previews array on m.room.message
MSC2376⬛ ◐closedDisable URL PreviewsClient-only HTML attribute hint; server has no role
MSC2366⬛ ◐mergedKey verification flow additions: m.key.verification.ready and `m.key.verifi…Client-side verification flow over to-device; server transports
MSC2359⬛ ◐openE2E Encrypted SFU VoIP conferencing via Matrix[β†’ MSC3401] Architectural sketch for client+SFU; no homeserver requirements
MSC2354⬛ ◐openDevice to device streaming file transfersClient-only WebRTC signaling over event types; server transports opaquely
MSC2346⬛ ●openMSC 2346: Bridge information state eventm.bridge state event; bridge/client concern
MSC2324⬛ ●mergedFacilitating early releases of software dependent on specProcess change about FCP and stable prefixes
MSC2320⬛ ●mergedVersions information for identity serversIdentity server endpoint, not homeserver
MSC2315⬛ ●openAllow users to select β€œnone” as an integration managerClient account_data m.integrations toggle
MSC2313⬛ ●mergedModeration policies as rooms (ban lists)State events m.policy.rule.*; no homeserver enforcement
MSC2312⬛ ●mergedURI scheme for MatrixClient-side URI scheme; no homeserver endpoint required
MSC2299⬛ ●openProposal to add m.textfile msgtypeClient-only msgtype m.textfile
MSC2291⬛ ●openConfiguration to Control CrawlingBot-only advisory state event; no homeserver behavior
MSC2284⬛ ●mergedMaking the identity server optional during discoveryClient-side .well-known FAIL_PROMPT behavior
MSC2270⬛ ◐openProposal for ignoring invitesClient account_data scheme; server stores account data transparently
MSC2265⬛ ◐mergedProposal for mandating case folding when processing e-mail addressesEmail casefold only relevant inside 3PID code path; 3PID not impl
MSC2264⬛ ●mergedAdd an unstable feature flag to MSC2140 for clients to detect supportProcess amendment to MSC2140 only
MSC2263⬛ ◐mergedGive homeservers the ability to handle their own 3PID registrations/password …3PID flow not implemented; threepid endpoints return ThreepidDenied
MSC2241⬛ ◐mergedKey verification in DMsClient-side verification flow over m.room.message; server passes events trans…
MSC2232⬛ ●openExpose Homeserver Email Configuration in Registration Parametersproposal text is the empty MSC template
MSC2230⬛ ◐mergedStore Identity Server in Account Dataclient behavior over generic account data; HS already supports account data
MSC2229⬛ ●mergedAllowing 3PID Owners to Rebind[β†’ MSC2290] obsoleted by MSC2290; tuwunel disables 3PID
MSC2225⬛ ●unknownunknown MSC; no proposal text exists
MSC2211⬛ ●openIdentity Servers Storing Threepid Hashes at Restidentity server storage details; not HS
MSC2192⬛ ●openInline widgetsclient extensible event m.embed; no server logic
MSC2191⬛ ●mergedMarkup for mathematical messagesclient formatted_body rendering only
MSC2184⬛ ●mergedAllow the HTML <details> tag in messagesclient HTML rendering; no server impact
MSC2162⬛ ◐openSignaling Errors at Bridgesclient/bridge event types; no homeserver enforcement
MSC2140⬛ ●mergedTerms of Service API for Identity Servers and Integration ManagersIS+IM ToS API; HS-side 3pid/unbind+delete absent but 3PID disabled
MSC2134⬛ ●mergedIdentity Hash Lookupsidentity-server only; tuwunel is HS
MSC2063⬛ ◐closedAdd β€œserver information” public API proposalclosed; no real proposal text (template file only)
MSC2010⬛ ●mergedMSC 2010: Proposal to add client-side spoilersclient-side rendering of data-mx-spoiler in formatted_body
MSC1961⬛ ●mergedIntegration manager authenticationmerged; integration-manager auth API is on the manager, not homeserver
MSC1959⬛ ●openSticker picker APIbranch; sticker picker API on integration manager, not homeserver
MSC1958⬛ ●closedWidget architecture changesclient widget account_data shape; servers do not interpret widget content
MSC1956⬛ ●openIntegrations APIbranch; integrations API is integration-manager scope, not homeserver
MSC1951⬛ ◐openCustom emoji and sticker packs in Matrixbranch; client/integration manager concept; uses generic rooms
MSC1935⬛ ◐closedKey validity enforcement[β†’ MSC2076] closed; superseded by MSC2076
MSC1920⬛ ◐openAlternative texts for stickersbranch; client-side rendering field on m.sticker; no server logic
MSC1902⬛ ●openSplitting the media repo into a client-side and server-side component[β†’ MSC3916]
MSC1840⬛ ●closedTyped roomsclosed; superseded by m.room.create type field used by MSC1772
MSC1781⬛ ●openProposal for associations for DIDs and DID namesidentity-server endpoints for DID validation; not a homeserver concern
MSC1779⬛ ●mergedProposal for Open Governance of Matrix.orggovernance/foundation document; not a homeserver feature
MSC1762⬛ ●openSupport user-owned identifiers as new 3PID typeidentity-server feature (m.did 3PID type); not a homeserver concern
MSC1722⬛ ●closedSupport for displaying math(s) in messagesclient-side rendering of MathML in formatted_body; servers do not interpret
MSC1719⬛ ●mergedOlm unwedgingclient-only behavior (m.dummy, session re-creation rate-limit)
MSC1703⬛ ●closedencrypting recovery keys for online megolm backupsamendment PR to MSC1687; closed without merge
MSC1680⬛ ●closedcross-signing of devices to simplify key verificationempty Google-doc stub; cross-signing specified in MSC1756
MSC1544⬛ ●mergedKey verification using QR codesamendment PR to MSC1543; no separate proposal text
MSC1543⬛ ●mergedBi-directional Key verification using QR codesclient-only QR verification over send-to-device; server is opaque
MSC1318⬛ ●closedProposal for Open Governance of Matrix.org[β†’ MSC1779] governance proposal; not a homeserver feature
MSC1310⬛ ●closedProposal for a media information APIempty Google-doc stub; media info API never specified
MSC1301⬛ ●unknownunknown MSC number; no proposal exists
MSC1286⬛ ●unknownunknown MSC number; no proposal exists
MSC1267⬛ ●closedInteractive key verification using short authentication stringsstub Google doc; SAS verification specified later (MSC2241+); client-only fea…
MSC1236⬛ ●unknownunknown MSC number; no proposal exists
MSC1229⬛ ●unknownunknown MSC number; no proposal exists
MSC1225⬛ ●closedExtensible event types & fallback in Matrixempty Google-doc stub; extensible events specified later in MSC1767
MSC1215⬛ ●closedGroups as Rooms[β†’ MSC1772] empty Google-doc stub; groups feature dropped in favor of Spaces
MSC1194⬛ ●closedA way for HSes to remove bindings from ISes (aka unbind)identity-server unbind feature; one-line proposal, abandoned
MSC971⬛ ●closedAdd groups stuff to spec[β†’ MSC1772] groups stuff superseded by Spaces (MSC1772); proposal is doc link…
MSC701⬛ ●unknownunknown MSC number; no proposal or PR exists
MSC688⬛ ●closedRoom Summaries (was: Calculate room names server-side)stub Google doc; room summary work moved to heroes/MSC688 in spec
MSC455⬛ ●closedDo we want to specify a matrix:// URI scheme for rooms? (SPEC-5)[β†’ MSC2312] stub Google doc; matrix:// URI scheme superseded by matrix: URI (…
MSC441⬛ ●closedSupport for Reactions / Aggregations[β†’ MSC2675/MSC2676] stub-only Google doc; superseded by MSC2675/MSC2676 react…