J2Commerce v6

J2Commerce v6

J2Commerce

Description

Free without priority support

 

Specifications

  • Developer J2Commerce
Language Translations
Arabic UnitagArabic Unitag
Chinese, TraditionalChinese, Traditional
DanishDanish
DutchDutch
EnglishEnglish
English, USAEnglish, USA
FinnishFinnish
FrenchFrench
GermanGerman
GreekGreek
HebrewHebrew
ItalianItalian
JapaneseJapanese
Norwegian BokmålNorwegian Bokmål
Persian FarsiPersian Farsi
PolishPolish
Portuguese, BrazilPortuguese, Brazil
Portuguese, PortugalPortuguese, Portugal
RussianRussian
SpanishSpanish
SwedishSwedish
TurkishTurkish

Change Log

Fix PR2411 (layouts) search the framework folder as a fallback, not as an override

Fix PR2414 (product) scope the variant lookup key to the option controls

Fix PR2418 (options) edit option parameters as real fields, not a raw JSON string

Fix PR2419 (options) read and repair option_params that was encoded more than once

Fix PR2425 (cart) hold both variant-resolution branches to the same rule

Fix PR2426 (modules) restore the J2Commerce name prefix on core module display names

Fix PR2428 (layouts) dispatch tag listings through the tag layout chain

Fix PR2429 (layouts) realign the shadowed plugin list layouts with the copies that execute

Fix PR2437 (product) resolve a variant from a checkbox option selection

Fix PR2438 (build) set core.quotepath=off on ls-files; align four uikit layouts with their bs5 twin

Fix PR2440 (options) render the number, email and url option types

Fix PR2441 (language) translate the four field-validation messages into the shipped locales

Fix PR2442 (schema) give every hasVariant Product an image and a real name

Fix PR2444 (schema) quote the price and stock state the product page shows

Fix PR2445 (products) source the brand description article from the manufacturer

Fix PR2446 (options) load and render every option type as a child option

Fix PR2447 (schema) resolve the system plugin's Offer through the shared helper

Fix PR2449 (build) finish two parity sets left partly done

Fix PR2452 (build) print the remediation the delta-naming rule actually asks for

Fix PR2453 (fields) let the form say which shipping methods it excludes

Fix PR2458 (installer) make the package's renamed-file cleanup work, and keep it safe

Fix PR2460 (fields) log the exception instead of showing it in the dropdown

Fix PR2463 (installer) make the declared version floors actually apply

Fix PR2464 (helpers) hold an article to one standard, and log what the shopper must not read

Fix PR2465 (products) send the caught driver message to the log, as the siblings do

Fix PR2466 (flexivariable) bind the asset handler to a dispatched event

Fix PR2468 (schema) build the product URL with the router alone

Fix PR2470 (views) let a listing's own metadata win over the menu item

Fix PR2471 (fields) square DuallistboxField's script block up with its twin

Fix PR2473 (fields) guard the duallistbox script encoding and finish the twins' parity

Fix PR2476 (language) keep the Terms Text example literal and restore ar-AA specifiers

Fix PR2477 (orders) restore adding a product from the order editor

Fix PR2479 (orders) read the charged amount in the ledger fallback, not order_total

Fix PR2482 (checkout) match saved-address pickers to the step's address type

Fix PR2483 (checkout) always ask a guest for an email on the guest form

Fix PR2484 (checkout) render payment card icons on custom subtemplates

Fix PR2485 (payment) give the offline payment plugins one rule for merchant text

Fix PR2486 (options) translate option and filter names in the admin views

Fix PR2490 (layouts) resolve the framework in two shims that are given none

Fix PR2491 (paypal) record captures and refunds in the order transaction ledger

Fix PR2492 (options) keep option value ids when switching an option between list and color types

Fix PR2494 (checkout) check the format of email custom fields on the server

Fix PR2495 (install) apply the safehtml filter to offline payment texts saved before #2485

Fix PR2496 (options) translate stored option and filter names only when they are language keys

Fix PR2499 (products) check the form token in the two read-only product-form AJAX tasks

Fix PR2500 (checkout) trim surrounding whitespace from email addresses

Fix PR2502 (shipping) translate stored shipping method and fee names only when they are language keys

Fix PR2506 (payment) translate payment method display names only when they are language keys

Fix PR2507 (tax) translate stored tax titles only when they are language keys

Fix PR2508 (cart) escape totals row labels on the cart, checkout and cart module

Fix PR2510 (cart) name and escape the discount remove links, drop text-muted from the cart module

Fix PR2513 (myprofile) replace the add-card button with gateway card actions

Fix PR2514 (options) offer only published options on the storefront

Fix PR2516 (language) add the 48 missing site strings to the non-English locales

Fix PR2517 (language) complete the site sys.ini locales and localize the coupon percentage

Fix PR2518 (options) index optionvalues, load traits once, bound option ordering

Fix PR2525 (options) bind reused traits to their product, keep model errors generic

Fix PR2529 (emails) let Email Template Mode decide the default substitution

Fix PR2531 (dashboard) warn when Strict Routing is off

Fix PR2533 (order) fall back to the product's images when a line has no thumbnail

Fix PR2534 (confirmation) honour the configured Continue Shopping destination

Fix PR2536 (emailtemplates) show a language value's real characters in the editor canvas

Fix PR2537 (checkout) gate the order emails on the order's own state

Fix PR2540 (config) give the url settings the validate/filter their type implies

Fix PR2541 (email) align the third Email Template Mode reader and collapse a repeated predicate

Fix PR2543 (email) return false when no email template resolves

Fix PR2544 (checkout) resolve the finalization test by lifecycle type

Fix PR2546 (models) quote ordering identifiers and cast product ids

Fix PR2547 (emailtemplates) name the fancy selects, reuse the payment label

Fix PR2551 (emailtemplates) null-coalesce the unguarded trims in check()

Fix PR2552 (orders) resolve the remaining status-id literals by lifecycle type

Fix PR2555 (language) translate the 163 missing core keys into all 20 locales

Fix PR2556 (emailtemplates) run the template validations on every write path

Fix PR2557 (dashboard) split the core template notices and make the notice scroller operable

Fix PR2559 (vouchers) hold the redemption totals to the ledger's reading

Fix PR2561 (task) resolve the order-cleanup status by lifecycle type

Fix PR2563 (language) translate the dashboard notice labels into the remaining locales

Fix PR2564 (paypal) delegate outcome status to the core resolver

Fix PR2565 (paypal) resolve order states through the shared helper

Fix PR2566 (queues) let the configured retention window own completed rows

Fix PR2568 (paypal) align the error surface, state guard and entry guards

Fix PR2569 (queues) hold the completion and purge paths to one definition

Fix PR2572 (plugins) resolve plugin layouts through the core override contract

Fix PR2575 (plugins) resolve plugin layout roots from JPATH_THEMES and recognize Subtemplate field

