Release information for libcct


#43

0.15.0-rc5 (Jul 01, 2016)

WebRTC

  • Fixed conference connections only working if there was a negotiation confict.
  • Fix a bug where only receiving audio or video on Firefox would cause negotiation to get stuck in a loop.
  • Added AudioMixer media node.
  • Tweak HtmlSink to avoid replacing the source when it wasn’t really needed.
  • Do not throw an error when calling disconnect on a MediaNode that doesn’t have any connections.
  • Removed StreamBroadcaster since it’s no longer useful.
  • Fix bug in MediaSwitcher that would sometimes cause no media to be received in the beginning of a conference.
  • MediaBroadcaster now emits remoteSource events when peers are removed as well, but with a null source.
  • When stopped, ScreenSource no longer stops the audio source if it was given one.
  • cct.Recorder was moved to cct.media.Recorder.

Base API

  • user.lastActive is now correctly a Date instance, as documented.

Build

  • Add built-in support for Cordova WebRTC plugin.

Examples

  • Added link to local recording example.
  • Added AudioMixer example.
  • Moved conference example to experimental.

Documentation

  • Some tweaks to the guide, e.g. clearing up prerequisites and room alias vs name.
  • Explained the chunkSize argument to room.load a bit better.
  • Fix typo ‘users’ -> ‘user’ in docs for room.powerLevel.
  • Explained that client.setName and client.setAvatar may have a delayed result.

#44

0.15.0-rc6 (Jul 25, 2016)

Base API

  • Allow optional option object parameter properties to be null or undefined.
  • Deprecate use of single-argument version of EventEmitter’s .off() method.
  • userId is no longer required in authInfo when using it to authenticate a client.
  • Delayed the ‘connecting’ to ‘connected’ state change of the client until the initial synchronization has been handled.
  • Added room.conference.
  • client.fetchUser() now provides more useful errors.
  • Added a private API that allows for devtool inspection.

WebRTC

  • Removed cct.media and moved all exported properties to cct.
  • Fix conferences not being properly closed, and also fixed an error that happened after closing a conference.
  • Removed AudioOscillatorSource from the library, but added it to the AudioMixer example.
  • Added WebAudioSource and WebAudioFilter that are base classes for creating WebAudio-based media nodes.
  • Added AudioBufferSource, which can load and play audio files.
  • Changed AudioMeter to no longer have to be stopped manually.

Dom sharing

  • Set the initial readyState of DocumentRenderer to null.

#45

0.15.0-rc7 (Aug 03, 2016)

Base API

  • Removed internal use of single-argument emitter.off() which would cause an error.
  • Allow the presence status message to be empty.

WebRTC

  • MediaNodes can now be connected to and disconnected from HTML media elements.
  • ScreenSource, MediaTee, and DeviceSource no longer have sink properties. A warning is given if it is accessed.
  • Fix for conference not being able to restart a connection to a user.
  • ScreenSource.error is now always either set or null.
  • Fix HtmlSink cleanup to avoid using AdapterJS’s attachMediaStream if possible.
  • Fixed a bug in MediaSwitcher which made it not include oneself in the switching.
  • Fixed a bug in HtmlSink that would sometimes cause the sink to hang and display a black frame even though there was a backing stream.

Examples

  • Updated most examples to reflect API changes.

#46

0.15.0-rc10 (Aug 04, 2016)

WebRTC

  • Fixed a bug were incoming conferences would set up connections before being started.
  • Log an error when trying to attach or detach RtcComponents from a closed conference or call, instead of throwing a obscure error.
  • Removed unncessary internal HtmlSinks from media elements that had the sink property removed.
  • Fix warning about disconnect without target that was sometimes logged when switching the active speaker of a MediaSwitcher.

0.15.0-rc9 (Aug 04, 2016)

WebRTC

  • Fixed a bug were conference setup would do an extra signaling roundtrip.

0.15.0-rc8 (Aug 03, 2016)

WebRTC

  • Fix conferences only being able to restart connections after the old one has disconnected.

Examples

  • Updated multiClientConferenceCall to work with new API, but temporarily disabled voice switching.

#47

0.15.0 (Aug 19, 2016)

See 0.15.0-rc1 for a summary of what has changed since 0.14.0.

Base API

  • [API CHANGE] Removed listeners member from EventEmitter mixin.

