The latest release is 0.21.0
0.4.0 (Oct 1, 2015)
- Initial version
0.4.1 (Oct 17, 2015)
- Split MediaSourceMixin into StreamSourceMixin and MediaSourceMixin
- Fixed bug when removing a media stream and instantly adding it back again
- Fixed infinite postMessage loop when widget is in top level page
- Switched to ink-docstrap with a slightly customized theme
- Fixed various documentation glitches
- Fixed examples so that they are in a mostly working state
- Added simpleDynamicCall, with a very simple point-to-point call
0.5.0 (Nov 6, 2015)
- [API CHANGE] Renamed “change” event on ObservableDictionary to “update”, more changes related to this coming soon.
- [API CHANGE] Log own events to a different category “own-events”
- Added warning when a listener leak is detected
- [New API] Added internal stats reporter that report media stats, data channel stats, and candidates. Enabled by passing the stats endpoint url via “statsUrl” to the Client configuration.
- [New API] Added objectURL property and event to stream sources.
- getRemoteSource now reports an empty and stopped source if the call is closed.
- Fixed error in browsers where some vendor prefixed symbols didn’t exist at all.
- Fixed incoming call not being properly cleared from room when accepted.
- Fixed issue with call setup when having an old offer.
- Avoid some errors in the media source handling when modifying call after it was closed.
- Stop each MediaStream track individually to be compatible with Chrome 47.
- [New API] Added reader configuration that enables/disables input event propagation, as well as cct-share-no-input-event and cct-share-input-event attributes.
- Keep active keep active element selected when applying mutations
- Fixed resource proxy by timing out unused data channels.
- Pass the event type, e.g. “input”, or “change”, to the custom change event handler as the 4th argument.
- Fixed a bug that caused unnecessary value update events to be sent when using listenToValueChanges.
- Use Karma directly instead of gulp-karma plugin
- Wrapped build result in UMD fashion, supporting multiple different module systems
0.5.1 (Dec 4, 2015)
- [API CHANGE] Removed ‘auth’ event from client, status should be used instead
- Changes to internal stats reporting, more info about candidate types
- Fixed inconsistent documentation for DeviceSource arguments
- Use urls instead of urls in iceServers configs
- Fix file sharing breaking if call is restarted
- API change / fix, DynamicCall now emits ‘stopped’ instead of ‘stop’, as documented
- Generate a new id every time a call is restarted
- Fixed a bug where attributes would be set to the string “null” instead of removed
- New internal API: added STATE_LOST event, which signals that there
was an interruption in the middle of the chain and the state needs to be reset
- Automatically recreate main data channel if it is closed, and send a STATE_LOST event
- Fixed cleanup of DocumentStreams when restarting calls
- Fixed invalid seqnum warning
- Improved reliability and cleanup of data channels
- More logging of data channels and input events
- Support older node versions buy using child_process.exec
- Added Chrome extension build, but no implementation
- Fix documentation build on Windows
- Examples now use absolute script paths and minified versions
- Applied Ericsson style to the documentation
- Removed README from the API reference
- Hide syntax highlighting links
- Minor fixes to links in the guide
- Added WIP call guides
- Link to external Promise documentation
0.6.0 (Dec 15, 2015)
- [API CHANGE] Removed all authentication related methods frmo client, keeping only client.auth which always takes an AuthInfo object
[API CHANGE] changed possible client states to
- Added new Auth class with static methods for authentication
- Registration now supports shared secret
- Added argument checking throughout the library, most invalid args will now throw type errors
[API CHANGE] removed history and historyForKey from room state objects, since they were really just duplicates of
- Updated and documented
room.loadnow properly emits an
'events'event each time a recursive load is completed
room.membershipswhich is a map of userId to membership
- Minimum and target synapse versions are now exposed through
- Added .editorconfig
- Minor fixes for parseResourceUri and createRoomQuery
- Added doc for
- Added Membership typedef
- Documented common pitfall with
- Use a consistent way to find the uri of the synapse server in all examples
0.6.1 (Dec 29, 2015)
- Added Auth.resetPasswordWithPassword
- Added client.setAvatar, which can be passed either a Matrix content uri or an ImageResource
[minor api change] Throw AuthError directly when passing invalid arguments to
[minor api change] Room no longer emits
event:<type>events for the initial events that are loaded with the room.
- Fix a bug where events with the same id would be added twice to the list of room events.
- Half-way big refactor of TwoWayCall, no longer uses BaseCallMixin, functionality should not have changed
- Added MatrixContentUri type with eplanaition
- Added installation and contribution instructions to README
- Moved package into @cct scope
- Changed published package files to only include minified files
0.7.0 (Jan 11, 2016)
[API CHANGE] Client no longer emits
PowerLevelsReader, user to interact with power levels in a room.
- Added room.setPowerLevels, which can be used to set power levels from both a PowerLevelsEdit and PowerLevelsReader.
- Client now emits
event:<type>events for all events emitted by any room.
- TwoWayCall now supports renegotiation of the media stream.
- [API CHANGE] TwoWayCall again uses a pending call object.
- Documented PendingCall interface, which is now used by both call types.
- Completed refactoring of TwoWayCall and DynamicCall to not depend on the BaseCallMixin.
- Improved information in log messages of TwoWayCall and DynamicCall using a informative toString implementation.
- Log createOffer/Answer and setLocal/RemoteDescription.
- Fixed a bug which could case call setup to fail if a media block didn’t contain an mid attribute.
- Typedef ClientConnectionState, UserId, RoomId, RoomAlias, EventId, and EventType.
- Documented all power level functionality.
- Added documentation for lots of missing members, events, and methods of Client and Room.
- Cache node modules in merge test script.
- Fix widget scripts by including missing argCheck.js.
0.7.1 (Jan 12, 2016)
- Fill in missing power levels for old power level events, which fixes an internal argument check error.
0.8.0 (Jan 18, 2016)
DynamicCall#data()has been replaced by DataSource which functions in the same way, but is able to send and receive data asymmetrically from any number of DynamicCalls.
- Made all custom media sources and streams implement a common interface that is the point of interaction with the DynamicCall. The interface is currently used by DocumentSource, DocumentStream, DataSource, ProxySource, ProxySink.
- A common interface has also been added for connecting custom source streams to a sink.
- ProxySource now resets it’s internal state when setting a new offer, instead of when closed.
- If a peer connection fails to generate a media description this is now considered a call setup failure instead of being an unhandled error.
- Improved data, document, and file sharing unit tests.
- Bumped target synapse version to 0.12.0.
- Documented client
- Documented room property in room event struct.
0.9.0 (Feb 3, 2016)
room.historyVisibility, which makes it possible to configure access control for past room events.
- Lots of improvements to
client.createRoom, it is now possible to set the initial state of the room, as well as the content of the creation event and the room visibility. The method for ensuring that the entire room state has been received before resolving the returned promise has also been improved.
[API CHANGE] Removed zero-argument version of
- Actually set
roomproperty of room events, which was documented earlier.
- Fixed an issue where a recursive
room.loadwould frequently get stuck.
AuthErroris now thrown if trying to call
client.getRoomByAliaswhen not authenticated.
- Properly map all value properties in events and states to the single value, and the other way around.
- Refactoring started to support new
/syncAPI, no notable changes yet tough.
ScreenSource, which is a promise for the media stream.
- [API CHANGE] TwoWayCall now emits ‘closed’ event instead of end, to be consistent with DynamicCall.
- Properly expose
DataSourceas a public constructor.
- The objetc emitted from
stopevents now contains the call itself as a
- Fix for trying to initialize null stream.
- Increased slice size of all data sent over data channels to 64kB, as this is currently the upper limit for Chrome.
- Examples now ask for a homeserver URL to use, and all a top bar to view and reset the current homeserver URL.
- Moved some more exotic and unmaintained examples to
- Added registration page example.
- Improved and added some missing documentation for DynamicCall.
- Updated incomplete or missing documentation for room events.
0.10.0 (Feb 15, 2016)
- Big refactor of event stream, room handling, and call handling. Now uses the new
/syncAPI, which should bring a big speedup.
[API CHANGE] Renamed
room.joinRule. The only meaning of room visibility is whether or not it’s listed as a public room, and can only be set at room creation. The join rule determines how users are allowed to join the room, can also be set at room creation, and can have the values
[minor api change]
client.statewill now be set to
disconnectedif the connection to the server is lost. The client will keep trying to connect with a backoff, and set the state back to
- Rooms now emit
membership:<membership>events when the user’s own membership in that room changes. Own membership handling has also been improved, and memberships such as
leftare now detected correctly.
- [minor api change] Room joins are now quicker and more robust, but don’t synchronize as many events in the room.
RoomQuerynow emits an
updateevent for the first rooms that it processes as well, so it’s enough to just register a handler.
- [minor api change] When invited to a room, a subset of the room state is now synchronized, e.g. the room name.
- Room creation event is now forwarded to rooms.
- Now use r0 API everywhere except for authentication and media.
[minor api change] Added a more userful
- Extensive refactor of internal call handling. Calls are now handled by a central call registry instead of by each room. A few bugs where solves in the process and pending calls where removed.
- Fixed race condition where emitted candidates would arrive before the remote description and be ignored, and the description not containing the same candidates.
[API CHANGE] Remove
PendingCall, incoming calls now simply need to be started by calling
acceptinstead of having an intermediate representation. This will still work with most existing code since
acceptreturns the call itself, just like it did in
PendingCall. This applies to both
[API CHANGE] Because of above change
room.activeTwoWayCallwas replaced by
- Set autoplay attribute on video elements to fix playback on Android.
- Add autoplay to video elements to fix playback on Android.
- Added optional shared secret to registration example.
- Added full documentation for log module,
- Added documentation for
0.10.1 (Feb 16, 2016)
- Added documentation for AccountData, but there is no way to use it yet. It will be possible to use it to store user specific data to the client and rooms.
isPastEventproperty to room events. It will be set to false if the event is received after the first
/syncor if the event is an old one that is loaded into a room.
- Deprecated TwoWayCall, it will be removed in 0.11. It used to be used for compatability purposes, but those use-cases are no longer applicable.
- Lots of fixes to race conditions in the hangling of ice candidates. They should no longer be lost when received too early or with unlucky timing.
- No longer consider old events for call setup, this fixes a bug when reconnecting and loading in old events.
0.10.2 (Feb 17, 2016)
room.accoundDatamembers, which contain an
AccountDatainstance that can be used to synchronize data between devices for a single user.
- Include the recipient in all dynamic call requests, this hides some warnings when doing calls with multiple users in a room.
0.10.3 (Feb 22, 2016)
- All requests are now queued and retried if rate limited. Each room, client, and Auth object have a separate queue, so messages sent in a single room will be serialized, but not two messages sent in different rooms.
Auth.guest, which returns credentials for a guest user that can only join rooms where guest access has been explicitly allowed. Guest access has to be enabled on the home server for this to work.
room.guestAccessRuleallong with setter and events, and made it possible to set during room creation.
- Make it possible to set initial power levels in
- Fixed a bug where rooms could be added to a room query twice.
- Refactored internal request API.
- All requests have a random chance to be rate limited during testing.
- Queue all get user media requests, which makes it easier to create multiple device sources in Firefox.
- Fix null dereference error in DynamicCall
- Use latest version of DocStrap with a customer Ericsson theme.
- Cleaned up documentation for
- Updated all development dependencies to the latest version.
- Added new gulp tast,
gulp serve, which serves a single directory with links to demos, examples, sandbox, reference and guide.
- Moved call relay and dom sharing examples to new
0.11.0 (Feb 23, 2016)
[API CHANGE] removed
EventProxyRoot, since they were confusing and not really that useful.
[minor api change] Removed
[API CHANGE] renamed
Call, and all related methods, members, and events, e.g.
[API CHANGE] removed
TwoWayCalland all related methods, members and events.
[API CHANGE] removed
call.stopped, which is true if the call has not yet been started, was stopped, or disconnected.
[API CHANGE] removed
call.incoming, incoming calls are now stopped initially, so all calls to
call.acceptcan be directly replaced by
- The underlying call signaling protocol has changed, so 0.11.0 and beyond are not compatible with 0.10 and below.
- Complete refactoring of Call class to constructor + prototype style.
- All previous ids of calls are now remembered until some time after the call has been closed, and signaling messages to those ids no longer trigger warnings. This removes some warnings that were actually harmless.
- Ignore call setup errors that happen when or after a call is closed.
- Fixed error when trying to leave a room that one was invited to.
- Added more comprehensive introduction to calls in the guide.
- Fixed incorrect use of
client.setStatusin the guide.
- Fixed usage of old auth API in guide.
- Correctly mark all call members as read only.
- Added a common Ericsson style to all examples.
- Fixed outdated file sharing and data sharing examples.
- Renamed dynamic call examples, and removed two way call example.
0.11.1 (Feb 23, 2016)
- More robust solution for
client.createRoom. The order of the events can vary when creating a room, so we now pick out the ones we need to wait for and do not reasolve the room creation promise until those have been received.
- Fixed mistake in
0.11.2 (Feb 24, 2016)
event.oldContentnever being set.
- Improved look of video views in call examples
- Cleaned up css and moved all styling to one file
- Fix broken stats reporting request
0.12.0 (Mar 14, 2016)
- [API CHANGE] Removed loadPublicRooms, room visibility, and room.memberCount, this functionality might return later with a different API.
- [API CHANGE] Replaced room.aliases with room.alias, which is always a single alias or null.
- [API CHANGE] Renamed all asynchonous client methods to fetch*, and synchronous ones to get*, the current methods are fetchRoomByAlias, fetchRoomById, fetchUser, and getRoom.
[API CHANGE] Removed
'banned'room membership, a ban is now interpreted as a kick, and room.ban and room.banned have been removed.
- [API CHANGE] Renamed event.user to event.sender, and added warning when event.user is accessed.
- Room type has been moved to the room creation event, although for backwards compatability the old room type event is still read.
- Throw errors when some old methods are called, e.g. client.loadPublicRooms and client.getUser.
- Added user.localId, which is the user id without the hostname and ‘@’ prefix.
- Properly timeout sync polling, so that network disconnects are properly detected.
- Methods that take a user id now throw a TypeError if the user id doesn’t begin with a ‘@’ or contain a ‘:’.
- Fixed event.oldContent for membership events.
- Rewrote introduction to be more up to date, and handle more important topics.
- Documented room
- Added a common GUI for all examples with Ericsson header, examplanations, and a footer with expandable log.
- Improved styling of all examples with a common look and feel, and put most CSS in a common stylesheet.
- Added multiClientCall examples, which demonstrates calls between different tabs/browsers/computers.
- Added landing page with short summary and links to all examples.
- Removed some less-polished examples.
- Renamed simpleCall to localCall.
- Cleaned up and fixed state sharing example.
- DataSource now emit events for local changes, but it never emits events if the value doesn’t change.
0.12.1 (Mar 14, 2016)
- Fixed a bug that caused old rooms without a type to have their type set to undefined instead of null.
- Removed old internal way of waiting for rooms to be created.
- Fixed incorrect name for client.fetchRoomById.