Releases: unravelin/ravelinjs
v1.8.1
v1.8.0
New Features
- RavelinJS now includes the browser's timezone offset in the metadata of track events sent to Ravelin. No integration changes are required by developers using the library.
v1.7.1
New Features
- RavelinJS is only designed to be run in a browser, so it will error if you attempt to initialise it in an environment like node or deno where
window
is not defined. However, we now support importing the library without erroring during SSR, for example. #332
Dev Work
- We've upgraded node to the latest LTS v18, and many of the other test packages to their latest versions. This won't have changed the final product, though.
v1.7.0
v1.6.0
New Features
- Options to disable all tracking or just page-load tracking in +track bundles. We don't expect these new options to be useful to anybody except us at Ravelin, as we're in the process of writing a shim to replace some old JavaScript scripts with something using RavelinJS v1 under the hood.
Removed
- We've removed the sourcemap files and the annotations from the bottom of built files.
v1.5.0
New Features
- You can now install v1 in un-minified, with-comments UMD/CommonJS format from npm. If you're using a JavaScript build system already this might make keeping up-to-date simpler for you. (#132 #138)
- For track bundle users, you can now provide a
page
initialisation option which is used to annotate the initial page-load event with extra descriptions. For single-page apps where you might callr.track.load()
you can pass these in asr.track.load(page)
. (#144)
v1.3.0 - Kali
New Features
- The session ID cookie has been moved from the track bundle into core, so you will find this new cookie if you are not using track. This will help extend the usual lifetime of the
Bug Fixes
- XMLHttpRequests which resolve with status zero are retried (#102)
- Rejected Promises are never a plain object any more, as Sentry error reporting didn't like it (#102)
- Firefox "can't access dead object" errors may have been fixed (#105)
Thanks
Kali became a member of the Ravelin family on June 21st 2019. After the stress of her previous home left her unwell several times per year, Kali was taken to an adoption centre when the owner's child became allergic. Fortunately, this lead her into the care and support of Jo. A path I'm sure many Ravelinos can relate to. Those of us lucky enough to have cat-sit for Kali will remember her fondness for chasing things under a blanket and nose-boops when she's happy.
v1.2.0
New features
- There is a new
Ravelin.track.event(name, [props])
method for sending custom events to the Ravelin API. - A
new Ravelin({id: ...})
constructor option allows you to set a device ID instead of Ravelin generating one for you. The id you provide can be either string or Promise form. If a given Promise errors or resolves to an empty value, Ravelin's own device ID tracking will kick in again, so you may still want to configurecookie
below. - A
new Ravelin({cookie: "ravelinDeviceId"})
constructor option allows you use a different cookie name for the Ravelin device ID. If you already have a device ID in a cookie then this is a nice way to ask Ravelin to use it. Ravelin will attempt to re-create the cookie with the same value if it notices that it disappears. Note that adding this option, or changing it will lose all existing device IDs as we now look somewhere else for them, so only set when first integrating. - A
new Ravelin({cookieExpiryDays: 365})
constructor option allows you to set the lifetime in days that a device ID cookie we set will persist. The default is 365. - The default Promise that Ravelin will use is now exported through
Ravelin.Promise
so that you can use it as a construction option when using the +promise bundles.
Bug fixes
- Page-load events were being submitted with type and name swapped. They've been put back the correct way around now.
- The autogenerated table of contents on the README now correctly links to headings that contain </> symbols, e.g.
ravelin.core.id(): Promise<string>
.
v1.1.2 - Barry
This release marks the first official release of Version 1. Thank you to everybody who contributed to ravelinjs v1 and offered input and feedback on its development. Compared to RavelinJS Version 0, Version 1 offers:
- A standalone script, with no additional assets loaded from a CDN.
- Automatic detection of which environment to connect to. Just provide your API key.
- Improved testing and better cross-browser compatibility. Tests now cover API connectivity in many scenarios across IE8-IE11 and all modern browsers.
- Focused bundles of RavelinJS split by the components you use, so you can serve the smallest possible assets.
- Better privacy for your customers, with heavy-handed device fingerprinting removed.
- Integration of Promises for asynchronous operations.
- A contributing guide.
Please consult the README and Quickstart Guide for a full set of features and how to get started.
To mark this special occassion, we wish to dedicate this release to Barry.
Barry first set foot in the Ravelin office in March 12th 2019 and was an instant hit with everyone. He has a wonderful, gentle demeanour and enjoys leaning on his friends for a good scratch. A few of us had the delight of visiting Barry before an outing back in February, and it was lovely to see he was just as excited to see us as we were him. Hope to see you again soon, Barry! We'll bring more treats.
v1.0.0 - RC1
This is a work-in-progress release of #34. Changes since v1.0.0-rc0:
- There is a v1.0.0 README with quickstart and upgrade guide.
- Integration tests are now run against the minified ravelin-core+track+encrypt+promise bundle.
- There is a new core-only bundle.
- Any errors encountered in ravelin.core.id are reported back to Ravelin.
- Removed ravelin.core.device for now.
- Added copyright and version number to release filenames and headers.
- Fixed a function-binding bug in IE8.