WebRTC

  • Fixed a bug where removing streams would sometimes throw an error.
  • [API CHANGE] ScreenSource can no longer be given an audio source option. That functionality should be implemented using a StreamMerger instead.

Examples

Documentation

  • Added documentation for all the new features.
  • A new index of all exported classes replaced the old @cct namespace documentation.
  • All classes are now listed as classes, and mixins as mixins, no interfaces are listed.
  • Use <nullable> flag for optional parameters.
  • Added JsonTypes typedef in order to make it clear when values will be serialized to JSON.
  • Fixed a bug in the Log class example.
  • Removed ObservableDictionary interface.

#48

0.15.1 (Aug 29, 2016)

Build

  • The optional libraries are now directly in the root path of the published module, so they can be imported via e.g. @cct/libcct/dom-sharing.
  • Added a NodeJS compatible version, available at @cct/libcct/node.

Base API

  • Close any active conferences when leaving a room or logging out.

WebRTC

  • Added VideoFrameCapture that can capture frame from a video stream and export them as a data URI or Blob.
  • Throw a better error if the target to a connect() function is undefined.

Examples

  • Added an example in sandbox/ of how to work with multiple input devices.

#49

0.15.2 (Sep 02, 2016)

Build

  • No longer mangle the class names of exported classes, e.g. Room will be call just that, instead of t.

Base API

  • A trailing slash in the serverUrl passed to client.auth will now be ignored instead of causing the connection to fail.

WebRTC

  • getUserMedia errors that are emitted from DeviceSource and ScreenSource now always have the name property set to NotAllowedError if the user declined the request, regardless of WebRTC implementation and browser versions.
  • Fixed a bug that caused screen sharing in Firefox to fail due to invalid constraints.

#50

0.15.3 (Sep 19, 2016)

Base API

  • Fixed error when passing a statsUrl to cct.Client.

WebRTC

  • Fixed an error that caused data channels to fail when reporting WebRTC stats.

Build

  • When serving, c3-web-examples are included if they can be found, and the cct.js url is rewritten to the served version.

Documentation

  • Fix docs for client.createRoom, options.stats is optional.

#51

0.15.4 (Sep 23, 2016)

Build

  • Updated AdapterJS to version 0.13.4, which contains a hotfix for Safari 10.

WebRTC

  • Correctly use room id when reporting conference WebRTC stats.

#52

0.15.5 (Sep 28, 2016)

WebRTC

  • Added iceCandidateFilter to Client options, which makes it possible to set a filter for all ice candidates in all calls and conferences.
  • Fixed an issue in Firefox where removing a stream at the wrong time could cause an error.

#53

0.16.0 (Nov 07, 2016)

Base API

  • Added CctError base class, which will be expanded upon in future versions.
  • Fixed internal use of one-argument version of emitter.off(), causing a errors to be logged.
  • Use collapsed log groups of verbose log message arguments in Chrome.

WebRTC

  • Fixed IE 11 compatability.
  • Added TemasysScreenSource and automatically use it in ScreenSource when using Temasys WebRTC plugin with screen sharing support.
  • Update to Temasys’ AdapterJS 0.14.
  • Removed call.stop, and call.start will now always cause the call to be started or restarted.
  • Calls will now try to reconnect upon failure, both when the initial setup fails and if the connection fails mid-call.
  • Added call.connectionState as well as an 'connectionState' event, which describes what state the call’s connection is in.
  • Added call.error as changed the 'error' event, which after a connection failure will describe how the connection failed.
  • Call signaling errors are now emitted via a 'signalingError' events.
  • Errors are now logged if STUN or TURN servers are configured and the appropriate candidates aren’t gathered, making it easier to spot ICE misconfiguration.
  • getUserMedia errors are now normalized according to spec, meaning DeviceSource constraint end not found errors now behave in the same way in all browsers.
  • call.setLocalSource and call.getRemoteSource now work when the call is closed, but use dummy nodes.

Dom sharing

  • Fix broken argument checking of documentRenderer.setTarget.

Build

  • Fix external references, allowing dom-sharing.js and dom-source.js to be mixed with cct.js in a module environment.

#54

0.16.1 (Nov 07, 2016)

WebRTC

  • Added DummySource, which is a media source audio and/or video dummy streams.
  • Removed automatic dummy stream insertion in Call and Conference connections since it was very racy and ended up breaking many connections. For now applications who wish to have Chrome only receive media from Firefox needs to add a DummySource on the Chrome end.

