Compare commits

...

8 commits

Author SHA1 Message Date
Kierre Sametti 85e34712e9
Merge 1d1fa4cb5b into bb3daafe96 2026-02-16 13:48:52 +00:00
Kierre 1d1fa4cb5b
move transformations into one section 2026-02-07 18:43:03 -05:00
Kierre 6264b34caf
clarify exponential notation and add canonical JSON note 2026-01-28 12:05:35 -05:00
Kierre 917f1dd8c1
"visually" -> "technically"
this makes more sense to me
2026-01-28 11:37:58 -05:00
Kierre Sametti 909395ab3c
Update content/rooms/fragments/v1-floaty-power-levels.md
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
2026-01-28 11:03:16 -05:00
Kierre Sametti b6198973e0
Update changelogs/room_versions/newsfragments/2297.clarification
Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
2026-01-28 11:02:53 -05:00
Kierre b09d59bd37
newsfragment 2026-01-25 11:37:36 -05:00
Kierre 68d92cf254
m.room.power_levels events accept values as floats 2026-01-25 11:31:32 -05:00
7 changed files with 52 additions and 0 deletions

View file

@ -0,0 +1 @@
Clarify meaning of floating-point powerlevels.

View file

@ -0,0 +1,41 @@
##### `m.room.power_levels` events accept values as floats
When the value is a float
* First, exponential notation is applied: `5.114698E4` becomes `51146.98`
* Second, the value is truncated at the decimal point: `51146.98` becomes `51146`.
Any float greater than or equal to `1e309` must result in the powerlevel event
being rejected.
For example, this is a valid `m.room.power_levels` event in this room version:
```json
{
"content": {
"ban": 50,
"events": {
"m.room.power_levels": 100
},
"events_default": 0,
"state_default": 50,
"users": {
"@example:example.org": 100,
"@alice:localhost": 50,
"@bob:localhost": 50.57
},
"users_default": 0
},
"origin_server_ts": 1432735824653,
"room_id": "!jEsUZKDJdhlrceRyVU:example.org",
"sender": "@example:example.org",
"state_key": "",
"type": "m.room.power_levels"
}
```
In this example, both `@bob:localhost` and `@alice:localhost` have the same effective
power level of `50`, even though the values are technically different.
Note that, since this room version does not enforce that events comply with the requirements
of [Canonical JSON](/appendices#canonical-json), power levels can be formatted as floats.

View file

@ -59,6 +59,8 @@ Events in version 1 rooms have the following structure:
{{% rver-fragment name="v1-stringy-power-levels" %}}
{{% rver-fragment name="v1-floaty-power-levels" %}}
### Authorization rules
{{% rver-fragment name="v1-auth-rules" %}}

View file

@ -57,6 +57,8 @@ Events in rooms of this version have the following structure:
{{% rver-fragment name="v1-stringy-power-levels" %}}
{{% rver-fragment name="v1-floaty-power-levels" %}}
### Authorization rules
{{% rver-fragment name="v1-auth-rules" %}}

View file

@ -87,6 +87,8 @@ The complete structure of a event in a v3 room is shown below.
{{% rver-fragment name="v1-stringy-power-levels" %}}
{{% rver-fragment name="v1-floaty-power-levels" %}}
### Authorization rules
{{% boxes/note %}}

View file

@ -76,6 +76,8 @@ the changes in this room version.
{{% rver-fragment name="v1-stringy-power-levels" %}}
{{% rver-fragment name="v1-floaty-power-levels" %}}
### Authorization rules
{{% rver-fragment name="v3-auth-rules" %}}

View file

@ -58,6 +58,8 @@ completeness.
{{% rver-fragment name="v1-stringy-power-levels" %}}
{{% rver-fragment name="v1-floaty-power-levels" %}}
### Authorization rules
{{% rver-fragment name="v3-auth-rules" %}}