Skip to content

Latest commit

 

History

History
1383 lines (812 loc) · 74.8 KB

CHANGELOG.md

File metadata and controls

1383 lines (812 loc) · 74.8 KB

Change Log

This contains only the most important and/or user-facing changes; for a full changelog, see the commit history.

2.0.4 (2024-05-03)

  • Fix invalid accessToken when using REST API Client in React Native #1730, #1749
  • Fix docstring for Channels.release method #1752

2.0.3 (2024-04-18)

  • Improve error message displayed when trying to use Ably.Realtime instance in the Vercel Edge runtime #1736
  • Fix to allow ErrorInfo export to be accessed as a named export in ESM and when using commonjs interop #1741
  • Fix ReferenceError: self is not defined error when running Jest tests in React Native using ably-js #1738
  • Fix httpMaxRetryDuration client option didn't actually limit max elapsed time for rest fallback host retries #1721
  • Fix default value for httpRequestTimeout client option was wrongly 15 seconds instead of expected 10 seconds #1721

2.0.2 (2024-04-08)

  • Fix an issue with realtime connections using the bun runtime #1716

2.0.1 (2024-03-25)

  • Fix Unable to resolve "ably" in React Native for ably-js v2.0.0 #1711
  • Fix TextEncoder/TextDecoder are not defined in React Native for ably-js v2.0.0 #1712

2.0.0 (2024-03-22)

The 2.0.0 release introduces a number of new features and QoL improvements, including a new way to remove bloat and reduce the bundle size of your ably-js client, first-class support for Promises, a more idiomatic approach to using ably-js' React Hooks, enhancements to TypeScript typings, and more.

Below is an overview of the major changes in this release.

Please refer to the ably-js v2 lib migration guide and React Hooks migration guide for the full details, including a list of all breaking changes and instructions on how to address them.

Bundle Size Reduction

The default bundle size for the web has been reduced by ~32% compared to v1 - from 234.11 KiB to 159.32 KiB. When calculated with gzip compression, the reduction is ~30%, from 82.54 KiB to 57.9 KiB.

Additionally, by utilizing the new modular variant of the library (see below) and JavaScript tree shaking, you can create your own minimal useful Realtime client and achieve a bundle size reduction of ~60.5% compared to v1 - from 234.11 KiB to 92.38 KiB (or ~66% for gzip: from 82.54 KiB to 28.18 KiB).

Modular variant of the library

An ESM variant of the library is now available for browsers (but not for Node.js) via import from ably/modular. This modular variant of the library supports tree shaking, allowing for a reduction in the Ably bundle size within your application and improving the user experience. It can also be used by Web Workers.

React Hooks changes

React Hooks, exported at ably/react, now require the new ChannelProvider component to define the channels you wish to use and the options for them. This addresses the complexities previously encountered with useChannel and usePresence hooks when attempting to dynamically change options for a channel and provides a more straightforward approach to set and manage these options.

The functionality of the usePresence hook has been split into two separate hooks: usePresence, which is now used only to enter presence, and usePresenceListener, which is used to listen for presence updates. These new hooks offer better control over the desired presence behavior in your React components.

First-class support for Promises

The callbacks API has been entirely removed, and the library now supports promises for all its asynchronous operations by default.

TypeScript typings

The Types namespace has been removed. All types it contained are now exported at the top level.

Browser and Web Worker bundles

  • The browser bundle now relies on the native Web Crypto API instead of CryptoJS. The ably/build/ably.noencryption bundle has been removed, as it is no longer necessary.
  • The browser bundle can now be directly used by Web Workers. The ably/build/ably-webworker bundle has been removed, as it is no longer necessary.

Supported platforms changes

  • Support for Internet Explorer has been dropped.
  • Support for Node.js versions lower than 16 has been dropped. The supported Node.js versions are now 16, 18, and 20.
  • The minimum supported versions for major browsers are: Chrome 58, Firefox 52, Edge 79, Safari 11, and Opera 45.
View merged Pull Requests

