grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/2026#################################### # v9.2.0 - (2026-09-29) #################################### - Core: - New feature: - #42972: Update composer for hummingbird v2.1.2 (by @tblivet) - Improvement: - #43018: Update missing hooks (by @jolelievre) - #42856: Update Symfony components after 6.4.46 release (by @nicosomb) - #42851: Harden extra property definitions on the write and read paths (by @jolelievre) - Installer: - Improvement: - #43020: Update default catalog build-920 (by @ps-jarvis) #################################### # v9.2.0-rc.1 - (2026-09-11) #################################### - Back Office: - New feature: - #42022: Improve the carrier domain and the Admin API for the new carrier endpoints (by @nicosomb) - Improvement: - #42350: Index new CMS pages by default (by @Hlavtox) - #41942: Add shared stock help message to combination availability form (by @Codencode) - #41932: Paginate the orders grid by id first to avoid a full-table sort (by @boo-code) - #41703: Tax rules list apiAdd tax rules list API support to TaxRule grid query builder (by @nicosomb) - #41409: Add multistore support to administration and product settings configuration forms (by @Codencode) - Bug fix: - #42768: Fix the theme selector in the Translations page (by @tblivet) - #42600: Fix supplier ID type in SetSuppliersCommand (by @Codencode) - #42475: Fix product ID type in product grid decorator (by @Codencode) - #42411: Fix the Shipment domain defects that do not depend on the Admin API (by @mattgoud) - #42400: Fix Carts page performance regression on connections query (by @Codencode) - #42374: Order confirmation email ignores the order state's "Attach invoice PDF to email" setting (by @aomaxime) - #42245: Fix tax rule groups grid duplicates in multistore context (by @Codencode) - #42241: Offer the default route for every language in the SEO and URLs form (by @boo-code) - #42203: Let a grid status menu show past the scrolling table (by @boo-code) - #42197: Let the SMTP transport choose implicit TLS by port so 587 works (by @boo-code) - #42057: Fix changing an employee role when the default page is specific to the new role (by @boo-code) - #42032: Display the employee who created a back-office order in the Messages block (by @PrestaEdit) - #42004: Fix UTF-8 string truncation in StringModifier::cutEnd() (by @Codencode) - #42001: Guard order message name-uniqueness check on partial edit (backport 9.1.x) (by @mattgoud) - #41950: Show an empty order status dropdown when the order has no status (by @boo-code) - #41948: Fix manual order discount bug (by @tleon) - #41944: Connect `GET /discount-types` to the BO (by @nicosomb) - #41929: Fix catalog price rule links when feature flag is enabled (by @Codencode) - #41919: Fix: Problem with manual special price setting with comma becoming dot (product page) (by @Codencode) - #41871: Use the small_default thumbnail for product/combination cover URLs (by @boo-code) - #41797: Fix: Color preview is still displayed after changing an attribute group from color to another type (by @Codencode) - #41665: Display invoice prefix in employee language on order view page (by @PrestaEdit) - #41652: Fix: Changing an order's status throws "Duplicate entry '--0-0' for product_sqlstock" when the order contains a deleted combination (single-shop) (by @Codencode) - #41468: Fix: Multishop: cache_default_attribute is not reset for all shops when changing a product with combinations to a standard product (by @Codencode) - #41238: Fix: Inconsistent escaping of displayCustomization output (by @Codencode) - Refactoring: - #42284: Do not block working with order if it's shipped (by @Hlavtox) - Front Office: - New feature: - #41977: Add thumbnail fitment functionality (by @Hlavtox) - #41824: Add hook actionNotFound (by @Hlavtox) - Improvement: - #42571: Improve structured data by adding product features and shop contact info (by @Hlavtox) - #42058: Set stable version of Hummingbird in composer.json (by @Quetzacoalt91) - #40977: Add prices in all variants to make displaying them easier in templates (by @Hlavtox) - Bug fix: - #42725: Preserve pagination in product listing hreflang URLs (by @Hlavtox) - #42439: Fix PHP 8.5 null array offset deprecations (by @Codencode) - #42396: Fix #42395: Prevent template variables from being overwritten (by @Codencode) - #42189: Give the not found and checkout pages a breadcrumb entry of their own (by @boo-code) - #42143: Fix delivery option cache for changed delivery addresses (by @Codencode) - #42114: Backport #40575 to 9.2.x (by @Codencode) - #42000: Fix ProductController::getProduct() nullable return type (by @Codencode) - #41928: Use constant-time comparison for order secure_key checks (by @nabhan06) - #40929: Update geoip2/geoip2 to fix deprecation warnings on PHP 8+ (by @Hlavtox) - Refactoring: - #42016: Finalize structured data (not found products etc.) (by @Hlavtox) - #41845: Add simple HTML to text stripper, refactor getting meta (by @Hlavtox) - #41699: Distinguish missing images of manufacturers and categories (by @Hlavtox) - Core: - New feature: - #41405: Add multilanguage routes for entities (by @Hlavtox) - Improvement: - #42826: Updated native modules (by @nicosomb) - #42787: Carry extra property constraints as their DSL string on the CQRS boundary (by @jolelievre) - #42726: Extra Property: store constraints as their DSL, dropping PHP serialization (by @Jeremie-Kiwik) - #42538: Handle non-conventional entity naming, default value typing and the cart entity in extra properties (by @jolelievre) - #42490: Allow restricting extra property definitions to a list of shops (by @jolelievre) - #42478: Update Symfony components after 6.4.45 release (by @nicosomb) - #42428: Update Symfony components after 6.4.44 release (by @nicosomb) - #42421: Handle multishop across the Extra Properties feature (by @jolelievre) - #42375: Add language ID to actionMailAlterMessageBeforeSend hook (by @Hlavtox) - #42239: Update Symfony components after 6.4.43 release (by @nicosomb) - #42145: Add version compatibility filtering for Admin API endpoints (by @jolelievre) - #42071: Decouple EmployeePasswordResetter from the admin router (by @PrestaEdit) - #41832: Cover getCustomerCartRules using the passed cart for product restrictions (by @boo-code) - #41803: Guard stock movement when the context employee has no id (by @PrestaEdit) - Bug fix: - #42822: Take the extra property logger through the core "logger" id instead of Psr\Log\LoggerInterface (by @jolelievre) - #42728: Prevent empty query strings in product URLs (by @Hlavtox) - #42353: Throw EmployeeNotFoundException when password reset email is unknown (by @jolelievre) - #42123: Fix Pack::getQuantity ignoring 'Decrement pack only' stock type (by @samilmarekrygula) - #42115: Make extra property registration atomic and report failure reasons (by @jolelievre) - #42024: Removed feature flag "state" (by @Progi1984) - #41840: Keep word separation when stripping HTML for the search index (by @boo-code) - #41447: Fix deprecated in LanguageList.php (by @jf-viguier) - #41364: Fix `customerId` always returning `null` in Cart API responses (by @axel-paillaud) - #40925: Fix precision of cart calculator (by @Hlavtox) - Refactoring: - #41713: Fix unit price ratio currency conversion and specific price issue (by @Hlavtox) - Installer: - Improvement: - #42829: Update default catalog build-920-rc1 (by @ps-jarvis) - Web Services: - Improvement: - #42011: Wrap plain list query results under _queryResult for non-collection operations (by @mattgoud) - Bug fix: - #41733: Improve management of forms in multipart when using Swagger API (by @Quetzacoalt91) - Tests: - Improvement: - #42269: API Theme : Use scalar rather VO (wo BC Breaks) (by @Progi1984) - #42266: API WS : Fix WebserviceKey::add()/delete() PHP warning when no employee is in context (by @Progi1984) - #42204: Functional Tests : Fixed some todos (by @Progi1984) - #42134: Functional Tests : Bump @prestashop-core/ui-testing (by @Progi1984) - #42090: Functional Tests : Bump @prestashop-core/ui-testing (by @Progi1984) - #42070: Functional Tests : API : GET /search-engines (by @Progi1984) - #42066: Functional Tests : API : GET /features (by @Progi1984) - #42043: Functional Tests : API : GET /contacts (by @Progi1984) - #42033: Add integration tests for ModuleHtmlAuthorizationChecker (by @Codencode) - #41987: Functional Tests : Bump @prestashop-core/ui-testing (by @Progi1984) - Bug fix: - #42786: Make module version checks in UI tests resilient to module releases (by @jolelievre) - #42112: Functional Tests : Fixed endpoints (by @Progi1984) - #42031: Fix CI matrix generator crashing on backticks in PR description (by @boo-code) - #41982: Pin maildev image to 2.2.1 in behaviour tests workflow (by @nicosomb) - Refactoring: - #41550: Functional tests - Add tests of Api address (by @nesrineabdmouleh) #################################### # v9.2.0-beta.1 - (2026-07-09) #################################### - Back Office: - New feature: - #41822: Add translation scanner for extra property labels and descriptions (by @jolelievre) - #41775: Add Back Office management for extra property definitions (by @Jeremie-Kiwik) - #41402: Rework shipping cost as service (by @Poulinhoo) - #41015: Feat: some refactor + add row action to generate delivery slip (by @Nakahiru) - #41012: Add shipments on edit modal (by @Poulinhoo) - #40960: Handle shipment product quantity update (by @M0rgan01) - #40944: Add a modal to improve shipments inside order page for editing a product (by @Poulinhoo) - #40852: Add soft delete on multishipment (by @Poulinhoo) - #40819: Add possibility to create a shipment on an existing order (by @Poulinhoo) - #40685: EPIC1-US1.2 : B2B Model Activation : add “B2C mode” and “B2B mode” settings (by @soledis-contributeur) - #40591: Feat(shipment): add shipments information on invoices (by @Nakahiru) - Improvement: - #41941: Rework the extra property definition form into structured builders (rows as form data, catalogs, save-time validation) (by @jolelievre) - #41776: Change badge color for product quantity display (by @Maofree) - #41770: Delivery slip multi shipment - remove Total amount paid (by @M0rgan01) - #41729: UI Test - Add UI test to check the contribution part of the Wall of Fame (by @AureRita) - #41712: Add delivery slip in documents tab (Improved shipment) (by @M0rgan01) - #41623: Improve Tax rules management in Tax rules group backoffice pages (by @boherm) - #41612: Replace window.prompt() with a modal when adding a page to Quick Access (by @mattgoud) - #41588: Sort hook selector options alphabetically by name (by @nicosomb) - #41559: Migrate "International > Taxes > Tax Rules" page (by @boherm) - #41527: Migrate merchandise return (by @tleon) - #41526: Add CLI console commands to change an employee password & create a super admin (by @jf-viguier) - #41508: Migrate "Configure > Advanced Parameters > Quick Access" page to Symfony (by @mattgoud) - #41495: Improve countries list Symfony migration (by @mattgoud) - #41433: SF Migration - Email body translations (by @boherm) - #41407: Migrate the Hook a module feature (by @nicosomb) - #41406: Migrate country options (by @tleon) - #41397: Country Address format: replace legacy widget with Vue 3 visual builder (by @jolelievre) - #41081: Merge add shipment in existing command (by @Poulinhoo) - #41050: Handle inelegible products "free gift" discount (by @nicosomb) - #41026: Add form builder for edit shipment form (by @Poulinhoo) - #40995: Disabled discount when only customer or customer group is deleted (by @tleon) - #40918: Add GetShipmentsForOrderDetail query (by @M0rgan01) - #40892: Discount UI improvement (by @jolelievre) - #40850: Add builder form on add product inside a existing order (by @Poulinhoo) - #40846: Update split and merge forms for multi-shipment (by @M0rgan01) - #40719: Added multi-shipment support to emails (by @M0rgan01) - #40548: Feat: add new modale on order page for add product & add select for choose shipment for new product added (by @Poulinhoo) - #40514: Multi-carrier - Handle product deletion in order (by @M0rgan01) - #40477: Add clickable product links in stock management pages (by @kpodemski) - #40238: BO : Enabled feature flag "Tag" & Set stability as "stable" (by @Progi1984) - #40234: Delete specific prices when group is removed (by @aomaxime) - Bug fix: - #41931: Add bulk delete action to migrated Countries page (by @jolelievre) - #41923: Changing stock behaviour not working with multistore. (by @Prestaworks) - #41909: Fix cumulated free shipping (by @tleon) - #41819: Fix legacy module transaltion system (by @jolelievre) - #41817: Fix: order-with-shipment-display (by @M0rgan01) - #41769: Delivery slip multi shipment - Fix grid action download delivery slip (by @M0rgan01) - #41763: Fix API Client creation error caused by non-int form handler result (by @jolelievre) - #41745: Reject invalid call prefix when creating or editing a country (FF Country) (by @mattgoud) - #41744: Reject duplicate ISO code when creating or editing a country (FF Country) (by @mattgoud) - #41736: Fix custom feature value selection when no predefined values exist (by @Codencode) - #41735: Fix feature values grid to exclude custom values (by @Codencode) - #41732: Fill default address format when creating a country (FF Country) (by @mattgoud) - #41727: Fix: Module Development and Distribution: Prestashop deletes automatically src/Entity/index.php, but it does not recursively in subfolders (by @Codencode) - #41689: Handle only carrier compatible with products and active (by @Poulinhoo) - #41675: Fix: HTMLPurifier through twig extension is not adhering to cache dir config (by @Codencode) - #41661: Fix Quick Access form not auto-filling empty language names (by @mattgoud) - #41651: Fix bad redirection for email body translations (by @boherm) - #41620: Fix states grid not refreshing after toggle when filters are active (by @mattgoud) - #41617: Fix countries grid not refreshing after toggle when filters are active (by @mattgoud) - #41611: Cart rule compatibility search does not filter results for new cart rule (by @LaBisquerie) - #41581: Add missing semicolon (by @mgielecinski) - #41573: Fix highlight option missing in Discount V2 form (by @mattgoud) - #41570: Use position as default sorting for feature grid (by @Codencode) - #41566: Discount - Fix delivery condition not removed when switching to None (by @mattgoud) - #41564: Fix Discount V2 end date validation when period never expires is checked (by @mattgoud) - #41555: Make HookRegistry stateless and name-keyed (by @jolelievre) - #41552: Fix #41189 - Allow changing discount status on edit page (by @mattgoud) - #41551: Fix shop selector lists overflowing their container (by @david-prochazka) - #41530: Shopping Carts : For combinations, if no image defined, use the cover image (by @Progi1984) - #41524: Invoice : If no payments, display the payment method (by @Progi1984) - #41457: Enhance invoice filename safety by sanitizing number (by @Maofree) - #41394: Fix: [Multishop] Error when updating "Schema of URLs" for a single shop (by @Codencode) - #41307: Fix PDF downloads using Symfony responses (by @Codencode) - #41303: Fix address state selection after country states reload (by @Codencode) - #41206: Bugfix: prevent email shortcodes automatically being moved. Fixes #38563 issue (by @aleksiuno) - #41204: Change the redirection of combination button learn more (by @AureRita) - #41116: Fix: align on the same line inline grid action and regular grid action (by @Nakahiru) - #41036: Fix: Error 500 if I enter a space in a customer's first or last name field (by @Codencode) - #41007: Fix: CountryQueryBuilder::getCountQueryBuilder() always returns 1 instead of the true total (by @Codencode) - #40999: Fix/40997 default currency import on shop copy (by @Codencode) - #40898: Fix: Bug: reserved_quantity not updated when "Share available quantities for sale" is enabled (Multishop) (by @Codencode) - #40874: Update eligible carriers calculation for multi-shipment (by @M0rgan01) - #40872: Resolve problem on split shipment on carrier select (by @Poulinhoo) - #40867: Hide expiration field when "period never expires" is checked (by @nicosomb) - #40821: Resolve problem on add product on existing order when multishipment is disable (by @Poulinhoo) - #40530: Multi-shipment - Fix split shipment carrier choice (by @M0rgan01) - #40099: Fix: Cart rule combinations lost when saving if lazy-loaded list (jscroll) is not fully loaded (by @Codencode) - Refactoring: - #41260: TEST [E2E] update Design Pages page with meta title column (by @paulnoelcholot) - Front Office: - New feature: - #41589: One-page Checkout beta version setup (by @ThbPS) - #41047: Feat: introduce One-page Checkout hook (by @ThbPS) - #40864: Feat(OPC): introduce template feature flag for One-Page Checkout (by @ThbPS) - Improvement: - #41974: Add autofill autocomplete tokens to the customer registration form (by @boo-code) - #41709: Update password autocomplete (by @tblivet) - #41404: Improvement: add back parameter in FO customer template URLs (by @ThbPS) - #41281: Harden and depreciate /init.php for 9.1.x (by @jf-viguier) - #40849: Login form: change `autocomplete="email"` to `autocomplete="username"` (by @yannicka) - #40587: Multi-shipments - Added a compatibility layer for orders without shipments (by @M0rgan01) - #40345: Fix(FO): Allow HEAD requests to be processed by canonicalRedirection … (by @tfayolle) - #40315: Use product EmbeddedAttributes in quickview (by @M0rgan01) - #40308: CMS pages listed on CMS Category page should be presented properly (by @Prestaworks) - #39949: Refactor attachment download URLs to use SEO-friendly pattern /attachment/{id}-{filename} (by @Codencode) - #33539: Secure table name with bqsql in DB and DBQuery (by @jf-viguier) - Bug fix: - #41899: Scope Image::getCover() to the shop (by @boo-code) - #41711: Use new shipping calculator on order creation (Improved shipment) (by @M0rgan01) - #41649: Add missing breadcrumb link to OrderDetailController (by @Codencode) - #41590: Add missing breadcrumb link to CartController (by @Codencode) - #41509: Avoid bad URL on invalid media with media servers enabled and CCC disabled (by @gross-nvs) - #41299: Guard product page when product is null (by @Codencode) - #41298: Fix: hook extra content issues with multi shipment (by @Nakahiru) - Refactoring: - #41994: Use canonical url in breadcrumbs, avoid using smarty value (by @Hlavtox) - #41993: Further small tweaks to structured data (by @Hlavtox) - #41811: Fix structured data for manufacturer list (by @Hlavtox) - #41698: Round price in structured data to display precision (by @Hlavtox) - #41006: Refacto: remove One-Page Checkout feature flag (by @ThbPS) - #37552: Render structured data on core side (by @Hlavtox) - Core: - New feature: - #41492: Fix matrix generation workflow (by @jolelievre) - #41446: Add a console command to list modules: prestashop:module:list (by @jf-viguier) - #41092: Add extra properties to PrestaShop (by @Jeremie-Kiwik) - #41089: Integrate the price calculator in getPriceStatic and getProductProperties (by @jolelievre) - #41039: Initialise new Product calculator (by @jolelievre) - #41029: Define the architecture for the new extra property feature (by @jolelievre) - #41027: Start defining the new pricing architecture (by @jolelievre) - #40796: Add feature flag for One-page checkout (by @kevin-carangeot) - #40764: Add manual workflow to generate and create a PR for changelog (by @jolelievre) - #40755: Add build release action (by @nicosomb) - #40654: Theme helper to check framework's compatibility (by @kpodemski) - #40031: Add new condition types (by @Hlavtox) - Improvement: - #42007: Update hooks configuration (by @nicosomb) - #41989: Update dependencies for release (by @tleon) - #41976: Update the generated FOS JS routing file (by @mattgoud) - #41962: Chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.62.0 to 8.63.0 in /tests/UI (by @app/dependabot) - #41893: Chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.61.1 to 8.62.0 in /tests/UI (by @app/dependabot) - #41892: Chore(deps-dev): bump @types/node from 26.0.0 to 26.1.0 in /tests/UI (by @app/dependabot) - #41891: Chore(deps-dev): bump @typescript-eslint/parser from 8.62.0 to 8.62.1 in /tests/UI (by @app/dependabot) - #41883: Update Symfony components after 6.4.42 release (by @nicosomb) - #41806: Replace legacy extra-property validation with Symfony Validator constraints (by @jolelievre) - #41800: Bump GitHub Actions to Node 24 runtime (by @PrestaEdit) - #41787: Chore(deps-dev): bump @types/node from 25.9.3 to 26.0.0 in /tests/UI (by @app/dependabot) - #41786: Chore(deps): bump @faker-js/faker from 10.4.0 to 10.5.0 in /tests/UI (by @app/dependabot) - #41785: Chore(deps-dev): bump @typescript-eslint/parser from 8.61.0 to 8.61.1 in /tests/UI (by @app/dependabot) - #41784: Chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.61.0 to 8.61.1 in /tests/UI (by @app/dependabot) - #41746: Add ExtraProperty AI component context (by @jolelievre) - #41728: Document ReorderPositionsButtonType convention for position columns (by @jolelievre) - #41719: Chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.60.1 to 8.61.0 in /tests/UI (by @app/dependabot) - #41717: Chore(deps-dev): bump @types/node from 25.9.2 to 25.9.3 in /tests/UI (by @app/dependabot) - #41715: Chore(deps): bump @prestashop-core/ui-testing from `ae553f7` to `0db9b72` in /tests/UI (by @app/dependabot) - #41657: Chore(deps): bump mysql2 from 3.22.4 to 3.22.5 in /tests/UI (by @app/dependabot) - #41656: Chore(deps-dev): bump @types/node from 25.9.1 to 25.9.2 in /tests/UI (by @app/dependabot) - #41655: Chore(deps-dev): bump @typescript-eslint/parser from 8.60.0 to 8.60.1 in /tests/UI (by @app/dependabot) - #41654: Chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.60.0 to 8.60.1 in /tests/UI (by @app/dependabot) - #41653: Chore(deps): bump @prestashop-core/ui-testing from `117cd6f` to `64fb21c` in /tests/UI (by @app/dependabot) - #41647: Bump version 9.1.5 (by @jolelievre) - #41607: Workflow dispatch to create the build branch (by @jolelievre) - #41582: Chore(deps): bump @prestashop-core/ui-testing from `c66894d` to `f036af5` in /tests/UI (by @app/dependabot) - #41567: Update Symfony components after 6.4.41 release (by @nicosomb) - #41561: Update Symfony components after 6.4.41 release (by @nicosomb) - #41537: Chore(deps): bump mocha from 11.7.5 to 11.7.6 in /tests/UI (by @app/dependabot) - #41536: Chore(deps-dev): bump @types/node from 25.8.0 to 25.9.1 in /tests/UI (by @app/dependabot) - #41534: Chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.59.3 to 8.59.4 in /tests/UI (by @app/dependabot) - #41529: Set version to 9.1.4 (by @Progi1984) - #41491: Chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.59.2 to 8.59.3 in /tests/UI (by @app/dependabot) - #41490: Chore(deps-dev): bump @types/chai from 4.3.11 to 5.2.3 in /tests/UI (by @app/dependabot) - #41489: Chore(deps-dev): bump @types/node from 25.6.2 to 25.8.0 in /tests/UI (by @app/dependabot) - #41465: Update Symfony components after 6.4.39 release (by @nicosomb) - #41455: Improve AI Forms context (settings vs CRUD) and introduce the sub-context pattern (by @jolelievre) - #41449: Make branch input a simple input to use build branches (by @jolelievre) - #41440: Chore(deps-dev): bump @types/node from 25.6.0 to 25.6.2 in /tests/UI (by @app/dependabot) - #41439: Chore(deps): bump chai from 4.5.0 to 6.2.2 in /tests/UI (by @app/dependabot) - #41435: Add getHighestPosition alias (by @PrestaEdit) - #41390: Chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.59.0 to 8.59.1 in /tests/UI (by @app/dependabot) - #41339: Chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.58.0 to 8.59.0 in /tests/UI (by @app/dependabot) - #41338: Chore(deps): bump mysql2 from 3.20.0 to 3.22.3 in /tests/UI (by @app/dependabot) - #41337: Chore(deps-dev): bump @typescript-eslint/parser from 8.58.0 to 8.59.0 in /tests/UI (by @app/dependabot) - #41336: Improves stale issues workflow : increases cron interval to 20 minutes and adjusts the GitHub API operations limit to 1000. (by @cnavarro-prestashop) - #41305: Improve Connection::isBot() with modern crawlers and AI bots to prevent ghost carts and fake connections (by @jf-viguier) - #41296: Chore(deps-dev): bump typescript from 5.9.3 to 6.0.3 in /tests/UI (by @app/dependabot) - #41279: Create a skill for symfony migration in prestashop (by @tleon) - #41277: Ai fine tunes, update readme and release builder (by @jolelievre) - #41229: Bump the version of the prestashop/dashgoals package from v2.0.4 to v2.0.5 (by @cnavarro-prestashop) - #41227: Remove 9.0.x branch (by @Progi1984) - #41222: Chore(deps): bump @prestashop-core/ui-testing from `05ecd00` to `4ed7dbc` in /tests/UI (by @app/dependabot) - #41221: Chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.57.2 to 8.58.0 in /tests/UI (by @app/dependabot) - #41220: Chore(deps-dev): bump @typescript-eslint/parser from 8.57.2 to 8.58.0 in /tests/UI (by @app/dependabot) - #41219: Chore(deps): bump dotenv from 17.3.1 to 17.4.1 in /tests/UI (by @app/dependabot) - #41138: Mark Upgrader class as deprecated (by @ga-devfront) - #41134: Chore(deps-dev): bump @typescript-eslint/parser from 8.57.1 to 8.57.2 in /tests/UI (by @app/dependabot) - #41133: Chore(deps): bump @faker-js/faker from 10.3.0 to 10.4.0 in /tests/UI (by @app/dependabot) - #41132: Chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.57.1 to 8.57.2 in /tests/UI (by @app/dependabot) - #41095: Init CartCalculator for pricing v2 (by @boherm) - #41044: Chore(deps-dev): bump @typescript-eslint/parser from 8.57.0 to 8.57.1 in /tests/UI (by @app/dependabot) - #41043: Chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.57.0 to 8.57.1 in /tests/UI (by @app/dependabot) - #41032: Add new pricing feature flag (by @boherm) - #40984: Chore(deps-dev): bump @typescript-eslint/parser from 8.56.1 to 8.57.0 in /tests/UI (by @app/dependabot) - #40983: Chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.56.1 to 8.57.0 in /tests/UI (by @app/dependabot) - #40982: Chore(deps): bump mysql2 from 3.19.1 to 3.20.0 in /tests/UI (by @app/dependabot) - #40943: Chore(deps): bump mysql2 from 3.18.2 to 3.19.0 in /tests/UI (by @app/dependabot) - #40908: Chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.56.0 to 8.56.1 in /tests/UI (by @app/dependabot) - #40907: Chore(deps): bump @prestashop-core/ui-testing from `4d24c01` to `bc1cc93` in /tests/UI (by @app/dependabot) - #40868: Move B2B entities into B2B namespace (by @soledis-contributeur) - #40858: Chore(deps): bump mysql2 from 3.17.1 to 3.17.4 in /tests/UI (by @app/dependabot) - #40830: Introduce CartRule::total_quantity property (by @jolelievre) - #40788: Use the action from master official branch (by @jolelievre) - #40786: Add display for changelog generation parameters (by @jolelievre) - #40784: Use provided branch by default when generating the changelog (by @jolelievre) - #40783: Bump to 9.2.0 (by @Progi1984) - #40782: Chore(deps): bump @prestashop-core/ui-testing from `dd7a727` to `1e50a1c` in /tests/UI (by @app/dependabot) - #40781: Chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.54.0 to 8.55.0 in /tests/UI (by @app/dependabot) - #40779: Chore(deps): bump dotenv from 17.2.4 to 17.3.1 in /tests/UI (by @app/dependabot) - #40778: Chore(deps-dev): bump @typescript-eslint/parser from 8.54.0 to 8.55.0 in /tests/UI (by @app/dependabot) - #40769: Add missing name for matrix workflow (by @jolelievre) - #40753: Dynamic PHP matrix in workflows (by @jolelievre) - #40749: Integrate header-stamp in CI (by @jolelievre) - #40729: Refacto workflow for release (by @tleon) - #40637: CI: Add PR convention validator (fixes #40501) (by @mattgoud) - #40623: Update PULL_REQUEST_TEMPLATE.md (by @Touxten) - #40316: Add `9.1.x` branch for github workflows (by @boherm) - #39664: Allow modules to use services.php and version-specific services.yml files to handle new Symfony services/changes/renames while preserving older versions compatibility (by @prestamodule) - #39576: Add console command "prestashop:htaccess:generate" (by @nicohery) - Bug fix: - #41988: Update translationtools-bundle (by @jolelievre) - #41842: Fix: Update cache directory handling in HTMLPurifier constructor (by @Progi1984) - #41828: Fix: Update cache directory handling in HTMLPurifier constructor (by @cnavarro-prestashop) - #41808: Fix meta title appended to CMS page, CMS category, manufacturer, and supplier URLs (by @Codencode) - #41790: Guard order message name-uniqueness check on partial edit (by @PrestaEdit) - #41773: Update phpstan exclusion pattern from release creator and add unit tests (by @cnavarro-prestashop) - #41761: Fix Hummingbird development files included in release package (by @Codencode) - #41760: Fix image-types list endpoint returning 405 by making grid data facto… (by @axel-paillaud) - #41750: Prevent empty ean13 into product URL (by @hadjedjvincent) - #41708: Fix states lookup using row indexes instead of country IDs (by @paulschwahn) - #41628: Align MySQL session time zone with the shop time zone on each connection (by @mattgoud) - #41626: Fix multilang fallback for fields using isRequiredWhenActive and defaultLanguageRequiredWhenActive validators (by @guillaume60240) - #41431: Backport #41356 : Add CartId into product search handler when employeeId not provided (by @Progi1984) - #41416: Build Creator : Filter only Copilot Instructions and not all workflows (by @Progi1984) - #41386: Fix route management and comment Dispatcher (by @Hlavtox) - #41356: Add CartId into product search handler when employeeId not provided (by @boherm) - #41273: Fix: cast bool field in get cms page category for editing handler (by @axel-paillaud) - #41225: Fix attribute and attribute group position ordering in core methods (by @nicohery) - #41130: Fix: guard against null employee in associateWithShops() (by @axel-paillaud) - #40822: Update OrderShipmentService header (by @M0rgan01) - #40818: Fix old license headers (by @jolelievre) - #40813: Fix Changelog PR description (by @boherm) - #40797: Add right to pr validate metadata workflow (by @tleon) - #40785: Fix changelog workflow (by @jolelievre) - #40772: Fix url to the forked generation workflow (by @jolelievre) - #40771: Fix url to the forked generation workflow (by @jolelievre) - #40759: Replace github action that sets up mysql in CI (by @jolelievre) - #40752: Fix the workflow to use the shared action in steps, not as a workflow (by @jolelievre) - #40744: Fix translation catalogue filename corruption during export (by @aeyoll) - #40424: Fixed inconsistancy use of variable in CartRule.php (by @pjouglet) - #40297: Multi-carrier - handle product customization (by @M0rgan01) - #39837: Change matching method in ShopContextSubscriber (by @djbuch) - #36781: Fix category shop association (by @PululuK) - Refactoring: - #41967: Rename ExtraPropertyDefinition formFieldType to formType (by @jolelievre) - #41579: Fix some deprecations (by @Hlavtox) - Installer: - New feature: - #41028: EPIC2-US2.1 :Business Entity Management (Back Office) – New “Business Entities” menu entry (by @soledis-contributeur) - #40632: B2B Contribution - EPIC 1-US1.1 : Data model foundation in the PrestaShop Core (by @soledis-contributeur) - Improvement: - #42010: Update default catalog build-920-beta1 (by @ps-jarvis) - #42003: Update default catalog develop (by @ps-jarvis) - #41995: Fix sync localization files (by @kpodemski) - #41695: Automatically remove install/ folder after a successful installation (by @jf-viguier) - #41354: Amend B2B data model to align with revised hybrid-mode schema (by @soledis-contributeur) - #41205: Base of ai structure and contexts (by @tleon) - #41200: B2B Contribution - Add "label" column & remove enterprise_id column to BusinessIdentifier entity (by @soledis-contributeur) - #40891: B2B Contribution - Add "default" flag to business entity address (by @soledis-contributeur) - #40224: B2B Contribution - EPIC 0-US0: Creation of the “improved_b2b feature” feature flag (by @soledis-contributeur) - Bug fix: - #41556: Merge set-pr-milestone into validate-pr-metadata to fix ordering and rerun staleness (by @jolelievre) - #41226: Revert "Fix: align on the same line inline grid action and regular grid action" (by @ga-devfront) - #41147: Fix admin URL construction in Install.php (by @PrestaEdit) - #40727: Chore(deps): bump mysql2 from 3.16.2 to 3.16.3 in /tests/UI (by @app/dependabot) - #40725: Chore(deps): bump @faker-js/faker from 10.2.0 to 10.3.0 in /tests/UI (by @app/dependabot) - #40724: Chore(deps): bump dotenv from 17.2.3 to 17.2.4 in /tests/UI (by @app/dependabot) - #40723: Chore(deps): bump @prestashop-core/ui-testing from `6d9e330` to `d387516` in /tests/UI (by @app/dependabot) - #40665: Chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.53.1 to 8.54.0 in /tests/UI (by @app/dependabot) - #40664: Chore(deps): bump mysql2 from 3.15.3 to 3.16.2 in /tests/UI (by @app/dependabot) - #40602: Chore(deps-dev): bump @typescript-eslint/parser from 8.53.0 to 8.53.1 in /tests/UI (by @app/dependabot) - #40601: Chore(deps-dev): bump eslint-plugin-html from 8.1.3 to 8.1.4 in /tests/UI (by @app/dependabot) - #40599: Chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.53.0 to 8.53.1 in /tests/UI (by @app/dependabot) - #40543: Chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.52.0 to 8.53.0 in /tests/UI (by @app/dependabot) - #40542: Chore(deps-dev): bump @typescript-eslint/parser from 8.52.0 to 8.53.0 in /tests/UI (by @app/dependabot) - #40491: Chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.50.1 to 8.52.0 in /tests/UI (by @app/dependabot) - #40447: Chore(deps): bump @faker-js/faker from 10.1.0 to 10.2.0 in /tests/UI (by @app/dependabot) - #40416: Chore(deps-dev): bump @typescript-eslint/parser from 8.50.0 to 8.50.1 in /tests/UI (by @app/dependabot) - #40415: Chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.50.0 to 8.50.1 in /tests/UI (by @app/dependabot) - #40392: Chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.49.0 to 8.50.0 in /tests/UI (by @app/dependabot) - #40391: Chore(deps-dev): bump @typescript-eslint/parser from 8.49.0 to 8.50.0 in /tests/UI (by @app/dependabot) - #40327: Chore(deps): bump @prestashop-core/ui-testing from `38210fa` to `133f785` in /tests/UI (by @app/dependabot) - #40326: Chore(deps-dev): bump @typescript-eslint/eslint-plugin from 8.48.1 to 8.49.0 in /tests/UI (by @app/dependabot) - #40325: Chore(deps-dev): bump @typescript-eslint/parser from 8.48.1 to 8.49.0 in /tests/UI (by @app/dependabot) - Web Services: - New feature: - #41749: Add Extra Properties integration to the Admin API (by @jolelievre) - Improvement: - #41701: Display an input to upload files on Admin API OpenAPI interface (by @Quetzacoalt91) - Bug fix: - #34286: Fix field new not displayed on GET from API (by @Prestaworks) - Localization: - New feature: - #41991: Sync localization files with LocalizationFiles repo (by @kpodemski) - Improvement: - #41997: Protect localization packs action (by @kpodemski) - #41996: Sync localization packs from LocalizationFiles (by @ps-jarvis) - Bug fix: - #41812: Fix SqlTranslationLoader missing theme translations in PS9 (#41232) (by @tswfi) - Tests: - New feature: - #41540: TE: add automation test for BO > International > Locations > Countries > Help button (by @mattgoud) - #41355: TEST-12859 - Hall of Fame Our Community (by @paulnoelcholot) - #41311: Fix [TEST-1115] BO - Shop Parameters - SEO & URLs - Generate robots.txt file (by @mattgoud) - Improvement: - #41827: Test UI hummingbird v2.x (by @tblivet) - #41821: Functional Tests : Improved Resiliency of WS Tests (by @Progi1984) - #41816: Functional Tests : Bump @prestashop-core/ui-testing (by @Progi1984) - #41810: Functional Tests : Bump @prestashop-core/ui-testing (by @Progi1984) - #41805: Functional Tests : Fixed after #41570 (by @Progi1984) - #41788: Functional Tests : Improved for Klavyio (by @Progi1984) - #41780: Functional Tests : Improved for Klavyio (by @Progi1984) - #41778: Add UI test for Quick Access modal empty-name validation (by @mattgoud) - #41777: Functional Tests : Enable Feature Flag "Tax rule groups" (by @Progi1984) - #41747: Functional Tests : Bump @prestashop-core/ui-testing (by @Progi1984) - #41737: Functional Tests : Bump @prestashop-core/ui-testing (by @Progi1984) - #41662: Merchandaise return ui tests (by @tleon) - #41659: Functional Tests : Bump @prestashop-core/ui-testing (by @Progi1984) - #41630: Functional Tests : Enable feature flag "Quick access" (by @Progi1984) - #41627: Functional Tests : Enable Feature Flag "Email body translations" (by @Progi1984) - #41594: Functional Tests : Enable Feature Flag Country (by @Progi1984) - #41584: Functional Tests : API : POST /admin-api/discounts (Fixed after #41189) (by @Progi1984) - #41546: Merchandise Returns : Cancel returns if the order return state is cancellable (by @Progi1984) - #41539: Functional Tests : API : GET /admin-api/discounts (by @Progi1984) - #41528: Functional Tests : API : DELETE /admin-api/discounts/{discountId} (by @Progi1984) - #41518: Functional Tests : Bump @prestashop-core/ui-testing (by @Progi1984) - #41514: Functional Tests : Remove `@todo` #41241 (by @Progi1984) - #41503: Functional Tests : Bump @prestashop-core/ui-testing (by @Progi1984) - #41476: Functional Tests : Remove numbering in endpoints directoriess (by @Progi1984) - #41475: Functional Tests : @prestashop-core/ui-testing (by @Progi1984) - #41462: Functional Tests : @prestashop-core/ui-testing (by @Progi1984) - #41430: Functional Tests : Sync Title with JIRA (by @Progi1984) - #41202: Functional Tests : API : POST /admin-api/discounts (by @Progi1984) - #41112: Functional Tests : API : GET /discount-types (by @Progi1984) - #41060: Functional Tests : BO - Discount - Minimum purchase amount (On Free shipping) (by @Progi1984) - #41055: Add UI test for theme/logo > see all theme's modules button (by @nicosomb) - #40973: Nightly : Change hour of start (by @Progi1984) - #40566: Nightly : Remove 8.0 & 8.1 (by @Progi1984) - Bug fix: - #41980: Pin maildev image to a stable tag in behaviour tests workflow (by @mattgoud) - #41755: Fix flaky quick access filter UI test (multi-tab) (by @mattgoud) - #41560: Functional Tests : Fixed WS - Products : CRUD (by @Progi1984) - #40895: Nightly : Added PS_VERSION environment variable (by @Progi1984) - #40384: Fix: SQL syntax for table checksum query (fixes #40383) (by @the-ge) - Refactoring: - #41765: TEST-12644 - Add test create guest from new order page (by @paulnoelcholot) - #41739: TEST-749 - Add order message check to createSimpleOrderInBO test (by @paulnoelcholot) - #41686: TEST-12861 & TEST-12862 - Functional Tests : BO - Wall of Fame - Top Contributors & New Contributors (by @paulnoelcholot) - #41641: TEST-12860 - Add UI test for BO - Wall of Fame (by @paulnoelcholot) - #41631: Adapt UI tests for Hook a module migration (by @nicosomb) - #41456: Functional Tests : Fixed "API : GET /products/search" (by @Progi1984) - #41415: Functional tests : WS - CRUD category (by @nesrineabdmouleh) - #41306: Functional tests : BO - Catalog price rules - CRUD - Price(tax excl.) (by @nesrineabdmouleh) - #41282: Functional tests : Add new test to CRUD catalog price rules with different groups (by @nesrineabdmouleh) - #41242: Functional tests - Add new test to CRUD country in catalog price rules (by @nesrineabdmouleh) - #41207: Functional tests : BO - Discount - Create a discount that applies automatically or via promo code (by @nesrineabdmouleh) - #41153: Functional tests : BO - Discount - Trigger based on the total quantity of products in the cart (by @nesrineabdmouleh) - #41150: Functional tests : BO - Discount - Check period (by @nesrineabdmouleh) - #41056: Functional tests - Add new UI test to check free gift in discount V2 page (by @nesrineabdmouleh) - #41031: Functional tests - Refacto discount V2 > Minimum purchase amount (by @nesrineabdmouleh) - #40957: Functional tests - Add some check to BO - Orders - Multicarrier (by @nesrineabdmouleh) - #40812: Functional tests - Delete the UI test to check shipping cost in FO > order details page (by @nesrineabdmouleh) - #40739: Nightly : Clean the workflow (by @Progi1984) - #40584: Functional tests : Add UI tests to check multicarrier on FO (Hummingbird & classic) (by @nesrineabdmouleh) - #37161: Functional tests - Migrate link list pages to ui-testing-library and refacto CRUD linkList (by @nesrineabdmouleh) #################################### # v9.1.5 - (2026-08-12) #################################### - Back Office: - Improvement: - #41942: Add shared stock help message to combination availability form (by @Codencode) - #41776: Change badge color for product quantity display (by @Maofree) - GHSA-xrwj-pq6w-f8m4 Validate image URLs on CSV import to prevent Server-Side Request Forgery (by @clotairer & @matthieu-rolland, vulnerability reported by lrui1) - GHSA-w6j9-q9rq-wrqg Escape leading formula characters in CSV exports (by @clotairer & @matthieu-rolland, vulnerability reported by Suphawith Phusanbai) - GHSA-2cr4-vw9p-pjvf Parse the X-Forwarded-For header from right to left to prevent IP spoofing (by @clotairer & @matthieu-rolland, vulnerability reported by Pedro Gabaldón Juliá from ITRESIT) - GHSA-whxq-pxj5-qq7v Escape identifiers in legacy admin list filters to prevent SQL injection (by @clotairer & @matthieu-rolland, found by Savio from Doyensec in collaboration with Anthropic Research) - GHSA-jf3w-9rmr-5rcr Restrict the notifications endpoints to authorised employees (by @clotairer & @matthieu-rolland, vulnerability reported by Robert Scherer) - Bug fix: - #42203: Let a grid status menu show past the scrolling table (by @boo-code) - #42057: Fix changing an employee role when the default page is specific to the new role (by @boo-code) - #42004: Fix UTF-8 string truncation in StringModifier::cutEnd() (by @Codencode) - #42001: Guard order message name-uniqueness check on partial edit (backport 9.1.x) (by @mattgoud) - #41950: Show an empty order status dropdown when the order has no status (by @boo-code) - #41944: Connect `GET /discount-types` to the BO (by @nicosomb) - #41929: Fix catalog price rule links when feature flag is enabled (by @Codencode) - #41923: Changing stock behaviour not working with multistore. (by @Prestaworks) - #41919: Fix: Problem with manual special price setting with comma becoming dot (product page) (by @Codencode) - #41871: Use the small_default thumbnail for product/combination cover URLs (by @boo-code) - #41797: Fix: Color preview is still displayed after changing an attribute group from color to another type (by @Codencode) - #41736: Fix custom feature value selection when no predefined values exist (by @Codencode) - #41735: Fix feature values grid to exclude custom values (by @Codencode) - #41727: Fix: Module Development and Distribution: Prestashop deletes automatically src/Entity/index.php, but it does not recursively in subfolders (by @Codencode) - #41675: Fix: HTMLPurifier through twig extension is not adhering to cache dir config (by @Codencode) - #41665: Display invoice prefix in employee language on order view page (by @PrestaEdit) - #41652: Fix: Changing an order's status throws "Duplicate entry '--0-0' for product_sqlstock" when the order contains a deleted combination (single-shop) (by @Codencode) - #41611: Cart rule compatibility search does not filter results for new cart rule (by @LaBisquerie) - #41573: Fix highlight option missing in Discount V2 form (by @mattgoud) - #41570: Use position as default sorting for feature grid (by @Codencode) - #41552: Fix #41189 - Allow changing discount status on edit page (by @mattgoud) - #41551: Fix shop selector lists overflowing their container (by @david-prochazka) - #41530: Shopping Carts : For combinations, if no image defined, use the cover image (by @Progi1984) - #41524: Invoice : If no payments, display the payment method (by @Progi1984) - #41468: Fix: Multishop: cache_default_attribute is not reset for all shops when changing a product with combinations to a standard product (by @Codencode) - #41457: Enhance invoice filename safety by sanitizing number (by @Maofree) - #41394: Fix: [Multishop] Error when updating "Schema of URLs" for a single shop (by @Codencode) - #41307: Fix PDF downloads using Symfony responses (by @Codencode) - #41303: Fix address state selection after country states reload (by @Codencode) - #41238: Fix: Inconsistent escaping of displayCustomization output (by @Codencode) - #41206: Bugfix: prevent email shortcodes automatically being moved. Fixes #38563 issue (by @aleksiuno) - #41204: Change the redirection of combination button learn more (by @AureRita) - #41036: Fix: Error 500 if I enter a space in a customer's first or last name field (by @Codencode) - #41007: Fix: CountryQueryBuilder::getCountQueryBuilder() always returns 1 instead of the true total (by @Codencode) - #40999: Fix/40997 default currency import on shop copy (by @Codencode) - #40898: Fix: Bug: reserved_quantity not updated when "Share available quantities for sale" is enabled (Multishop) (by @Codencode) - #40099: Fix: Cart rule combinations lost when saving if lazy-loaded list (jscroll) is not fully loaded (by @Codencode) - Front Office: - New feature: - #41824: Add hook actionNotFound (by @Hlavtox) - Improvement: - #41281: Harden and depreciate /init.php for 9.1.x (by @jf-viguier) - #40977: Add prices in all variants to make displaying them easier in templates (by @Hlavtox) - Bug fix: - #42000: Fix ProductController::getProduct() nullable return type (by @Codencode) - #41899: Scope Image::getCover() to the shop (by @boo-code) - #41649: Add missing breadcrumb link to OrderDetailController (by @Codencode) - #41590: Add missing breadcrumb link to CartController (by @Codencode) - #41509: Avoid bad URL on invalid media with media servers enabled and CCC disabled (by @gross-nvs) - #41299: Guard product page when product is null (by @Codencode) - #41298: Fix: hook extra content issues with multi shipment (by @Nakahiru) - Refactoring: - #41845: Add simple HTML to text stripper, refactor getting meta (by @Hlavtox) - Core: - New feature: - #40654: Theme helper to check framework's compatibility (by @kpodemski) - Improvement: - #42239: Update Symfony components after 6.4.43 release (by @nicosomb) - #41883: Update Symfony components after 6.4.42 release (by @nicosomb) - #41647: Bump version 9.1.5 (by @jolelievre) - #41567: Update Symfony components after 6.4.41 release (by @nicosomb) - #41529: Set version to 9.1.4 (by @Progi1984) - #41465: Update Symfony components after 6.4.39 release (by @nicosomb) - #310: Implement URL safety validation for image imports (build-915) (by @matthieu-rolland) - Bug fix: - #41842: Fix: Update cache directory handling in HTMLPurifier constructor (by @Progi1984) - #41840: Keep word separation when stripping HTML for the search index (by @boo-code) - #41808: Fix meta title appended to CMS page, CMS category, manufacturer, and supplier URLs (by @Codencode) - #41761: Fix Hummingbird development files included in release package (by @Codencode) - #41760: Fix image-types list endpoint returning 405 by making grid data facto… (by @axel-paillaud) - #41750: Prevent empty ean13 into product URL (by @hadjedjvincent) - #41708: Fix states lookup using row indexes instead of country IDs (by @paulschwahn) - #41626: Fix multilang fallback for fields using isRequiredWhenActive and defaultLanguageRequiredWhenActive validators (by @guillaume60240) - #41431: Backport #41356 : Add CartId into product search handler when employeeId not provided (by @Progi1984) - #41386: Fix route management and comment Dispatcher (by @Hlavtox) - #41273: Fix: cast bool field in get cms page category for editing handler (by @axel-paillaud) - #41225: Fix attribute and attribute group position ordering in core methods (by @nicohery) - #41130: Fix: guard against null employee in associateWithShops() (by @axel-paillaud) - #40744: Fix translation catalogue filename corruption during export (by @aeyoll) - #39837: Change matching method in ShopContextSubscriber (by @djbuch) - #317: Update modules and dependencies (by @jolelievre) - Refactoring: - #41713: Fix unit price ratio currency conversion and specific price issue (by @Hlavtox) - #41579: Fix some deprecations (by @Hlavtox) - Tests: - Improvement: - #42134: Functional Tests : Bump @prestashop-core/ui-testing (by @Progi1984) - #42090: Functional Tests : Bump @prestashop-core/ui-testing (by @Progi1984) - #42033: Add integration tests for ModuleHtmlAuthorizationChecker (by @Codencode) - #41987: Functional Tests : Bump @prestashop-core/ui-testing (by @Progi1984) - #41810: Functional Tests : Bump @prestashop-core/ui-testing (by @Progi1984) - #41805: Functional Tests : Fixed after #41570 (by @Progi1984) - #41788: Functional Tests : Improved for Klavyio (by @Progi1984) - #41780: Functional Tests : Improved for Klavyio (by @Progi1984) - #41747: Functional Tests : Bump @prestashop-core/ui-testing (by @Progi1984) - #41737: Functional Tests : Bump @prestashop-core/ui-testing (by @Progi1984) - #41659: Functional Tests : Bump @prestashop-core/ui-testing (by @Progi1984) - #41518: Functional Tests : Bump @prestashop-core/ui-testing (by @Progi1984) - #41503: Functional Tests : Bump @prestashop-core/ui-testing (by @Progi1984) - #41476: Functional Tests : Remove numbering in endpoints directoriess (by @Progi1984) - #41475: Functional Tests : @prestashop-core/ui-testing (by @Progi1984) - #41462: Functional Tests : @prestashop-core/ui-testing (by @Progi1984) - Bug fix: - #42031: Fix CI matrix generator crashing on backticks in PR description (by @boo-code) - #41982: Pin maildev image to 2.2.1 in behaviour tests workflow (by @nicosomb) - #41755: Fix flaky quick access filter UI test (multi-tab) (by @mattgoud)