* Clarification on historical power level handling
* Revert "Clarification on historical power level handling"
This reverts commit f443b3d5a9.
* Clean up
* Let us try this again not using VS Code
* Markdown is full of mysteries
* Move stringy power levels to room versions
* Describe range
* Fix minor issues with previous room version stuff
* Copy/paste v9 into v10
* Describe deprecated formatting
* Paste unmodified auth rules from v8 into v10
* Move 9.1 to 9.3, add 9.1 and 9.2 for integer enforcement
* Add knock_restricted to v10 auth
* Misc cleanup and clarification for fragments
* Describe `knock_restricted` client changes
* Changelogs
* spelling
* Apply suggestions from code review
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Apply code review suggestions manually
* Fix v9 redactions
* Fix auth rules clarity issues
* Apply suggestions from code review
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
* Remove false integer requirements
Co-authored-by: Neil Alexander <neilalexander@users.noreply.github.com>
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
3.5 KiB
| title | type | weight |
|---|---|---|
| Room Version 8 | docs | 80 |
This room version builds on version 7 to introduce a new join rule that allows members to join the room based on membership in another room.
{{% boxes/warning %}} This room version is known to have issues relating to redactions of member join events. Room version 9 should be preferred over v8 when creating rooms. {{% /boxes/warning %}}
Client considerations
Clients are encouraged to expose the option for the join rule in their user interface for supported room versions.
The new join rule, restricted, is described in the
Client-Server API.
Clients which implement the redaction algorithm locally should refer to the redactions section below for a full overview.
Redactions
{{% added-in this=true %}} m.room.join_rules events now keep allow in addition to other
keys in content when being redacted.
{{% boxes/warning %}} Room version 9 adds additional cases of protected properties for behaviour related to restricted rooms (the functionality introduced in v8). v9 is preferred over v8 when creating new rooms. {{% /boxes/warning %}}
The full redaction algorithm follows.
Upon receipt of a redaction event, the server must strip off any keys not in the following list:
event_idtyperoom_idsenderstate_keycontenthashessignaturesdepthprev_eventsprev_stateauth_eventsoriginorigin_server_tsmembership
The content object must also be stripped of all keys, unless it is one of one of the following event types:
m.room.memberallows keymembership.m.room.createallows keycreator.m.room.join_rulesallows keysjoin_rule,allow.m.room.power_levelsallows keysban,events,events_default,kick,redact,state_default,users,users_default.m.room.history_visibilityallows keyhistory_visibility.
Server implementation components
{{% boxes/warning %}} The information contained in this section is strictly for server implementors. Applications which use the Client-Server API are generally unaffected by the intricacies contained here. The section above regarding client considerations is the resource that Client-Server API use cases should reference. {{% /boxes/warning %}}
Room version 8 adds a new join rule to allow members of a room to join another room without invite. Otherwise, the room version inherits all properties of Room version 7.
Authorization rules
{{% added-in this=true %}} For checks performed upon m.room.member events, new
points for handling content.join_authorised_via_users_server are added (Rule 4.2
and 4.3.5).
{{% rver-fragment name="v8-auth-rules" %}}
Redactions
Unchanged from v7
The following sections have not been modified since v7, but are included for completeness.
Handling redactions
{{% rver-fragment name="v3-handling-redactions" %}}
Event IDs
{{% rver-fragment name="v4-event-ids" %}}
Event format
{{% rver-fragment name="v4-event-format" %}}
Deprecated event content schemas
{{% rver-fragment name="v1-deprecated-formatting-off-spec" %}}
{{% rver-fragment name="v1-stringy-power-levels" %}}
State resolution
{{% rver-fragment name="v2-state-res" %}}
Canonical JSON
{{% rver-fragment name="v6-canonical-json" %}}
Signing key validity period
{{% rver-fragment name="v5-signing-requirements" %}}