Breaking Changes

  • Add ChannelProvider component to React Hooks #1620, #1654
  • Add untyped stats API #1522
  • Add type definitions for key returned by generateRandomKey #1320
  • Add mandatory version param to Rest.request #1231
  • Change id field to be named ablyId in React Hooks #1676
  • Change usePresence hook to two different hooks: for entering presence and subscribing to presence updates #1674
  • Change naming for enum-like namespaces in type declarations and change meaning for public ChannelModes type #1601
  • Change publishing methods to accept a Message-shaped object #1515
  • Change Crypto.generateRandomKey API to use Promises #1351
  • Change fromEncoded() and fromEncodedArray() methods on Message and PresenceMessage to be async #1311
  • Remove XHRStreaming transport support #1645
  • Remove code that's supporting older platforms #1629, #1633, #1641
  • Remove recoveryKey in favour of createRecoveryKey() on Connection #1613
  • Remove any from stats() param type #1561
  • Remove the dedicated Web Worker bundle ably/build/ably-webworker and add support for using ably and ably/modular in Web Workers #1550
  • Remove false class exports in type declarations #1524
  • Remove the Types namespace #1518
  • Remove noencryption variant of the library #1500
  • Remove public callbacks API #1358
  • Remove CryptoJS library and replace it with the Web Crypto API in web bundle #1299, #1325, #1333
  • Remove ably-commonjs*.js files #1229
  • Remove deprecated APIs #1227
  • Remove deprecated fromEncoded* type declarations #1222
  • Remove deprecated ClientOptions parameters #1221
  • Remove the ClientOptions.log property and replace it with separate logLevel and logHandler properties #1216
  • Remove support for JSONP #1215
  • Fix whenState inconsistent behavior in Connection and RealtimeChannel #1640
  • Fix the type definition of Crypto.getDefaultParams #1352

Features

  • Add publish function to the useChannel hook #1658
  • Add logs to all HTTP activity #1581

Full Changelog

1.2.50 (2024-03-21)

  • Add new logging API to ClientOptions and add a deprecation warning for the old one #1671
  • Add ClientOptions.maxMessageSize to the public API #1678
  • Add a deprecation warning for the headers client option #1681
  • Improve deprecation log messages #1683, #1685
  • Handle 204 status code in PaginatedResource #1631
  • Fix typing and deprecation warning for Crypto.getDefaultParams() #1693

1.2.49 (2024-02-07)

  • [React-Hooks] usePresence unsubscribes all listeners on unmount and run Presence.leave even if connection has been terminated #1610
  • RealtimeChannels.get() with options parameter throws an exception when executed during the attaching state. #1609

1.2.48 (2023-11-20)

  • Enable 'derived' options in 'useChannel' hook (by @rustworthy) #1501
  • fix: use 'ably' as import path from react-hooks #1509

1.2.47 (2023-11-02)

  • fix(react): fix issue where useChannel would error upon router navigation or hmr #1478

1.2.46 (2023-10-24)

  • fix: avoid directly exporting Ably.ErrorInfo from promises.js #1463
  • fix(react): add missing id param for useStateErrors call to useChannelStateListener #1455
  • fix: allow RealtimePresence#leave to take PresenceMessage as argument #1466
  • deps: bump ws to 8.14.2 #1467

1.2.45 (2023-09-25)

  • remove AblyProvider options prop #1446
  • fix: throw descriptive error when callbacks used with react #1450

1.2.44 (2023-09-04)

  • Add new experimental react hooks and context provider #1433
  • Export the ErrorInfo class #1430

1.2.43 (2023-08-10)

  • Add REST APIs for batch publishing, batch presence, and token revocation #1410
  • Add support for presence message extras #1418

1.2.42 (2023-07-24)

  • Auth: remain connected upon failed authorize unless returning explicit 403 #1385
  • Make Utils#inspectError use toString for Error-like values #1391
  • docs: fix description of AuthOptions.token #1368

1.2.41 (2023-06-29)

  • add ChannelStateChange.hasBacklog and return state change to attach promise/callback #1347
  • fix a bug where host fallback was initially skipped after falling back to the base transport #1357

1.2.40 (2023-05-26)

This release adds a new experimental channels.getDerived method which allows you to create custom realtime data feeds by selectively subscribing to receive only part of the data from the channel. See the announcement post for more information.

  • add experimental API to get derived channel #1306
  • make Message.connectionId optional #1305
  • fix misleading stack traces for early-intialised connection errors #1206
  • remove ProtocolMessage.connectionKey #1218
  • fix broken promisification of Presence.history signature #1224
  • fix issue with query string encoding in react-native websockets #1286
  • fix nodejs encryption of ArrayBuffer plaintext #1280

1.2.39 (2023-04-13)

  • bump got dependency to ^11.8.5 #1189

1.2.38 (2023-04-04)

  • retry connection attempt if 'online' event received whilst connecting #1171
  • populate invalid state ErrorInfo.cause with the current errorReason, if set #1169
  • fix: align exposed type of ErrorInfo with internal type, extending Error #1142
  • fix: avoid global scope TextEncoder access #1157

1.2.37 (2023-02-27)

  • make ErrorInfo extend Error #1129
  • improve error message for clientId mismatch from user auth provider #1128
  • fix: don't send credentials in webworker FetchInit #1132

1.2.36 (2023-02-10)

  • fix(Node/http): prevent got from using its own retry mechanism #1122
  • deps: update http-cache-semantics dependency #1123

1.2.35 (2023-01-30)

  • Implement ably-js protocol v2 #1110
  • Add global HTTP agent pool (fixes memory leak when creating several rest clients) #1113

1.2.34 (2022-12-13)

  • fix incorrect sync event signature in base Transport class (fixes an issue with react-native realtime connections) #1094

