Release information for libcct


#1

The latest release is 0.21.0


#4

0.4.0 (Oct 1, 2015)

  • Initial version

#5

0.4.1 (Oct 17, 2015)

WebRTC

  • Split MediaSourceMixin into StreamSourceMixin and MediaSourceMixin
  • Fixed bug when removing a media stream and instantly adding it back again

Widgets

  • Fixed infinite postMessage loop when widget is in top level page

Documentation

  • Switched to ink-docstrap with a slightly customized theme
  • Fixed various documentation glitches

Examples

  • Fixed examples so that they are in a mostly working state
  • Added simpleDynamicCall, with a very simple point-to-point call

#6

0.5.0 (Nov 6, 2015)

Base API

  • [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

WebRTC

  • [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.

Dom Sharing

  • [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.

Build

  • Use Karma directly instead of gulp-karma plugin
  • Wrapped build result in UMD fashion, supporting multiple different module systems

#7

0.5.1 (Dec 4, 2015)

Base API

  • [API CHANGE] Removed ‘auth’ event from client, status should be used instead

WebRTC

  • 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

Dom Sharing

  • 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

Build

  • 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

Documentation

  • 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

#8

0.6.0 (Dec 15, 2015)

Base API

  • [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 null, 'connecting', and 'connected'
  • 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 room.events
  • Updated and documented client.uploadMedia
  • room.load now properly emits an 'events' event each time a recursive load is completed
  • Added room.memberships which is a map of userId to membership

Build

  • Minimum and target synapse versions are now exposed through cct.version
  • Added .editorconfig

Documentation

  • Minor fixes for parseResourceUri and createRoomQuery
  • Added doc for client.logout
  • Added Membership typedef
  • Documented common pitfall with roomState.set

Examples

  • Use a consistent way to find the uri of the synapse server in all examples

#9

0.6.1 (Dec 29, 2015)

Base API

  • 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 client.setName
  • [minor api change] Room no longer emits event and 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.

WebRTC

  • Half-way big refactor of TwoWayCall, no longer uses BaseCallMixin, functionality should not have changed

Documentation

  • Added MatrixContentUri type with eplanaition
  • Added installation and contribution instructions to README

Build

  • Moved package into @cct scope
  • Changed published package files to only include minified files

#10

0.7.0 (Jan 11, 2016)

Base API

  • [API CHANGE] Client no longer emits room events.
  • Added PowerLevelsEdit and 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 and event:<type> events for all events emitted by any room.

WebRTC

  • 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.

Documentation

  • 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.

Build

  • Cache node modules in merge test script.
  • Fix widget scripts by including missing argCheck.js.

#11

0.7.1 (Jan 12, 2016)

Base API

  • Fill in missing power levels for old power level events, which fixes an internal argument check error.

#12

0.8.0 (Jan 18, 2016)

WebRTC

  • [API CHANGE] 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.

Documentation

  • Bumped target synapse version to 0.12.0.
  • Documented client event and event:<type> events.
  • Documented room property in room event struct.

#13

0.9.0 (Feb 3, 2016)

Base API

  • Added 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 <emitter>.off()
  • Actually set room property of room events, which was documented earlier.
  • Fixed an issue where a recursive room.load would frequently get stuck.
  • An AuthError is now thrown if trying to call client.getRoom or client.getRoomByAlias when 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 /sync API, no notable changes yet tough.

WebRTC

  • Added promise member to DeviceSource and 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 DataSource as a public constructor.
  • The objetc emitted from DynamicCall and TwoWayCall close and stop events now contains the call itself as a call property.
  • 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

  • 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 sandbox/.
  • Added registration page example.

Documentation

  • Improved and added some missing documentation for DynamicCall.
  • Updated incomplete or missing documentation for room events.
  • Documented RoomState events.

#14

0.10.0 (Feb 15, 2016)

Base API

  • Big refactor of event stream, room handling, and call handling. Now uses the new /sync API, which should bring a big speedup.
  • [API CHANGE] Renamed room.setVisibility and room.visibility to room.setJoinRule and 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 open or invite.
  • [minor api change] client.state will now be set to disconnected if the connection to the server is lost. The client will keep trying to connect with a backoff, and set the state back to connected if successfull.
  • 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 kicked, banned, and left are now detected correctly.
  • [minor api change] Room joins are now quicker and more robust, but don’t synchronize as many events in the room.
  • RoomQuery now emits an update event 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 toString to client.

WebRTC

  • 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 accept instead of having an intermediate representation. This will still work with most existing code since accept returns the call itself, just like it did in PendingCall. This applies to both DynamicCall and TwoWayCall.
  • [API CHANGE] Because of above change room.incomingDynamicCalls, room.activeTwoWayCall, and room.pendingTwoWayCall were removed. room.activeTwoWayCall was replaced by room.twoWayCall
  • Set autoplay attribute on video elements to fix playback on Android.

Examples

  • Add autoplay to video elements to fix playback on Android.
  • Added optional shared secret to registration example.

Documentation

  • Added full documentation for log module, cct.log.
  • Added documentation for twoWayCall.closed.

#15

0.10.1 (Feb 16, 2016)

Base API

  • 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.
  • Added isPastEvent property to room events. It will be set to false if the event is received after the first /sync or if the event is an old one that is loaded into a room.

WebRTC

  • 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.

#16

0.10.2 (Feb 17, 2016)

Base API

  • Added client.accoundData and room.accoundData members, which contain an AccountData instance 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.

#17

0.10.3 (Feb 22, 2016)

Base API

  • 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.
  • Added 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.
  • Added room.guestAccessRule allong with setter and events, and made it possible to set during room creation.
  • Make it possible to set initial power levels in client.createRoom.
  • 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.

WebRTC

  • Queue all get user media requests, which makes it easier to create multiple device sources in Firefox.
  • Fix null dereference error in DynamicCall

Documentation

  • Use latest version of DocStrap with a customer Ericsson theme.
  • Cleaned up documentation for client.createRoom.

Build

  • 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.

Examples

  • Moved call relay and dom sharing examples to new demo/ folder.

#18

0.11.0 (Feb 23, 2016)

Base API

  • [API CHANGE] removed emitter.eventProxy() and EventProxyRoot, since they were confusing and not really that useful.
  • [minor api change] Removed 'available' presence state.

WebRTC

  • [API CHANGE] renamed DynamicCall to Call, and all related methods, members, and events, e.g. room.startCall, room.calls, room.on('calls', ...).
  • [API CHANGE] removed TwoWayCall and all related methods, members and events.
  • [API CHANGE] removed call.type.
  • Added call.stopped, which is true if the call has not yet been started, was stopped, or disconnected.
  • [API CHANGE] removed call.accept and call.incoming, incoming calls are now stopped initially, so all calls to call.accept can be directly replaced by call.start.
  • 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.

Documentation

  • Added more comprehensive introduction to calls in the guide.
  • Fixed incorrect use of client.setStatus in the guide.
  • Fixed usage of old auth API in guide.
  • Correctly mark all call members as read only.

Examples

  • 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.

#19

0.11.1 (Feb 23, 2016)

Base API

  • 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.

Documentation

  • Fixed mistake in client.createRoom parameters, options.state.key should be options.state.stateKey.

#20

0.11.2 (Feb 24, 2016)

Base API

  • Fix event.oldContent never being set.

Examples

  • Improved look of video views in call examples
  • Cleaned up css and moved all styling to one file

WebRTC

  • Fix broken stats reporting request

#21

0.12.0 (Mar 14, 2016)

Base API

  • [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.

Documentation

  • Rewrote introduction to be more up to date, and handle more important topics.
  • Documented room 'memberships' event.

Examples

  • 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.

WebRTC

  • DataSource now emit events for local changes, but it never emits events if the value doesn’t change.

#22

0.12.1 (Mar 14, 2016)

Base API

  • 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.

Documentation

  • Fixed incorrect name for client.fetchRoomById.