Fix PR2577 (admin) use the translated plugin name in list checkbox labels

Fix PR2579 (queues) batch the dead purge and floor the log retention window

Fix PR2582 (stubs) resolve payment scaffold layouts through the plugin layout resolver

Fix PR2583 (onboarding) offer en-US when the administrator default is not en-US

Fix PR2584 (checkout) follow the store's Allow Registration setting for checkout accounts

Fix PR2588 (orders) shipping card after-event name, sidebar card headings and button names

Fix PR2589 (install) sync core email and invoice templates on a fresh install

Fix PR2590 (app_diagnostics) clear outdated carts in bounded batches

Fix PR2593 (media) surface the real reason for a file not to be uploaded

Fix PR2595 (coupons) show the stored discount type in the coupons list

Fix PR2598 (shortcode) add missing j2commerce-product-XX to the container so that options affect the price

Fix PR2599 (emails) apply the order email link target to [INVOICE_URL]

Fix PR2600 (emails) link order emails straight to the confirmation page

Fix PR2602 (checkout) unique confirm-password id, labeled login fields, step headings

Deletion PR2435 (options) remove the time option type and convert existing ones to text

Deletion PR2553 (paypal) retire the unreferenced legacy notify entry file

Deletion PR2578 (config) label the image options tab "Images" and drop the Image Upload strings

New Feature PR2427 (options) give a product option a description that renders under its label

New Feature PR2528 (email) add a Shipping Method condition to email templates

New Feature PR2585 (product-types) let plugin product types supply cart behavior and admin form

New Feature PR2586 (orders) list merchant-defined checkout fields on the admin order view

New Feature PR2592 (products) badge products only editors can see in storefront lists

New Feature PR2596 (coupons) warn on the coupons and vouchers lists when the feature is off

Improvement PR2462 (build) give the CLI guard one home instead of eleven copies

Improvement PR2475 (fields) give the duallistbox twins one shared implementation

Fix PR 2365 (dates) Let a language pack's own calendar render printed dates

Fix PR 2367 (products) Route product edit to the article editor

Fix PR 2369 (products) Sort listings by the price each product card shows

Fix PR 2371 (orders) Tick "same as billing" when the order has no shipping address

Fix PR 2372 (orders) Hold the saved customer language to the languages the form offers

Fix PR 2374 (core) Hold subtemplate names and language tags to the values their pickers offer

Fix PR 2375 (menus) Remove the Product tab from the Product Tags View menu item

Fix PR 2376 (cart) Tax the discounted price when a coupon applies

Fix PR 2377 (checkout) Translate the terms text and follow the default subtemplate

Fix PR 2378 (content) Leave an article's own text to com_content in shortcodes

Fix PR 2379 (products) Render the product title heading level as a number from 1 to 6

Fix PR 2381 (router) Let a category's View Type decide its view

Fix PR 2382 (products) Keep the menu item's ordering when filtering the list

Fix PR 2383 (core) Truncate descriptions safely, add recalculated-totals event

Fix PR 2385 (products) Store all six additional-image columns as keyed JSON objects

Fix PR 2387 (images) Connect remote image requests to the checked address

Fix PR 2389 (cart) Load the existing cart without creating one on voucher reads

Fix PR 2390 (products) Serve the generated derivative in the gallery thumbnail strip

Fix PR 2392 (email) Keep conditional-comment keywords through the tag sweep

Fix PR 2397 (reports) Hold the report export to exportorders and guard the plugin handlers

Fix PR 2399 (seo) Name the page itself in the canonical on tag and category listings

Fix PR 2401 (routing) Fail closed when a category ancestor alias does not resolve

Fix PR 2402 (orders) Persist the totals the recalculation event returns

Fix PR 2405 (tags, categories) Order trending products by the product hit counter

Fix PR 2406 (tags) Load the parent tag's products only in the products display mode

New Feature PR 2362 (orders) Edit an order line's options from the order editor

New Feature PR 2363 (menus) Product Tags View and Product Tag Alias menu item types

New Feature PR 2364 (orders) Change an order line's variant and ask for options when adding a product

New Feature PR 2373 (tags) Per-tag overrides for Product Tags View settings

New Feature PR 2386 (images) Generate local thumbnails from remotely hosted images

Fix PR 1989 (minicart): hydrate the badge in both counting modes

Fix PR 1999 (shipping): hold rate quoting to the caller's context

Fix PR 2000 (cart): write the shared destination keys only from a submitted estimate

Fix PR 2001 (content): let the category product block survive the core copy-back

Fix PR 2002 (checkout): ship-to symmetry, address review and step-load failures

Fix PR 2009 Fix missing AfterAddOrderItem order events

Fix PR 2010 (templates): keep loop and conditional markers inside their table

Fix PR 2015 (print-templates): make file-based bodies selectable and register the fee tags

Fix PR 2016 (print): route printed dates through one helper that follows the site language

Fix PR 2018 (orders): hold the orderinfos write and the order write to one standard

Fix PR 2019 (myprofile): render the orders and downloads lists from one template on every refresh

Fix PR 2020 (myprofile): escape the order status name in the single order view

Fix PR 2021 (controllers): flush queued response headers on the AJAX exit paths