1.2.33 (2022-11-11)

  • Fix some callback typings #1075

1.2.32 (2022-11-09)

  • fix: add EventEmitter.off signature with no args #1073

1.2.31 (2022-11-08)

In the latest release of ably-js, we’ve added jsdoc comments for the public methods and properties provided by the SDK so you can quickly access the descriptions directly in your code editor using Intelligent code completion features like Intellisense in VSCode.

We have also implemented the fetch API as a fallback HTTP transport so that ably-js is now fully functional in a service worker context.

How do I give feedback? This docs update and further planned changes are based on feedback from customers like you. So if you’d like to share any other requests or feedback, please reach out to us and help us make Ably better for everyone.

  • Add JSDoc annotations to ably.d.ts #897
  • Implement fetch as fallback if XHR and JSONP unsupported #1019
  • [EDX-158] Generate docs with TypeDoc and upload to sdk.ably.com #1017
  • [EDX-149] Add canonical docstring comments #1026
  • [EDX-207] Add intro blurb to generated documentation #1055
  • Add missing/undocumented docstrings #1064
  • fix: stop mutating Defaults.agent on client init #1068

1.2.30 (2022-10-05)

  • Add connectivityCheckUrl and disableConnectivityCheck client options #1051
  • Fix EventEmitter.once when using array with promises #1046
  • Allow null arguments in authCallback #1052
  • Move channel state to attaching on new transport reattach when using promises #1053

1.2.29 (2022-08-08)

  • Fix upgrade bug that could lead to an indefinitely sync-pending transport #1041
  • Always allow event queueing while connecting #1039

1.2.28 (2022-07-28)

  • Add clientId to MessageFilter #1032
  • Transports: implement timeouts in tryConnect() #1035
  • Only log connectionSerial mismatch from channel messages #1036

1.2.27 (2022-07-06)

  • Add filtered subscription type to RealtimeChannel #1003

1.2.26 (2022-06-30)

  • Improve global object fallback logic (fixes an issue when using the library in some service worker contexts) #1016
  • Add backoff and jitter to channel and connection retry strategies #1008
  • Bump versions for some underlying dependencies #1010
  • Fix a bug with xhr transports for react-native #1007

1.2.25 (2022-06-10)

  • Fix a bug in 1.2.23 where Message and PresenceMessage were removed from the public API #1004

1.2.24 (2022-06-09)

  • Revert a bug in 1.2.23 where the Crypto interface was removed from the public API
  • Revert change to package.json typings field
  • Remove sourcemap links from CDN uploads

1.2.23 (2022-06-09)

  • Add Channel.status method to get channel lifecycle status #985
  • Fix bug in compatibility with Salesforce Lightning Components #993
  • Revert uploading sourcemaps to the CDN #998

1.2.22 (2022-05-18)

  • Fix bug in RealtimeChannel.subscribe promisify when second argument is undefined #984
  • Update deprecated NativeScript application settings import #980

1.2.21 (2022-05-05)

  • Make Connection.id and Connection.key optional #952
  • Remove support for MozWebSocket #954
  • Fix a bug with promisified EventEmitter.whenState #962
  • Update ably.com/documentation urls #964
  • Remove console.log statements from msgpack encoder #966
  • Fix nativescript bundle #971

1.2.20 (2022-04-06)

  • Fix error where calling realtime presence update caused call stack errors #949
  • Fix an issue where Ably-Agent headers were encoded incorrectly #950

1.2.19 (2022-04-05)

  • Fix error where some promisified REST methods caused call stack errors #943
  • Fix wasClean implementation for reactnative websocket transport #946
  • Ensure that Ably-Agent is always URI encoded #947

1.2.18 (2022-03-31)

  • Convert library source code to TypeScript #762
  • Add realtimeRequestTimeout to ClientOptions type #934
  • Override toJSON for HttpPaginatedResponse #913
  • Throw ErrorInfo when invalid key supplied #912
  • Remove ErrorReporter #908
  • Fix nonsensical error in RealtimePresence.leaveClient when channel state is invalid #911

1.2.17 (2022-01-14)

  • Remove NPM preinstall script (this was breaking NPM installs when outside a git repository) #876

1.2.16 (2022-01-14)

  • Fix bug where channel rewind would ignore messages after reattaching #873

1.2.15 (2021-11-22)

  • Replace deprecated request HTTP module with got #846
  • Improve checks for XHRRequest error responses #804

1.2.14 (2021-09-22)

  • Add TypeScript support for REST publish parameters #785
  • Fix a bug with parsing of authUrl responses #793

1.2.13 (2021-08-03)

  • Implement RTL5b and RTL5j cases for detaching from channels in suspended/failed states #784

