The HTTP handlers in the components are split into reader and writer directories. This was a fairly arbitrary distinction, and turns out to not be so helpful. Most read APIs have a corresponding write API, and it is more natural for them to be in the same file rather than in different directories.
* Add config for trusted ID servers
* Add new error
* Implement check for trusted ID server
* Complete unfinished comment
* Make comment more explicit in the config file
* Use go standard errors in membership.go
* Use standard errors instead of JSON responses in threepid
* Doc errors
* Remove unused parameter
* Create package for handling 3pid processes and move invite processing there
* Add database table and functions for tracking 3PIDs
* Add structures and functions to interact with an ID server
* Add handlers for 3PIDs management
* Fix 3PIDs retrieval sending null if no 3PID known for a user
* Include medium in database requests and function calls
* Publish an association if it has been validated and requested
* Add TODO markers for tursted ID server check
* Use a structure instead of a map to represent a 3PID
* Structure for 3PID invite
* Generate invite from 3PID known by ID server
* Load user profile in a separate function
* Generate m.room.third_party_invite if the ID server doesn't know the 3PID
* Fix URLs to the spec in comments
* Move third-party invites to a separate package and doc' it
* Handle non-OK status codes on lookup
* Send display name to identity server when asking to store an invite
* Remove join response structure
* Change the way some variables are declared or passed as argument
* Use gomatrixserverlib.Base64String instead of the builtin base64 package
* Don't copy the public keys array
* Move events contents to common
* Basic database structure
* Complete database update
* Support visibility update and retrieval
* Add HTTP methods for visibility update and retrieval
* Add the database for the new component
* Add a listener for the new component
* Fix attribute update statements
* Create public rooms component
* Fix failing test
* Add roomserver consumer
* Fix a bug in aliases creation
* Add a check on type
* Implement public rooms directory
* Use auth API for visibility update
* Support filtering
* Add component to monolith
* Various fixes
* Fix computation of next public rooms batch
* Retrieve state events from the roomserver query API + avoid dupes on join
* Split update of string or boolean attribute in two separate functions
* Use event type to detect duplicate joins
* Improve the joined members counter computation
* Use event.RoomID()
* Implement membership endpoints
* Use FillBuilder when possible
* Fix typo in membership event content
* Fix state key invite membership events not being correctly set
* Set membership content to match the profile of the user in state_key
* Move event building and rename common function
* Doc getMembershipStateKey
* Check if user is local before lookin up their profile