- Drops support for EoL Ruby 2.6
- Adds helpers for accessing room state
- Fixes Client#sync_token usage
- Improves caching of state events in rooms
- Adds a bot subsystem + DSL
- An example can be found in the examples folder
- Adds additional useful helpers for Room and User
- Fixes Client.new_for_domain
- Improves the handling of MXIDs as strings
- Improves handling of caches for rooms
- Improves Client shutdown when using Client#start_listener_thread
- Improves account data handling, with caches on both Client and Room level
- Adds some multi-thread usage support to the API (create your API/client with
threadsafe: :multithread/true/false
) The API will currently default to running with multi-threaded requests. In case your application is single-threaded - or never performs requests from multiple threads - then you can setthreadsafe: true/false
to support connection reuse. - Changes room finding to ignore non-canonical aliases by default
- Improves room alias handling
- Improves Ruby 3.0+ support
- Improves debug output by supporting PP (Ruby pretty print) on all MatrixSdk objects
- Adds preliminary support for the Matrix v1.1
client/v3
API - Adds some support for knocking rooms
- Adds mutex synchronization on API requests to avoid some threading issues
- Fixes error on attempting to skip cache for certain requests (#19)
- Fixes inconsistency in MXID typing for the Client abstraction (#18 #20)
- Fixes missed autoloader entries for errors (#22)
- Fixes some potential issues arising from broken user-provided state data
- Adds support for matrix: URI's according to MSC2312
- Adds some basic support for detecting Spaces (MSC1772)
- Fixes sync against Synapse 1.38.0 missing empty fields
- Adds support for Ruby 3.0 (#15)
- Adds support for requests against the Synapse admin API
- Adds helper methods for checking and changing user power levels
- Adds a proper caching system for room data
- Fixes argument error in
#get_room_messages
- Removes unfinished and broken AS abstraction
- Adds direct message (1:1) room mapping to client abstraction
- Adds Api#get_room_event_context (#13)
- Improves support for JRuby
- Adds separate state event handler as Client#on_state_event
- Changes Client sync interval to by-default run at full speed
- Fixes state events being sent twice if included in both timeline and state of a sync
- Improves error reporting of broken 200 responses
- Improves event handlers for rooms, to not depend on a specific room object instance anymore
- Adds method for reading complete member lists for rooms, improves the CS spec adherence
- Adds test for state events
- Fixes state event handler for rooms not actually passing events
- Fixes Api#new_for_domain using a faulty URI in certain cases
- Fixes crash if state event content is null (#11)
- Fixes an uninitialized URI constant exception when requiring only the main library file
- Fixes the Api#get_pushrules method missing an ending slash in the request URI
- Fixes discovery code for client/server connections based on domain
- Adds unique query IDs as well as duration in API debug output, to make it easier to track long requests
- Finishes up MSC support, get sync over SSE working flawlessly
- Exposes the #listen_forever method in the client abstraction
- Fixes room access methods
- Adds code for handling non-final MSC's in protocols
- Currently implementing clients parts of MSC2018 for Sync over Server Sent Events
NB, this release includes backwards-incompatible changes;
-
Changes room state lookup to separate specific state lookups from full state retrieval. This will require changes in client code where
#get_room_state
is called to retrieve all state, as it now requires a state key. For retrieving full room state,#get_room_state_all
is now the method to use. -
Changes some advanced parameters to named parameters, ensure your code is updated if it makes use of them
-
Fixes SSL verification to actually verify certs (#9)
-
Adds multiple CS API endpoints
-
Adds
:room_id
key to all room events -
Adds
:self
as a valid option to the client abstraction's#get_user
method -
Separates homeserver part stringification for MXIDs
-
Exposes some previously private client abstraction methods (
#ensure_room
,#next_batch
) for easier bot usage -
Changes room abstraction member lookups to use
#get_room_joined_members
, reducing transferred data amounts -
Fixes debug print of methods that return arrays (e.g. CS
/room/{id}/state
)
- Adds error event to the client abstraction, for handling errors in the background listener
- Adds an
open_timeout
setter to the API - Fixes an overly aggressive filter for event handlers
- Adds the option to change the logger globally or per-object.
- Improves response handling to add accessors recursively
- Removes MatrixSdk extensions from the global scope,
if you've been using these in your own code you must now remember to
extend MatrixSdk::Extensions
in order for them to be available.
- Fixes mxc download URL generation
- Adds getters and setters for more specced room state
- Fixes handling of the timeout parameter for the sync endpoint (#7)
- Additionally also now allows for running sync with a nil timeout
- Cleans up the CS protocol implementation slightly, removing a mutation that's not supposed to be there
- Cleans up the gemspec slightly, no longer uses
git ls-files
- Add support for explicitly setting proxy config for API
- Fixes a faulty include which broke the single implemented S2S endpoint
- Replaces the room name handling with a cached lazy loading system
- The create_room method in the client abstraction now automatically stores the created room
- Adds more CS API endpoints, exposed as #get_joined_rooms, #get_public_rooms, and #username_available?
- Adds a method to the client abstraction to reload all joined rooms
- Adds a method to the client abstraction to get a list of all public rooms
- Adds avatar tracking to rooms in the client abstraction
- Adds lazy loading of join rules and guest access for rooms in the client abstraction
- Adds granular error classes like MatrixSdk::MatrixNotFoundError to make error handling easier
- Improves the CS API endpoint for room state retrieval
- Fixes an issue in the client abstraction where it would fail to load aliases if multiple HSes have applied aliases to a room
- Fixes an error in the room creation code
- Fixes a divergence from spec in the room message request
- Fixes a slight divergence from spec in the kick method
- Fixes a divergence from spec in the tags handling methods
- Improves testing and code coverage of existing code
- Fixes a series of minor bugs found during the writing of tests
- Adds code for handling member lazy load in the client abstraction, and activates it by default
- Adds methods to read device keys from users
- Adds basic methods for device handling
- Restructures the API code to separate protocol implementations
- Improves the domain discovery code to support all currently specced methods
- Improves performance in sync calls
- Started work on an application service prototype, not ready for use yet
- Testing has been written for large parts of the code
- Adds a parameter to the client abstraction to allow retrying syncs on timeouts
- Adds support for token-based login in the client abstraction
- Adds rudimentary username and password validation in the client abstraction
- Adds MXID validation in the client abstraction
- Adds a method to discover a homeserver address based on a domain.
- Supporting both SRV and .well-known lookups
- Adds methods from the r0.4.0 spec
- Adds support for version 3 event IDs
- Extends the connection exceptions with a specific timeout error
- Sets a series of filters in the simple client example to skip unhandled event
- Fixes an exception when null values end up in the body cleaner during debugging
- Fixes an error with CGI not being required correctly
-
Adds missing accessors for HTTP timeout
-
Adds methods for checking auth status to client API
-
Adds a wrapper class for API responses to ease use
-
Adds option (and defaults) to store login details on registration
-
Allows creating a MatrixSdk::Client off of an existing MatrixSdk::Api
-
Extends event handling
-
Fixes batch handling in sync
-
Fixes event handling in the sample
-
Removes unimplemented API methods to avoid confusion
-
Plenty of documentation work
- Fixes for multiple issues discovered after initial release
- Adds additional API methods
- Higher-level client API gets room and user abstractions
Initial release