Everything shipped in this release — new features, design updates, bug fixes, and behind-the-scenes changes, grouped by area.
New functionality and modules added in this release.
Listing detail pages now display the secondary category alongside the primary one, where a second category has been assigned.
Listing detail pages now link through to the seller's store when they operate one.
Listing cards now show a "Make an Offer" indicator when offers are enabled for that item, so buyers can spot negotiable listings at a glance.
Listing setup fees and sale transaction fees have been consolidated into a single, unified fee for clearer, more predictable pricing.
Created the Auction Events module. Invoices are generated automatically when an event closes, or can be raised manually by buyers or sellers beforehand — a "Pending invoice" on My Purchases and My Sales links straight to checkout or invoice editing rather than routing through the cart. Lots can be added individually, in bulk, or via a composite element, and a Publish action controls when the event goes live.
Redesigned transactional emails, rebuilt from the new shared email layout template for a cleaner, more consistent look.
New setting to hide trailing decimals on whole-number amounts, displaying them only when an amount actually carries a fractional value.
Added a dedicated view helper for rendering the wish-list button consistently across the site.
Introduced a cron locking mechanism (file- or database-backed). While a lock is held, the next cron command of the same type is skipped rather than stacking up, preventing overlapping runs.
The listing preview now shows the quantity and listing duration, so sellers can confirm both before publishing.
Added a rate-limiting module to protect the platform against abusive request volumes.
New multiple-live-payment module lets users settle several live payment fees in a single transaction.
Refined how monetary amounts are rendered throughout the site — including listing lists — with more granular markup for finer styling control.
Added support for uploading and serving AVIF and WebP images for smaller file sizes and faster page loads.
The payment simulator is now disabled automatically in production, and the current environment mode is always shown clearly within the admin area.
Added Stripe payment gateway to the retail version, with a refreshed design.
New cron task automatically clears items from the wish list after 15 days, unless they were added by a signed-in user.
Admin: listing fees are now managed on a single unified page, with fees whose underlying settings are inactive hidden from view.
Custom field attributes are now suggested and prefilled automatically based on the current selection, speeding up listing creation.
Introduced an advanced custom fields module, complete with supporting view helpers.
Optional add-on that only allows feedback to be left once a listing has been paid for — protecting sellers from bad-faith buyers or competitors who purchase, never pay, and leave negative feedback.
Add-on CSS and JavaScript are now discovered and loaded automatically. The platform scans each add-on's assets/css and assets/js folders (as well as the theme's own asset folders) and injects them into both the admin and main layouts, with automatic cache busting on change.
Refreshed the social sharing options, including WhatsApp, Facebook Messenger, and a copy-link action.
In Members Area → Selling → Open, listings with the "With Bids" status now show the leading bidder's name alongside the bid count.
Using "Update cron" in the admin now updates the associated timer at the same time, keeping schedules in sync.
Rolled out a new, modern email layout across the platform.
Added reCAPTCHA protection to the message-sending form to cut down on spam.
Extended the adverts view helper with advertSingle and advertCarousel methods; the advert-carousel partial now calls advertSingle to eliminate duplicated markup across view partials.
Create Listing now supports collapsible sections. Blocks such as Location and Shipping can start collapsed behind an expand control to declutter the form, particularly on mobile.
The shopping cart has moved from a dropdown to a slide-in side panel, toggleable on both desktop and mobile.
Redesigned the listing setup form and added a multi-file upload box for faster image handling.
New admin option to disable server-side image caching and instead resize images in the browser with JavaScript, so they always fit their containers cleanly.
Added an on-demand async refresh path — a new waitForUpdateData() routine can be triggered whenever a page needs to update immediately rather than waiting for the next scheduled poll.
Introduced a hooks system built around an AbstractHook class, letting developers extend core objects with new methods (overriding existing methods is not yet fully supported). The supporting trait is available on AbstractRow, AbstractRowset, AbstractService, and more.
Visual, theme and layout improvements.
Improved invoice rendering on mobile devices and fixed a related printing issue.
Redesigned the mobile header with both dark and light menu variants.
Refreshed the search and browse page layouts, including the default listing card style.
On auctions that offer buy-out, the buy-out price is now shown clearly in the popup so it can't be mistaken for the current bid.
Home-page boxes can now be arranged in a responsive grid (half-width and more) for a modern, card-based layout. The tabbed display option remains available via the setup and arrange field, with the section-width option disabled where it doesn't apply.
Modernised the admin theme with an updated design language across buttons, form elements, and controls.
Added theme variations for the Nine theme.
Introduced Essence, a brand-new theme.
Reported defects and small corrections resolved in this release.
Fixed several layout and interaction issues when listing products on Android phones: the "Products" button in the Members Area Scheduled section overflowed the screen, drag-and-drop photo reordering didn't work on touch devices, and the "List Now" button on the preview also ran off-screen.
Fixed unreliable saving of category meta titles and descriptions from the admin table editor, where moving straight to the next category could silently discard changes that appeared to have saved.
Fixed the show-password (eye) control, which failed on Safari for iPhone and anywhere inside the bid confirmation popup.
Fixed an incorrect redirect where actions such as "sign in to ask the seller a question" sent users to the Members Area instead of returning them to the page they came from.
Fixed an issue that prevented custom bid increments from being added to an auction.
Fixed the show-password button on the login form, which did not respond on mobile browsers such as Chrome.
Improved the visibility of the mobile menu icon in dark mode by switching it to white.
Fixed misaligned table columns on the sales browse page when no shipping was configured at all.
Fixed a bug where making a basic edit to a listing (for example switching to "Buyer Must Pickup") reset its start time to the moment of the edit instead of preserving the original date.
Fixed filtering by listings with bids when ordering by highest price.
Resolved a PHP 8.3 deprecation warning from usort() returning a boolean instead of an integer in the cron service.
Fixed the admin logout button, which was missing in mobile view.
The listing step labels (Details / Shipping & Payment / Preview) are now fully translatable, rather than being limited to single-language use.
Added the missing oval.svg loader asset in the Nine theme, which was referenced throughout the CSS but returned a 404.
Cleared a further PHP 8.3 usort() deprecation warning in the cron service.
Fixed a case where, with "hide empty categories" enabled, empty categories were correctly hidden while browsing but still appeared in the left-hand column on category pages.
The cart count beside the cart icon now updates immediately when items are added from the cart popup, with no page reload required.
Empty and whitespace-only values can no longer be saved to the word-filter table, and are ignored when filtering. This whitespace-trimming safeguard now applies across all tables.
Home-page CMS boxes now respect the active language on multi-language sites, instead of displaying every box regardless of language.
Fixed multi-language support for certain site fee descriptions.
Fixed an issue where adult categories and items could be viewed within a store without first confirming age consent.
Corrected inflated watcher counts that could appear on low-traffic auctions.
When combining invoices, the sale_id is now carried over from accounting to the newly created invoice.
Fixed a race condition where a bid placed just as cron marked a listing as "closing" could result in the auction closing on the previous high bid.
Direct payment gateway fields no longer appear on the registration page; they are now shown only on the account information page after sign-up.
The sidebar keyword search now ignores punctuation, so a query such as "Paul Procter" matches titles even when they contain a full stop or other punctuation.
Removed leftover end_time and tax_type_id fields from the bulk lister when both custom end times and tax are disabled in the admin.
Refactors, dependency updates and miscellaneous changes.
Updated the X (formerly Twitter) logo to the current branding.
The wish list can now be sorted using the same ordering options as the browse listings view.
The maximum custom listing date is now capped to the longest available value in the durations table.
Introduced a central file for site-wide wording overrides, so that common terms can be changed in one place rather than edited sentence by sentence.
Refined the Members Area listing list, drawing on design ideas from the CardBidder layout.
Outbound emails now use quoted-printable transfer encoding, with the body encoded accordingly.
Retired the standard router mode in favor of the hybrid router.
Corrected an incorrect method overload on save and select in the listings service, and audited related methods such as delete for the same issue.
Refreshed the installer with a new logo and updated design, and removed the retired "standard" router type.
Tax types are now tracked per listing rather than per invoice.
Refactored inline JavaScript into heredoc blocks within their own dedicated protected methods for cleaner, more maintainable view code.