1.28.0 » 1.36.0

It’s been a little while since our last release roundup, so consider this another bumper edition. Over the past few months, we’ve shipped a series of updates across billing, automation, and the admin experience. Highlights include a new option to split contract products by units sold, support for iDEAL and SEPA payments via Stripe, staff impersonation for admin users, and a powerful new Monaco (VSCode) editor in the admin area.
Here are the full release notes, neatly categorised for convenience 🙂
Billing Updates
NEW: Option to 'split' items into separate contract products based on units sold
NEW: Surface 'payments' associated with a credit note, if applicable
NEW: Add 'Credit notes' tab for invoice view if document has been credited
NEW: Staff option to 'Issue credit note' when topping up account credit
NEW: Staff option to provide a 'Reason' when topping up account credit
NEW: 'Credit transactions' row design, including optional top-up reason
NEW: Client option to manually request affiliate commission withdrawal
NEW: Add
internal_namefield to payment gateway providers formNEW: Surface internal gateway names in admin contexts
NEW: Stripe » Support for iDEAL payment method
NEW: Stripe » Support for SEPA Debit payment method
NEW: Stripe » Restrict PayPal method to presentment currencies only
NEW: Stripe » Minor-unit computation for zero-decimal currencies
NEW: Stripe » Minor-unit computation for
UGXcurrencyFIX: Decimal bug when defining custom billing terms
FIX: Relay manual payment result after account credit top-up
FIX: Change default invoice sort order to use 'Date issued'
FIX: Minor bug when stepping back in the quick invoice modal flow
FIX: Broken invoice item routing when the underlying product is
hiddenFIX: 'Multi-currency options' field not reflecting brand default setting
FIX: Breaking invoice display when options are not returned as
ArrayINTERNAL: Refactor order route handling in various components and views
INTERNAL: Refactor account credit
INTERNAL: Remove obsolete wallet transactions table
INTERNAL: Refactor currency recalculation options with centralised bindings
INTERNAL: Refactor gateway-related imports to use centralised types
INTERNAL: Remove deprecated gateways model
Automation Updates
NEW: Implement notification hook/trigger conditions
NEW: Expose recipient type category variables when authoring templates
FIX: Empty parameters when creating a segment from bulk notifications
FIX: Disabled submit when trying to bulk update contract intervals
Security Updates
NEW: Staff user impersonation for admin users
NEW: Set read-only domain-level cookies for guest and client sessions
FIX: Bug adding whitelisted IPs for staff users and API tokens
FIX: Uncaught error when revoking API tokens
INTERNAL: Add
pslpackage for improved domain/hostname parsingINTERNAL: Expose new
getApexDomainmethod to use within cookies helper
Settings Updates
NEW: Message signature feature
NEW: Brand tokens field for storing design tokens (for Cart/Panel 2.0)
NEW: Support for setting a custom 'Google Tag Manager' script URL
NEW: Add support for custom
storefront_urlwithin brand metaNEW: If shown to users, make custom cancellation fields optional for staff
INTERNAL: Shuffle around 'order in bulk' catalogue settings
INTERNAL: Set default values for
show_to_customer&show_on_invoicetofalse
UX/UI Updates
NEW: Contract product tags
NEW: Improved UX/UI for selecting and managing object tags
NEW:
UTagcomponent with a 'subtle' display variant and in-built tooltipsNEW: Implement Monaco (VSCode) Editor into admin area
NEW: Add
twiglanguage support within UMonacoEditorNEW: Add 'Preview records' control during import step
NEW: Indicator to highlight default user permission groups
NEW: Adaptive datetime formatting across support-related components
FIX: Bug in UDropdownMenu component
FIX: Click handler on
UIconControlcomponentINTERNAL:
useMonacoTwigcomposable for Twig language auto-completionINTERNAL: Deprecate Codemirror editor in favour of Monaco Editor
INTERNAL: Deprecate JsonEditorVue editor in favour of Monaco Editor
INTERNAL: Deprecate
tagsProviderin favour of newuseTagscomposableINTERNAL: Sync Localazy translations