@@ -36,12 +36,14 @@ class EventFormatVersions:
3636 ROOM_V1_V2 = 1 # $id:server event id format: used for room v1 and v2
3737 ROOM_V3 = 2 # MSC1659-style $hash event id format: used for room v3
3838 ROOM_V4_PLUS = 3 # MSC1884-style $hash format: introduced for room v4
39+ ROOM_V11_PLUS_MSC4291 = 4 # MSC4291 room IDs as hashes: introduced for room MSC4291v11
3940
4041
4142KNOWN_EVENT_FORMAT_VERSIONS = {
4243 EventFormatVersions .ROOM_V1_V2 ,
4344 EventFormatVersions .ROOM_V3 ,
4445 EventFormatVersions .ROOM_V4_PLUS ,
46+ EventFormatVersions .ROOM_V11_PLUS_MSC4291 ,
4547}
4648
4749
@@ -109,6 +111,8 @@ class RoomVersion:
109111 msc3931_push_features : Tuple [str , ...] # values from PushRuleRoomFlag
110112 # MSC3757: Restricting who can overwrite a state event
111113 msc3757_enabled : bool
114+ # MSC4291: Room IDs as hashes of the create event
115+ msc4291_room_ids_as_hashes : bool
112116
113117
114118class RoomVersions :
@@ -131,6 +135,7 @@ class RoomVersions:
131135 enforce_int_power_levels = False ,
132136 msc3931_push_features = (),
133137 msc3757_enabled = False ,
138+ msc4291_room_ids_as_hashes = False ,
134139 )
135140 V2 = RoomVersion (
136141 "2" ,
@@ -151,6 +156,7 @@ class RoomVersions:
151156 enforce_int_power_levels = False ,
152157 msc3931_push_features = (),
153158 msc3757_enabled = False ,
159+ msc4291_room_ids_as_hashes = False ,
154160 )
155161 V3 = RoomVersion (
156162 "3" ,
@@ -171,6 +177,7 @@ class RoomVersions:
171177 enforce_int_power_levels = False ,
172178 msc3931_push_features = (),
173179 msc3757_enabled = False ,
180+ msc4291_room_ids_as_hashes = False ,
174181 )
175182 V4 = RoomVersion (
176183 "4" ,
@@ -191,6 +198,7 @@ class RoomVersions:
191198 enforce_int_power_levels = False ,
192199 msc3931_push_features = (),
193200 msc3757_enabled = False ,
201+ msc4291_room_ids_as_hashes = False ,
194202 )
195203 V5 = RoomVersion (
196204 "5" ,
@@ -211,6 +219,7 @@ class RoomVersions:
211219 enforce_int_power_levels = False ,
212220 msc3931_push_features = (),
213221 msc3757_enabled = False ,
222+ msc4291_room_ids_as_hashes = False ,
214223 )
215224 V6 = RoomVersion (
216225 "6" ,
@@ -231,6 +240,7 @@ class RoomVersions:
231240 enforce_int_power_levels = False ,
232241 msc3931_push_features = (),
233242 msc3757_enabled = False ,
243+ msc4291_room_ids_as_hashes = False ,
234244 )
235245 V7 = RoomVersion (
236246 "7" ,
@@ -251,6 +261,7 @@ class RoomVersions:
251261 enforce_int_power_levels = False ,
252262 msc3931_push_features = (),
253263 msc3757_enabled = False ,
264+ msc4291_room_ids_as_hashes = False ,
254265 )
255266 V8 = RoomVersion (
256267 "8" ,
@@ -271,6 +282,7 @@ class RoomVersions:
271282 enforce_int_power_levels = False ,
272283 msc3931_push_features = (),
273284 msc3757_enabled = False ,
285+ msc4291_room_ids_as_hashes = False ,
274286 )
275287 V9 = RoomVersion (
276288 "9" ,
@@ -291,6 +303,7 @@ class RoomVersions:
291303 enforce_int_power_levels = False ,
292304 msc3931_push_features = (),
293305 msc3757_enabled = False ,
306+ msc4291_room_ids_as_hashes = False ,
294307 )
295308 V10 = RoomVersion (
296309 "10" ,
@@ -311,6 +324,7 @@ class RoomVersions:
311324 enforce_int_power_levels = True ,
312325 msc3931_push_features = (),
313326 msc3757_enabled = False ,
327+ msc4291_room_ids_as_hashes = False ,
314328 )
315329 MSC1767v10 = RoomVersion (
316330 # MSC1767 (Extensible Events) based on room version "10"
@@ -332,6 +346,7 @@ class RoomVersions:
332346 enforce_int_power_levels = True ,
333347 msc3931_push_features = (PushRuleRoomFlag .EXTENSIBLE_EVENTS ,),
334348 msc3757_enabled = False ,
349+ msc4291_room_ids_as_hashes = False ,
335350 )
336351 MSC3757v10 = RoomVersion (
337352 # MSC3757 (Restricting who can overwrite a state event) based on room version "10"
@@ -353,6 +368,7 @@ class RoomVersions:
353368 enforce_int_power_levels = True ,
354369 msc3931_push_features = (),
355370 msc3757_enabled = True ,
371+ msc4291_room_ids_as_hashes = False ,
356372 )
357373 V11 = RoomVersion (
358374 "11" ,
@@ -373,6 +389,7 @@ class RoomVersions:
373389 enforce_int_power_levels = True ,
374390 msc3931_push_features = (),
375391 msc3757_enabled = False ,
392+ msc4291_room_ids_as_hashes = False ,
376393 )
377394 MSC3757v11 = RoomVersion (
378395 # MSC3757 (Restricting who can overwrite a state event) based on room version "11"
@@ -394,6 +411,28 @@ class RoomVersions:
394411 enforce_int_power_levels = True ,
395412 msc3931_push_features = (),
396413 msc3757_enabled = True ,
414+ msc4291_room_ids_as_hashes = False ,
415+ )
416+ MSC4291v11 = RoomVersion (
417+ "org.matrix.msc4291.11" ,
418+ RoomDisposition .UNSTABLE ,
419+ EventFormatVersions .ROOM_V11_PLUS_MSC4291 ,
420+ StateResolutionVersions .V2 ,
421+ enforce_key_validity = True ,
422+ special_case_aliases_auth = False ,
423+ strict_canonicaljson = True ,
424+ limit_notifications_power_levels = True ,
425+ implicit_room_creator = True , # Used by MSC3820
426+ updated_redaction_rules = True , # Used by MSC3820
427+ restricted_join_rule = True ,
428+ restricted_join_rule_fix = True ,
429+ knock_join_rule = True ,
430+ msc3389_relation_redactions = False ,
431+ knock_restricted_join_rule = True ,
432+ enforce_int_power_levels = True ,
433+ msc3931_push_features = (),
434+ msc3757_enabled = False ,
435+ msc4291_room_ids_as_hashes = True ,
397436 )
398437
399438
@@ -413,6 +452,7 @@ class RoomVersions:
413452 RoomVersions .V11 ,
414453 RoomVersions .MSC3757v10 ,
415454 RoomVersions .MSC3757v11 ,
455+ RoomVersions .MSC4291v11 ,
416456 )
417457}
418458
0 commit comments