1.2.12 (2021-08-02)

  • Fix channel names as object prototype keys #777
  • Add .once method to EventEmitter #779
  • Bump ws from 5.2.2 to 5.2.3 #781
  • Implement Ably-Agent connection param for ably-js and NodeJS versions #740

1.2.11 (2021-07-20)

  • Bind setImmediate to global object in browsers #774

1.2.10 (2021-05-28)

  • Add Playwright tests #738
  • Improve Mocha tests #739
  • Bump grunt from 0.4.5 to 1.3.0 #744
  • Add initial typescript toolchain #745
  • Update react native usage instructions in README #746
  • Webworker support #756
  • Use setImmediate if available in browser #757
  • Add sourcemap stuff #758
  • ably.io -> ably.com #759
  • Improve api typings #761

1.2.9 (2021-04-12)

  • Fix bugs in disconnection error filtering #734
  • Replace fury badges with shields.io #716

1.2.8 (2021-03-26)

  • Fix imports for callbacks.js, promises.js, typings. #730
  • Fix request typings #731
  • Deprecate bower #733

1.2.7 (2021-03-25)

  • Fix faulty import of JSONP transport to React Native and NativeScript #726
  • Comet: Raise preconnect event if the server responds with a protocol message #719

1.2.6 (2021-03-04)

  • Move null-loader to dev dependencies (note: this release will only affect NPM users so will not be available on cdn.ably.io) #718

1.2.5 (2020-11-04)

  • Convert library to ES6 modules #704

1.2.4 (2020-11-04)

  • Typings: all ChannelOptions are now optional and other minor improvements #695

