New Features
Service
Auth: Support social logins like Google or Facebook for login/registration for Customers
Auth: Expose OAuth2 Client registrations in the admin
Auth: Create interface to map fields from a 3rd party OAuth token to a BroadleafOAuth2UserDetails
Auth: Make third party IDP login compatible with Broadleaf MS tenancy
Auth: Remove LocalDevOAuth2ClientRedirectFilter and use dnsmasq
Auth: Custom OAuth2AuthorizationRequestResolver
Auth: Add Auth0 configuration
Auth: Control when users are created from third party login
Auth: JDBC ClientRegistrationRepository
Auth: Automatic auth server creation can’t handle both domain and domain prefix simultaneously
Auth: Replace InMemoryOAuth2AuthorizedClientService
CartOps: Selector product add to cart validation and attributes
CartOps: Add an internal inventory check for the available online flag during add to cart.
CartOps: Merchandising Product add to cart, offer, & price considerations
CartOps: Remove cart items from cart message in checkout completion event.
Cart: Don’t use persistence channel for carts
Cart: Disable persistence events on carts
Catalog Browse: Create new endpoint that takes a URL and returns either a product or category
Catalog: Introduce a read-single-variant operation in VariantEndpoint
Catalog: Add an endpoint to fetch multiple categories by id
Catalog: Rename Product.inventoryType to Product.fulfillmentType
Catalog: Update language & logic around ItemChoice override price to clarify that it must be a unit price
Catalog: Introduce OptionGroup domain to help support new product options interface"
Catalog: Enhance Product domain to better support rule-based categorization
Catalog: Support targeting of brand, merchandisingType, gender, & tags for rule-based categories
Catalog: Rule-based Category Improvements
Catalog: Add data driven enum domain for catalog fields
Catalog: Add priority algorithm for resolving product URLs
Catalog: Selector product validation concerns
Catalog: Cleanup rule-based category and data driven enum UI
Catalog: Cannot clear the field values Brand
Catalog: Introduce support for Selector Products
Catalog: Add logic to handle translations when evaluating category rule filters
Inventory: When creating SkuInventory via the admin, the vendorRef should be pre-populated by InventoryLocation.vendorRef
Menu: Introduce lookup for defining category-based and product-based menu items
Promotion: Offer Screen - Basic, Merchandising, & Restrictions Sections Updates
Promotion: Improve ability to add custom Offer target types
Promotion: Support Cheapest/Costliest Target Grouping Strategy
Search: Improved search suggestion faceting
Search: Establish convention for mapping from search suggestion brand/merchandisingType facet to category url
Presentation
Admin: Added RuleBuilder "Has Any In" Operator for multi value matching
Admin: Update Included Product & Item Choice Options admin interfaces following domain refactor
Admin: Support the resolution and use of parent form fields as default values
Admin: Refactor Styles across the board to use Tailwind
Admin: Refactor Admin Navigation UX
Admin: Replace CRA in AdminWeb and AdminStarter
Admin: Display version somewhere in the admin
Admin: Refactor Augmentation Created Event
NextJS Starter: Update DefaultPDP > Assets.js to lookup assets by tag with a prefix appropriate for the type of the tag
NextJS Starter: Show Included Products on PDP and Add-to-Cart
NextJS Starter: Standard & Variant product PDP use cases
NextJS Starter: PDP - Handle 'BUNDLE' products
NextJS Starter: PDP - Handle 'SELECTOR' products
NextJS Starter: Display applied offer name on cart item
NextJS Starter: PDP - Support Configurable Item Choice products like T-Shirts
Library
Data Tracking: Automatically register PackageDataRouteSuppliers from packages provided in JpaEntityScan
Data Tracking: Enhance to make basic audit data available on all trackable entities
JPA Common: Configurable SchemaCompatibiltyUtility for Client Implementations
Metadata: Remove need for cross service dependencies due to metadata consumer libraries
Bug Fixes
Service
CartOps: Cart can become broken if a fulfillment item exists without a cart item
CartOps: Can’t fetch the products for the rule-based category with the filter by the product’s Tags
CartOps: Fix Pricing Issues with Bundles and ItemChoices with overrides
Catalog: Item Choices have the same generated pricingKey
Catalog: Fix checking of the product availability for the rule-based category
Catalog: Fixed implicit filter on product grids by type
Catalog: Options grid should show label instead of attribute value
Catalog: When editing cart-item attribute a duplicate is created after saving
Catalog: CartItem.merchandisingContext not being set for demo selector product
Inventory: The filter of the SKU inventory in the admin doesn’t work for the "skuCode" and "skuName"
Pricing: Price Data on the product option form level doesn’t have effect
Promotion: Enhance Offer PercentOff validation to not allow values over 100
Promotion: Free Shipping Offer is discounting less than 100%
Promotion: Discounts still applied to item choices when discount allowed is false
Sandbox: Deploying a variant price change causes a second variant to be produced
Search: Solr bug - parsing with edismax if field does not exist causes malformed queries
Search: Update product indexing logic to only consider records whose activeEndDate is greater than today
Tenant: ApplicationEndpoint#readAll should return inactive/deactivated applications if active param is false
Presentation
Admin: Deployment Date and Time filters not found on JpaChangeSummary
Admin: Removing one of the item choice cause disappearing of other items
Admin: Order Fulfillments view failing to render due to attribute choices
Admin: Text on Application Page is obscured by asset buttons
Admin: Adding existing catalog to application fails the first time
NextJS Starter: blTenant cookie is very large. Remove in favor of server-side storage
Library
DataTracking: Jpa criteria name parameters can be duplicated when RSQL and ContextInfo query influencers are used concurrently
Messaging: Camel Cluster Services using JGroups are not properly arriving at a single leader in a kubernetes cluster