summary refs log tree commit diff
path: root/synapse/handlers/room.py (follow)
Commit message (Expand)AuthorAgeFilesLines
* Bump black from 23.10.1 to 24.2.0 (#16936)dependabot[bot]2024-03-131-7/+9
* Correctly mention previous copyright (#16820)Erik Johnston2024-01-231-0/+1
* Allow room creation but not publishing to continue if room publication rules ...Shay2024-01-221-4/+2
* Fix linting (#16780)Erik Johnston2024-01-051-1/+11
* Simplify internal metadata class. (#16762)Erik Johnston2024-01-051-2/+8
* Merge remote-tracking branch 'gitlab/clokep/license-license' into new_developErik Johnston2023-12-131-10/+16
|\
| * Update license headersPatrick Cloke2023-11-211-10/+16
* | Fix upgrading a room without `events` field in power levels (#16725)David Robertson2023-12-051-1/+1
* | Ignore `encryption_enabled_by_default_for_room_type` for notices room (#16677)Mathieu Velten2023-11-281-1/+7
|/
* Convert simple_select_one_txn and simple_select_one to return tuples. (#16612)Patrick Cloke2023-11-091-3/+3
* Ensure local invited & knocking users leave before purge. (#16559)Patrick Cloke2023-10-271-3/+4
* Bump ruff from 0.0.290 to 0.0.292 (#16449)dependabot[bot]2023-10-091-1/+0
* Factor out `MultiWriter` token from `RoomStreamToken` (#16427)Erik Johnston2023-10-051-1/+1
* Add automatic purge after all users forget a room (#15488)Mathieu Velten2023-09-151-76/+101
* Allow modules to delete rooms. (#15997)reivilibre2023-09-061-1/+9
* Support room version 11 (#15912)Patrick Cloke2023-07-181-1/+1
* Check required power levels earlier in createRoom handler. (#15695)Grant McLean2023-06-071-14/+62
* Remove some unused `server_name` fields (#15723)Sean Quah2023-06-061-1/+0
* Move ThirdPartyEventRules into module_api/callbacks (#15535)Andrew Morgan2023-05-041-4/+6
* Move Spam Checker callbacks to a dedicated file (#15453)Andrew Morgan2023-04-181-3/+7
* Implement MSC2175: remove the creator field from create events. (#15394)Patrick Cloke2023-04-061-10/+12
* Add topic and name events to group of events that are batch persisted when cr...Shay2023-03-081-56/+52
* More speedups/fixes to creating batched events (#15195)Shay2023-03-071-1/+3
* Batch up storing state groups when creating new room (#14918)Shay2023-02-241-15/+22
* Bump black from 22.12.0 to 23.1.0 (#15103)dependabot[bot]2023-02-221-3/+5
* Remove unused `room_alias` field from `/createRoom` response (#15093)David Robertson2023-02-221-19/+19
* Faster joins: don't stall when a user joins during a fast join (#14606)Mathieu Velten2023-02-101-1/+1
* Return read-only collections from `@cached` methods (#13755)Sean Quah2023-02-101-1/+1
* Add final type hint to synapse.server. (#15035)Patrick Cloke2023-02-091-1/+1
* Add helper to parse an enum from query args & use it. (#14956)Patrick Cloke2023-02-011-4/+5
* Use StrCollection in place of Collection[str] in (most) handlers code. (#14922)Patrick Cloke2023-01-261-11/+3
* Make `handle_new_client_event` throws `PartialStateConflictError` (#14665)Mathieu Velten2022-12-151-38/+57
* Move `StateFilter` to `synapse.types` (#14668)David Robertson2022-12-121-1/+1
* Don't filter state in /context response (#14461)Erik Johnston2022-11-161-1/+1
* Correctly create power level event during initial room creation (#14361)Shay2022-11-071-2/+23
* Merge branch 'master' into developOlivier Wilkinson (reivilibre)2022-10-281-5/+11
|\
| * Fix room creation being rate limited too aggressively since Synapse v1.69.0. ...reivilibre2022-10-281-5/+11
* | Refactor MSC3030 `/timestamp_to_event` to move away from our snowflake pull f...Eric Eastwood2022-10-261-77/+49
* | Add initial power level event to batch of bulk persisted events when creating...Shay2022-10-211-29/+10
|/
* Prepatory work for adding power level event to batched events (#14214)Shay2022-10-181-3/+1
* Do not allow a None-limit on PaginationConfig. (#14146)Patrick Cloke2022-10-141-1/+1
* Fix performance regression in `get_users_in_room` (#13972)Erik Johnston2022-09-301-1/+3
* Persist CreateRoom events to DB in a batch (#13800)Shay2022-09-281-10/+11
* Prepatory work for batching events to send (#13487)Shay2022-09-281-46/+109
* Drop support for calling `/_matrix/client/v3/rooms/{roomId}/invite` without a...Jacek Kuśnierz2022-08-311-3/+17
* Optimize how we calculate `likely_domains` during backfill (#13575)Eric Eastwood2022-08-301-8/+6
* Directly lookup local membership instead of getting all members in a room fir...Eric Eastwood2022-08-241-2/+5
* `synapse.api.auth.Auth` cleanup: make permission-related methods use `Request...Quentin Gliech2022-08-221-2/+2
* Backfill remote event fetched by MSC3030 so we can paginate from it later (...Eric Eastwood2022-07-221-14/+45
* Optimise room creation event lookups part 2 (#13224)Nick Mills-Barrett2022-07-131-8/+37
* Reduce event lookups during room creation by passing known event IDs (#13210)Nick Mills-Barrett2022-07-111-2/+16
* Uniformize spam-checker API, part 5: expand other spam-checker callbacks to r...David Teller2022-07-111-2/+10
* Fix exception when using MSC3030 to look for remote federated events before r...Eric Eastwood2022-07-071-1/+5
* Decouple `synapse.api.auth_blocking.AuthBlocking` from `synapse.api.auth.Auth...Quentin Gliech2022-06-141-1/+2
* Uniformize spam-checker API, part 4: port other spam-checker callbacks to ret...David Teller2022-06-131-10/+10
* Remove redundant `room_version` param from `check_auth_rules_from_context`Richard van der Hoff2022-06-121-2/+1
* Remove `room_version` param from `validate_event_for_room_version`Richard van der Hoff2022-06-121-1/+1
* Reduce the amount of state we pull from the DB (#12811)Erik Johnston2022-06-061-1/+4
* Wait for lazy join to complete when getting current state (#12872)Erik Johnston2022-06-011-4/+9
* Remove remaining bits of groups code. (#12936)Patrick Cloke2022-06-011-1/+0
* Rename storage classes (#12913)Erik Johnston2022-05-311-4/+7
* Fix up `state_store` naming (#12871)Erik Johnston2022-05-251-2/+2
* Update EventContext `get_current_event_ids` and `get_prev_event_ids` to accep...Shay2022-05-201-1/+4
* Add a unit test for copying over arbitrary room types when upgrading a room (...Andrew Morgan2022-05-191-1/+1
* Implement MSC3818: copy room type on upgrade (#12786)Aminda Suomalainen2022-05-191-8/+8
* Give a meaningful error message when a client tries to create a room with an ...reivilibre2022-05-181-0/+15
* Add `StreamKeyType` class and replace string literals with constants (#12567)Andrew Morgan2022-05-161-4/+5
* Fix room upgrades creating an empty room when auth fails (#12696)Sean Quah2022-05-161-43/+82
* add default_power_level_content_override config option. (#12618)Andy Balaam2022-05-121-1/+15
* Convert stringy power levels to integers on room upgrade (#12657)David Robertson2022-05-071-6/+8
* Generate historic pagination token for `/messages` when no `?from` token prov...Eric Eastwood2022-04-061-2/+2
* Refactor and convert `Linearizer` to async (#12357)Sean Quah2022-04-051-1/+1
* Default to `private` room visibility rather than `public` when a client does ...reivilibre2022-04-011-1/+3
* Move get_bundled_aggregations to relations handler. (#12237)Patrick Cloke2022-03-181-2/+3
* Add third_party module callbacks to check if a user can delete a room and dea...Will Hunt2022-03-091-0/+8
* Remove `HomeServer.get_datastore()` (#12031)Richard van der Hoff2022-02-231-5/+5
* Remove deprecated user_may_create_room_with_invites callback (#11950)Brendan Abolivier2022-02-111-5/+0
* Improvements to bundling aggregations. (#11815)Patrick Cloke2022-01-261-36/+41
* Include whether the requesting user has participated in a thread. (#11577)Patrick Cloke2022-01-181-3/+9
* Bundle aggregations outside of the serialization method. (#11612)Patrick Cloke2022-01-071-0/+10
* Make room creations denied by `user_may_create_room` cause an `M_FORBIDDEN` e...lukasdenk2022-01-061-2/+6
* Improve opentracing support for `ResponseCache` (#11607)Richard van der Hoff2021-12-201-1/+1
* Fix 'delete room' admin api to work on incomplete rooms (#11523)Richard van der Hoff2021-12-071-14/+7
* Add MSC3030 experimental client and federation API endpoints to get the close...Eric Eastwood2021-12-021-0/+144
* Fix checking whether a room can be published on creation. (#11392)Patrick Cloke2021-11-191-1/+4
* Convert delete room admin API to async endpoint (#11223)Dirk Klimpel2021-11-121-2/+11
* Allow admins to proactively block rooms (#11228)David Robertson2021-11-091-11/+40
* Support filtering by relations per MSC3440 (#11236)Patrick Cloke2021-11-091-3/+5
* Add remaining type hints to `synapse.events`. (#11098)Patrick Cloke2021-11-021-1/+1
* Refactor `Filter` to handle fields according to data being filtered. (#11194)Patrick Cloke2021-10-271-1/+1
* Don't set new room alias before potential 403 (#10930)AndrewFerr2021-10-251-9/+9
* Add type hints to synapse.events.*. (#11066)Patrick Cloke2021-10-131-2/+20
* Remove the deprecated BaseHandler. (#11005)Patrick Cloke2021-10-081-7/+8
* Add a spamchecker callback to allow or deny room joins (#10910)Brendan Abolivier2021-10-061-0/+2
* Split `event_auth.check` into two parts (#10940)Richard van der Hoff2021-09-291-2/+4
* Use direct references for configuration variables (part 6). (#10916)Patrick Cloke2021-09-291-1/+1
* Use `RoomVersion` objects (#10934)Richard van der Hoff2021-09-291-2/+2
* Add a spamchecker callback to allow or deny room creation based on invites (#...Brendan Abolivier2021-09-241-4/+10
* Use direct references for configuration variables (part 5). (#10897)Patrick Cloke2021-09-241-3/+5
* Remove unnecessary parentheses around tuples returned from methods (#10889)Andrew Morgan2021-09-231-1/+1
* Add type hints for event streams. (#10856)Patrick Cloke2021-09-211-4/+14
* Require type hints in the handlers module. (#10831)Patrick Cloke2021-09-201-9/+7
* Handle room upgrades for spaces (#10774)Patrick Cloke2021-09-101-2/+17
* Add a constant for m.federate. (#10775)Patrick Cloke2021-09-081-2/+2
* Move `maybe_kick_guest_users` out of `BaseHandler` (#10744)Richard van der Hoff2021-09-061-1/+4
* Raise an error if an unknown preset is used to create a room. (#10738)Patrick Cloke2021-09-031-1/+6
* Make historical events discoverable from backfill for servers without any scr...Eric Eastwood2021-07-281-0/+1
* Port the ThirdPartyEventRules module interface to the new generic interface (...Brendan Abolivier2021-07-201-7/+3
* Use inline type hints in `handlers/` and `rest/`. (#10382)Jonathan de Jong2021-07-161-8/+8
* Move methods involving event authentication to EventAuthHandler. (#10268)Patrick Cloke2021-07-011-1/+2
* Correctly ratelimit invites when creating a room (#9968)Brendan Abolivier2021-05-121-7/+20
* Use get_current_users_in_room from store and not StateHandler (#9910)Erik Johnston2021-05-051-1/+1
* Remove redundant "coding: utf-8" lines (#9786)Jonathan de Jong2021-04-141-1/+0
* Add ResponseCache tests. (#9458)Jonathan de Jong2021-03-081-1/+1
* Update black, and run auto formatting over the codebase (#9381)Eric Eastwood2021-02-161-7/+22
* Handle missing data in power levels events during room upgrade. (#9395)Patrick Cloke2021-02-161-5/+8
* Fix some typos.Patrick Cloke2021-02-121-1/+1
* Merge pull request #9150 from Yoric/develop-contextDavid Teller2021-02-081-5/+16
|\
| * FIXUP: linterDavid Teller2021-01-281-1/+1
| * FIXUP: Making get_event_context a bit more paranoidDavid Teller2021-01-281-2/+8
| * FIXUP: Removing awaitableDavid Teller2021-01-281-3/+3
| * FIXUP: Don't filter events at all for admin/v1/rooms/.../context/...David Teller2021-01-281-6/+4
| * New API /_synapse/admin/rooms/{roomId}/context/{eventId}David Teller2021-01-281-2/+9
* | Ratelimit invites by room and target user (#9258)Erik Johnston2021-01-291-0/+7
|/
* Support icons for Identity Providers (#9154)Richard van der Hoff2021-01-201-1/+1
* Implement MSC2176: Updated redaction rules (#8984)Patrick Cloke2021-01-051-1/+1
* Do not assume that the contents dictionary includes history_visibility. (#8945)Patrick Cloke2020-12-161-3/+4
* Allow spam-checker modules to be provide async methods. (#8890)David Teller2020-12-111-2/+2
* Don't ratelimit autojoining of rooms (#8921)Erik Johnston2020-12-111-1/+4
* Add admin API for logging in as a user (#8617)Erik Johnston2020-11-171-3/+7
* Optimise createRoom with multiple invites (#8559)Richard van der Hoff2020-10-291-11/+18
* Fix typos and spelling errors. (#8639)Patrick Cloke2020-10-231-1/+1
* Remove redundant `token_id` parameter to create_eventRichard van der Hoff2020-10-131-1/+0
* Add type hints to response cache. (#8507)Patrick Cloke2020-10-091-1/+1
* Remove the deprecated Handlers object (#8494)Patrick Cloke2020-10-091-1/+1
* kill off `send_nonmember_event`Richard van der Hoff2020-10-051-2/+2
* pull up event.sender assertionRichard van der Hoff2020-10-051-0/+1
* Allow ThirdPartyEventRules modules to manipulate public room state (#8292)Andrew Morgan2020-10-051-0/+9
* Enable mypy checking for unreachable code and fix instances. (#8432)Patrick Cloke2020-10-011-2/+0
* Make token serializing/deserializing async (#8427)Erik Johnston2020-09-301-3/+5
* Various clean ups to room stream tokens. (#8423)Erik Johnston2020-09-291-2/+2
* Simplify super() calls to Python 3 syntax. (#8344)Patrick Cloke2020-09-181-1/+1
* Add experimental support for sharding event persister. Again. (#8294)Erik Johnston2020-09-141-5/+9
* Make `StreamToken.room_key` be a `RoomStreamToken` instance. (#8281)Erik Johnston2020-09-111-8/+7
* Stop sub-classing object (#8249)Patrick Cloke2020-09-041-3/+3
* Revert "Add experimental support for sharding event persister. (#8170)" (#8242)Brendan Abolivier2020-09-041-9/+5
* Add experimental support for sharding event persister. (#8170)Erik Johnston2020-09-021-5/+9
* Convert state and stream stores and related code to async (#8194)Patrick Cloke2020-08-281-1/+1
* Define StateMap as immutable and add a MutableStateMap type. (#8183)Patrick Cloke2020-08-281-1/+2
* Convert simple_update* and simple_select* to async (#8173)Patrick Cloke2020-08-271-4/+2
* Stop shadow-banned users from sending non-member events. (#8142)Patrick Cloke2020-08-241-1/+18
* Stop shadow-banned users from sending invites. (#8095)Patrick Cloke2020-08-201-2/+14
* Add type hints to synapse.handlers.room (#8090)Erik Johnston2020-08-141-38/+66
* Convert streams to async. (#8014)Patrick Cloke2020-08-041-5/+5
* Fix up types and comments that refer to Deferreds. (#7945)Patrick Cloke2020-07-241-9/+4
* Add delete room admin endpoint (#7613)Dirk Klimpel2020-07-141-2/+206
* Replace all remaining six usage with native Python 3 equivalents (#7704)Dagfinn Ilmari Mannsåker2020-06-161-3/+1
* Replace iteritems/itervalues/iterkeys with native versions. (#7692)Patrick Cloke2020-06-151-3/+3
* Add option to enable encryption by default for new rooms (#7639)Andrew Morgan2020-06-101-27/+47
* Add option to move event persistence off master (#7517)Erik Johnston2020-05-221-0/+7
* Add ability to wait for replication streams (#7542)Erik Johnston2020-05-221-20/+45
* On upgrade room only send canonical alias once. (#7547)Erik Johnston2020-05-221-55/+60
* Convert the room handler to async/await. (#7396)Patrick Cloke2020-05-041-24/+18
* async/await is_server_admin (#7363)Andrew Morgan2020-05-011-63/+58
* Check on room creation if the user is allowed to publish the room to the room...PeerD2020-04-131-0/+7
* Default PL100 to enable encryption in a room (#7230)Andrew Morgan2020-04-091-0/+1
* Remove special casing of `m.room.aliases` events (#7034)Patrick Cloke2020-03-171-15/+1
* Clarify list/set/dict/tuple comprehensions and enforce via flake8 (#6957)Patrick Cloke2020-02-211-1/+1
* Do not send alias events when creating / upgrading a room (#6941)Patrick Cloke2020-02-201-23/+13
* Stop sending events when creating or deleting aliases (#6904)Patrick Cloke2020-02-181-5/+1
* Raise the default power levels for invites, tombstones and server acls (#6834)Andrew Morgan2020-02-171-1/+9
* Third party event rules Update (#6781)PeerD2020-02-061-1/+5
* Reduce amount of logging at INFO level. (#6862)Erik Johnston2020-02-061-5/+5
* Fix detecting unknown devices from remote encrypted events. (#6848)Erik Johnston2020-02-041-1/+1
* s/get_room_version/get_room_version_id/Richard van der Hoff2020-01-311-1/+1
* Set the PL for aliases events to 0.Richard van der Hoff2020-01-291-2/+15
* Factor out a `copy_power_levels_contents` methodRichard van der Hoff2020-01-291-12/+11
* Add `rooms.room_version` column (#6729)Erik Johnston2020-01-271-20/+32
* Add StateMap type alias (#6715)Erik Johnston2020-01-161-6/+18
* Fix some test failures when frozen_dicts are enabled (#6642)Richard van der Hoff2020-01-061-6/+9
* Fix power levels being incorrectly set in old and new rooms after a room upgr...Andrew Morgan2020-01-061-7/+10
* Change EventContext to use the Storage class (#6564)Erik Johnston2019-12-201-1/+1
* Merge release-v1.7.1 into developRichard van der Hoff2019-12-181-2/+5
|\
| * Incorporate reviewBrendan Abolivier2019-12-161-1/+1
| * Use the filtered version of an event when responding to /context requests for...Brendan Abolivier2019-12-161-1/+4
* | Remove unused `get_pagination_rows` methods. (#6557)Erik Johnston2019-12-171-12/+0
|/
* Merge branch 'develop' into babolivier/context_filtersBrendan Abolivier2019-12-041-5/+31
|\
| * Transfer power level state events on room upgrade (#6237)Andrew Morgan2019-12-021-5/+31
* | Incorporate reviewBrendan Abolivier2019-12-041-2/+1
* | Also filter state eventsBrendan Abolivier2019-11-061-1/+7
* | Only filter if a filter was providedBrendan Abolivier2019-11-051-4/+6
* | Update copyrightBrendan Abolivier2019-11-051-1/+2
* | Filter events_before and events_after in /context requestsBrendan Abolivier2019-11-051-2/+4
|/
* Depublish a room from the public rooms list when it is upgraded (#6232)Andrew Morgan2019-11-011-1/+7
* Update black to 19.10b0 (#6304)Amber Brown2019-11-011-14/+15
* Merge pull request #6294 from matrix-org/erikj/add_state_storageErik Johnston2019-10-311-2/+4
|\
| * Port to use state storageErik Johnston2019-10-301-2/+4
* | Remove usage of deprecated logger.warn method from codebase (#6271)Andrew Morgan2019-10-311-1/+1
|/
* Add domain validation when creating room with list of invitees (#6121)werner2912019-10-101-1/+3
* Use the v2 Identity Service API for lookups (MSC2134 + MSC2140) (#5976)Andrew Morgan2019-09-111-1/+3
* Remove double return statements (#5962)Andrew Morgan2019-09-031-1/+0
* Don't create broken room when power_level_content_override.users does not con...Michael Telatynski2019-08-151-1/+13
* Replace returnValue with return (#5736)Amber Brown2019-07-231-8/+8
* Prevent multiple upgrades on the same room at once (#5051)Andrew Morgan2019-06-251-51/+89
* Run Black. (#5482)Amber Brown2019-06-201-184/+111
* Add third party rules hook into create roomErik Johnston2019-06-171-1/+24
* Add config option for setting homeserver's default room version (#5223)Andrew Morgan2019-05-231-2/+7
* Add some limitations to alias creationBrendan Abolivier2019-05-021-1/+2
* Transfer related groups on room upgrade (#4990)Andrew Morgan2019-04-021-0/+1
* Collect room-version variations into one place (#4969)Richard van der Hoff2019-04-011-8/+3
* lintAndrew Morgan2019-02-181-1/+3
* Move member event processing and changelog fixAndrew Morgan2019-02-181-9/+7
* Membership events are done laterAndrew Morgan2019-02-181-12/+20
* Transfer bans on room upgradeAndrew Morgan2019-02-181-0/+14
* Transfer Server ACLs on room upgradeAndrew Morgan2019-02-111-0/+1
* New function for getting room's create eventAndrew Morgan2019-01-311-7/+1
* lintAndrew Morgan2019-01-311-2/+4
* Copy over non-federatable trait on room upgradeAndrew Morgan2019-01-301-0/+14
* Merge pull request #4482 from matrix-org/erikj/event_auth_room_versionErik Johnston2019-01-281-1/+4
|\
| * Pass through room version to event authErik Johnston2019-01-251-1/+4
* | Join logic covers both room creator and arbitrary usersAndrew Morgan2019-01-221-33/+0
* | tags, m.direct copying over correctlyAndrew Morgan2019-01-221-9/+13
* | Migrating dm and room tags work for migratorAndrew Morgan2019-01-221-2/+13
* | Prevent crash on user who doesn't have any direct roomsAndrew Morgan2019-01-221-1/+1
* | Preserve DM status of a room on upgradeAndrew Morgan2019-01-221-0/+19
* | Fix typoAndrew Morgan2019-01-221-2/+2
|/
* Migrate encryption state on room upgrade (#4411)Andrew Morgan2019-01-211-0/+1
* create support user (#4141)Neil Johnson2018-12-141-1/+1
* Merge pull request #4101 from matrix-org/rav/aliases_for_upgradesRichard van der Hoff2018-10-311-8/+112
|\
| * Avoid else clause on exception for clarityRichard van der Hoff2018-10-311-2/+1
| * Attempt to move room aliases on room upgradesRichard van der Hoff2018-10-311-8/+113
* | Log some bits about event creation (#4121)Richard van der Hoff2018-10-311-0/+4
|/
* Merge pull request #4100 from matrix-org/rav/room_upgrade_avatarRichard van der Hoff2018-10-291-1/+2
|\
| * Remember to copy the avatar on room upgradesRichard van der Hoff2018-10-261-1/+2
* | Better handling of odd PLs during room upgradesRichard van der Hoff2018-10-271-44/+81
|/
* optimise state copyingRichard van der Hoff2018-10-261-7/+5
* Address review commentsRichard van der Hoff2018-10-261-7/+9
* restrict PLs in old roomRichard van der Hoff2018-10-251-1/+43
* copy stateRichard van der Hoff2018-10-251-11/+26
* preserve PLsRichard van der Hoff2018-10-251-1/+7
* preserve room visibilityRichard van der Hoff2018-10-251-3/+5
* Basic initial support for room upgradesRichard van der Hoff2018-10-251-0/+121
* Allow power_level_content_override=None for _send_events_for_new_roomRichard van der Hoff2018-10-251-5/+6
* Make room_member_handler a member of RoomCreationHandlerRichard van der Hoff2018-10-251-6/+3
* Factor _generate_room_id out of create_roomRichard van der Hoff2018-10-251-22/+23
* Refactor state group lookup to reduce DB hits (#4011)Erik Johnston2018-10-251-10/+12
* Clean up room alias creationErik Johnston2018-10-191-2/+3
* block event creation and room creation on hitting resource limitsNeil Johnson2018-08-161-0/+4
* Don't expose default_room_version as config optRichard van der Hoff2018-08-071-1/+2
* Basic support for room versioningRichard van der Hoff2018-08-031-1/+26