Added
- UI guidelines AGENTS instructions
- UI guideline compliance review documentation
- Improved checkout accessibility and interactions
Added
- Subscription checkout support (
/subscriptionroute) - Three membership tiers: Bronze, Silver, Gold
- URL parameter-based tier selection (
?tier=bronze|silver|gold) - Billing schedule and next payment date display
- Auto-renewal information
- Expandable benefits section for each tier
- Profile lookup for subscription management
- Image placeholder for tier layout
Fixed
- Tier handling logic
- Checkout flow for subscriptions
Added
- Multi-brand checkout support with dynamic branding
- Upsell widget for additional entries
- Multi-site upsell support
- Dynamic favicon for Athera brand
- Athera brand theming and font loading
- Brand-specific background colors and CTA styling
- Brand logos and legal links for Athera and PetKind
Fixed
- Missing site_id handling with webflow_site_id fallback
- Brand background in empty state
- Selected upsell button contrast
- Brand CTA styling in empty checkout state
Added
- AddPaymentInfo event tracking for Triple Whale
- Prize closing countdown to order summary
- Countdown styling with branded burst design
Added
- Google Pay support in unified payment widget
- Google Pay SVG icon
- Google Pay button rendering fixes
Fixed
- Google Pay redirect logic
- Google Pay amount passing to Nomupay
- Google Pay config fields alignment with Apple Pay
- Zero amount issue for Google Pay
Changed
- Activated Google Pay in production
- Gated Google Pay to debug mode initially
Fixed
- Rounding of checkout totals to minor units
- Checkout price validation errors
Added
- Google Pay to unified payment widget
- Google Pay configuration aligned with Apple Pay
- Google Pay button grouping with Apple Pay
- Google Pay SVG icon assets
Fixed
- OR_BIBED_11 Google Pay error
- Google Pay PaymentDataRequest error
- Google Pay amount processing
- Google Pay redirect logic
- Zero amount issue for Google Pay
Changed
- Grouped digital wallet buttons (Google Pay and Apple Pay) together at top level
- Standardized payment button styles
- Stripped custom styles from payment buttons
Added
- Test mode to bypass URL parameter requirement
- API retry logic and improved error handling
- Sentry logging for missing/invalid checkout params
- Debugging for checkout entry point without URL params
- Debugging for “Item Not found” state
- Item ID validation logic
Fixed
- Timing issue in total calculation useEffect
- NomuPay script error in Next.js
- Missing checkout form fields
- Payment widget safety check issues
- Card form timing issues
- Email field auto-submit trigger
Added
- Safeguard system for test transactions in production
- Google Tag Manager integration
- Google Analytics tracking with GTM dataLayer
- Google Analytics event tracking
Fixed
- Safeguard error clarification for test transactions
- Bypass safeguard for intentional test transactions
Removed
- Triple Whale tracking code
Added
- Confirmation_only parameter to Spruce API payload
- Debug logging for confirmation_only parameter
- Brand logos and background colors
- Legal links for Athera and PetKind brands
Fixed
- Preserve confirmation_only in session storage
- Add confirmationOnly to payment flow
- Item description in payment result page
- Missing brand functions in config
- Visible comment removal from checkout page
Added
- Unified payment widget with toggleable sections
- Phone number capture to card payment widget
- Apple Pay direct trigger and availability detection
- Phone field injection in payment widget
Fixed
- Payment widget loading issues
- Script loading conflicts in payment widgets
- Card payment widget to use onReady for phone field
- Phone field injection timing
- Payment widget conditional display
- Apple Pay availability detection
- Card form visibility and button padding
- DOM conflicts in payment widgets
- Form duplication in payment widget
- Duplicate “Pay with Card” buttons with Apple Pay
- Empty space from hidden form groups
- Excessive spacing in payment form
- Apple Pay container whitespace
- Payment button UX and Apple Pay design
Changed
- Separated Apple Pay and card payment widgets
- Moved phone field to last form position
- Updated CSS for payment form field ordering and layout
- Removed email field from payment form
- Pass email to NomuPay payment form directly
Added
- Simplified checkout form (email only required)
- “Or Pay With Card” divider under Apple Pay button
- Email field autofocus
- Spruce Collective branding and logo
- Nomupay API environment variables
- Fast checkout Apple Pay button (experimental, later removed)
- CSP meta tag to layout header
Fixed
- Hide name and phone fields in checkout form
- Hide payment options when NomuPay form loads
- Apple Pay button height (42px)
- Payment section disabled state
- API error handling for Spruce API
Changed
- Replaced checkout form logo with new grey Spruce logo
- Separated card and Apple Pay forms
- Updated Checkout V2.2 with new API and UI changes
- Switched API calls from staging to production URLs
Removed
- Apple Pay Fast Checkout integration (experimental feature)
Added
- Triple Whale tracking for customer and checkout events
- AddToCart event tracking
- Session persistence on page refresh
Fixed
- Apple Pay parameter issues
- Apple Pay configuration issues
- Auto-submit loads checkout on first prefilled load
- Restore mandatory quantity field in create-order-spruce route
Changed
- Disabled Google Pay in NomuPay widget
- Switched API calls from staging to production URLs
Added
- Server-side test key validation
- Test key functionality for Nomupay checkout
- Debug logging to OrderSummary component
- URL parameter state storage before clearing
Fixed
- URL parameter clearing for security
- Conditional URL parameter clearing on checkout page
- URL param issues in payment pages
- URL parameter capture for checkout flow
- Item_id and amount issues in payment flow
Changed
- Moved test key validation to server-side
- Removed URL parameters for security (stored in state first)
Added
- Spruce API integration for dynamic item details
- Spruce API payload format matching revolut sample
- Item_id and redirect_url to payload structure
- Create-order endpoint updates
- Payment result page updates
Fixed
- Spruce API payload with correct item_id and required fields
- Customer data flow in payment result page
- Empty customer info in NomuPayWidget
- Excessive validation on field blur
- Excessive re-renders on form input
Added
- Error handling for NomuPay widget initialization
- Enhanced debugging for create-order API call
Fixed
- Infinite re-render loop in form sync
- NomuPay widget client-side issues
- PaymentBrand overwriting in NomuPay integration
- Form validation and nodeRequire error
- Required fields validation for spruce-api call
- Customer data in payment result page
- Customer info sync for create-order API
Added
- Complete NomuPay payment result handling
- Payment status API with proper auth and entityId
- Spruce API integration in order creation and status update
- Spruce API payload format and test route
- URL parameter for dynamic payment amount
- Custom NomuPay widget styling
- NomuPay widget with wpwlOptions customization
- Google Pay integration (later disabled due to errors)
Fixed
- Payment flow integration
- Payment result API calls and flow
- Payment result page parameter mapping
- toFixed error in payment flow
- Export and content issues in payment flow
- NomuPay API call and payment flow
- Spruce order endpoint and logging
- NomuPay widget initialization
- DOM removal safety and error handling
- NomuPay widget DOM management
- Customer data and DOM manipulation issues
- Form field watching and state updates
- Syntax error in NomuPayWidget component
- Checkout session component lifecycle management
- NomuPay widget script loading issues
- NomuPay redirect issue
- PaymentBrand format for NomuPay API
- Null entityId from environment variable
- NomuPay form CSS for brand integration
Changed
- Updated payment form to plain style
- Updated NomuPay form to match light theme
- Implemented simplified NomuPay widget setup
- Disabled Google Pay to resolve OR_BIBED_11 error
Added
- NomuPay payment gateway integration
- NomuPayWidget component
- Custom container instructions for NomuPay
Fixed
- @hookform/resolvers version conflicts
- Zod module import errors
- wpwlOptions definition before NomuPay script loads
- Integrity check for NomuPay script
- Package.json and pnpm-lock.yaml sync
- Backend integrity hash in payment form
- NomuPayWidget production URL
- Checkout-form.tsx and SpinnerIcon import
Changed
- Updated @hookform/resolvers to compatible version
- Updated zod package
- Restored v30 from v28 and updated font files
- Disabled debug mode