All notable changes to this project will be documented in this file.
- Upgraded dependencies to fix security vulnerabilities (log4j-log4j & commons-logging:commons-logging)
- (On Device Decisioning) Added new configuration option (
shouldArtifactRequestBypassProxyCache
). When enabled and a proxy is configured, send empty Authorization header on artifact rules request to bypass proxy-level cache
- Fix geo context not being cleaned up
- Expose new connection pool configuration options (
connectionTtlMs
,idleConnectionValidationMs
,evictIdleConnectionsAfterSecs
) - Document configuration builder API
- Default idle connection validation reduced from
2
seconds to1
second - Default idle connection eviction reduced from
30
seconds to20
seconds - Fix
requestInterceptor
configuration builder
- Custom HTTP client support to Client configuration
- Additional support for complex domain parsing for on-device-decisioning
- SDK version no longer set in source code
- Client custom Mbox parameters now correctly support dot notation
- stickyLocationHint is updated regardless of Decisioning method
- Added ClientHints support
- Updated ECID-service dependency to fix parsing expiry values from AMCV cookie
- Add ClientHints to Delivery API model in preparation for ClientHints support
- Fixed incorrect logic for execution mode calculation.
- Always use context.beacon=false for sendNotifications() calls.
- Added SDK telemetry data collection.
- Improved unit tests coverage
- Refactored On-Device Decisioning code
- Improved logging for exceptions.
TargetRequestException
now includes the request object for improved debugging.
- Fix incorrect MaxAge set in response cookies
- (On Device Decisioning) Downloaded artifact will only include activities for specified property if
defaultPropertyToken
is set in ClientConfig
- Fix incorrect handling of error scenario in
TargetMetrics.begin()
- Updating ECID Service version
- Fix incorrect handling of traffic allocation
- (On Device Decisioning) Updated the bucketing algorithm to be consistent across all platforms
- (On Device Decisioning) Replace blocking notification call with an async call
- Updating ECID Service version
- (On Device Decisioning) Updated allocation calculation to be identical to Target Delivery API ( Allocation is determined using the first non-null visitor id in this order 1. ECID, 2. TNTID, 3. Third Party ID )
- (server-side decisioning) Support for using imsOrgId in the config. This can be used instead of client for calls to Delivery API.
- Support for on-device decisioning
- New parameters added in create() when initializing the Java SDK
- decisioningMethod
- pollingInterval
- artifactLocation
- artifactPayload
- events
- New method getAttributes() to fetch experimentation and personalized experiences from Target and extract attribute values.
- Added support for proxy config. Thanks @hisham-hassan for contribution.
- Send supplemental data ID in a Target request even when there is no Visitor API cookie present
- Target View Delivery v1 API support, including Page Load and View prefetch
- Full support for delivering all types of offers authored in Visual Experience Composer
- Support for prefetching and notifications, that allows for performance optimization by caching prefetched content
- Support for optimizing performance in hybrid Target integrations via serverState, when Target is deployed both on the server-side and on the client-side
- We are introducing a setting called serverState that will contain experiences retrieved via server-side, so that at.js v2.2+ will not make an additional server call to retrieve the experiences. This approach optimizes page load performance.
- Open sourced on GitHub as Target Java SDK
- New sendNotifications() API method, for sending displayed/clicked notifications to Target for content prefetched via getOffers()
- Async support for all delivery APIs
- Validation of SDK API method arguments
- Added README, samples and unit tests
- Added CoC, Contribution guidelines, PR and issue templates
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.