Fix PR 2022 (product-form): prefix the admin product-form element ids (#2007)

Fix PR 2024 (checkout): hold the checkout steps to one server-side sequence

Fix PR 2026 (orders): carry checkout custom fields through to the order record

Fix PR 2029 (admin): hold duplicate ids, id prefixing and DOM building to one standard

Fix PR 2033 (invoice): hold both print body sources to one contribution point

Fix PR 2034 (print-templates): hold the packing slip picker and renderer to one tag list

Fix PR 2036 (myprofile): hold every typed order-history row to one standard on the site view

Fix PR 2037 (checkout): keep one copy of what the payment-step merge duplicated

Fix PR 2038 (checkout): complete the payment-step assertion merge (#2028)

Fix PR 2039 (admin): hold script-block encoding to one standard (fixes #2032)

Fix PR 2040 (admin): hold the template shortcode picker to one output standard

Fix PR 2041 (core): fall back to a placeholder when a stored image file is absent

Fix PR 2043 (admin): hold the shortcode trait options to the same output standard

Fix PR 2044 (admin): give the template picker cards a native control

Fix PR 2045 (admin): hold email template conditionals to one wrapper standard

Fix PR 2046 (admin): hold the product AJAX exits to one response standard

Fix PR 2047 (admin): hold the menu module empty guard to the array it receives

Fix PR 2051 (admin): hold template marker unwrapping to one standard

Fix PR 2052 (payment_paypal): hold the five gateway response reads to one parse standard

Fix PR 2053 (admin): hold four product AJAX tasks to the controller's own capability helper

Fix PR 2055 (products): hold both bulk variant deletes to the same table list

Fix PR 2057 (admin): hold both article-resolving product tasks to the controller's own helper

Fix PR 2058 (admin): hold the remaining admin JSON exits to one response standard

Fix PR 2059 (products): hold the product cascade to the tables its children own

Fix PR 2060 (customfields): merge plugin area toggles into the stored field_display

Fix PR 2062 (products): hold every product listing to the detail view preview standard

Fix PR 2064 (admin): route the remaining admin badges through the badge_style helper

Fix PR 2068 (config): default the order email link to the confirmation page

Fix PR 2077 (language): align the Persian folder names with what the manifests declare

Fix PR 2080 (products): let a caller opt out of the draft-preview branch in ProductVisibilityHelper

Fix PR 2082 (inventory): give the cart-quantity helpers one owner for the rule

Fix PR 2084 (language): declare the locale folders the extensions already ship

Fix PR 2085 (cart): give the cart-quantity helpers a read-only resolver and an ownership predicate

Fix PR 2086 (delete): cascade child rows when a parent record is removed

Fix PR 2088 (customfields): hold the third address writer and the field preview to the shared standard

Fix PR 2094 (orders): keep one list of what belongs to an order

Fix PR 2095 (zones): store zone names as letters, not HTML codes

Fix PR 2096 (images): emit product image URLs through one helper

Fix PR 2097 (seo): give every frontend view a canonical URL

Fix PR 2098 (carts): decline the unsupported carts delete task instead of failing hard

Fix PR 2100 (carts): decline the remaining unsupported carts list tasks

Fix PR 2104 (products): report the shipping column from the sellable variants

Fix PR 2105 (shipping): resolve the free shipping destination the way sibling plugins do

Fix PR 2107 (carts): bring the two admin cart controller surfaces in line with their siblings

Fix PR 2108 (language): restore American spellings in the en-US source strings

Fix PR 2110 (finder): clean product search links and let CLI indexing complete

Fix PR 2111 (carts): bring three more admin cart surfaces in line with their siblings

Fix PR 2118 (core): make CLI search indexing safe and stop storing an absolute image URL

Fix PR 2124 (payment_paypal): bring every locale up to the full key set

Fix PR 2125 (content): report a generic error instead of the exception text

Fix PR 2126 (language): deploy J2Commerce strings for a language pack installed later

Fix PR 2129 (products): resolve the subtemplate name against the installed set

Fix PR 2136 (core): fall back to the product name when a stored image alt is blank

Fix PR 2137 (system): hold the product offer and the product node to one standard

Fix PR 2138 (schemaorg): declare the product context so schema overrides reach the page

Fix PR 2143 (products): order the AJAX product pages the way the rendered page does (fixes #2140)

Fix PR 2144 (api): record a bought-but-unstored shipping label on the order (fixes #2128)

Fix PR 2147 (checkout): build the AJAX entry point from the site root

Fix PR 2148 (products): keep one ordering allow-list and one derivation across the site models

Fix PR 2150 (products): route the listing pagination links to the listing itself

Fix PR 2151 (checkout): resolve the empty-cart destination once for cart and checkout

Fix PR 2153 (product): assign the back link the templates already render

Fix PR 2154 (orders): give the label-purchase lock its own column

Fix PR 2156 (orderstatuses): pass the status type select its attributes as attributes

Fix PR 2158 (orderstatus): resolve the status type field to its select class

Fix PR 2159 (product): resolve the tax profile field to its select class

Fix PR 2161 (orders): write only the shipping fields the save was given

Fix PR 2165 (paypal): give the webhook status outcomes their own settings

Fix PR 2166 (checkout): read the upload response off the XHR the callback receives

Fix PR 2168 (config): give My Profile visibility and download grants their own status params

Fix PR 2175 (language): translate the split order-status params in the remaining locales

Fix PR 2176 (schemaorg): read a stored override from the sibling context

Fix PR 2178 (schemaorg): publish only review markup that is eligible

Fix PR 2181 (setup-guide): hold the wizard offcanvas to one dark token set

Fix PR 2182 (language): bring every locale back to the en-US key set (fixes #2174)

Fix PR 2185 (a11y): announce Setup Wizard check status and group progress

Fix PR 2188 (schemaorg): dispatch one payload shape for onJ2CommerceSchemaReviewsPrepare

Fix PR 2191 (schemaorg): normalise every string the product node carries before it joins the graph

Fix PR 2192 (email): read order line options the way the order views read them

Fix PR 2193 (schemaorg): run the review eligibility filter on the live product path

Fix PR 2196 (config): seed the download status window so it is never empty

Fix PR 2197 (schemaorg): hold the Organization policy entry to the product node normalise pass

Fix PR 2198 (schemaorg): run the review eligibility filter on every dispatch site (fixes #2194)

Fix PR 2199 (core): bring the 2026-09-05 review advisories to sibling parity

Fix PR 2201 (core): hold the remaining setup, catalogue and gateway-return surfaces to the standard their siblings already meet

Fix PR 2202 (pricing): persist a cleared advanced-price date range

Fix PR 2205 (shipping): bring the shipping method params and cart selector to sibling parity

Fix PR 2207 (core): escape stored values in toolbar titles and route core log entries to the registered category

Fix PR 2214 (core): honour the cart plugin result contract on every product behaviour

Fix PR 2215 (paypal): route plugin log entries to the registered category and hold payload logging to one standard

Fix PR 2219 (schema): ship a schema update delta for the template table audit and checkout columns

Fix PR 2223 (vouchers): let Save as Copy insert a new record instead of updating the source

Fix PR 2227 (paypal): resolve webhook orders by the key the event carries and hold the sibling handlers to one standard

Fix PR 2229 (email): derive the transactional shortcode vocabulary from the substitution map

Fix PR 2230 (paypal): serve the webhook from the endpoint that exists and stop scaffolding the one that does not

Fix PR 2237 (paypal): resolve order states by type and make the webhook path f…

Fix PR 2238 (paypal): resolve order states by type and make the webhook path fail loudly instead of answering 200

Fix PR 2240 (templates): hold both admin template lists to one output-encoding standard

Fix PR 2243 (email): hold the tag-delimiter encoder to the two families processTags reads

Fix PR 2245 (vouchers): hold the API create verb to the insert path

Fix PR 2247 (core): translate the setup-guide task actions, classify Confirmed

Fix PR 2251 (templates): reach Sync Core from an empty template list

Fix PR 2252 (core): let Sync Core restore templates it can no longer find

Fix PR 2253 (core): supply the insert column the email template table has no default for

Fix PR 2260 (core): degrade the override editor to a textarea when it cannot render

Fix PR 2262 (templates): render preset totals through [TOTALS] (fixes #2257)

Fix PR 2263 (Content plugin) Fixed options|cart shortcodes so that when cart is called, options are showing properly and usable through the cart form

Fix PR 2264 (router): prefer the visitor's language when resolving menu items (fixes #2261)

Fix PR 2265 (core): state the presentation columns on both Sync Core write paths

Fix PR 2266 (lang): give colliding module parameter labels distinct wording

Fix PR 2267 (language): correct six German totals labels in the admin

Fix PR 2270 (core): show the database health card while its check run is in flight

Fix PR 2275 (language): translate the tracking-script strings into the remaining locales

Fix PR 2276 (email): place template CSS in the head, keep colour edits in the export, name the core template rows

Fix PR 2277 (core): carry the tracking snippet forward when a save omits its key (fixes #2272)

Fix PR 2279 (email): name a Save as Copy template as the merchant's own

Fix PR 2281 (core): hold checkout and cart AJAX to the visitor's language (#2280)

Fix PR 2282 (build): fail the SQL lint when the two newest-delta sorts disagree

Fix PR 2283 (core): encode the calculator's AJAX base the way the checkout does

Fix PR 2285 (core): bring the cart calculator's JS in line with the project rules

Fix PR 2288 (core): resolve the database health setup-guide flag per store

Fix PR 2289 (core): request the messages asset the storefront JS already calls

Fix PR 2291 (core): load the content plugin's assets through StrapperHelper

Fix PR 2292 (core): report what a shopper can still add, not raw stock

Fix PR 2293 (core): wrap bare tracking JavaScript in a script tag

Fix PR 2294 (build): package git-tracked files only

Fix PR 2295 (build): CLI-only guard and unquoted git paths in build tools

Fix PR 2296 (checkout): Admit the on-site gateway's confirmation hand-off

Fix PR 2298 (checkout): Give the confirmation hand-off claim a lifetime

Fix PR 2299 (build): Scope the package-surface check to the core ship set

Fix PR 2300 (cart): Dispatch j2commerce:cart:updated after a quantity change

Fix PR 2301 (flexivariable): Route the variant manager's messages through language strings

Fix PR 2302 (products): Render the cart button from the selected variant's stock

Fix PR 2304 (products): Announce cart-button changes and share the remainder message

Fix PR 2305 (images): Escape image alt text once, in the helper

Fix PR 2306 (images): Pass the Builder image style through getProductImage()

Fix PR 2307 (dashboard): Treat any held quantity as stale in the health check

Fix PR 2308 (dashboard): Drop the orders-without-items health check and report failed checks

Fix PR 2312 (checkout): Persist the customer note before an off-site gateway redirect

Fix PR 2313 (checkout): Bound the customer note and report a failed write

Fix PR 2315 (content): Write article product-form render errors to the com_j2commerce log

Fix PR 2317 (content): Render every {j2commerce} shortcode option

Fix PR 2319 (email): Size the store logo with an HTML height and centre it

Fix PR 2322 (content): Unique ids for a repeated shortcode, name the quickview button

Fix PR 2324 (cart): Carry a re-ordered line's recorded data forward

Fix PR 2325 (content): Scope the gallery swap, guard the indexer strip

Fix PR 2326 (email): Constrain the producers of the scalar brand shortcodes

Fix PR 2328 (email): Pair the attribute escaper with encodeTagDelimiters

Fix PR 2329 (options): Hold the option layouts to the standard their bootstrap5 twin already meets

Fix PR 2332 (options): Wrap the price prefix in the uikit option layouts

Fix PR 2334 (options): Wrap three merchant fields the sibling branches already wrap

Fix PR 2339 (options): Cast the option identifiers in the uikit layouts

Fix PR 2341 (checkout): Branch the shipping step on the identity

Fix PR 2343 (checkout): Guard the guest billing validator on the identity

Fix PR 2344 (email): Size the logo by attribute and resolve the site root from live_site

Fix PR 2345 (options): Route the option layouts through the shared emitters

Fix PR 2346 (email): Keep the SSL upgrade on a configured site root, and scope the width cleanup

Fix PR 2349 (customfields): Compare the option label against an empty string

Fix PR 2352 (language): Translate the duplicate-product error into the shipped locales

Fix PR 2354 (products): keep a disabled product attached to its article

Fix PR 2355 (products): require product-edit permission for the frontend state sync

Improvement PR 1998 (cart): memoise the cart-count read per request

Improvement PR 2003 (checkout): plans for the order write and checkout step sequencing

Improvement PR 2008 (fr_FR): Change keys related to 'Passer à la caisse'

Improvement PR 2028 (checkout): assert the payment step the state machine already records

Improvement PR 2109 (lib): update the vendored phpseclib to 3.0.57

Improvement PR 2113 (language): use American spelling in the en-US strings

Improvement PR 2167 (vendor): bump Swiper, GrapesJS and Uppy to current

Improvement PR 2286 (vendor): refresh Fancybox to 6.1.15 and Uppy to 6.0.1

New Feature PR 2004 (dashboard): shared icon-class and mode badge for plugin quick icons

New Feature PR 2069 (customfields): hold a text field to a character set and a length

New Feature PR 2075 (dashboard): add a database health card with one-click repairs

New Feature PR 2076 (orders): let a plugin add columns to the admin order list

New Feature PR 2081 (fa_IR): Persian translations for system plugin language files

New Feature PR 2089 (dashboard): report the remaining order children that outlive their order

New Feature PR 2121 (build): add three pre-build check scripts

New Feature PR 2135 (api): complete the warehouse fulfilment routes with label creation (#1187)

New Feature PR 2152 (orders): give each order status its own lifecycle classification

New Feature PR 2155 (orderstatuses): save the status type per row and expose it as a form field

New Feature PR 2160 (orderstatuses): add the approved status type and label complete as paid

New Feature PR 2164 (orderstatuses): let plugins register their own status types

New Feature PR 2169 (schemaorg): emit Organization-level ShippingService on the policy page

New Feature PR 2183 (schemaorg): let one review provider contribute, chosen by plugin order

New Feature PR 2203 (shipping): add display image and description to free and standard shipping (fixes #2073)

New Feature PR 2212 (templates): add a Duplicate bulk action to the email and invoice template lists

New Feature PR 2233 (setup-guide): flag built-in order statuses that have no lifecycle type

New Feature PR 2239 (email): show the translated subject and edit it through a language-override dialog

New Feature PR 2241 (email): resolve language tokens in the body editor and edit them in place

New Feature PR 2246 (invoice): show print template wording, not tokens

New Feature PR 2271 (core): tracking scripts with value tokens on checkout and confirmation

New Feature PR 2311 (core): Shared SubtemplateHelper for layout override resolution

New Feature PR 2348 (core): Relocate customer file storage from the Options screen

New Feature PR 2351 (products): Duplicate a product and its article

Deletion PR 2115 (lib): drop the composer dependency the library never loaded

Deletion PR 2123 (build): stop bundling admin language files the installer never reads

Deletion PR 2216 (vouchers): retire the per-voucher email body fields in favour of the Email Hub template

Deletion PR 2225 (templates): wire the check-out UI on the email and invoice template lists and retire their access column

Deletion PR 2234 (orders): remove the Additional Information blocks that repeat the order's own address

Deletion PR 2242 (orders): prune the retired order customfields layout on upgrade and restore the billing email input

Fix PR1294 — Round order money fields to currency scale so balances reconcile

Fix PR1295 — Shipping methods can "bleed" to the cart page after being visible in checkout

Fix PR1296 — Payment labels should be identical all the way to the confirmation email

Fix PR1298 — Sync pt-BR language files to canonical en-US

Fix PR1300 — Render plugin-provided HTML in Producttags view

Fix PR1301 — Return JSON on CSRF failure for AJAX confirmPayment posts

Fix PR1305 — Dispatch dashboard plugin tabs inside the open uitab tabset

Fix PR1307 — Confirm free orders and drop duplicate register address fields

Fix PR1312 — Avoid Bootstrap dependencies in product pages where filters are used

Fix PR1313 — Keep batch-actions dialog template inside adminForm

Fix PR1314 — Add missing voucher history empty state and fix view property visibility

Fix PR1317 — Force Bootstrap 5 framework for admin custom field rendering

Fix PR1318 — Correct shipping address display and add core template sync tool

Fix PR1319 — Cart does not empty after an order has been placed despite the option being set

Fix PR1320 — Log order-status field load errors instead of surfacing exception text

Fix PR1323 — Add missing voucher ledger files referenced by merged voucher PRs

Fix PR1325 — Log coupon-field DB lookup errors instead of surfacing exception text

Fix PR1333 — verify address ownership before update in CustomerModel

Fix PR1335 — Checkout payment images, date pickers, payment-step custom fields

Fix PR1339 — Reconcile partial-payment confirmation summary line items

Fix PR1340 — Version 6.5.0 + missing language file load of com_j2commerce in plugins

Fix PR1341 — Correct German coupon strings from Gutschein to Rabatt

Fix PR1342 — In CheckoutController::confirmPayment(), sendOrderEmails() is called twice for free orders

Fix PR1344 — Vouchers are not applied in the cart + don't show the correct remaining balance in the cart if adjusted

Fix PR1347 — Category params are missing

Fix PR1348 — 'Not Taxable' and 'Use Global' or '-- select --' all have no value. Set 'Not Taxable' to 0

Fix PR1355 — PayPal - use ConfigHelper::pricesIncludeTax() to ensure tax is not added when it is included in the price.

Fix PR1358 — MyProfile order - removed inline color style

Fix PR1363 — Verify address ownership before writing the session id

Fix PR1364 — Correct the alert-link selector so alert links pick up the alert text colour

Fix PR1365 — Add cart-item-uniqueness hook so plugins can separate lines

Fix PR1367 — Allow-list ORDER BY columns in the site product models

Fix PR1368 — Restrict unserialize() to arrays in cart and order item paths

Fix PR1369 — Correct two German strings that read wrong in the storefront

Fix PR1370 — Constrain session address lookups to the current user

Fix PR1374 — Guard the cart item signature read against a non-scalar value

Fix PR1375 — Make the storefront Popular sort survive the round trip

Fix PR1376 — Keep the reserved signature key out of caller-supplied params

Fix PR1377 — Render order_shipping_tax in confirmation and order-view totals

Fix PR1378 – Add Persian translations for modules and library (see Other)

Fix PR1390 – (core) Consolidated hardening across admin, checkout, uploads and overrides

Fix PR1391 – (packing-slip) Strip price tags before processTags() substitution

Fix PR1400 – (myprofile) Drive the order print modal with the API its template family rendered

Fix PR1401 – (myprofile) Escape quotes in the AJAX row builder and stop the hash aborting the handler

Fix PR1409 – (acl) Guard the seed's row writes against a concurrent save

Fix PR1412 – (inventory) Reserve stock at Pending and move it on model status changes

Fix PR1415 – (inventory) Decide both sides of a status transition with one predicate

Fix PR1417 – (inventory) Derive both ends of a stock transition from one set of holding states

Fix PR1422 – (inventory) Record whether an order holds stock instead of inferring it

Fix PR1424 – (inventory) Make the order status transition a compare-and-swap

Fix PR1425 – PayPal Guest Checkout does not show the confirmation page

Fix PR1427 – Test if there are options before creating a select from them and avoid empty ones

Fix PR1428 – Do not create collapsible button if options are not taken into account (file, image…)

Fix PR1429 – (checkout) Re-assert the app-plugin order veto at confirm submit

Fix PR1430 – (inventory) Record the signed stock movement instead of clamping the debit

Fix PR1431 – (orders) Require editorders on the AJAX status change

Fix PR1434 – (inventory) Converge the stock_committed seed from the component boot

Fix PR1436 – (api) Require editorders on the fulfilment status change

Fix PR1437 – (orders) Put the remaining mutating order tasks behind editorders

Fix PR1439 – (api) Authorise every J2Commerce Web Services route

Fix PR1440 – Fix order URL to download items and action button styles when doing a search

Fix PR1442 – Fixed labels do not refresh when reset (chip clears)

Fix PR1444 – (orders) Close the three ACL asymmetries around the order gates

Fix PR1445 – Fix UI Out of Stock button so that it does not get duplicated with the out of stock label

Fix PR1447 – (installer) Guard the install debug log and stop logging exception text

Fix PR1458 – (relatedproducts) Scope the AJAX module lookup to this module and the viewer

Fix PR1459 – (products) Drop the grid cell when a product type renders nothing

Fix PR1460 – (categories) Let the category app accordion use the full form width

Fix PR1461 – (api) Make a core.manage revoke mean the same thing over the API

Fix PR1462 – (acl) Compare the seed's guarded rows byte for byte

Fix PR1465 – (acl) Stop the installer re-seeding permissions an administrator cleared

Fix PR1466 – (acl) Gate the dashboard and analytics figures on one action

Fix PR1468 – (acl) Extend the write gate to the controllers it had missed

Fix PR1469 – (api) Pair the bulk list routes with the export capability

Fix PR1471 – Fix Stock not updating when switching variants on the frontend

Fix PR1474 – (acl) Align three permission and filter checks with their neighbours

Fix PR1476 – (installer) Confine the attachment path and keep exception text out of the trace

Fix PR1479 – (installer) Only protect an upload tree J2Commerce owns, close the relocation window

Fix PR1480 – fix(core) Align the download root guard with the other readers of the same param

Fix PR1481 – Fix content plugin: duplicate content + access to editable content

Fix PR1483 – (checkout) Give the checkout error alerts language keys

Fix PR1486 – (language) Number the placeholders a translator cannot reorder

Fix PR1487 – (language) complete the shipped locales against the en-US source

Fix PR1488 – repair the pt-BR quality defects the inventory documented

Fix PR1490 – Fixed missing option to show UPC in product display settings

New Feature PR1297 — Self-service Payment Update view (frontend)

New Feature PR1302 — Admin Orders CSV export with filterable offcanvas UI

New Feature PR1303 — Translate Orders CSV export strings into 19 locales

New Feature PR1306 — Dispatch AfterDisplayLineItemTitle event in confirmation and order views

New Feature PR1311 — Voucher balance adjustments, ledger, and customer gift card API

New Feature PR1315 — Dispatch AfterDisplayLineItemTitle consistently in emails and admin edit views

New Feature PR1316 — Language file update (com_j2commerce.ini)

New Feature PR1321 — Functional admin order editing with AJAX tab navigation

New Feature PR1322 — AJAX admin order editing (items, addresses, discounts, fees, stock)

New Feature PR1324 — Coupon picker modal field for reuse in any extension form

New Feature PR1326 — Unified My Profile payment-methods tab with provider badges/actions

New Feature PR1327 — Support plugin-injected tax profiles in the admin field and list

New Feature PR1328 — Apply default tax profile when a new product is created

New Feature PR1329 — Warn on dashboard when a required J2Commerce menu is missing

New Feature PR1331 — Apply category default tax profile to new content products

New Feature PR1332 — Warn on dashboard when a required-menu view has no menu item

New Feature PR1334 — Admin manual order creation, editing wizard, and Take Payment

New Feature PR1336 — Add en-US/en-GB strings for order export and voucher history

New Feature PR1338 — Add 20-locale translations for order-management strings

New Feature PR1345 — Add onJ2CommerceAfterStockAdjust event for stock mutations

New Feature PR1346 — Add onJ2CommerceBeforeAddOrderItem seam for per-variant tax

New Feature PR1372 — Add a [TOTALS] placeholder for order emails and invoices

New Feature PR1395 – (orders) Add a Print Packing Slip option to the front-end order view

New Feature PR1443 – (acl) Add editproducts and editsetup, and enforce them

New Feature PR1451 – (acl) Give order export its own capability and an audit trail

New Feature PR1485 – (geozone) Add every enabled country to a geo zone in one step

Improvement PR1316 — Language string updates

Improvement PR1337 — Update Swiper to 14.0.6 and GrapesJS to 0.23.2

Improvement PR1396 – (checkout) Build injected checkout markup as DOM instead of innerHTML

Improvement PR1399 – (user-plugin) Move the registration country/zone cascade to shared media JS

Improvement PR1402 – (filters) Encode the full quote set in the chip builder's escape helper

Improvement PR1403 – (myprofile) Match only tab toggles when resolving the hash deep-link

Improvement PR1404 – Improve backend access

Improvement PR1405 – (acl) Converge the custom-action seed outside the installer postflight

Improvement PR1408 – Streamline cart migration (guest→logged in, logged in→logged in, empty after order placed)

Improvement PR1426 – Move Terms & Conditions checkbox enforcement in confirm payment block

Improvement PR1470 – List views: enhance input handling and improve price range calculations

Deletion PR1464 – (reports) Retire the superseded report CSV writer

Update Thanks to Brian Teeman, Morteza Honar, Elisa Foltyn and Angie Radtke for their contributions.

Fix PR1251 – Checkbox for agreeing to terms and conditions not working properly

Fix PR1252 – Descriptions not showing in category views and modules

Fix PR1255 – Finder product links now inherit article access (not product access)

Fix PR1257 – Product gallery thumbnails kept square

Fix PR1261 – Flexivariable SKU/UPC AJAX update uses textContent instead of innerHTML

Fix PR1264 – Replace innerHTML/outerHTML/insertAdjacentHTML with inert DOM APIs (XSS hardening)

Fix PR1265 – Repair {j2commerce} cart shortcode rendering

Fix PR1268 – Price filter not functioning properly in category list view

Fix PR1269 – Repair fulfilment API POST id resolution and displayItem signature

Fix PR1271 – ShippingStandard::calculateShippingTax() always used exclusive formula incorrectly

Fix PR1272 – Render plugin email tags in template preview and test send

Fix PR1273 – Repair dead inline help on product, vendor and manufacturer edit screens

Fix PR1275 – Currency-aware ledger rounding and batched seeding

Fix PR1277 – webhook_id never differentiated by sandbox/live mode

Fix PR1278 – send_default_email_template defaults to 0 (like config.xml)

Fix PR1280 - sending notifications from PayPal

Fix PR1282 - space/none thousands separator and space before post symbol

Fix PR1285 - render gateway payment form on zero-total context checkouts

Fix PR1286 - surface gateway error detail in payment methods manager

Fix PR1287 - clear cart for on-site gateways that finalize inline

Fix PR1288 - correct German mistranslation of Tax labels in de-DE

Fix PR1290 - reuse existing vendor rows on sample data re-install

Fix PR1292 - reuse existing manufacturers, options, categories on sample data re-install

New Feature PR1253 – Missing frontend translation keys added

New Feature PR1254 – Manufacturer filter restriction and AJAX sidebar state seeding

New Feature PR1256 – Product search results page heading

New Feature PR1258 – Persian translations for some J2C plugins

New Feature PR1259 – Product search-results strings translated to 20 locales

New Feature PR1260 – Checkout-context injection for pseudo-checkout apps

New Feature PR1262 – Decouple checkout charge amount from order_total via amount_due_now

New Feature PR1270 – Shared order-transaction ledger

New Feature PR1274 – Ledger payment strings added to all core locales

New Feature PR1276 – Persian translations for J2C plugins (extended)

Improvement PR1266 – Match category list views in structure and behavior (Bootstrap5 + UIKit)

Improvement PR1267 – Additional cleanup for tag and category views (Bootstrap5/UIKit consistency)

Improvement PR1281 – Flag orphaned menu items on dashboard with one-click unpublish

Improvement PR1283 – Ship lib_j2commerceflow shared flow/journey UI SDK

Improvement PR1284 – process queue across all types, release unhandled items

Fix PR1230 — Replace deprecated text-muted with text-body-secondary in order view (Bootstrap 5 compat)

Fix PR1234 — Replace deprecated Toolbar::getInstance() in 3 toolbar Field classes

Fix PR1236 — Display price now uses display options for tax information

Fix PR1238 — Live tracking-number display after AJAX save + always show manual tracking editor on shippable orders

Fix PR1239 — Require core.edit ACL on all 7 order AJAX endpoints (not just CSRF token)

Fix PR1240 — Drop bogus Content-Type: application/json on body-less GET in doTask() (fixes 415 on WAF-hardened servers)

Fix PR1242 — Swap deprecated CMS HttpFactory for framework HttpFactory in GeocodingHelper (Joomla 7 prep)

Fix PR1244 — Follow-up to #1236: missing frontend language keys for include/exclude tax; remove duplicate info from displayPrice()

Fix PR1245 — Fix inconsistencies between product display and cart with inclusive/exclusive prices; fix adding tax twice; coupon tax handling

Fix PR1247 — Fix accented characters in any language will be safely escaped as proper JS string literals

Fix PR1249 — Fix: Cannot enter multiple admin emails in the store configuration

Fix PR1250 — Fix: wrong casing in ShippingToolbar field name

Improvement PR1235 — Sync Products Tags model/view documentation to match Products (add missing use statements)

Deletion PR1241 — Drop redundant COM_J2COMMERCE_* key copies from mod_j2commerce_quickicons language files (21 languages affected)

New Feature PR1243 — Add Persian (fa_IR) translations for all J2Commerce components and modules

New Feature PR1246 — API: expose linked com_content article and custom fields (jcfields) on product item endpoint (GET /v1/j2commerce/products/{id})

Fix PR1183 – convert gateway amounts by currency_value for multi-currency orders

Fix PR1186 – payment_paypal charge renewal_order_total not renewal_amount

Fix PR1191 – checkout: only clear cart when order reaches a placed state

Fix PR1192 – missing COM_J2COMMERCE_CART_RETURN key

Fix PR1198 – Fix clearContentCaches catches Throwable instead of Exception

Fix PR1199 – import j2commerce plugin group before queue dispatch

Fix PR1200 – retry failed queue rows in QueueHelper::claimBatch

Fix PR1202 – set value_field on queue filter SQL fields

Fix PR1209 – checkout: re-sync confirmation to the finalized order for offsite gateways

Fix PR1213 – deterministic order-history sort with id tiebreak

Fix PR1218 – cart respect config_including_tax in line-item price display

Fix PR1220 – Fix capitalization in LocalizationData type

Fix PR1223 – add order-status strings for 3rd-party extensions

Fix PR1226 – tax surface plugin-injected tax profiles in product/category dropdowns

New Feature PR1196 – add web-services API component + fulfilment endpoints

New Feature PR1203 – checkout collapsible custom fields behind an "Add" link

New Feature PR1204 – add CustomizeRenderLayout instrumentation seam to ProductLayoutService

New Feature PR1207 – Add Persian (fa-IR) translation: pkg_j2commerce.sys.ini

New Feature PR1211 – Add Persian (fa-IR) translation: com_j2commerce.ini

New Feature PR1212 – checkout add paymentMethodsOnly task for fast payment-list refresh

New Feature PR1214 – add feed + JSON product views

New Feature PR1216 – Add Persian (fa-IR) translation: administrator/components/com_j2commerce/language/

New Feature PR1217 – show payment-method description subtitle in checkout

New Feature PR1224 – dispatch onJ2CommerceAfterSaveTrackingNumber on tracking save

Improvement PR1221 – normalize subtemplate resolution + uikit3 → uikit folder rename

Deletion PR1181 – refactor(lib): remove bundled Amazon Pay SDK from shared library

Fix PR1177 - TaxProfile field None option + Linux casing in scaffold stubs

New Feature PR1178 - Add missing Iran province Alborz

New Feature PR1172 - onJ2CommerceGetAnalyticsChartTabs plugin event

New Feature PR1173 - Build: persistent dev-build counter, strip 4th version segment

New Feature PR1174 - Plugin extension points for order summary + payment info

New Feature PR1175 - Generic plugin hooks for protected file download

Fix PR1170 — Router: set Itemid for sub-category links in a categories menu

Fix PR1169 — Checkout: treat blank min/max_subtotal as no limit (no longer blocks payment)

Fix PR1168 — Content plugin: load J2Commerce product field on case-sensitive filesystems (Linux)

Fix PR1161 — Plugins: wire admin Help toolbar links for shipping_standard and report plugins

Fix PR1158 — Core: RouterModalCategory field type now loads on Linux (case-sensitive FS)

Fix PR1156 — Router: route category listings through the products view, not a phantom category view

Fix PR1151 — Core: Geozone field type case corrected so dropdown loads on Linux

Fix PR1150 — Inventory: build working Batch Update flow

Fix PR1149 — Inventory: Stock Status select now reflects actual shopper-facing status

Fix PR1166 — Bootstrap5 tag template: replace deprecated JText/JRoute with Text/Route; update FiltergroupController

Improvement PR1165 — Translation update: com_j2commerce.ini (language string update)

New Feature PR1152 — New Persian (Farsi) language file

Fix PR1145 — fix(core): GeoZone field defaults to All (empty) not first geozone

Fix PR1141 — fix(product): option price stops updating when product shown twice (fixes #PR1133)

Fix PR1137 — fix(customfield): correct save2copy task match + unique namekey on copy

Fix PR1131 — Multiple tax rates are not applied to local sales

Fix PR1129 — Custom field casing issues on case-sensitive systems

Fix PR1127 — fix(products): load own variant in onUpdateProduct price recalc

Fix PR1125 — fix(product): resolve option-type label from registered map, not hardcoded key

Fix PR1124 — fix(product): pass Registry to displayPrice in Simple/Downloadable behaviors

Fix PR1121 — fix(options): validate option type against registered types (fixes #PR1120)

Fix PR1118 — fix(checkout): enforce payment geozone + subtotal limits in core

Fix PR1117 — fix(checkout): enforce CSRF token on POST when orderpayment_type is set

Fix PR1115 — fix(cart): consume plugin event result instead of iterating event object

Fix PR1111 — fix(lib): repair clear-selection button in multiselect modals

Fix PR1108 — fix(products): wire menu ordering params + assign article ordering

Improvement PR1144 — codestyle

Improvement PR1143 — chore(core): update vendor libs Γ Swiper 12.2.0, GrapesJS 0.23.1

New Feature PR1142 — feat(product): variant deep-linking (receiver + finder + card sender) Γ fixes +PR1132

New Feature PR1134 — feat(core): add ShippingItemHelper for multi-package shipping expansion

New Feature PR1119 — feat(options): plugin extension points for custom option types (fixes +PR1113)

Deletion PR1140 — fix(checkout): remove double parens on optional field indicator

Deletion PR1139 — fix(checkout): remove duplicate label on floating-style phone field

Fix PR1170 — Router: set Itemid for sub-category links in a categories menu

Fix PR1169 — Checkout: treat blank min/max_subtotal as no limit (no longer blocks payment)

Fix PR1168 — Content plugin: load J2Commerce product field on case-sensitive filesystems (Linux)

Fix PR1161 — Plugins: wire admin Help toolbar links for shipping_standard and report plugins

Fix PR1158 — Core: RouterModalCategory field type now loads on Linux (case-sensitive FS)

Fix PR1156 — Router: route category listings through the products view, not a phantom category view

Fix PR1151 — Core: Geozone field type case corrected so dropdown loads on Linux

Fix PR1150 — Inventory: build working Batch Update flow

Fix PR1149 — Inventory: Stock Status select now reflects actual shopper-facing status

Fix PR1166 — Bootstrap5 tag template: replace deprecated JText/JRoute with Text/Route; update FiltergroupController

Improvement PR1165 — Translation update: com_j2commerce.ini (language string update)

New Feature PR1152 — New Persian (Farsi) language file

Fix PR1105 - fix(installer): wrong path to language files

Fix PR1104 - fix(schema): widen paymentprofiles.payment_token to varchar(255)

Fix PR1101 - fix(shipping): apply weight-based shipping rules at checkout

Fix PR1099 - fix(checkout): confirmation page reflects real order status

Fix PR1098 - fix(option): allow option value name of "0" to save

Fix PR1097 - fix(product): enable drag-to-reorder for config option values modal

Fix PR1096 - fix(product): smooth child-options swap without layout shift

Fix PR1095 - fix(product): match configurable child option layouts to parent markup

Fix PR1094 - fix(product): configurable child options, gallery flash, delete message

Fix PR1093 - fix(confirmation): register j2commerce.css on uikit3 order confirmation

Fix PR1089 - undefined-variable fixed in build/build_package.php

Fix PR1086 - fix(language): correct de-DE STATISTICS_DASHBOARD translation

Fix PR1077 - fix(core): self-load com_j2commerce lang inside coupon + voucher layouts

New Feature PR1102 - i18n(checkout): translate order confirmation status strings (19 locales)

New Feature PR1078 - i18n: translate UPC language keys to 18 locales

Improvement PR1092 - feat(core): add onJ2CommerceBeforeApplyCoupon event hook

Improvement PR1091 - feat(core): plugin-folder file resolver for invoice/print templates

Improvement PR1090 - feat(core): decouple coupon/voucher + upload JS from Bootstrap

Improvement PR1088 - feat(core): auto-discover locales in package build + register pt-BR

Improvement PR1087 - feat(core): framework-split 7 shared layouts via resolver shim

Improvement PR1084 - feat(core): framework-aware checkout payment_icons layout

Improvement PR1083 - feat(core): apply payment-method surcharge at checkout

Improvement PR1082 - feat: add pt-BR translation

Improvement PR1081 - feat(core): scope cart cookie name by cart_type

Improvement PR1080 - feat(core): add 3 product display event hooks for plugin extensibility

Improvement PR1079 - feat(core): expose UPC on Flexivariable variant data

Fix Fixed variable product options do not update on change

Fix Fixed plugin discount events

Fix Persist cart-level discounts

New Feature Initial release with Joomla 6 support

Fix 823 - Content plugin: restore missing functionality in `renderProductHtml`

Fix 827 - Content plugin: remove constructor to prevent fatal error on install

Fix 783 - Content plugin: disable product record when article is toggled off as a product

Fix 825 - Carts controller: add missing token and URL validation (security)

Fix 824 - Cast `$product->quantity` to `int` in `checkStockStatus` and `getPrice`

Fix 821 - Images: enable drag-and-drop onto product image upload zone

Fix 820 - Language: correct label for `list_show_cart` option 3

Fix 818 - Routing: remove `breadcrumb_category_inclusion` menu param

Fix 809 - Downloadables: surface upload rejections and tighten file-type restrictions

Fix 808 - Reports: improve mobile layout for itemised and products reports

Fix 807 - Vouchers: add migration for missing `valid_from` / `valid_to` columns

Fix 806 - CSS: remove dead `.j2c-timeline` CSS block

Fix 805 - Report: add SKU column to itemised report CSV export

Fix 803 - Schema: remove blind `DROP INDEX` that breaks fresh 6.2.2 installs

Fix 787 - Inventory: make quantity and availability field IDs unique per row

Fix 785 - Downloads: allow configured `image_directories` for downloadable product file uploads

Fix 784 - Product filters: align autocomplete dropdown with input field

Fix 777 - Inventory: align Save button to centre to match Actions header

Fix 776 - Email: fix language wildcard binding to satisfy pass-by-reference

Fix 773 - Products: restore missing product filter and options AJAX layout templates

Fix 772 - Installer: write install debug log to the configured logs folder

Fix 766 - Overrides: remove tag badge with missing `bg-purple` class

Fix 755 - Security: enforce filetype allowlist on product uploads

Fix 754 - Product price: persist create flash across reload

Fix 753 - Product price: register JS delete-confirm string

Fix 752 - User plugin: drop locale prefix from language filenames

Fix 815 - i18n: remove hardcoded English fallbacks from `Joomla.Text._()` calls

Fix 795 - Inventory: remove unreachable dead code block

New Feature 828 - Standardise `show_page_heading` pattern across all site views

New Feature 804 - Add `RenderOrderHistoryIcon` plugin event for the order history timeline

New Feature 810 - Register `media/images` folder in `report_itemised` manifest XML

New Feature 791 - Add `AppPluginController` and `Appplugin` view for app plugin dispatch

New Feature 789 - Multi-token payment profiles schema

New Feature 846 - Allow all root folders specified in Joomla's 'Filesystem - Local' plugin to be used for product file uploads

Improvement 822 - Add missing `scope="col"` on table headers

Improvement 770 - Add visually hidden label for order status select

Improvement 771 - Add `aria-label` to customer note textarea

Improvement 796 - Hide order status column on small screens in latest orders module

Improvement 798 - Hide product thumbnail on small screens in product table view

Improvement 814 - Add descriptions/tooltips for search fields in itemized and products report filters

Improvement 829 - MyProfile: replace custom login strings with Joomla core equivalents

Improvement 812/811 - Vendors: add vendor manifest + checker script, update all third-party libs, always show vendor status in build output

Improvement 767 - Language: remove duplicate string keys from admin language files *(partially reverted by #768)*

Improvement 758 - Code style cleanup

Improvement 762 - Update copyright notices

Improvement 794 - Language sync after #791

Improvement 743 - Untrack third-party layout and tmpl files from core repo

Improvement 785 - Downloads: honor image_directories config for file uploads

New Feature J2Commerce v6 preview release

Documentation

Go PRO. Get More Features.

Discount Coupons, Vouchers

Attract more customers and encourage them to buy more with discount coupons, vouchers and more.

Manage Stock Easily

Manage your inventory efficiently with J2Commerce. Do not oversell. Your store can auto-deduct the stock once the customer places a successful order.

Add more tools to your store

Create and send professionally designed emails and invoices to your customers. Add quantity restrictions and much, much more.

What's Changed
  • 4.1.5 - Miscellaneous fixes by @j2commerce in https://github.com/j2commerce/j2cart/pull/299

FIXED Cast as char database calls in search plugin

FIXED PayPal custom field creates an error

FIXED issues adding images on the product page

FIXED double escaping of tags in the checkout fields

MODIFIED the FOF message when FOF libraries must be cleaned up on install

UPDATED the code with safe DOM methods, escaped variables

  • *Full Changelog**: https://github.com/j2commerce/j2cart/compare/v4.1.4...v4.1.5

Stay Updated

Subscribe for free and be the first to know about the latest features, updates, and new additions.