J2Commerce v6
Description
Free without priority support
Specifications
- Developer J2Commerce
Arabic Unitag
Chinese, Traditional
Danish
Dutch
English
English, USA
Finnish
French
German
Greek
Hebrew
Italian
Japanese
Norwegian Bokmål
Persian Farsi
Polish
Portuguese, Brazil
Portuguese, Portugal
Russian
Spanish
Swedish
TurkishChange 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.