Version 2.10.0 (2019-01-17) -------------------------- Transpile helpers.js and detectors.js (#693) Allow dynamic context callbacks for link and form tracking (#585) Fix default configOptOutCookie value (#672) Remove outdated addClickListener method (#667) Error-handling for tracker methods (#675) Beacon API option for sending events to collector (#674) Tracking click events on forms (#579) Update tracker script banner (#684) Add new local testing workflow (#686) Clean up indentation of integration test template (#691) Update outdated dependencies (#685) Fix typo in sesname variable (#671) Add global contexts features (#405) Add Babel to build process (#665) Replace YUI Compressor with UglifyJS (#687) Fix log output for failed integration tests (#689) Use modularized imports for lodash (#502) Update npm steps in .travis.yml (#690) Consolidate request method API (#700) Fix Beacon API support (#702) Version 2.9.3 (2019-01-09) -------------------------- Add option to set a custom POST request path (#696) Refresh npm authentication token (#688) Version 2.9.2 (2018-07-24) -------------------------- Remove wheel and passive event listener feature flags (#661) Version 2.9.1 (2018-06-20) -------------------------- Keep node type definitions at version 9.6.7 (#649) Update page ping context on every call to trackPageView (#612) Core: fix type incompatibility in consent methods (#652) Added src/js/lib_managed to .gitignore (#650) Use passive event listeners for mouse wheel event (#478) Check if browser has full support of Performance Timing API (#539) Add Java 10 to Ansible playbooks (#657) Version 2.9.0 (2018-02-27) -------------------------- Add ability to change field content before sending form tracking (#465) Add a method to start a new session (#515) Make newDocumentTitle variable local (#580) Enforce that geolocation.timestamp is an integer (#602) Remove respectOptOutCookie from the Tracker function comments (#605) Add jsDelivr hits badge (#611) Add identifyUser as alias for setUserId (#621) Add trackConsentGranted method (#623) Add trackConsentWithdrawn method (#624) Bump semver to 4.3.2 (#625) LocalStorage domain user ID is not persisted properly (#627) Core: add trackConsentGranted method (#629) Core: add trackConsentWithdrawn method (#630) Update OS X test targets for Saucelabs (#632) Install dependencies and update shrinkwrap before deployment (#633) Version 2.8.2 (2017-08-21) -------------------------- Fix opt-out cookie check (#604) Version 2.8.1 (2017-07-26) -------------------------- Use trackCallback for all events (#589) Fix grunt ts in CI/CD (#598) Fix tech docs icon (#596) Fix string ids in Optimizely Summary context (#591) Fix race condition with pageViewId creation (#592) Version 2.8.0 (2017-05-18) -------------------------- Add support for users opting out of state tracking using cookie or localStorage (#459) Add support for recording state in localStorage rather than cookies (#506) Exclude password fields from form tracking (#521) Add Parrable context (#525) Add support for OptimizelyX context (#551) Update README markdown in according with CommonMark (#561) Add support for not recording any state (#563) Deprecate useCookies (#565) Deprecate useLocalStorage (#566) Prevent multiple setInterval from being created (#571) Guard against non-integer values for minimumVisitLength and heartBeatDelay (#572) Provide read-only access to domainSessionIndex (#573) Provide read-only access to cookieName (#574) Provide read-only access to pageViewId (#575) Version 2.7.2 (2017-03-07) -------------------------- Add defensive check for window.optimizely.data in getOptimizelyStateContexts (#555) Version 2.7.1 (2017-03-06) -------------------------- Add defensive check for window.optimizely.data (#553) Version 2.7.0 (2017-01-09) -------------------------- Add CI/CD (#529) Add ngrok credentials (#527) Add Sauce Labs credentials (#528) Add npm credentials to .travis.yml (#536) Add AWS credentials to .travis.yml (#537) Remove random upload path (#538) Add an option to change life of the visitor cookie, or disable, on tracker creation (#504) Make tracker Content Security Policy (CSP) compliant (#490) Add Optimizely summary context (#466) Add the option to regenerate the page view ID with each page view event (#436) Add automatic & manual tracking of JS errors to JavaScript tracker (#16) Get Code Climate badge to green (#152) Add ability to set true timestamp (#484) Add timestamp argument for tracking methods (#532) Remove deprecated visibility state check (#470) Update Selenium version to 2.48.0 (#487) Add date for release 2.6.2 to CHANGELOG (#520) Add trackSelfDescribingEvent method (#471) Fix integration tests suite (#523) Bump Core version to 0.5.0 (#301) Restrict package versions (#522) Core: only send custom contexts if non-empty array (#540) Core: add support of true timestamp (#531) Core: add trackSelfDescribing method (#533) Core: port to TypeScript (#526) Version 2.6.2 (2016-07-14) -------------------------- Add date for release 2.6.1 to CHANGELOG (#495) Don't send invalid viewport dimensions (#488) Check whether elements of navigator.plugins array are undefined (#492) Only call navigator.javaEnabled on instances of Navigator (#491) Stop using String.startsWith (#493) Ensure page view ID is passed to synchronous tracker (#485) Version 2.6.1 (2016-04-14) -------------------------- Prevent CSS class listing from failing for elements with no CSS classes (#473) Explicitly set suites field in Intern config (#475) Version 2.6.0 (2016-03-03) -------------------------- Bumped ngrok version used in CI to 2.x (#460) Allowed random upload path in grunt task (#461) Ensured that PerformanceTiming context doesn't contain properties inherited from Object.prototype (#458) Added `forceUnsecureTracker` Tracker argument, thanks @bloodyowl! (#374) Added subset of Augur data as a new context (#386) Added deprecation warning to setSessionCookieTimeout (#394) Added setting to automatically use top-level domain for duid (#409) Added Optimizely contexts (#448) Added trackEnhancedEcommerceAction() method (#452) Added addEnhancedEcommerceActionContext() method (#453) Added addEnhancedEcommerceImpressionContext() method (#454) Added addEnhancedEcommerceProductContext() method (#455) Added addEnhancedEcommercePromoContext() method (#456) Made domainUserId a UUID (#274) Attached device sent timestamp (stm) to events at last possible moment (#355) Attempting to create a new tracker using an existing namespace should do nothing (#411) Using a different library to publish to S3 (#422) Prevented error running grunt-cloudfront (#426) Respected doNotTrack in IE 11 and Safari 7.1.3+, thanks @grzegorzewald! (#440) Version 2.5.3 (2015-11-10) -------------------------- Bumped Node version to 4.1.2 in .travis.yml (#420) Bumped Intern version to 3.0.6 (#370) Bumped version of temporary to 0.0.8 (#425) Bumped grunt-yui-compressor to 0.4.0 (#424) Bumped grunt-browserify to 3.28.1 (#427) Fixed jstimezonedetect version at 1.0.5 (#429) Removed Browserify from devDependencies (#428) Made extraction of DOM element classes compatible with IE9 (#418) Stopped dereferencing undefined nodes when setting up form tracking (#423) Version 2.5.2 (2015-08-13) -------------------------- Prevented the tracker from setting cookies on initialization if "useCookies" is disabled (#403) Remove tests for unsupported environments (#406) Version 2.5.1 (2015-07-27) -------------------------- Fixed prerender detection (#391) Made page title tracking dynamic (#392) Added warning about using a file URL to example pages (#397) Version 2.5.0 (2015-07-22) -------------------------- Generated a unique session ID for each new session (#347) Added a page view UUID (#369) Maintained visit count when cookies are disabled (#388) Bumped payload_data schema to 1-0-3 (#385) Added Grunt task to build the tracker skipping the lodash and minification tasks (#382) Added ability to configure the session cookie timeout in the argmap (#383) Removed deprecated performanceTiming argument to trackPageView (#375) Added ability to pass a context-generating function to trackPageView (#372) Removed configWriteCookies setting (#390) Updated browser feature detection tests (#378) Version 2.4.3 (2015-04-15) -------------------------- Added License button to README (#357) Set the ID cookie as soon as the tracker loads (#358) Updated the session count as soon as the tracker loads (#361) Made single events exceeding the maximum POST request size attempt to fire exactly once (#359) Fixed querystring decoration for links with inner elements (#360) Version 2.4.2 (2015-04-07) -------------------------- Set a maximum size for POST requests (#353) Fixed QuotaExceededError bug (#352) Version 2.4.1 (2015-03-27) -------------------------- Counted any 2xx or 3xx collector response to a POST request as successful (#343) Counted any 4xx or 5xx collector response to a POST request as failed (#344) Prevented the localStorage event buffer from being flushed more than once simultaneously (#345) Cancelled the XMLHttpRequest timeout callback when the request fails (#348) Stopped adding null PerformanceTiming context (#354) Version 2.4.0 (2015-03-16) -------------------------- Added ability to modify links allowing cross-domain tracking (#109) Added timing event (#320) Increased safety of document size detection (#334) Started randomly generating ngrok subdomain in integration tests (#333) Fixed Vagrant setup to use latest Peru version (#336) Stopped caching page URL and referrer URL (#337) Stopped caching PerformanceTiming context (#339) Added common contexts to link_click, change_form, and submit_form events (#340) Version 2.3.0 (2015-03-03) ------------------------- Added support for sending events via POST (#168) Removed dependency on fblundun fork of grunt-yui-compressor (#172) Added support for batching events (#186) Started sending PerformanceTiming context with all events (#317) Added ability to send geolocation context with all events (#191) Added ability to send context containing all GA cookies with all events (#253) Improved document height detection (#236) Added integration tests (#154) Added functional tests for document size detection and browser features (#270) Added ability to whitelist or blacklist specific forms and specific form fields (#287) Added dedicated Vagrant setup (#312) Added Vagrant "push core" to build and publish Tracker Core (#315) Added Vagrant "push tracker" to build and deploy JavaScript Tracker (#313) Renamed deploy to dist (#319) Stopped sending NaN for page scroll offsets (#324) Version 2.2.2 (2015-03-03) -------------------------- Corrected time at which minimum and maximum scroll offsets are reset (#325) Version 2.2.1 (2015-01-28) -------------------------- Fixed QuotaExceededError bug with localStorage in Safari (#308) Stopped sending empty PerformanceTiming context (#306) Prevented PerformanceTiming context being sent multiple times (#309) Stopped automatically setting Cloudfront URL in synchronous tracker, thanks @vassilevsky! (#311) Fixed lodash-cli version at 2.4.2 (#314) Prevented accidental publication of snowplow-tracker to npm (#300) Added missing tid ticket to CHANGELOG under 2.1.0 (#302) Version 2.2.0 (2014-12-15) -------------------------- Made trackerDictionary object available in onload callbacks, thanks @murphybob! (#294) Ensured all page offsets are integers (#291) Added public method to get duid (#289) Added public method to get user fingerprint (#288) Added bundle.js to deploy/.gitignore (#281) Started using grunt-cloudfront for cache invalidation (#276) Added ability to disable use of localStorage (#181) Added ability to disable cookies (#140) URL encoded custom contexts if base 64 encoding is disabled (#299) Version 2.1.2 (2014-11-15) -------------------------- Removed requestEnd field from PerformanceTiming context (#285) Version 2.1.1 (2014-11-06) -------------------------- Rounded chromeFirstPaint field to an integer (#282) Version 2.1.0 (2014-11-05) -------------------------- Added automated form submission tracking (#252) Stopped outbound queue from triggering multiple times per event (#251) Added PerformanceTiming context using HTML5 Web Performance API (#248) Added ability to execute a custom callback once sp.js is loaded (#246) Added internal site search event (#241) Started using grunt-cloudfront-clear for CloudFront cache invalidation (#230) Renamed /dist to /deploy (#216) Moved context querystring to end of JS-generated beacons (#204) Added guard to wait until outbound queue is empty before unloading (#202) Added event_id generation (#190) Stopped sending tid (#218) Added content field to link click events (#187) Replaced "Getting started" with Vagrant-using "Contributing quickstart" (#169) Added async-large.html (#162) Improved F rating for tracker.js in CodeClimate (#150) Added trackAddToCart and trackRemoveFromCart events (#97) Added further Intern unit tests (#76) Added social tracking features (#12) Improved efficiency of enableLinkClickTracking (#254) Integrated the Tracker Core (#255) Removed deprecated trackImpression method (#256) Added forceSecureTracker boolean option to the argmap, thanks @kujo4pmZ! (#247) Moved link click tracking into its own file (#266) Made IP address regex more strict (#267) Updated expected browser fingerprints in functional detectors test (#275) Added check to ensure outQueue is an array, thanks @kevinsimper! (#277) Version 2.0.2 (2014-10-20) -------------------------- Changed default configCookiePath to "/" (#250) Version 2.0.1 (2014-10-12) -------------------------- Made error logging compatible with Internet Explorer (#264) Fixed SauceLabs red status (#235) Version 2.0.0 (2014-07-03) -------------------------- Moved fixUpUrl into its own file, called lib/proxies.js (#112) Fixed duplication of querystring parameter lookup (#111) Added tests for helpers.js (#96) Added tests for detectors.js (#95) Replaced cookie.js with browser-cookie-lite (#88) Added ad conversion tracking (#60) Added ad click tracking (#59) Added initial localStorage support for intermittent offline beacons, thanks @rcs! (#24) Added new trackAdImpression, mapping to unstructured event (#13) Removed references to referral cookie (#118) Implemented enableLinkTracking support (#51) Replaced hard-coded version with template value (#120) Added Sauce Labs small button at top of README (#123) Added Sauce full test summary widget (long bar) at bottom of README (#124) Added support for namespacing (#4) Passed tracker namespace through to collector in Tracker Protocol (#126) Moved to argmap-style tracker creation with 'newTracker' (#132) Added support for cookie namespacing (#131) Added new tag which allows queue to be renamed (#130) Started rigorously checking whether a page is cached by Yahoo (#142) Upgraded Intern to 1.5.0 (#119) Fixed link to code climate button in README.md (#149) Added examples of tracker namespacing (#159) Split async.html into async-small.html, async-medium.html (#160) Linked the Technical Docs and Setup Guide images to the appropriate pages (#164) Made JS invocation tag part of the build process (#158) Fixed warnings generated by the Closure Compiler, thanks @steve-gh! (#170) Added untracked files which should be ignored to .gitignore (#173) Removed ads/sync.html (#182) Updated ads/async.html (#183) Added pageUnloadTimer option to argmap (#171) Removed type hints from unstructured events and custom contexts (#163) Added hardcoded schema to custom context arrays (#199) Added hardcoded schema to unstructured events (#196) Changed trackUnstructEvent to take a JSON containing schema and data fields (#197) Version 1.0.3 (2014-06-27) -------------------------- Changed Base64 encoding function to prevent character encoding errors, thanks @shermozle! (#231) Version 1.0.2 (2014-06-24) -------------------------- Added guard to prevent document size field from being set as "NaNxNaN" (#220) Fixed Grunt publish tasks to build sp.js as well as upload it to S3 (#224) Added cache control to Grunt upload for full semantic version (#225) Version 1.0.1 (2014-04-09) -------------------------- Fixed lodash.js to work in the presence of AMD modules (#165) Added missing variable declarations (#166) Version 1.0.0 (2014-03-27) -------------------------- Added extra meta-data to package.json (#83) Moved part of banner.js into Gruntfile with grunt-concat's banner option so its values are based on package.json (#82) Started using Browserify for modules (#74) Replaced some/all of lib/.js with modules (#7) Added user fingerprinting on/off switch and configurable hash seed (#7) Deprecated trackImpression (#66) Removed attachUserId as fully deprecated now (#64) Removed setSiteId as fully deprecated now (#63) Removed getVisitor-Id, -Info as fully deprecated now (#62) Removed trackEvent as fully deprecated now (#61) Tightened public API for SnowPlow (#29) Renamed SnowPlow everywhere to Snowplow (#69) Prepended window. or SnowPlow.windowAlias. onto _snaq everywhere (#39) Removed legacy Piwik plugin framework (#56) Moved hasSessionStorage and hasLocalStorage into detectors.js (#91) Wrote tests for AsyncQueueProxy (#100) Added Travis CI to the project (#103) Added a built with Grunt button to the README (#102) Added codeclimate button to README (#137) Added named Grunt tasks (#86) Added Intern unit tests for payload.js (#5) Replaced all functions in identifiers.js which are directly available from lodash (#85) Moved functions from identifers.js into payload.js and wrote Intern tests for them (#108) Added getting started info for developers to README, thanks @pkallos! (#129) Version 0.14.1 (2014-03-12) --------------------------- Fixed bug where fromQuerystring was matching fragments instead of just the querystring (#116) Version 0.14.0 (2014-02-12) --------------------------- Bumped version to 0.14.0 Removed all DEBUG blocks from codebase (#65) Renamed requestStringBuilder to payloadBuilder and moved it into its own file, payload.js (#55) Introduced gzipped sp.js library (#48) Updated grunt and intern dependencies (#54) Replaced snowpak.sh with Grunt and grunt-yui-compressor (#53) Added setUserIdFromReferrer and setUserIdFromLocation (#57) Added ability to pass a referrer to Snowplow from an IFRAME (#1) Tested setDoNotTrack and renamed it to respectDoNotTrack (#28) Moved detect...() functions into new file context.js (#37) Moved cookie-related functionality into new file cookie.js (#77) Removed getLegacyCookieName as no longer needed for migrating cookie IDs (#50) Switched deployment to use Grunt (#58) Added setUserIdFromCookie (#78) Version 0.13.1 (2014-01-28) --------------------------- Fixed bug where non-String values are not being added to our payload (#71) Version 0.13.0 (2014-01-26) --------------------------- Added fully retrospective CHANGELOG (#20) Added setPlatform support, thanks @rcs! (#25) Added currency field to ecommerce transactions (#34) Added custom unstructured contexts (#49) Added base64decode to Tracker (#36) Added null check to requestStringBuilder() (#40) Added array helpers (#41) Fixed (harmless) bug in base64.js (#35) Update .gitignore to be node-friendly .gitignore (#52) Switched to Semantic versioning & only put MAJOR version in hosted path to snowplow.js (#47) Added package.json (#38) Added retrospective tags back in (#22) Restructured folders (#21) Version 0.12.0 (2013-07-07) --------------------------- Fixed document reference to use documentAlias (#247) Fixed bug with setCustomUrl (#267) Changed ev_ to se_ for structured events (#197) Fixed Firefox failure when "Always ask" set for cookies (#163) Fixed bug in page ping functionality detected in IE 8 (#260) Replaced forEach as not supported in IE 6-8 (#295) Version 0.11.2 (2013-05-14) --------------------------- Added unstructured events, thanks @rgabo, @tarsolya, @lackac (#198) Remove leading ampersand in querystring (#188) Version 0.11.1 (2013-02-25) --------------------------- Fixed bug with cookie secure flag killing user ID cookies (#181) Version 0.11.0 (2013-02-22) --------------------------- Introduced setAppId() and deprecated setSiteId() (#168) 1st party user ID now transmitted as duid (domain uid) (part of #150) Now sends dtm - the client timestamp (#149) Deprecated and disabled attachUserId() Deprecated getVisitorId() and getVisitorInfo() - use getDomainUserId() and getDomainUserInfo() instead Added setUserId which sets the uid field (#167) Snowplow cookies no longer tied to site ID (#148) Version 0.10.0 (2013-02-15) --------------------------- Updated copyright notices Removed deprecated setAccount(), setTracker(), setHeartBeatTimer() - BREAKING CHANGE (#86) Added document charset to querystring (#138) Page ping no longer killed by 1 heartbeat w/o activity (#132) Added document & viewport dimensions (#94) Introduced trackStructEvent and deprecated trackEvent (#143) Cleaned up getRequest code to use improved requestStringBuilder Fixed logImpression (was using wrong argument names) (#162) Added scroll offsets to page ping (#127) Version 0.9.1 (2013-01-29) -------------------------- Fixed bug where secure flag not being set on cookies sent via HTTPS Version 0.9.0 (2012-12-26) -------------------------- Each event now sent with an event type `e` (#63) Refactoring of event definition code Added attachUserId(boolean) method (#92) Removed configCustomData from logImpression (#115) Cleaned up activity tracking (page pings) Added a combine only option to snowpak.sh Version 0.8.2 (2012-12-18) -------------------------- Fixed regressions from splitting JS into multiple files (#103) Version 0.8.1 (2012-11-29) -------------------------- Fixed bug with trailing comma (#102) Removed console.log when not debugging (#101) Removed minified sp.js from version control (added .gitignore to keep it out) Version 0.8.0 (2012-11-28) -------------------------- Rename ice.png to i - BREAKING CHANGE (#29) Added setCollectorCf() and deprecated setAccount() (#32) Tracker constructor now supports Cf or Url (part of #44) getTrackerCf() and -Url() added, getTracker() deprecated (part of #44) Added tracker version (`tv`) to querystring (#41) Added color depth tracking (part of #69) Added timezone tracking (part of #69) Added user fingerprinting (#70) Broke out .js into multiple files (#55) Version 0.7.0 (2012-10-01) -------------------------- Renamed said to aid for application ID Version 0.6 (2012-09-05) ------------------------ Added setSiteId functionality Added ecommerce tracking Version 0.5 (2012-08-18) -------------------------- Changed header comments from Doxygen format to JsDoc Added support for specifying collectorUrl directly Added versioning into header comment (so survives minification) Took f_ off res and cookie; added url onto end, renamed rdm to tid Version 0.4 (2012-05-30) ------------------------ Improved names of querystring params Added page-url to querystring as fallback Version 0.3 (2012-05-18) ------------------------ Updated to prepend f_ to browser features Revised the querystring name-value pairs to make them more user-friendly Version 0.2 (2012-05-08) ------------------------ Formalised minification process Version 0.1 (2012-03-21) ------------------------ Initial release