#55

0.16.2 (Nov 08, 2016)

WebRTC

  • Fixed broken AdapterJS import that broke cct.webRtcReady().
  • ProxySource now uses a separate connection for each offer, and the connection can be cleared with a null offer.

#56

0.17.0-rc1 (Nov 20, 2016)

Base API

  • Fixed an EmitterMixin bug when both removing and adding listeners synchronously inside the callback for the same listener.
  • One-argument version of emitter.off() has been completely removed and will now throw an error.

WebRTC

  • FileRef and FileTransfer have gotten a major overhauls. Transfers are now a lot more reliable, they fail properly when there are errors, and the transmitted data is verified with checksums. The throughput and reliability has also been improved by making sure that the send buffer is being fed data at the rate that it is consumed. These changes do not break the API, but they do break file transfer compatability with older versions of the library.
  • FileRef got a new stream() method that returns a FileDownload instance, which allows the download to be streamed in chunks, making it possible to transfer very large files.
  • All exposed data channels are now wrapped in a DataChannelProxy object, which normalized the API across platforms. It also adds a few convenience features, like transparent JSON message serialization when sending objects.

Build

  • Added gulp serve:docs, which serves the docs from a separate endpoint, and removed docs from the existing serve.

#57

0.17.0-rc2 (Nov 20, 2016)

This version adds server-side stream relaying and recording, which is a feature that is only enabled in specific deployments.

Base API

  • Split client.createRoom options object into separate type.
  • Include event type when logging room events.
  • Added recording configuration to client.createRoom.
  • Documented CctError.
  • Added PowerLevelsReader.event and PowerLevelsReader.user, which can be used to look up the power levels for an event or user, taking default values into account.

WebRTC

  • Add StreamPublisher and StreamSubscriber components, which are used to publish and subscribe to relayed streams.
  • Documented call connectionState, error, signalingError events and properties.
  • Added docs for ConnectionSignalingError, ConnectionFailedError, ConnectionLostError, and PeerConnectionState.
  • Log lack of expected ICE candidates with warning level instead of error.

#58

0.17.0-rc3 (Nov 22, 2016)

WebRTC

  • Send and receive timeouts are scoped to the peer connection, so as long as at least one channel is sending or receiving the other channels won’t time out.
  • All event listeners are now cleared from a channel when it is closed, so there’s no need to do so manually. All the close event listeners will still be called.
  • DataChannel.waitForOpen() will now be instantly rejected if the channel is already closed.
  • DataChannel.send now serializes objects as JSON transparently, instead of only sendWithIterator and sendWithGenerator.
  • DataChannel.receiveWithGenerator now waits for the channel to open before starting.
  • DataChannel.sendWithIterator and DataChannel.sendWithGenerator now resolves to the value returned by the iterator or generator.
  • Internal file transfer implementation can now handle files of unknown size.

Dom sharing

  • Big improvements to the channel protocol for both sending the serialized DOM nodes and resources. Dom sharing resource transfers now use the same file transfer primitives as FileRef. This break backwards compatability with older versions, although the API is still instact.
  • Fixed a bug that caused the document renderer to fail to resume a reconnected session.
  • The resource cache on the renderer side is now persisted between call reconnects.
  • Better and more consistent logging, removed most of the duplicated log messages for resource fetching.
  • Fix whitespace being lost between some nodes when serializing the DOM.
  • Fix a resource channel allocation bug that caused closed channels to not always free up another slot for resource transfers.
  • Shortened the timeouts for unresponsive data channels.

Examples

  • Cleaned up document source demo.

#59

0.17.0-rc4 (Dec 01, 2016)

WebRTC

  • Fixed some instances of local ice candidates not being filtered properly.
  • Generate stats report for call errors and call signaling errors.

Documentation

  • Fixed guide styling.
  • Fixed all broken broken guide links and added a build step to verify that they are correct.

#60

0.17.0-rc5 (Dec 02, 2016)

WebRTC

  • Fix stats report for call errors, and include timestamp.

#61

0.17.0-rc6 (Dec 02, 2016)

WebRTC

  • Fix for null error states being reported.

#62

0.17.0 (Dec 11, 2016)

No change from 0.17.0-rc6.