1.2.3 (2020-09-30)

  • Use environment-specific fallback hosts by default unless overridden (#682)
  • Rest: use channels.all not channels.attached; "attached" made no sense for rest channels and was never documented
  • Add state check for channels.release() to prevent putting the lib into an inconsistent state

1.2.2 (2020-09-03)

  • Auth: fail connection immediately if auth server returns a 403 as a result of an authorize() call or online reauth

1.2.1 (2020-06-09)

Oops! 😊 Fixes an oversight in our 1.2.0 release.

We had specified that we would make idempotentRestPublishing default to true from version 1.2 (ClientOptions) but hadn't followed through with this. That is fixed in this release with #665 (SimonWoolf).

1.2 (2020-06-08)

Adds the capability to subscribe to a channel in delta mode.

Subscribing to a channel in delta mode enables delta compression. This is a way for a client to subscribe to a channel so that message payloads sent contain only the difference (ie the delta) between the present message and the previous message on the channel.

Full Changelog


1.1.25 (2020-05-19)

  • EventEmitter.whenState: fix for promises #630
  • Typings: re-export Types namespace in 'ably/promises' sub-package #634
  • Support promises with PaginatedResult#next() etc. #635
  • Reduced npm package size #646
  • Update msgpack dependency to version explicitly Apache-2.0 licensed #650

1.1.24 (2020-01-24)

  • Minor bug fix to comet transport
  • Update ably-common submodule for errors.json parsing fix

1.1.23 (2020-01-08)

  • Disable bundling for messages with user-set ids

1.1.22 (2019-10-28)

  • Add some missing ClientOptions to typescript type definition file

1.1.21 (2019-10-22)

  • BufferUtils overhaul (consistent return type on browsers (ArrayBuffer vs WordArray), hexDecode, support typed arrays, and more
  • Add error reporting mechanism

1.1.20 (2019-10-05)

  • Fix channel.history with promises bug when using the realtime client
  • Auth no way to renew warning: upgrade to error

1.1.19 (2019-10-03)

  • Fix EventEmitter.once typings #610

1.1.18 (2019-09-18)

  • Fix typings for channel.presence.unsubscribe #608
  • Tweak connection code for generic connection issues (80000 -> 80003)
  • Make promisified rest.request() easier to use correctly

1.1.17 (2019-09-03)

  • Fix TS1036 tslint warning when importing ably/promises
  • Add delta generation stats infrastructure

1.1.16 (2019-07-24)

  • Fix regression for browser commonjs distribution
  • Allow non-ascii clientIds for REST requests

1.1.15 (2019-07-02)

  • Fix type definition for realtime presence.get() with the Promise API

1.1.14 (2019-06-25)

  • Add check for double-encoded tokens
  • Reinstate message suppression based on connectionSerial to ensure no duplicate messages during transport upgrades
  • Support running in a webworker context that uses self as the global object (thanks to Clifton Hensley for that contribution!)

1.1.13 (2019-06-19)

  • Log the content-type of an authUrl response

1.1.12 (2019-06-10)

  • Only ever deduplicate messages on the same channel
  • Support uncompressed data stats

1.1.11 (2019-05-22)

  • Allow token strings (including JWT tokens) up to 128kB

1.1.10 (2019-05-16)

  • Fix channel#unsubscribe() throwing an error if called on a failed channel (also removes the optional callback argument to subscribe(), which was undocumented and almost useless anyway since it was only called in the event of a failed channel)

1.1.9 (2019-05-08)

  • Auth: fix tokenParams missing from token requests in the event that no authParams are specified

1.1.8 (2019-04-30)

  • Auth: if you do multiple concurrent authorize()s, make sure the token from last one wins
  • If fallback hosts are enabled and a connection is abruptly disconnected with a 5xx error, retry immediately to a fallback rather than waiting the usual 15s disconnectedRetryTimeout

1.1.7 (2019-03-27)

  • Catch common failure mode with poorly-implemented authCallback
  • Fix typings of TokenParams.capability

1.1.6 (2019-03-19)

  • Improve handling of responso to active traffic management placement constraint error for smooth cluster handover
  • Normalise statuscode for 40170-failure to obtain token from client auth callback to 401 per spec

1.1.5 (2019-02-27)

  • Only autoremove an expired token if we know the local offset from server time
  • Fix tokenParams not being correctly mixed in to authParams in some circumstances

1.1.4 (2019-02-25)

  • Support PUSH, PATCH, and DELETE in Rest#request()
  • Support arbitrary params for REST publishes
  • Fix scope leak issue when using the minified version of the library

1.1.3 (2019-02-11)

  • Rewrite typescript typings to satisfy tsc --strict
  • PNRG changes needed for newer versions of react-native

1.1 (2019-02-06)

  • Promises support
  • Admin api for push notifications
  • Many minor bugfixes

1.0.23 (2019-01-21)

  • Only make a single token request at a time
  • Fix crash with react-native on some Android versions when making REST requests
  • Tweak fallback host logic for connected realtime clients making REST requests

1.0.21 (2019-01-07)

  • Reinstate 'stop clientId forcing token auth' change (#542)
  • Prioritise a tokenParam over an authParam of the same name
  • Fix behaviour with multiple concurrent pings in-flight
  • Use console.warn (if present) when logging at ERROR level
  • Implement client-side-enforced maxMessageSize limit and bundling constraints
  • Deduce streaming response from lack of content-length header even if no transfer-encoding

1.0.20 (2018-12-02)

  • Temporarily back out of clientId change due to CORS issue

1.0.19 (2018-11-22)

  • Expose rest#setLog method to change log level or handler at runtime
  • Allow jsonp for REST requests even if allowComet is false
  • Expose Rest.Message for node, for consistency with Realtime.Message
  • Add updateOnAttached channel option to force 'update' event even if resumed is true
  • Stop a clientId from forcing token auth (#542)
  • Fix package bloat through mistaken node_modules_node6 includes (due to npm not correctly parsing .gitignore)

1.0.18 (2018-09-27)

  • Fix bug where connectionSerial was not getting reset after a resume failure (#540)

1.0.17 (2018-09-19)

  • Give presence.subscribe attach callback the same behaviour as channel.subscribe, for consistency (so it calls back once attached rather than only in the event of an attach error) (#526)
  • Handle empty string response from an authUrl or authCallback as a token error
  • Upgrade ws module to v5 (nodejs only) (#525)

Note: this release drops support for nodejs versions < 4.5. node v4 versions 4.5 or later are still supported; customers using node v4 are highly encouraged to update to the latest 4.x branch for security reasons

1.0.16 (2018-06-25)

  • Ensure a message id is included when serialized (#518)

1.0.15 (2018-06-21)

  • Add support for JWT (#511)
  • Use https instead of git to pull dependencies (#515)
  • Fix compilation issue with Google Closure compiler (#517)

1.0.14 (2018-05-16)

  • Avoid xhr with local files on chrome 65+ (#490)
  • Update websocket library on node
  • Improvements to Rest#request error handling
  • Update nodejs supported versions
  • TypeScript namespace change (ablyLib -> Types -- #492)

1.0.13 (2018-02-01)

  • Fix resume regression in 1.0.12

1.0.12 (2018-01-30)

1.0.11 (2017-12-11)

  • Allow Message#fromEncoded to take a short-form (key-only) cipherParams (#438)

[note: 1.0.10 skipped due to buggy version on npm used to create package; see npm/npm#18870]

1.0.9 (2017-11-22)

  • Add ability for an auth server to trigger a client to move to the failed state by returning an HTTP 403 #434

  • Enable transient publishes when publish is called on a channel that isn't already attached #430

  • Fix bug where qs params provided in an authUrl were being discarded after first use #433

  • Default to logging timestamps on all platforms

  • Tweak websocket error log levels to avoid logging non-error closes at ERROR level

[note: 1.0.8 was an npm-only release to fix a minor build error in the published artifact]

1.0.7 (2017-10-12)

  • Fix idle timeout bug when timer extended due to positive timeRemaning (if setTimeout is overly eager) #421

  • Fix channel state change log message when error is not an ErrorInfo #420

  • Stop network error trading a token request for a token failing the connection #419

1.0.6 (2017-09-26)

  • Fix issue where presence updates sent immediately after a recover can be ignored #412

  • Fix authMethod being ignored if there are no authParams: #415

  • Combine authParams with querystring params given in an authUrl, rather than replace: #418

1.0.5 (2017-07-04)

  • Fix issue with webpack module resolution: #404

  • Implement Channels#release: #405

  • Fix various bugs with useBinaryProtocol: true #406

1.0.4 (2017-04-24)

  • Have the default logHandler on node log timestamps (#399)

  • Don't require Ably-protocol-level heartbeats by default on node (#398)

  • Cherry-pick syncComplete fn->bool and other changes and fixes from 0.9 branch that didn't make it into 1.0.0

1.0.3 (2017-04-17)

  • Improved NativeScript supprot #392

  • Fix bug in 1.0.2 where channels can never become reattached after a computer goes into sleep mode #396

1.0.2 (2017-03-20)

  • Don’t attempt a resume if last known activity was greater than the connectionStateTtl ago #389

1.0.1 (2017-03-13)

  • Only use websocket transport in node unless comet explicitly requested with transports: ['comet'] or transports: ['comet', 'web_socket'] #382

  • Fix issue with multiple attaches happening after a failed resume #386

1.0 (2017-03-08)


0.8.42 (2017-02-27)

  • Fix presence issue when receive >9 presence updates from the same connection by backporting 0.9 presence newness algorithm 5ce4fa8

  • Fix on('attached') registration in an on('attached') block firing immediately #364

0.8.41 (2016-10-26)

  • Fix occasional anomalously low presence set right after a sync abb03f5

0.8.40 (2016-10-24)

  • Fix ‘server’ header CORS warning in chrome for non-ably endpoints #345

0.8.39 (2016-10-21)

  • Disable xhr streaming if using cloudflare #342

0.8.38 (2016-10-12)

  • Node: remove runtime dependencies on crypto-js and buffertools #340

  • Fix closeOnUnload on IE11 #338

0.8.37 (2016-09-21)

  • Node requests: limit max rest request TCP parallelism to 40 #336

0.8.36 (2016-09-14)

  • Backport subscribing with an event array fix from 0.9

0.8.35 (2016-09-12)

  • Node: try fallback hosts on ECONNRESET

0.8.34 (2016-09-08)

  • Node: keep TCP stream alive between REST requests; update request module #331

0.8.33 (2016-08-19)

  • Upgrade node websocket library for node 6 compatibility #326

0.8.32 (2016-08-17)

Full Changelog

  • Rate-limit autoreconnect attempts to a maximum of 1 per second #322

  • Fix REST fallback host functionality #327

0.8.31 (2016-08-10)

Full Changelog

  • Add webpack/commonjs support #321

0.8.30 (2016-07-18)

Full Changelog

  • Fix an issue where channels with large numbers of presence members (>100) could occasionally see a reduced presence set #319

0.8.29 (2016-07-15)

Full Changelog

  • Fix an issue where messages retried across a transport upgrade could theoretically lead to duplicate messages #308

  • Fix an issue where a client-detectable auth error on connect could cause the connect attempt to fail after the connect timeout (15s) rather than immediately #314

0.8.28 (2016-07-13)

Full Changelog

  • Fix an issue where a server-sent channel detached message could cause the channel to go into the failed state #313

0.8.26 (2016-07-11)

0.8.25 (2016-07-06)

No net changes. 0.8.25 reverted a new header addition due to Ably not yet sending the correct access-control-allow-headers CORS headers for it; 0.8.26 re-adds it.

0.8.24 (2016-07-06)

Full Changelog

Biggest changes:

  • Store transport preferences in memory not just localstorage, for node clients #303

  • Fix issues with sync failures leading to lib sticking in the synchronizing state #302

  • Add lib version string to connect querystring an as a header for REST #304

0.8.23 (2016-07-01)

Full Changelog

Biggest changes:

  • Fix exception on accessing localStorage in Safari in private mode #298

  • Fix bug causing transports to occasionally stick around after they should have been disconnected in some circumstances #296

  • Sacrifice commas to appease IE8 479152f

0.8.22 (2016-06-24)

Full Changelog

Biggest changes:

  • Log and emit errors that occur on-connect (resume failures and upgrade failures) #291

  • Rework upgrade flow so that all messages complete on one transport before switching to another, to avoid 'Invalid transport ID' message race condition #291

  • Fix issue #285 where a detach that happens during a presence sync could fail (also #291)

  • Log all connectionDetails on transport active (including the server you're connected to), not just clientId #294

  • Implement waitForSync option in (realtime form of) presence.get() #295

0.8.21 (2016-06-21)

Full Changelog

Biggest changes:

  • Fix bug where comet transports would occasionally send messages out of order if the sending rate is very high #290

0.8.20 (2016-06-13)

Full Changelog

Biggest changes:

  • Rewrite the transport fallback sequence. It now starts with a polling transport (since some proxies break streaming transports) and then tries to upgrade to a websocket and streaming transport in parallel, picking the websocket if possible. It also remembers the best transport that worked (using HTML5 localstorage) and jumps straight to that if it can. #279

  • Fix crypto bug when generating random data in IE 8 and 9 #282

  • Disable JSONP transport when document is undefined, for React Native support #283

  • Clear presence set on detach #287

0.8.19 (2016-05-18)

Full Changelog

Biggest changes:

  • Fix connection state race condition when one transport drops while another is pending #274

  • Make LOG_MAJOR log level (i.e. level 3) much more friendly #275

  • A few minor fixes to ErrorInfo #276

0.8.18 (2016-05-09)

Full Changelog

Biggest changes:

  • Change default log level to LOG_ERROR c122a1f

  • Add channel#errorReason #267

  • Allow automatic re-authing (eg to use a new token) using auth#authorise() #261

  • Allow ClientOptions#recover to take a callback (so you can decide whether to recover at the time) rather than just a boolean #266

0.8.17 (2016-04-05)

Full Changelog

Biggest changes:

  • Don’t activate a transport that isn’t connected #255

  • Don't try host fallbacks for token errors #251

  • Standardise on 'initialize' event spelling #244

  • Stop assuming that connection state won't change during a transport sync #249

  • Don't reject a presence enter for lacking a clientId unless we're absolutely certain we're anonymous #256

0.8.16 (2016-03-01)

Full Changelog

Biggest changes:

  • Implement latest version of the crypto spec #240

  • Don't sync an upgrade transport that never got activated #241

0.8.15 (2016-02-11)

Full Changelog

Biggest changes:

  • Expose presence message action as a string in the API #227

0.8.14 (2016-02-09)

Full Changelog

Fixed bugs:

  • Token renewal does not seem to be working #203

  • clientId from token auth is ignored for presence #198

  • IE9 support #196

  • ably-js-browsers failing in mobile safari #164

Closed issues:

  • Proposal for new transport fallback behaviour #217

  • Investigate whether encoding is being set correctly on presence data #200

Merged pull requests:

0.8.13 (2016-01-08)

Full Changelog

Fixed bugs:

  • Connection state incorrectly reported #187

Merged pull requests:

0.8.12 (2015-12-20)

Full Changelog

Merged pull requests:

  • Add script for running tests in CI #186 (lmars)

0.8.11 (2015-12-18)

Full Changelog

Fixed bugs:

  • No internet up test coverage #183

Merged pull requests:

0.8.10 (2015-12-17)

Full Changelog

Implemented enhancements:

  • Flexible handling of callback for auth methods #175

Fixed bugs:

  • High priority spec incompatibilities #170

Closed issues:

  • Xhr connections not starting a /recv request after /connect connection ends #180

Merged pull requests:

0.8.9 (2015-12-04)

Full Changelog

Implemented enhancements:

  • Spec validation #43

Fixed bugs:

  • Highest priority item #172

Merged pull requests:

0.8.8 (2015-11-20)

Full Changelog

Fixed bugs:

  • HTTP requests ignore tls: false attribute #166

  • Presence callback error following an immediate disconnect #161

Merged pull requests:

0.8.7 (2015-11-13)

Full Changelog

Merged pull requests:

0.8.6 (2015-11-12)

Full Changelog

Implemented enhancements:

  • Switch arity of auth methods #137

  • PresenceMessage action #45

  • Emit errors #39

  • README to include code examples and follow common format #38

  • Share test app set up & encoding fixture data #34

  • Integrate SauceLabs browser tests into ably-js #31

  • License & CHANGELOG needs to be included #2

Fixed bugs:

  • MsgPack cipher workaround #142

  • Switch arity of auth methods #137

  • connection.close does not always free up resources #136

  • XHR requests timing out leads to connection going into failed state #134

  • connection#ping throws exception if you don't pass it a callback #133

  • Invalid encoding should not result in the data vanishing #121

  • jsonp transport needs to set envelope=json param #113

  • Token Params are not being sent through to authUrl #108

  • Channels stay attached even if connection can't be resumed #105

  • Calling channel.presence.enter doesn't attach to the channel if connectino has been closed and reopened #104

  • Authentication etc. failures with comet incorrectly put connection into 'disconnected' state (should be 'failed') #101

  • Connection recovery after connect causing presence to fail #95

  • Exception / error should be shown if trying to publish or modify presence on a closed connection #94

  • Hard coded transport to work around bugs need to be removed #86

  • Ably-js does not call error callback when channel attach fails when using comet transport #81

  • When attach fails with 'superseded transport handle', ably-js retries immediately forever #71

  • iFrame tests are failing in CI #62

  • WsData exception #61

  • Incorrect error shown in clients when account limits are hit #57

  • IFrameTransport errors when connecting with tls: false #55

  • ToJson bug #44

  • No transport handle #40

  • Bug when running karma #36

  • Travis CI builds failing consistenly #30

  • Comet transport error #27

  • Test client library with explicit binary protocol in JSBin #18

  • iPad iOS6 timing issues #12

  • Firefox 10 with Windows 7 fails because of incorrect mime type #11

  • Internet Up URL & use of HTTPS #4

Closed issues:

  • requestToken sending key? #157

  • Wrong state change reason with token expiry #149

  • On jsbin, get an exception creating websocket if tls: false #129

  • Auth differences between ably-js and ably-ruby #116

  • ably-js doesn't dispose of the websocket resource if the connection attempt times out #98

  • Use the correct internet-up CDN #42

Merged pull requests:

0.8.5 (2015-08-20)

Full Changelog

Implemented enhancements:

  • untilAttach for presence history is missing #93

Closed issues:

  • presence#history only available for rest channels, not realtime ones #84

  • Saucelabs websockets support apparently sucks..? #82

Merged pull requests:

  • support untilAttach for realtime presence history requests #96 (SimonWoolf)

  • Force saucelabs to use varnish rather than squid as a proxy #90 (SimonWoolf)

  • Fix a race condition in realtime publish tests #89 (SimonWoolf)

  • Add grunt release:[releasetype] task #88 (SimonWoolf)

0.8.3 (2015-08-04)

Full Changelog

Implemented enhancements:

  • authCallback bug, test coverage & additional type support #72

  • Does not support useTokenAuth client options #70

  • No updateClient method #67

  • createTokenRequest without key option #21

Fixed bugs:

  • attaching and detaching events are not emitted #74

  • attach on a channel for a failed client does not fail the attach #73

  • authCallback bug, test coverage & additional type support #72

  • Does not support useTokenAuth client options #70

  • Calling attach twice on an invalid channels fails #66

  • authUrl tests fail in Firefox #63

  • Better error message for an invalid token from the authUrl or callback #56

  • createTokenRequest without key option #21

Closed issues:

  • Various functions require a callback with (err, result) but docs imply should work with just (result) #69

Merged pull requests:

0.8.2 (2015-07-01)

Full Changelog

Implemented enhancements:

  • Release as a bower module #1

0.8.1 (2015-06-30)

Full Changelog

Implemented enhancements:

  • Improve logging #58

  • Agree on handling of JSON value types #52

Fixed bugs:

  • Malformed response body from server: Unexpected token X with Comet on Node.js #59

Closed issues:

  • Connection state recovery is intermittent #48

  • Presence#enterClient errors if not supplied with a data param #47

  • No keyName specified #41

Merged pull requests:

  • Throw 411 error for unsupported data types #53 (SimonWoolf)

  • Make sure boolean data is encoded correctly #51 (SimonWoolf)

  • Allow data parameter to be optional for presence#enter and channell#subscribe (2) #50 (SimonWoolf)

0.8 (2015-04-29)

Full Changelog

Implemented enhancements:

  • Register ably-js as ably in the npm directory #29

  • Sparse stat support #22

  • Travis.CI support #3

Fixed bugs:

  • Browser test error: authbase0 - displayError is not defined #35

  • [Object object] in error messages makes it difficult to see what the problem is #24

  • Connection issues #20

  • Time function on Realtime blocks Node from exiting #9

  • iFrame loading #8


0.7.9 (2015-04-03)

Full Changelog

0.7.8 (2015-04-03)

Full Changelog

0.7.7 (2015-04-03)

Full Changelog

0.7.6 (2015-04-03)

Full Changelog

Fixed bugs:

  • Nodeunit tests in the browser #23

Closed issues:

  • TypeError on presence.subscribe() #26

0.7.5 (2015-03-21)

Full Changelog

0.7.4 (2015-03-20)

Full Changelog

Closed issues:

  • Time out tests #15

0.7.3 (2015-03-12)

Full Changelog

0.7.2 (2015-03-10)

Full Changelog

Fixed bugs:

  • Swallowing errors #6

Closed issues:

  • Logger #14

  • PhantomJS issues #13

  • Node.js 0.12 #10

0.7.1 (2015-02-11)

Full Changelog

0.7 (2015-01-12)

Full Changelog


0.6.3 (2014-12-09)

Full Changelog

0.6.1 (2014-11-27)

Full Changelog

0.6 (2014-11-27)

Full Changelog


0.5 (2014-01-13)

Full Changelog


0.2.1 (2013-04-29)

Full Changelog

0.2 (2013-04-17)

Full Changelog


0.1.1 (2012-12-05)

Full Changelog

0.1 (2012-12-04)


Some sections of this Change Log have been automatically generated by github_changelog_generator