diff --git a/_checks/styles/style-rules-prod b/_checks/styles/style-rules-prod index c7b2c7dc894..92b0c6e27b4 100644 --- a/_checks/styles/style-rules-prod +++ b/_checks/styles/style-rules-prod @@ -25,7 +25,7 @@ exclude_rule 'MD028' rule 'MD029' rule 'MD030', :ul_single => 2, :ol_single => 1, :ul_multi => 2, :ol_multi => 1 exclude_rule 'MD031' -exclude_rule 'MD032' +rule 'MD032' exclude_rule 'MD033' exclude_rule 'MD034' rule 'MD035' diff --git a/_includes/config/setup-cron_2.2_about.md b/_includes/config/setup-cron_2.2_about.md index 13e00ccc4b0..5e65f7e96e3 100644 --- a/_includes/config/setup-cron_2.2_about.md +++ b/_includes/config/setup-cron_2.2_about.md @@ -9,5 +9,6 @@ Magento uses cron for two sets of tasks, and for each, cron can run with a diffe * Web server PHP plug-in configuration: Two other cron jobs are used by the [Component Manager and System Upgrade utilities]({{ page.baseurl }}/comp-mgr/bk-compman-upgrade-guide.html). {: .bs-callout-warning } + * To avoid issues during installation and upgrade, we strongly recommend you apply the same PHP settings to both the PHP command-line configuration and to the PHP web server plug-in's configuration. For more information, see [Required PHP settings]({{ page.baseurl }}/install-gde/prereq/php-settings.html). * In a multi-node system, crontab can run on only one node. This applies to you only if you set up more than one webnode for reasons related to performance or scalability. diff --git a/_includes/config/setup-cron_2.2_how-to.md b/_includes/config/setup-cron_2.2_how-to.md index ca0b07affd5..ad03dbb5a8d 100644 --- a/_includes/config/setup-cron_2.2_how-to.md +++ b/_includes/config/setup-cron_2.2_how-to.md @@ -17,6 +17,7 @@ To create the Magento crontab: Use `--force` to rewrite an existing Magento crontab. {: .bs-callout-info } + * `magento cron:install` does not rewrite an existing crontab inside `#~ MAGENTO START` and `#~ MAGENTO END` comments in your crontab. * `magento cron:install --force` has no effect on any cron jobs outside the Magento comments. diff --git a/_includes/config/setup-cron_2.3_how-to.md b/_includes/config/setup-cron_2.3_how-to.md index ca0b07affd5..ad03dbb5a8d 100644 --- a/_includes/config/setup-cron_2.3_how-to.md +++ b/_includes/config/setup-cron_2.3_how-to.md @@ -17,6 +17,7 @@ To create the Magento crontab: Use `--force` to rewrite an existing Magento crontab. {: .bs-callout-info } + * `magento cron:install` does not rewrite an existing crontab inside `#~ MAGENTO START` and `#~ MAGENTO END` comments in your crontab. * `magento cron:install --force` has no effect on any cron jobs outside the Magento comments. diff --git a/guides/v2.2/cloud/cdn/trouble-fastly.md b/guides/v2.2/cloud/cdn/trouble-fastly.md index eb281b3b55a..7fcaa67d6e8 100644 --- a/guides/v2.2/cloud/cdn/trouble-fastly.md +++ b/guides/v2.2/cloud/cdn/trouble-fastly.md @@ -212,14 +212,17 @@ Verify that the returned response contains the following information: The following excerpt from the cURL command output shows the correct values for the `Pragma`, `X-Magento-Tags`, and `Fastly-Module-Enabled` headers: ```terminal + * STATE: INIT => CONNECT handle 0x600057800; line 1402 (connection #-5000) * Rebuilt URL to: https://www.mymagento.biz.c.sv7gVom4qrpek.ent.magento.cloud/ * Added connection 0. The cache now contains 1 members * Trying 192.0.2.31... * STATE: CONNECT => WAITCONNECT handle 0x600057800; line 1455 (connection #0) + % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* Connected to www.mymagento.biz.c.sv7gVom4qrpek.ent.magento.cloud (54.229.163.31) port 443 (#0) + * STATE: WAITCONNECT => SENDPROTOCONNECT handle 0x600057800; line 1562 (connection #0) 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0* ALPN, offering h2 @@ -242,6 +245,7 @@ The following excerpt from the cURL command output shows the correct values for * multi_done 0 0 0 0 0 0 0 0 --:--:-- 0:00:02 --:--:-- 0 * Connection #0 to host www.mymagento.biz.c.sv7gVom4qrpek.ent.magento.cloud left intact + ``` {: .bs-callout-info } diff --git a/guides/v2.2/cloud/composer-packages/ece-patches.md b/guides/v2.2/cloud/composer-packages/ece-patches.md index 8a552e343b8..7852b63f942 100644 --- a/guides/v2.2/cloud/composer-packages/ece-patches.md +++ b/guides/v2.2/cloud/composer-packages/ece-patches.md @@ -45,9 +45,11 @@ Implemented version-based patching. Now the package is compatible with {{site.da ### Fixed issues + - Removed patch; fixing bug in `colinmollenhour/credis` v1.6 to enable support for {{site.data.var.ece}} 2.2.1. ## v102.0.0 + {:.bs-callout .bs-callout-warning} This package is no longer compatible with other versions of {{site.data.var.ece}} and **should not** be used. diff --git a/guides/v2.2/cloud/release-notes/CloudReleaseNotes2.2.1.md b/guides/v2.2/cloud/release-notes/CloudReleaseNotes2.2.1.md index 524cf9a8e30..166a1f95bd6 100644 --- a/guides/v2.2/cloud/release-notes/CloudReleaseNotes2.2.1.md +++ b/guides/v2.2/cloud/release-notes/CloudReleaseNotes2.2.1.md @@ -33,11 +33,13 @@ In general, we’ve removed serialize/unserialize from most the code to improve ### New Updates + * Magento Commerce (Cloud) supports scopes and [static content deployment strategies]({{ site.baseurl }}/guides/v2.2/config-guide/cli/config-cli-subcommands-static-deploy-strategies.html). We have added the `–s` parameter with a default setting of quick for the static content deployment strategy. You can use the environment variable [SCD_STRATEGY]({{ site.baseurl }}/guides/v2.2/cloud/env/environment-vars_magento.html) to customize and use these strategies with your build and deploy actions. This variable supports the options standard quick, or compact. If you select compact, we override the `STATIC_CONTENT_THREADS` value with 1, which can slow deployment, especially in production environments. * When you create a new project, we automatically provision the project with the latest Magento Commerce (Cloud) code. The steps include cloning the latest code repository, adding an environment variable for `ADMIN_EMAIL` using the License Owner’s email, setting a default randomized Magento Admin password, and sending emails to the License Owner to access the project and reset the default Magento Admin password. For details, see [Onboarding tasks]({{ site.baseurl }}/guides/v2.2/cloud/onboarding/onboarding-tasks.html). + * We have created a new log file on environments to capture and compile build and deploy actions. The file is located in the `app/var/log/cloud.log` file inside the Magento root application directory. ## Known issues {#known} @@ -47,9 +49,11 @@ For all known {{site.data.var.ee}} 2.2.1 issues, see [Magento Commerce 2.2.1 Re ## Fixed issues {#fixed} + * You can now [manually reset stuck Magento cron jobs]({{ site.baseurl }}/guides/v2.2/cloud/trouble/reset-cron-jobs.html) using a CLI command in all environments via SSH access. The deployment process automatically resets cron jobs. You must [patch magento/ece-tools]({{ site.baseurl }}/guides/v2.2/cloud/project/project-patch.html) to get this update. + * We resolved an issue with the ElasticSearch option being added and saved to `app/etc/env.php`. When ElasticSearch is configured and activated in your environment, the setting properly saves in the `env.php` file. For example: + * We removed `var/view_preprocessed` symlinking to fix an issue that was causing JavaScript minification conflicts. + * You can now [manually reset stuck Magento cron jobs]({{ site.baseurl }}/guides/v2.2/cloud/trouble/reset-cron-jobs.html) using a CLI command in all environments via SSH access. The deployment process automatically resets cron jobs. You must [patch magento/ece-tools]({{ site.baseurl }}/guides/v2.2/cloud/project/project-patch.html) to get this update. + * You can now generate sitemap.xml and robots.txt normally through the Magento Admin panel, without needing to move the file and have a redirect entered. If you are upgrading to 2.2, please enter a [Support ticket] to have any redirects removed for sitemap and robots.txt. + * Newly provisioned {{site.data.var.ece}} receive an email to change the Magento Admin password. For enhanced security, we generate a random password for the username "admin" and send an email to the Project Owner to properly set up Admin access for Starter `master` Production environment and the Pro Integration `master` environment. + * We added additional environment variables and updated build and deploy hooks to [`.magento.app.yaml`]({{ site.baseurl }}/guides/v2.2/cloud/project/project-conf-files_magento-app.html). * When upgrading to {{site.data.var.ece}} 2.2.0, you will need to update your `.magento.app.yaml` file and Configuration Management `config.local.php` file. See [Upgrade Magento Commerce (Cloud)]({{ site.baseurl }}/guides/v2.2/cloud/project/project-upgrade.html). @@ -79,12 +84,15 @@ This release contains numerous fixes and enhancements. This section includes onl * We’ve added support for the latest version of Redis and for PHP-Redis 3.1.3. For more information on this update, and for guidance on Redis troubleshooting on {{site.data.var.ece}}, see [Redis troubleshooting]({{ site.baseurl }}/guides/v2.2/cloud/trouble/redis-troubleshooting.html). + * Magento now correctly displays customer address during account creation. Previously, when you selected a default billing address during creation of a new customer account, Magento would not display the address. + * When you delete an image in Admin, Magento no longer deletes it on the server. Previously, Magento deleted it from the server as well, which caused errors for other products (example error message: `Cannot gather stats! Warning!stat(): stat failed for`). + * We’ve fixed errors in processing valid orders using a PayPal account that had been previously used to pay for a valid order that had problems during checkout. ## Changes in Deployment {#deploy} diff --git a/guides/v2.2/mrg/ce/Signifyd.md b/guides/v2.2/mrg/ce/Signifyd.md index db891cb3a52..d381160753a 100644 --- a/guides/v2.2/mrg/ce/Signifyd.md +++ b/guides/v2.2/mrg/ce/Signifyd.md @@ -45,6 +45,7 @@ The following interfaces (marked with the `@api` annotation) extend the Signifyd - send a request through the Signifyd API to create a new case guarantee `Magento\Signifyd\Api\GuaranteeCancelingServiceInterface`: + - send a request through the Signifyd API to cancel the Signifyd case guarantee `Magento\Signifyd\Api\Data\CaseSearchResultsInterface`: diff --git a/guides/v2.2/pattern-library/general/accessibilityguideline/accessibilityGuideline.md b/guides/v2.2/pattern-library/general/accessibilityguideline/accessibilityGuideline.md index afa10596467..b9cf4249c91 100644 --- a/guides/v2.2/pattern-library/general/accessibilityguideline/accessibilityGuideline.md +++ b/guides/v2.2/pattern-library/general/accessibilityguideline/accessibilityGuideline.md @@ -8,9 +8,7 @@ The Magento application should be accessible for all people, whatever their hard - **Be mindful of text length**—Don't make textual content too long or too short. -- **Provide adequate contrast**—Be extra careful with light shades of gray, orange, and yellow. Check your contrast levels here: -[http://webaim.org/resources/contrastchecker/](http://webaim.org/resources/contrastchecker/){:target="_blank"} -or here: [http://www.paciellogroup.com/resources/contrastAnalyser](http://www.paciellogroup.com/resources/contrastAnalyser){:target="_blank"} +- **Provide adequate contrast**—Be extra careful with light shades of gray, orange, and yellow. Check your contrast levels here: [http://webaim.org/resources/contrastchecker/](http://webaim.org/resources/contrastchecker/){:target="_blank"} or here: [http://www.paciellogroup.com/resources/contrastAnalyser](http://www.paciellogroup.com/resources/contrastAnalyser){:target="_blank"} **Acceptable** diff --git a/guides/v2.2/release-notes/ReleaseNotes2.2.0CE.md b/guides/v2.2/release-notes/ReleaseNotes2.2.0CE.md index 554ac515375..09776e5af38 100644 --- a/guides/v2.2/release-notes/ReleaseNotes2.2.0CE.md +++ b/guides/v2.2/release-notes/ReleaseNotes2.2.0CE.md @@ -60,562 +60,740 @@ This release contains hundreds of fixes and enhancements. ### Installation, upgrade, deployment + * You can now run `magento setup:upgrade --keep-generated` in production mode. Previously, Magento would throw an error when you ran `setup:upgrade` after compiling dependency injection. (This significantly curtailed your ability to deploy continuous integration.) [GitHub-4795](https://github.com/magento/magento2/issues/4795) + * You can now upgrade your Magento installation when using multiple master databases for checkout, order management, and product data. + * We fixed an issue that blocked using the web installer to successfully set up Magento. Previously, if you tried to install Magento with the web installer, Magento would indicate that the readiness check failed, and installation would not complete. + * You can now deploy build processes on a different staging machine than the one you're running your production environment on. + * Magento 2.0.x and 2.1.x now support the use of table prefixing during installation. Previously, when you used table prefixing, your Magento installation failed with this error: "Duplicate key on write or update". [GitHub-5688](https://github.com/magento/magento2/issues/5688) + * Third-party command line tools no longer fail when you run `setup:di:compile`. + * Magento now correctly applies [website](https://glossary.magento.com/website) configuration parameters to the corresponding [store view](https://glossary.magento.com/store-view). [GitHub-7943](https://github.com/magento/magento2/issues/7943) + * Fixed HTML inline style used when sending emails when implementing the upgraded `emorgifier` library. [GitHub-8241](https://github.com/magento/magento2/issues/8241) + * We’ve changed how Magento displays status updates during a product upgrade. Previously, potentially vulnerable information such as full paths and module names were displayed in the product GUI, potentially exposing this information to a malicious user. Magento now restricts this potentially vulnerable information to logs that are available to administrators only. + * The `cron:install` command now works as expected in Magento 2.2.0. Previously, the configuration for `crontab` commands contained double quotes that were not escaped, which caused invalid commands to be written to the `crontab` file. [GitHub-10040](https://github.com/magento/magento2/issues/10040) + * Magento now moves the `sequence_*` table to the correct database after implementing a split database. + * Magento no longer throws an exception when the configuration checksum is absent on a new installation. + * Custom themes now inherit parent [XML](https://glossary.magento.com/xml) configuration information as expected. + * We've removed the sample password from the Setup Wizard + * You can now enable JavaScript minification without error. Previously, after enabling JS minification, the Magento Admin displayed 404 errors when accessing JavaScript elements. + * Magento no longer displays console errors after CSS merging and minification is enabled. Previously, when CSS merging and minification was enabled, the storefront was not displayed as expected, and the `styles-l.min.css` and `print.min.css` files could not be found. + * You can now successfully use the `config:set` command to set allowed or default currencies. + * Nginx now redirects to the setup page when using port 81. + * We've added the `dev:template-hints:enable` and `dev:template-hints:disable` commands to manage template hints. *Fix submitted by community member Miguel Balparda in pull request [9778](https://github.com/magento/magento2/pull/9778){: target="_blank"}.* + * We've added the `dev:query-log:enable` and `dev:query-log:disable` to manage database query logging. *Fix submitted by community member Federico Rivollier in pull request [9264](https://github.com/magento/magento2/pull/9264){: target="_blank"}.* + * We've added the `varnish:vcl:generate` command to create the Varnish VCL file. *Fix submitted by community member Piotr Kwiecinski in pull request [9286](https://github.com/magento/magento2/pull/9286){: target="_blank"}.* + * Magento now adds a new record to the quote table and adds the current date and time to the `created_at` field. Previously, this field was not updated. + * The installation script no longer creates files in the root directory for missing modules when you install a community-created language pack. Translation packs created by the community often include translations for Magento Commerce modules. When you install these translation packs on an Open Source installation, the Commerce modules are missing. Previously, the installation script creates a file in the root directory for these Commerce modules instead of skipping them. [GitHub-6260](https://github.com/magento/magento2/issues/6260) + * We've fixed issues with upgrading installations with split databases. + * The import URL directive now contains base URL and locale placeholders instead of the real URL. + * Magento now works as expected on an Apache `php-fpm` environment. + * The `DOCUMENT_ROOT` directory is now writable. Previously, installation failed because this directory was not writable. + * When upgrading Magento from 2.1.x to 2.2, the `quote_address.free_shipping` column is the same whether you upgraded from a previous installation of Magento or performed a fresh installation. Previously, different upgrade/installation options affected the contents of this column. + * Command-line users now have read and write permissions to the `var/generation` directory. [GitHub-7933](https://github.com/magento/magento2/issues/7933) + * The Magento command-line interface now sets the correct exit codes when an upgrade task fails. [GitHub-7576](https://github.com/magento/magento2/issues/7576) + * You can now disable the Review module without incurring an error in the Product Edit page. Previously, if you tried to edit a product after disabling the review module, Magento displayed this error: "Something went wrong". [GitHub-6704](https://github.com/magento/magento2/issues/6704) + * You can now use Component Manager to enable a previously disabled module. Previously, when you ran `bin/magento module:disable Magento_AnyModule`, then tried to re-enable that module, Magento fails to enable it and any previously enabled cache types, and module installation fails. [GitHub-6078](https://github.com/magento/magento2/issues/6078) + * Magento no longer inserts HTTPSS:// for HTTPS in a store address when you install Magento using an HTTPS address over SSL. [GitHub-6262](https://github.com/magento/magento2/issues/6262) + * We’ve fixed problems with the uninstall process. Previously, when Magento tries to uninstall a module using composer, it simultaneously tried to update the `symfony/process` version. However, because the `module:uninstall`  command uses  `symfony/process`, the command stopped running. [GitHub-5797](https://github.com/magento/magento2/issues/5797) ### Cart and checkout + * Magento now implements the minicart maximum display recently added item setting to your [shopping cart](https://glossary.magento.com/shopping-cart). Previously, Magento displayed all the items in the shopping cart, even when the number of items exceeded this limit. [GitHub-4750](https://github.com/magento/magento2/issues/4750) + * You can now reload a page during [checkout](https://glossary.magento.com/checkout) without unintentionally changing shipping information. + * Custom address attributes now appear in the Checkout summary. + * Lengthy [Order Status](https://glossary.magento.com/order-status) tables are now paginated as expected. + * Magento now displays the product add validation message ("Product was added to the cart") only after you have successfully added a product to your cart. + * We've resolved an issue that prevented you from adding more than one product to a [shopping cart](https://glossary.magento.com/shopping-cart) from a wishlist. [GitHub-5282](https://github.com/magento/magento2/issues/5282) + * The number of items in the minicart is now updated correctly when you run Magento in mixed HTTP/HTTPS mode. [GitHub-6487](https://github.com/magento/magento2/issues/6487) + * The minicart now performs as expected in deployments that span multiple websites. Previously, in a Magento installation that had multiple websites, products that you added to one [website](https://glossary.magento.com/website) appeared in the other websites' minicarts. + * A cart rule with a coupon code no longer overrides a cart rule without a coupon code when multiple [cart rules](https://glossary.magento.com/cart-rules) are applied. Previously, when you created two cart rules and applied them to a cart, the rule with a coupon was applied, but the second rule was not. [GitHub-6294](https://github.com/magento/magento2/issues/6294) + * Refreshing your browser page while on the Review and Payments page of the checkout process no longer clears information from form fields. Previously, Magento cleared information from the **Ship to** field if you refreshed your browser page during this process. + * Magento no longer lets you add a product variation to your shopping cart if the item is out of stock. Previously, Magento permitted you to select an out-of-stock item and when you added it to your cart, displayed the "Product is out of stock" message. + * We've corrected a problem with Magento throwing an HTTP ERROR 500 intermittently during checkout. + * We fixed a [JavaScript](https://glossary.magento.com/javascript) error that occurred on the Checkout page after you changed the country in the **Estimate Shipping and Tax** field. + * Magento now successfully estimates shipping costs. Previously, when you tried to estimate shipping costs, the load indicator would spin indefinitely, and Magento displayed this exception,```Object doesn't support this action```. [GitHub-5358](https://github.com/magento/magento2/issues/5358), [GitHub-7051](https://github.com/magento/magento2/issues/7051) + * Magento now displays the **State/Province** field on the Add New Address page. [GitHub-5279](https://github.com/magento/magento2/issues/5279) + * Credit card information now persists as expected after a user enters a promotion code during checkout. Previously, After an user enters credit card information, then discount code and then click **Place Order**. The credit card information fields are emptied and user has to enter the credit card information again to proceed with the order transaction. + * You can complete your order after entering a new shipping address during checkout. Previously, Magento would not let you place an order if you entered a new shipping address during checkout. -* Magento no longer throws an exception when a customer updates their shopping cart after you've enabled the Minimum Order setting. *Fix submitted by community member Eric Risler - in pull request [8474](https://github.com/magento/magento2/pull/8474){: target="_blank"}.* + +* Magento no longer throws an exception when a customer updates their shopping cart after you've enabled the Minimum Order setting. *Fix submitted by community member Eric Risler in pull request [8474](https://github.com/magento/magento2/pull/8474){: target="_blank"}.* + * You can now translate the FPT label on the checkout page. *Fix submitted by community member Oleksii Korshenko in pull request [9204](https://github.com/magento/magento2/pull/9204){: target="_blank"}.* + * Magento no longer truncates bill-to names and ship-to names to 20 characters in the Admin. *Fix submitted by community member Isolde in pull request [9654](https://github.com/magento/magento2/pull/9654){: target="_blank"}.* + * You can now delete the last item in your cart when the Minimum Order setting is enabled. *Fix submitted by community member storbahn in pull request [9714](https://github.com/magento/magento2/pull/9714){: target="_blank"}.* + * You can now create unique checkbox IDs for the Terms and Conditions part of the checkout process. *Fix submitted by community member Bernhard in pull request [9717](https://github.com/magento/magento2/pull/9717){: target="_blank"}.* + * Magento now correctly displays the coupon label in the shopping cart during checkout. *Fix submitted by community member [Sylvain Rayé](https://github.com/diglin){: target="_blank"} in pull request [9721](https://github.com/magento/magento2/pull/9721){: target="_blank"}.* + * Magento now pre-fills prefixes and suffixes in the quote shipping address *Fix submitted by community member Anton Evers in pull request [9925](https://github.com/magento/magento2/pull/9925){: target="_blank"}.* + * The country drop-down box now correctly shows the countries for which the current store and customer account are configured. *Fix submitted by community member Marcel in pull request [9429](https://github.com/magento/magento2/pull/9429){: target="_blank"}.* + * The shopping cart now handles products with custom options. [GitHub-5612](https://github.com/magento/magento2/issues/5612) + * Magento now requires completion of the State field during the check out process if this field has been configured as required. + * Checkout now loads as expected in Safari private mode. [GitHub-7942](https://github.com/magento/magento2/issues/7942), [GitHub-7329](https://github.com/magento/magento2/issues/7329), [GitHub-8358](https://github.com/magento/magento2/issues/8358) + * Minicart now shows all products you’ve added, whether you added them while signed-in or not. Previously, the minicart contained only products that you added while signed in. [GitHub-7500](https://github.com/magento/magento2/issues/7500) + * Magento now displays the correct error message when you enter an invalid discount code when making a payment. [GitHub-7230](https://github.com/magento/magento2/issues/7230) + * Changing a product price under the website scope now updates the product price across all stores. Previously, any price you set on the store view level overrode the price set in website scope. [GitHub-5133](https://github.com/magento/magento2/issues/5133), [GitHub-7251](https://github.com/magento/magento2/issues/7251) + * You can now directly add a configurable product to your shopping cart from category page. [GitHub-2574](https://github.com/magento/magento2/issues/2574), [GitHub-5850](https://github.com/magento/magento2/issues/5850), [GitHub-5882](https://github.com/magento/magento2/issues/5882), [GitHub-6572](https://github.com/magento/magento2/issues/6572), [GitHub-5558](https://github.com/magento/magento2/issues/5558), [GitHub-4184](https://github.com/magento/magento2/issues/4184) + * Magento now displays out-of-stock products in the shopping cart. Previously, if a product’s status changed between the time you added it to the cart and you proceeded to check out, Magento removed the product from your cart. [GitHub-6583](https://github.com/magento/magento2/issues/6583) + * When you select `New Address` while reviewing order information during check out, Magento now profiles the username and country fields, but leaves the address fields empty. Previously, Magento did not leave the address fields empty, and the checkout process failed. [GitHub-6869](https://github.com/magento/magento2/issues/6869) + * Checkout agreement validation now works as expected after you change payment method. [GitHub-6224](https://github.com/magento/magento2/issues/6224) + * The shopping cart now displays a shipping rate that reflects tax settings. Previously, the prices displayed in your shopping cart were not adjusted to include these settings. [GitHub-6166](https://github.com/magento/magento2/issues/6166) + * Magento now displays the ”Thank you for your purchase!" on the checkout success page. ### Catalog + * Magento no longer locks the `category_product_entity` table. Unlocking this table reduces the potential of lock-related timeouts that can occur when indexing and checkout operations run in parallel. Previously, Magento locked the `category_product_entity` table. + * The [storefront](https://glossary.magento.com/storefront) now displays images that Magento resizes during product save operations, rather than resizing the product on the storefront. Previously, the image path contained `store_id`, and during save operations, Magento resized images for images the default store only. + * The `\Magento\CatalogInventory\Model\Stock\Status\getStockId()` method now returns the correct values. + * The [storefront](https://glossary.magento.com/storefront) gallery now displays all the images associated with a [configurable product](https://glossary.magento.com/configurable-product). Previously, when you clicked on the swatches associated with a configurable product, the gallery displayed only one of several possible images. [GitHub-6195](https://github.com/magento/magento2/issues/6195), [GitHub-4101](https://github.com/magento/magento2/issues/4101) + * Magento now displays the **This is a required field** message immediately adjacent to the product options as needed during [checkout](https://glossary.magento.com/checkout). Previously, Magento displayed this message at the bottom of the checkout form. + * You can now save a product with images multiple times. + * The category page now shows the current price after Magento runs a scheduled update. Previously, the category page would not update the price after running a scheduled update. [GitHub-4945](https://github.com/magento/magento2/issues/4945) + * You can now sort and filter on the New Review page. [GitHub-5391](https://github.com/magento/magento2/issues/5391) + * Magento now displays server-side Ajax error messages. + * Magento now validates the uniqueness of product attribute values as you create or edit them. Previously, you could add identically named values to an attribute. [GitHub-4881](https://github.com/magento/magento2/issues/4881) + * Magento now displays the price of out-of-stock products on the product page. + * If you remove an item from the Compare Items list that is displayed on any [Category](https://glossary.magento.com/category) page, Magento no longer redirects you to the Compare Products page. + * Subcategories no longer show up in the menu when the parent category is disabled or hidden from the menu. [GitHub-10664](https://github.com/magento/magento2/issues/10664) + * We've corrected a problem with Magento throwing an HTTP ERROR 500 intermittently during checkout. + * The product attribute `category_ids` can have only **Global** scope. Previously, you could change the scope value of `category_ids` to **Store**. + * A price change to a custom option affects only that option. Previously, changing the price of a custom option also affected the price of related products. [GitHub-4588](https://github.com/magento/magento2/issues/4588), [GitHub-5798](https://github.com/magento/magento2/issues/5798), [GitHub-6041](https://github.com/magento/magento2/issues/6041), [GitHub-6097](https://github.com/magento/magento2/issues/6097) + * The prices you assign to custom options no longer change unexpectedly after you save them. [GitHub-6116](https://github.com/magento/magento2/issues/6116) + * You can now create a blank attribute option using the drop-down input option on products that do not require an attribute. [GitHub-3545](https://github.com/magento/magento2/issues/3545), [GitHub-5485](https://github.com/magento/magento2/issues/5485), [GitHub-4910](https://github.com/magento/magento2/issues/4910) + * Magento no longer encounters an error when it cannot find a product image file. [GitHub-5184](https://github.com/magento/magento2/issues/5184), [GitHub-5497](https://github.com/magento/magento2/issues/5497), [GitHub-5871](https://github.com/magento/magento2/issues/5871) + * You can now successfully set an SKU mask to empty. Previously, when a product SKU mask was set to empty, Magento experienced problems loading the Product Add page. [GitHub-5618](https://github.com/magento/magento2/issues/5618) + * Magento now correctly displays custom options at the store-view level. [GitHub-2908](https://github.com/magento/magento2/issues/2908), [GitHub-5885](https://github.com/magento/magento2/issues/5885), [GitHub-5612](https://github.com/magento/magento2/issues/5612) + * Magento now provides swatch input for the Admin Scope, and the attribute fall back mechanism now reverts to the default option value if no values are specified for specific store view. [GitHub-5143](https://github.com/magento/magento2/issues/5143), [GitHub-5142](https://github.com/magento/magento2/issues/5142) + * You can now create a custom attribute for a category that successfully uploads a custom image. Previously, you could create the attribute, but could not save the image. + * Sorting configurable products by price now works as expected when a simple product has a special price. [GitHub-4778](https://github.com/magento/magento2/issues/4778) + * Magento no longer displays an error when you open a product with a Fixed Product Tax attribute enabled. + * We've improved the process of using the WebAPI interface to save a product stock item. Previously, this type of save action worked inconsistently. + * You can no longer change or fake a product price from the Magento [storefront](https://glossary.magento.com/storefront) and then complete an order with that faked price. + * View permissions to high-level product categories now work as expected. Previously, Magento displayed only the product categories that users who belonged to the NOT_LOGGED_IN customer group were permitted to view, no matter which user logged in. Additionally, a user restricted to browse a category could still see the category in the top-level navigation menu if the page were previously cached in FPC. + * You can now successfully add a product to the compare list. Previously, when you tried to add a product to a compare list, Magento displayed an error. + * You can now remove custom options from simple products. Previously, when you tried to remove a custom option from a product, Magento did not remove the options, and displayed an error message. + * You can now successfully set the **Enable Product** attribute to **no**. + * Magento no longer permits a shopper to place a re-order once you've disabled one of items in the order. + * Fixed an issue that occurred in the Catalog Gallery on mobile displays when the `allowfullscreen` setting is enabled. *Fix submitted by community member Dennis van Schaik in pull request [8434](https://github.com/magento/magento2/pull/8434){: target="_blank"}.* + * Magento now successfully loads re-ordered related products when Edge-Mode is activated. *Fix submitted by community member [@kirashet666](https://github.com/kirashet666){: target="_blank"} in pull request [8467](https://github.com/magento/magento2/pull/8467){: target="_blank"}.* + * Magento now displays cross-sells as expected when you use the `product/list/items.phtml` template. *Fix submitted by community member Koen V in pull request [8602](https://github.com/magento/magento2/pull/9662){: target="_blank"}.* + * Magento now displays the **Yes** or **No** attribute value on Product pages. *Fix submitted by community member Timo Klement in pull request [8623](https://github.com/magento/magento2/pull/8623){: target="_blank"}.* + * Setting the **show_out_of_stock** attribute to **No** now works as expected. *Fix submitted by community member Theis Corfixen in pull request [8736](https://github.com/magento/magento2/pull/8736){: target="_blank"}.* + * Magento now uses parent names (instead of SKU-based names) when creating configurable products. *Fix submitted by community member Pascal Brouwers in pull request [9681](https://github.com/magento/magento2/pull/9681){: target="_blank"}.* + * You can now create an `etc/view.xml` file containing an `images` tag with an attribute `module`. *Fix submitted by community member Marius Strajeru in pull request [10052](https://github.com/magento/magento2/pull/10052){: target="_blank"}.* + * Magento now displays the Category selection UI under Conditions when you select a rule for editing. *Fix submitted by community member duckchip in pull request [10094](https://github.com/magento/magento2/pull/10094){: target="_blank"}.* + * Magento now displays the correct image when you switch between a configurable product's options. Previously, Magento loaded product images from a different product. + * The Magento WYSIWYG editor now handles special characters such as percent sign (%). [GitHub-9452](https://github.com/magento/magento2/issues/9452) + * The `indexer:reindex catalog_category_product` process can now handle more than 500 products in a category. + * Magento now displays the price set at store view-level for a product that has different prices set on the global and store view level. + * Out-of-stock options for configurable products no longer show up in search and layered navigation results. + * Magento no longer throws an error when you try to save a product with imported custom options. + * Magento now displays the product price even when the product is out-of-stock. + * `productWebsiteLink` no longer deletes a product’s custom origins. + * Magento now successfully handles purchases of product with minimum quantities of less than one. [GitHub-5570](https://github.com/magento/magento2/issues/5570) + * Magento no longer pre-fills the **Set Product as New From Date** field when you set a special price for a product. [GitHub-4387](https://github.com/magento/magento2/issues/4387) + * When you edit a widget’s existing condition, Magento now loads the SKU grid with all available SKUs. [GitHub-6985](https://github.com/magento/magento2/issues/6985) + * Combine rule conditions now work as expected for product list widgets. [GitHub-7274](https://github.com/magento/magento2/issues/7274) + * Component Manager now handles custom Composer modules. Previously, when you tried to install a custom extension using **System > Tools > Web Setup > Component Manager**, Magento displayed the spinning widget indefinitely. [GitHub-6718](https://github.com/magento/magento2/issues/6718) + * We’ve fixed an issue with sorting products by tier price. Previously, if you enabled the Used for Sorting in Product Listing field in the Edit Tier Price Attribute page. and then selected sort by tier price on the storefront, Magento displayed an error message. [GitHub-6751](https://github.com/magento/magento2/issues/6751) + * Products returned by an API product paginated search now include `category_ids` as a member of `custom_attributes`. [GitHub-6127](https://github.com/magento/magento2/issues/6127) + * Product images in Magento installations with multiple store views are now assigned as expected to each store view. [GitHub-6259](https://github.com/magento/magento2/issues/6259) + * Magento no longer adds an empty product option to each PUT request. Previously, Magento added an empty option even when the options array was empty. [GitHub-5963](https://github.com/magento/magento2/issues/5963) ### Configurable products + * You can now successfully disable the lowest price of a [configurable product](https://glossary.magento.com/configurable-product) and its associated simple products. Previously, Magento displayed a configurable product's lowest price even after you disabled that price. + * Magento no longer applies one simple product's special price to another [simple product](https://glossary.magento.com/simple-product) of the same configurable product. Previously, when you set a regular and special price for a child product, all products associated with the same configurable product displayed a regular and special price, even when these amounts were the same. [GitHub-4442](https://github.com/magento/magento2/issues/4442), [GitHub-5097](https://github.com/magento/magento2/issues/5097), [GitHub-6645](https://github.com/magento/magento2/issues/6645) + * You can now edit a product attribute for multiple configurable products. Previously, when you tried to bulk-edit an attribute on a collection of filtered, configurable products, Magento would complete the process without incorporating your edits, and then incorrectly tell you that the products had been edited. + * Magento no longer throws an [exception](https://glossary.magento.com/exception) when you add a configurable product by [SKU](https://glossary.magento.com/sku) if an associated simple product is out-of-stock. + * Magento now correctly displays a product as out-of-stock if its child products are disabled. Previously, the [category](https://glossary.magento.com/category) page failed to list the product at all, rather than listing it as out-of-stock. + * A price change to a custom option affects only that option. Previously, changing the price of a custom option also affected the price of related products. [GitHub-4588](https://github.com/magento/magento2/issues/4588), [GitHub-5798](https://github.com/magento/magento2/issues/5798), [GitHub-6041](https://github.com/magento/magento2/issues/6041), [GitHub-6097](https://github.com/magento/magento2/issues/6097) + * The check that Magento runs to confirm a configurable product's readiness for sale is now faster. (The `isSalable` method checks that a [configurable product](https://glossary.magento.com/configurable-product) can be sold (that is, is in a salable state)). + * Query optimizations have improved the speed of configurable product price calculation. + * Magento no longer calculates configurable product special prices on the category page. Previously, Magento calculated special prices on the category page, but did not display them. + * Magento now displays configurable products as expected after creation. + * Magento no longer displays a configurable product on the storefront when its child products are deleted and the **show out-of-stock** setting is set to **No**. + * Configurable products no longer show up on category page when all children are set to **enable product = No** and **display out-of-stock products = Off**. + * Magento no longer displays the **as low as** label for a disabled price on the Category page. + * The price you set on the website scope no longer overrides any local settings you set on configurable products at the store view level. + * You can now successfully disable the lowest price of a configurable product and its associated simple products. Previously, Magento displayed a configurable product's lowest price even after you disabled the price. [GitHub-4419](https://github.com/magento/magento2/issues/4419) + * Magento now correctly displays a product as out-of-stock if its child products are disabled. Previously, the [category](https://glossary.magento.com/category) page failed to list the product at all, rather than listing it as out-of-stock. + * Magento now displays the correct drop-down option labels for configurable products when using attributes with custom source. + * Magento now shows the correct price of a configurable product based in installations that run multiple websites. + * We’ve improved the performance of Magento installations that contain configurable products with many (1600+) options. + * We’ve resolved some issues with the display of configurable products on the Magento frontend after product creation. + * Magento now displays only the set price for a configurable product, not its set price and “as low as” price. Previously, Magento showed both prices if a minimum price was not configured. + * Magento no longer removes the simple products associated with a configurable product if you click on the **Save** button more than once while saving the configurable product. Previously, if you clicked on **Save** more than once during an attempt to save a configurable product, Magento removed the simple products that were assigned to it. + * Special prices now display correctly for future discounts [GitHub-8375](https://github.com/magento/magento2/issues/8375) + * Magento no longer applies one simple product's special price to another simple product of the same configurable product. Previously, when you set a regular and special price for a child product, all products associated with the same configurable product displayed a regular and special price, even when these amounts were the same. [GitHub-4442](https://github.com/magento/magento2/issues/4442), [GitHub-5097](https://github.com/magento/magento2/issues/5097), [GitHub-6645](https://github.com/magento/magento2/issues/6645) + * Magento now shows the correct product price for products that you add to the wish list from the category page. [GitHub-6866](https://github.com/magento/magento2/issues/6866) + * Users no longer lose configurable product data when you change the interface locale to Chinese (China) or Arabic (Egypt). + * You can now successfully disable the lowest price of a configurable product and its associated simple products. Previously, Magento displayed a configurable product's lowest price even after you disabled the price. [GitHub-4419](https://github.com/magento/magento2/issues/4419) ### Email + * Magento now successfully loads the New Order Email templates. [GitHub-5101](https://github.com/magento/magento2/issues/5101) + * The **Send Welcome Email From** field now identifies the store that the customer is associated with. + * Magento no longer sends email when the **Disable email communication** setting is set to **yes**. Previously, Magento sent email even when this setting was enabled. [GitHub-5988](https://github.com/magento/magento2/issues/5988) ### Frameworks + * Static file generation is no longer affected by a race condition that affected merging CSS files. Previously, this race condition interfered with the proper generation of the product frontend. + * The ability to disable module output has been removed from Admin. If you disabled module output from Admin in a previous release, you must manually configure these settings. See [Disable module output]({{ page.baseurl }}/config-guide/config/disable-module-output.html) for details. + * Static tests run in a Windows environment no longer fail due to file path mismatches. *Fix submitted by community member barbazul in pull request [9902](https://github.com/magento/magento2/pull/9902){: target="_blank"}.* + * You can now link a simple product to a configurable one. Previously, when you tried to use REST to link a simple product to a configurable one, the products were not linked even though Magento responded, `Status Code: 200 OK`. + * Videos now play as expected on simple products as they do for configurable products. Previously, simple product videos were displayed as thumbnail images only.[GitHub-6360](https://github.com/magento/magento2/issues/6360) + * Magento now displays special characters in store names in email subject lines. Previously, special characters in the store name were converted to numerical character references in the email subject field. [GitHub-8094](https://github.com/magento/magento2/issues/8094) + * Configuration paths `persistent_identifier` & `compression_threshold` for Redis Sessions have been corrected. *Fix submitted by community member Luke Hanley in pull request [9368](https://github.com/magento/magento2/pull/9368){: target="_blank"}.* #### Admin framework + * You can no longer delete a currently logged-in user. + * Inline editing in Admin now includes ACL checks. Previously, the Quick Edit editor did not respect permissions. #### Application framework + * Magento now supports new top level domains for email addresses. [GitHub-4547](https://github.com/magento/magento2/issues/4547) + * Page titles in layout files are not translatable. *Fix submitted by community member Anton Evers in pull request [9992](https://github.com/magento/magento2/pull/9992){: target="_blank"}.* + * The `setup:static-content:deploy`, `setup:di:compile` and `deploy:mode:set` commands now return non-zero exit code if an error occurs. *Fix submitted by community member Pablo Ivulic in pull request [7780](https://github.com/magento/magento2/pull/7780){: target="_blank"}.* + * We've changed the `select` protected property to `query` in the AbstractSearchResult class. *Fix submitted by community member Alex Gusev in pull request [5043](https://github.com/magento/magento2/pull/5043){: target="_blank"}.* + * `\Magento\Framework\Interception\Code\Generator\Interceptor` now supports interceptors for generating for methods that return references. [GitHub-9167](https://github.com/magento/magento2/issues/9167) + * The Magento Framework now makes its dependency upon the `zendframework/zend-stdlib` library explicit in `composer.json`. [(GITHUB-6442)](https://github.com/magento/magento2/issues/6442){: target="_blank"} #### Configuration framework + * The currency setup in Admin no longer throws an `in_array` error when a single value is selected. *Fix submitted by community member Derik Nel in pull request [8077](https://github.com/magento/magento2/pull/8077){: target="_blank"}.* + * Magento now writes all default configuration values to the `config.php` file. #### JavaScript framework + * Customers can now place orders as expected when Magento is running a French locale in production mode. Previously, customers could not complete a transaction in a storefront running a French locale, although they could if they switched to the storefront running the English locale. + * Magento now displays server-side Ajax error messages. + * JavaScript mixins now work when you add a `urlArgs` argument to a `require_js` file. *Fix submitted by community member James Reed in pull request [9665](https://github.com/magento/magento2/pull/9665){: target="_blank"}.* #### Session framework + * The Magento storefront and Admin panel no longer share form keys. Previously, if a user were navigating both a storefront and the Admin simultaneously, he would be unexpectedly redirected to the Admin dashboard. [GitHub-6201](https://github.com/magento/magento2/issues/6201) #### Zend framework @@ -623,364 +801,479 @@ This release contains hundreds of fixes and enhancements. Thanks to our hardworking Magento Open Source community members for the following contributions! + * We’ve removed `Zend_Json` from Magento Theme and replaced it with a new serializer class. *Fix submitted by community member David Manners in pull request [9262](https://github.com/magento/magento2/pull/9262){: target="_blank"}.* + * We’ve removed `Zend_Json` from the Weee module. *Fix submitted by community member David Manners We’ve removed pull request [9261](https://github.com/magento/magento2/pull/9261){: target="_blank"}.* + * We’ve replaced the direct usage of `Zend_Json` with a call to the `Json_Help` class. *Fix submitted by community member David Manners in pull request [9344](https://github.com/magento/magento2/pull/9344){: target="_blank"}.* + * We’ve replaced `Zend_Json` in the configurable product block test. *Fix submitted by community member David Manners in pull request [9753](https://github.com/magento/magento2/pull/9753){: target="_blank"}.* + * We’ve removed `Zend_Json` from form elements. *Fix submitted by community member David Manners in pull request [9754](https://github.com/magento/magento2/pull/9754){: target="_blank"}.* + * We’ve replaced the Magento Framework's `Zend_Session` interface usage with SessionHandlerInterface. *Fix submitted by community member Timon de Groot in pull request [9285](https://github.com/magento/magento2/pull/9285){: target="_blank"}.* + * We’ve removed `Zend_Wildfire` and `Zend_Controller` from the codebase. *Fix submitted by community member Isolde in pull request [9622](https://github.com/magento/magento2/pull/9622){: target="_blank"}.* + * We've resolved issues with selecting widgets in TinyMCE. [GitHub-9655](https://github.com/magento/magento2/issues/9655), [GitHub-9518](https://github.com/magento/magento2/issues/9518) *Fixes submitted by community member Pieter Hoste in pull request [9540](https://github.com/magento/magento2/pull/9540){: target="_blank"} and community member Bernhard in pull request [9711](https://github.com/magento/magento2/pull/9711){: target="_blank"}.* + * We’ve replaced `Zend_Log` with `Psr\Log\LoggerInterface`. *Fix submitted by community member Timon de Groot in pull request [9285](https://github.com/magento/magento2/pull/9285){: target="_blank"}.* + * Magento no longer throws a `Zend_Db_Statement_Exception` when a user opens an empty Category page. *Fix submitted by community member adrian-martinez-interactiv4 in pull request [9400](https://github.com/magento/magento2/pull/9400){: target="_blank"}.* ### General fixes + * You can now save products using the multiple select attribute value. Previously, you could not save values if using this attribute. + * You can now log in successfully after creating a custom attribute. Previously, Magento would display an error message, and you could not log in, after first creating a custom attribute, then logging out. + * Magento now correctly displays customer address during account creation. Previously, when you selected a default billing address during creation of a new customer account, Magento would not display the address. + * Admin users with restricted permissions can now log in successfully as determined by those permissions. Previously, Magento displayed a fatal error when you logged in under these conditions. + * We've removed the duplicated [PHP](https://glossary.magento.com/php) settings from the sample web server configuration files. + * When creating a new page with the Add New Page feature, Magento no longer throws a JavaScript error when [Layout](https://glossary.magento.com/layout) is set to empty. + * We've removed the sample password from the Setup Wizard. + * You can now assign open-ended start and complete dates for product rules. Previously, if you left the start and end date field blanks when creating a rule, Magento would supply the start and end dates based on the save date. + * The Magento Framework now makes its dependency upon the `zendframework/zend-stdlib` library explicit in `composer.json`. [GitHub-6442](https://github.com/magento/magento2/issues/6442) + * You can now upload changes to the `robots.txt` file from the Admin panel. + * We've eliminated difficulties saving product information when logged in as Admin. Previously, the Product Save feature worked erratically for Admin users. + * Custom themes now inherit parent [XML](https://glossary.magento.com/xml) configuration information as expected. + * Information set by the **Default Billing Address** and **Default Shipping Address** checkboxes on the Customer page are now saved correctly. + * [Admin](https://glossary.magento.com/admin) users with appropriate permissions can now reset the passwords of more than one customer at a time. [GitHub-5260](https://github.com/magento/magento2/issues/5260) + * Admin interface forms now load data as expected after initializing all components. Previously, under certain conditions, the load indicator would spin indefinitely, and Magento would not load data. + * Showing reports on the **Reports > Coupons** page no longer throws an error when the user is in a non-default Admin locale. [GitHub-7037](https://github.com/magento/magento2/issues/7037) + * You can now generate static content without a database connection. [GitHub-10041](https://github.com/magento/magento2/issues/10041) + * Static content deployment now generates secure content, whether content included secure or non-secure URLs. + * The Recently Viewed Products block now appears as expected when the full page cache is enabled. [GitHub-3890](https://github.com/magento/magento2/issues/3890) + * We've resolved an issue that prevented you from adding more than one product to a [shopping cart](https://glossary.magento.com/shopping-cart) from a wishlist. [GitHub-5282](https://github.com/magento/magento2/issues/5282) + * Widgets now accept UTF-8 special characters type as input parameters. Previously, you could successfully create a widget, but UTF-8 special characters were broken. [GitHub-4232](https://github.com/magento/magento2/issues/4232) *Fix submitted by community member Pieter Hoste in pull request [9333](https://github.com/magento/magento2/pull/9333){: target="_blank"}.* + * Mass actions now work as expected on the Customer grid. Previously, Magento could not process more than 20 items at a time. + * Customers who subscribe to a newsletter are now subscribed as expected after confirming their account. Previously, Magento unsubscribed customers from the newsletter after confirming their account. + * You can now save products using the multiple select attribute value. Previously, you could not save values if using this attribute. + * You can now assign open-ended start and complete dates for product rules. Previously, if you left the start and end date field blanks when creating a rule, Magento would supply the start and end dates based on the save date. + * Magento no longer generates incorrect URLs in the site map when the **Use Secure URLs in Admin** setting is set to **Yes**. [GitHub-8644](https://github.com/magento/magento2/issues/8644) + * We’ve resolved a conflict that occurred after you changed a base URL. Previously, after you changed a `base_url` value (**Stores->Configuration > General > Web > Base URLs (Secure)**), Magento would update the base URL, then resubscribe, potentially resulting in a failure during the next update secure `base_url` call. + * Magento now displays newly registered customers in the Admin customer list as expected. + * The Customer Segment page no longer shows non-matching customers when a customer logs in and you refresh the Customer Segment page. + * You can now add a `translate` attribute to any String argument in the `di.xml` file for any class. This attribute provides an ability on the level of dependency injection configuration to specify that an argument can be translated. The actual translation of strings is handled by another Magento component. + * Magento frontend scope filters now work as expected. Previously, Magento did not reload product information correctly when you applied a filter using **Catalog > Product**. + * Only users with permission to view a store can view or process the orders placed on it. + * You can render the `tax_class_id` attribute nonsearchable. Previously, Magento displayed a 503 error under these circumstances. + * Fixed the location of the `wishlist.js` file. *Fix submitted by community member [Koen V.](https://github.com/koenner01){: target="_blank"} in pull request [8633](https://github.com/magento/magento2/pull/8633){: target="_blank"}.* + * You can no longer download products after you’ve set order state to `STATE_CANCELED`. *Fix submitted by community member nazarpadalka in pull request [8917](https://github.com/magento/magento2/pull/8917){: target="_blank"}.* + * Fixed a typo in the Pull Request Template. *Fix submitted by community member tomislavsantek in pull request [8908](https://github.com/magento/magento2/pull/8908){: target="_blank"}.* + * You now receive an error message as expected if you try to submit a product review while not logged in. *Fix submitted by community member quienti in pull request [9001](https://github.com/magento/magento2/pull/9001){: target="_blank"}.* + * Fixed grammar error in the customer dashboard. *Fix submitted by community member Petar Sambolek in pull request [9080](https://github.com/magento/magento2/pull/9080){: target="_blank"}.* + * The popup window in the Safari browser now closes properly. *Fix submitted by community member Hans Schouten in pull request [8824](https://github.com/magento/magento2/pull/8824){: target="_blank"}.* + * We've fixed minor performance issues when you use `/pub` as `docroot`. *Fix submitted by community member Joseph Maxwell in pull request [9094](https://github.com/magento/magento2/pull/9094){: target="_blank"}.* + * The Actions dropdown menu is now properly aligned in the Admin when the action column is not the last column. *Fix submitted by community member Marius Strajeru in pull request [10082](https://github.com/magento/magento2/pull/10082){: target="_blank"}.* + * Magento now deletes pending entries in `cron_schedule` when you reconfigure a cron job. *Fix submitted by community member Anton Evers in pull request [9957](https://github.com/magento/magento2/pull/9957){: target="_blank"}.* + * We’ve fixed the cron timestamp method. *Fix submitted by community member Anton Evers in pull request [9943](https://github.com/magento/magento2/pull/9943){: target="_blank"}.* + * You can now save customers with unique attributes. *Fix submitted by community member storbahn in pull request [9712](https://github.com/magento/magento2/pull/9712){: target="_blank"}.* + * The `Magento_Framework/View/Layout/etc/elements.xsd` file `blockReferenceType` definition now allows for the optional argument template. *Fix submitted by community member jissereitsma in pull request [9772](https://github.com/magento/magento2/pull/9772){: target="_blank"}.* + * Customer sessions for different customers are no longer shared on installations on multiple websites. [GitHub-4842](https://github.com/magento/magento2/issues/4842), [GitHub-6468](https://github.com/magento/magento2/issues/6468) + * Magento now handles quotation marks in product names. Previously, quotation marks in product names caused a JSON error on the Product page. [GitHub-8059](https://github.com/magento/magento2/issues/8059) + * When you add an address, new custom attributes are now displayed together, along with other address details. + * You can now edit the default store view and save it under a different name. [GitHub-7349](https://github.com/magento/magento2/issues/7349) + * `.htaccess` deny code execution now works as expected for Apache and php-fpm. [GitHub-6766](https://github.com/magento/magento2/issues/6766) + * Magento now displays the WYSIWYG editor as expected. [GitHub-6222](https://github.com/magento/magento2/issues/6222), [GitHub-4828](https://github.com/magento/magento2/issues/4828), [GitHub-6815](https://github.com/magento/magento2/issues/6815) + * The Admin’s Most Viewed Products tab now displays correct product prices. Previously, prices for products in Most Viewed Products tab were incorrectly listed as $0. [GitHub-5660](https://github.com/magento/magento2/issues/5660) + * Magento now renders images as expected in the product description area. Previously, Magento did not render images in this area, and would display a broken link. [GitHub-6138](https://github.com/magento/magento2/issues/6138) + * When you override `module-directory/etc/zip_codes.xml` from a local module, all country codes are now included as expected. Previously, only the last country code was included, which affected the custom check out process. [GitHub-6694](https://github.com/magento/magento2/issues/6694) ### Google Analytics + * We’ve added the missing single quote (‘) to the Google API Tracking code. *Fix submitted by community member Petar Sambolek in pull request [9084](https://github.com/magento/magento2/pull/9084){: target="_blank"}.* + * Google Analytics tracking now works when Cookie Restriction is enabled. *Fix submitted by community member Bernhard in pull request [9713](https://github.com/magento/magento2/pull/9713){: target="_blank"}.* ### HTML + * The CSS minify option no longer removes the whitespace around the minus (-) sign. Also, this option is now compatible with the `calc()` CSS function. *Fix submitted by community member Petar Sambolek in pull request [9027](https://github.com/magento/magento2/pull/9027){: target="_blank"}.* ### Images + * Magento no longer encounters an error when it cannot find a product image file. [GitHub-5184](https://github.com/magento/magento2/issues/5184), [GitHub-5497](https://github.com/magento/magento2/issues/5497), [GitHub-3545](https://github.com/magento/magento2/issues/3545), [GitHub-5871](https://github.com/magento/magento2/issues/5871) + * Magento now successfully saves images that you edit in a [WYSIWYG](https://glossary.magento.com/wysiwyg) editor. Previously, when you tried to change an image by right-clicking it in a WYSIWYG editor and choosing Insert/Edit Image, Magento did not save your changes. + * You can now preview uploaded images. + * You can now set an image size for product watermarks. [GitHub-5270](https://github.com/magento/magento2/issues/5270) + * Graphics now scroll as expected on mobile devices. [GitHub-5302](https://github.com/magento/magento2/issues/5302) + * Magento now successfully saves images that you edit in a [WYSIWYG](https://glossary.magento.com/wysiwyg) editor. Previously, when you tried to change an image by right-clicking it in a WYSIWYG editor and choosing Insert/Edit Image, Magento did not save your changes. + * Inserted images on the content block of Category no longer reference the Admin URL. Previously, when you used the Wysiwyg editor to insert an image into the Content block of a Category, the image URL on the frontend would reference the Admin location. When you subsequently logged out of the Admin panel, and refreshed the Category page, the image is no longer available. #### Import/Export + * You can now successfully import multiselect attributes that contain special symbols or delimiters. Previously, when you tried to import attributes containing delimiters, data validation (and the import) failed. + * You can now import negative quantities. Previously, when importing a product quantity of '-1', Magento returned an error. + * Magento now imports custom options correctly. Previously, when you tried to import a custom option, the import failed, and Magento displayed this error: `Javascript Error: Uncaught RangeError: Maximum call stack size exceeded`. [GitHub-5573](https://github.com/magento/magento2/issues/5573) + * We’ve added a new way to import images: You can now successfully import images when you set your document root to `your_Magento_install_dir/pub`. Previously, you needed to set document root to `/magento` to import images. Both ways of importing now work. [GitHub-5359](https://github.com/magento/magento2/issues/5359) + * Magento now removes category URL keys from the `url_rewrite` table as expected during import. Previously, Magento did not remove these keys, which triggered a failure during import. This subsequently caused Magento to quickly reach the maximum error count, returning this error: "Maximum error count has been reached or system error is occurred!". [GitHub-1471](https://github.com/magento/magento2/issues/1471) + * You can now export a [bundle product](https://glossary.magento.com/bundle-product) that contains a custom text area attribute. Previously, if you tried to export this type of bundle product, the export would fail, and Magento displayed the message, "There is no data for the export". + * Magento now maintains super attribute ordering of configurable products with multiple super attributes after export or import. Previously, after import or export, the ordering of super attributes was not maintained. [GitHub-6079](https://github.com/magento/magento2/issues/6079) + * Magento now correctly displays both configurable and simple products, their attribute values, and visibility values after import if SKU is an integer. [GitHub-5547](https://github.com/magento/magento2/issues/5547) + * Magento now imports customer data as expected after the data passes the pre-import validation step. Previously, although data passed this validation step, an error would occur during import, and Magento displayed this message: `Invalid data for insert`. [GitHub-4921](https://github.com/magento/magento2/issues/4921), [GitHub-9469](https://github.com/magento/magento2/issues/9469) + * The export process now populates values in the configurable variations column for configurable products as expected. Previously, when exporting more than one product, the values for the configurable variations column for configurable products were not included. + * Magento now displays imported product images in this order: first, the base image, then the additional images in the order in which they were listed in the [CSV](https://glossary.magento.com/csv) file. Previously, Magento displayed images in this unexpected order: first, an additional image, then the base image, and finally, all remaining additional images. + * Magento now runs a selective partial re-indexing operation after import if you enable **Update on Schedule**. Previously, Magento ran a full reindex no matter which index mode was set. + * We've fixed an issue with the correct representation of date and time zones of items in a product [catalog](https://glossary.magento.com/catalog) during import or export. Previously, Magento exported all dates in the default format (UTC-8), including values that you set to be displayed using another standard. + * Magento now successfully imports customer multiselect attributes. Previously, when you imported a CSV file with either the option's ID numbers or the option's values, Magento returned an error. + * Magento now displays more verbose information about duplicated information with links to action for troubleshooting the import process. Previously, Magento displayed duplicated or incomplete information on the product page after import. + * Magento now exports rows only once when product information contains HTML special characters. Previously, Magento exported rows containing product information that included HTML characters at least twice. + * We've improved the import speed of advanced pricing data. Previously, the import process for this information frequently stopped after the import of approximately 300 rows of data, and Magento displayed this message: `Please Wait`. + * The CatalogImportExport uploader now handles HTTPS images as expected. *Fix submitted by community member Clement Beudot in pull request [8278](https://github.com/magento/magento2/pull/8278){: target="_blank"}.* + * You can now successfully import multiselect attributes that contain special symbols or delimiters. Previously, when you tried to import attributes containing delimiters, data validation (and the import) failed. + * When you delete an image in Admin, Magento no longer deletes it on the server. Previously, Magento deleted it from the server as well, which caused errors for other products (example error message: `Cannot gather stats! Warning!stat(): stat failed for`). + * The exported sheet now generates or renders data for columns that indicate associations for configurable products. + * Magento no longer deletes a product after you select the Replace option while importing a product. Previously, Magento deleted the product rather than replacing it. + * Magento can now import `additional_images` that are tagged with labels that contain a comma separator. + * We've fixed an issue where product URL keys (for SKUs) were not auto-generated as expected during import. [GitHub-5188](https://github.com/magento/magento2/issues/5188) + * Magento now updates attribute sets as expected when importing products from CSV. [GitHub-5498](https://github.com/magento/magento2/issues/5498) + * The CatalogImportExport uploader can now handle HTTPS images. Previously, if the URL of a file contained HTTPS, the uploader still used the HTTP provider to retrieve the image, which lead to an error. [GitHub-8277](https://github.com/magento/magento2/issues/8277) #### Integrations + * With valid permissions, you can now regain access to your Admin account after it is temporarily disabled due to invalid credentials. Previously, you could not unlock the account of a valid Admin user if it were disabled due to multiple invalid login attempts. + * Web API tokens now have a default expiration period: 4 hours for Admin tokens and 1 hour for Customer tokens. This can be changed in the [Admin Panel configuration settings]({{ site.baseurl }}/guides/v2.2/get-started/authentication/gs-authentication-token.html#admin-and-customer-access-tokens) + * You can now edit `authentication_lock` from the Admin. *Fix submitted by community member Elias Kotlyar in pull request [9820](https://github.com/magento/magento2/pull/9820){: target="_blank"}.* ### Indexing + * We've improved the performance of the algorithm that Magento uses to calculate batch sizes while indexing categories. + * The category/product indexer now successfully completes a full reindexing of all indexes on large profiles with 500,000 or more products. Previously, Magento successfully generated a large profile, but failed to complete the reindexing of the categories or products, and displayed the following error: "Error 1114: Table is full". + * `IndexerHandlerFactory` no longer tries to cast the `$indexer` object to a String if an error occurs. Since `$indexer` is an object of type `IndexerInterface` and does not have a `__toString()` method, attempting to cast the `$indexer` object to a String previously resulted in an error. [GitHub-5155](https://github.com/magento/magento2/issues/5155) + * The Magento flat indexer now collects correct product data for `ROW_ID`. + * The Magento flat indexer no longer throws an error after flat tables are enabled and reindexed. This fix applies to both product and [catalog](https://glossary.magento.com/catalog) tables. + * Magento now runs a selective partial re-indexing operation after import if you enable **Update on Schedule**. Previously, Magento ran a full reindex no matter which index mode was set. + * `IndexerHandlerFactory` no longer tries to cast the `$indexer` object to a String if an error occurs. Since `$indexer` is an object of type `IndexerInterface` and does not have a `__toString()` method, attempting to cast the `$indexer` object to a String previously resulted in an error. [GitHub-5155](https://github.com/magento/magento2/issues/5155) + * The category/product indexer now successfully completes a full reindexing of all indexes on large profiles with 500,000 or more products. Previously, Magento successfully generated a large profile, but failed to complete the reindexing of the categories or products, and displayed the following error: "Error 1114: Table is full". + * We’ve resolved failures with indexing in installations that implemented catalogs containing at least 5,000 - 6,000 SKUs. + * We've improved the performance of the algorithm that Magento uses to calculate batch sizes while indexing categories. + * Reindexing no longer results in an SQL error that prevents bundle products from being reindexed, and results in wrong product prices. ### Orders + * We’ve added PHP interfaces that add the ability to change the status of a [shipment](https://glossary.magento.com/shipment). The new Creditmemo interface supports tasks you can already do through the Magento Admin, including the ability to: * support returning multiple units of a configurable product. Previously, when you tried to refund an order, you could refund only one unit of a configurable product, not the amount in the original order. @@ -990,117 +1283,153 @@ Thanks to our hardworking Magento Open Source community members for the followin * change order status after a credit memo has been created. + * You can now set the customer group when creating a new order from the Admin interface. [GitHub-6162](https://github.com/magento/magento2/issues/6162) + * You can now print invoices and credit memos from the Order page. + * You can now successfully place orders when the Enable and Configure [Website](https://glossary.magento.com/website) Payments Standard Payment Action attribute is set to Sale. Previously, under these conditions, Magento would display an error message and not allow you to complete the purchase. [GitHub-4785](https://github.com/magento/magento2/issues/4785) + * Attributes of the `salesInvoiceRepository` methods are now more appropriately type cast. (The data type is now a nullable float.) Previously, due to the use of an incorrect data type, Magento would produce an error when calling the `salesInvoiceRepositoryV1GetList` method. [GitHub-3605](https://github.com/magento/magento2/issues/3605) + * The order comments history no longer duplicates the time that a comment was made. Previously, the time that a comment was made was listed twice. + * Magento now uses the address template from store view level of the placed order (similar to how order confirmation email works). Previously, Magento used the wrong address template for order e-mails. + * Magento now correctly identifies an order being processed when it is placed in a store configured for multiple currencies. Previously, these orders always were identified as potentially fraudulent. + * The order comments history no longer duplicates the time that a comment was made. Previously, the time that a comment was made was listed twice. + * The **Print Shipping Label** link now displays on the product frontend. Previously, the layout for the Shipping and Tracking block did not work properly. + * You can now create an order through Admin if there is a `translate csv` for order-header. *Fix submitted by community member Pascal Brouwers in pull request [6856](https://github.com/magento/magento2/pull/6856){: target="_blank"}.* + * You can now use a second credit memo to successfully issue a full refund for a credit memo with adjustment fees. *Fix submitted by community member Max Pronko in pull request [9715](https://github.com/magento/magento2/pull/9715){: target="_blank"}.* + * Coupon codes are now included in invoice print outs. *Fix submitted by community member Belgacem Naoui in pull request [9780](https://github.com/magento/magento2/pull/9780){: target="_blank"}.* + * The Orders grid now displays correct order dates. *Fix submitted by community member Anton Evers in pull request [9941](https://github.com/magento/magento2/pull/9941){: target="_blank"}.* + * Magento now displays the correct order time in the Sales Order grid in the Admin panel. [GitHub-9426](https://github.com/magento/magento2/issues/9426) + * We’ve increased the size of the `sales_order_payment.cc_number_enc` field. [GitHub-7334](https://github.com/magento/magento2/issues/7334) + * We’ve fixed an issue with an undefined offset in the `order\config.php` file. [GitHub-6111](https://github.com/magento/magento2/issues/6111) + * The Create Order page now works as expected after you select **Update items and quantities**. + * Magento no longer creates unnecessary loaders during checkout with an order that contains virtual products. + * New orders no longer stay in the processing state after you click the Place Order button. Previously, new orders stayed in the processing state even after you clicked Place Order. [GitHub-5860](https://github.com/magento/magento2/issues/5860) + * Magento now creates the shipping address as expected when you use REST to create an order. Previously, when you used REST to create an order, then subsequently viewed the order from the Admin, Magento threw an error. + * Magento now displays all tax details as expected on the Admin order page. Previously, Magento did not save the order tax rate information, and the full tax summary was incomplete. + * You can now use either the parent order item ID or child product order item ID when using the REST API (`/V1/order/:orderId/invoice : POST method API`) to create an invoice for an order containing bundle products. [GitHub-6988](https://github.com/magento/magento2/issues/6988) ### Payment methods + * We’ve added support for the change to the USPS API that USPS implemented on September 1, 2017. After installing or upgrading to this release, Magento will display the Domestic rate for USPS, First-Class Mail Parcel as expected. Previously, the USPS First-Class Mail Parcel option was not available after September 1, 2017 on installations running Magento 2.x. + * You can now successfully complete Paypal checkout with products that have custom options. [GitHub-5938](https://github.com/magento/magento2/issues/5938) + * Third-party payment gateways are now visible from the Admin. [GitHub-7891](https://github.com/magento/magento2/issues/7891) + * Magento no longer displays the **No [Payment method](https://glossary.magento.com/payment-method) available** message when a customer tries to ship items to a billing-restricted country. + * Magento no longer displays the **No [Payment method](https://glossary.magento.com/payment-method) available** message when a customer tries to ship items to a billing-restricted country. + * Magento now successfully completes checkout when a custom address attribute is added. Previously, an error occurred during checkout when the user added a required custom address attribute. + * Removed a duplicate method call to the `getLinkField` method in the `Magento\Catalog\Model\ResourceModel\Category` class. *Fixed by will-b in pull request [9057](https://github.com/magento/magento2/pull/9057){: target="_blank"}.* + * During order creation, you can now continue with a payment after clicking the **Back** button to the payment selection window. [GitHub-4580](https://github.com/magento/magento2/issues/4580) + * The expiration year validator now works as expected. [GitHub-8482](https://github.com/magento/magento2/issues/8482) * We've introduced the `Magento\Vault\Block\TokenRendererInterface::getToken` method. This method provides details about payment tokens to renderer components, such as public hash and available card or account details. Third-party developers can use this method to implement this functionality in their payment integrations. + * We’ve fixed an issue with the REST API that previously resulted in the PayPal gateway rejecting requests. [GitHub-10410](https://github.com/magento/magento2/issues/10410) + * Error messages associated with the `Authorize.net` payment method are now translated to fit the configured locale. [GitHub-5934](https://github.com/magento/magento2/issues/5934) + * We’ve increased the size of the `shipping_method` column in the `sales_order` and `quote_address` tables. [GitHub-6475](https://github.com/magento/magento2/issues/6475) #### Braintree + * You can now place orders from the Admin using the Braintree payment method. + * We've enhanced our PayPal and Braintree implementations so that merchants can now: * Save customer PayPal account information in the Braintree Vault when using Braintree as a service. This enhancement provides a secure method for charging my customers without prompting them to enter a payment information for multiple purchases or for purchases from multiple devices. We've also added support for Maestro and Discover BINs added to the credit card form both for Braintree and PayPal solutions. @@ -1108,91 +1437,117 @@ Thanks to our hardworking Magento Open Source community members for the followin * Configure dynamic descriptors (Company Name, Phone and URL) for Braintree. This enhancement supports customers easily identifying a source of transactions in their bank statements. (This will potential simplify the resolution of disputed transactions by supporting the display of the Kount status for Braintree in the Admin interface.) + * Kount and 3D Secure now work as expected for Braintree Vault. + * Magento now updates you as expected on order comments and order history after you initiate a refund using Braintree. Previously, when you clicked the **Refund** button (to initiate a refund), Magento did not redirect you to order comments and history information. + * You can now use Braintree as a payment method when applying reward points or store credit to an order. + * The Braintree payment method now works as expected with Vault table prefixing. + * Magento no longer encounters an error when using the Braintree Vault payment GET order API call. [GitHub-6215](https://github.com/magento/magento2/issues/6215) + * You can now use JCB and Diners Club credit cards with the Authorize.net payment method. + * Fixed issue with credit card capture information failing to remain associated with its first authorization. [GitHub-6716](https://github.com/magento/magento2/issues/6716) + * You can now successfully place orders with Braintree when using an alternative [merchant account](https://glossary.magento.com/merchant-account) ID. (The merchant account does not need to match the 3D Secure authorization merchant account.) [GitHub-5910](https://github.com/magento/magento2/issues/5910) -* Braintree no longer encounters an error during checkout when you apply a 100% discount coupon to a product and enable free shipping. Previously, Magento displayed a spinning loader widget, and your screen froze. The Developer console displayed this error: -`Uncaught Error: [paypal-container] is not a valid DOM Element`. + +* Braintree no longer encounters an error during checkout when you apply a 100% discount coupon to a product and enable free shipping. Previously, Magento displayed a spinning loader widget, and your screen froze. The Developer console displayed this error: `Uncaught Error: [paypal-container] is not a valid DOM Element`. + * The Braintree payment method now works as expected with Vault table prefixing. + * Merchants can now accept payment on a Suspected Fraud order without Magento altering the amount in Total Paid. Previously, when a merchant accepted payment for an order with a status of Suspected Fraud, Magento doubled the payment amount. -* Braintree no longer encounters an error during checkout when you apply a 100% discount coupon to a product and enable free shipping. Previously, Magento displayed a spinning loader widget, and your screen froze. The Developer console displayed this error: -`Uncaught Error: [paypal-container] is not a valid DOM Element`. + +* Braintree no longer encounters an error during checkout when you apply a 100% discount coupon to a product and enable free shipping. Previously, Magento displayed a spinning loader widget, and your screen froze. The Developer console displayed this error: `Uncaught Error: [paypal-container] is not a valid DOM Element`. + * The Braintree PayPal locale now has its own setting. [GitHub-9639](https://github.com/magento/magento2/issues/9639) + * You can now modify the product quantities of a previous order and re-order it using the saved credit card information from the first order. #### PayPal + * We've improved and streamlined the [Magento Admin](https://glossary.magento.com/magento-admin) PayPal configuration interface. + * PayPal Payflow Pro now uses the currency you've specified in your store settings. Previously, Magento converted the total price into U.S. dollars, no matter which currency was specified in the store settings. + * We've fixed an issue with using PayPal Express Checkout to order products with custom options. Previously, although an Admin user could create and configure “File type” custom options, customers could not upload and store files within the order [quote](https://glossary.magento.com/quote). [GitHub-5434](https://github.com/magento/magento2/issues/5434) + * Fixed issue related to incorrect stock quantity calculation for bundle and configurable products during place order flow with PayPal Express Checkout. + * Third-party payment gateways are now visible from the Admin. [GitHub-7891](https://github.com/magento/magento2/issues/7891) + * Fixed issue with credit card capture information failing to remain associated with its first authorization. [GitHub-6716](https://github.com/magento/magento2/issues/6716) + * PayPal Express payments no longer fail when there is adequate product inventory to cover your order. Previously, you'd receive this error message: `We can't place the order`. [GitHub-6296](https://github.com/magento/magento2/issues/6296) + * Paypal errors no longer occur when Fixed Product Tax (FPT) is enabled. Previously, when a product had a FPT, Paypal Express reported an error when you tried to place the order. + * PayPal Payflow Pro now uses the currency you've specified in your store settings. Previously, Magento converted the total price into U.S. dollars, no matter which currency was specified in the store settings. + * When refunding an order from PayPal, Magento now creates a credit memo with the correct status. + * The exported sheet now generates or renders data for columns that indicate associations for configurable products. + * We’ve resolved a loader issue with Payflow Pro. The loader image is now invisible after redirecting to the payment page/success page or error page. [GitHub-7159](https://github.com/magento/magento2/issues/7159), [GitHub-9296](https://github.com/magento/magento2/issues/9296) + * PayPal Express checkout no longer discards address line 2 for billing and shipping addresses. [GitHub-8313](https://github.com/magento/magento2/issues/8313) + * The checkout page no longer freezes when you try to use PayPal to pay for a purchase that contains a downloadable product. Previously, a `PayPal.js` error occurred. [GitHub-7000](https://github.com/magento/magento2/issues/7000) ### Performance @@ -1200,244 +1555,315 @@ Thanks to our hardworking Magento Open Source community members for the followin This release includes substantial improvements to Magento caching, image processing, and re-indexing, among other enhancements. + * We've improved the speed of static asset deployment and now support a variety of asset deployment strategies that can be used to optimize speed and size of assets deployed. Indexers can now be run with 256M of PHP RAM and default MySQL configuration settings. Developers can further tune memory usage to improve indexer performance (in some cases up to 100% improvement). Please see [Magento Optimization Guide]({{ page.baseurl }}/config-guide/prod/prod_perf-optimize.html) for further details. + * We've improved [storefront](https://glossary.magento.com/storefront) performance when creating 2500 or more product variants. + * Opening many products from the Admin interface is now faster. + * Creating many (2500 - 5000) product variants, both simple and complex [product types](https://glossary.magento.com/product-types) is more efficient. + * You can now quickly generate or preview multiple variations of a [configurable product](https://glossary.magento.com/configurable-product). (Saving these variations to the database can be time-consuming, if you have several thousand product options, and our efforts to improve performance continue.) Previously, Magento threw an Invalid Form key error is thrown while you tried to save a configurable product with variations. + * Magento no longer performs unnecessary file check operations (for example, `file_exists`, `is_file`), which improves the performance of the category and product pages. + * We've optimized compiler performance (that is, the [`setup:di:compile`]({{ page.baseurl }}/config-guide/cli/config-cli-subcommands-compiler.html) command). + * We’ve improved the performance of the Display Time for Category Edit page for catalogs with many products or categories. [GitHub-7469](https://github.com/magento/magento2/issues/7469) #### Image processing + * We've improved the process of resizing images on the [frontend](https://glossary.magento.com/frontend). + * The process of loading many configurable products with multiple images (for example, configurable products with three attributes and 250 options) is more efficient. [(GITHUB-6979)](https://github.com/magento/magento2/issues/6979){: target="_blank"} #### Caching + * Magento now caches image metadata, which avoids the time-consuming need to read images for [metadata](https://glossary.magento.com/metadata) loading. + * Magento now caches attribute options for the layered navigation feature. This reduces the number of queries to the database, and consequently improves performance. + * We’ve optimized and streamlined how we cache EAV attributes by removing unnecessary SQL queries. ### PHP + * PHPCS can now correctly parse the syntax of PHP 7.x return types. + * Cart Price rules are now applied as expected to [payment method](https://glossary.magento.com/payment-method) conditions. Previously, discounts set in Cart Price rules were not applied during [checkout](https://glossary.magento.com/checkout). ### Sample data + * Magento now handles the `catalog_product_entity_media_gallery_value.position` value the same whether you’ve installed or upgraded the product. Previously, these values differed depending upon whether you upgraded or freshly installed your Magento code. + * You can now successfully install Magento with sample data when **auto_increment_increment** is set to **3** in the `options` file. Previously, installation completed successfully, but Magento displayed this error: `Something went wrong while installing sample data. Please check var/log/system.log for details. You can retry installing the data now or just start using Magento.` ### SalesRule + * You can now select and add a category to a Cart Price rule. Previously, Magento displayed this error: "Uncaught ReferenceError: sales_rule_form is not defined", and did not add the selected category to the condition. [GitHub-5526](https://github.com/magento/magento2/issues/5526) + * A cart rule with a coupon code no longer overrides a cart rule without a coupon code when multiple [cart rules](https://glossary.magento.com/cart-rules) are applied. Previously, when you created two cart rules and applied them to a cart, the rule with a coupon was applied, but the second rule was not. [GitHub-6294](https://github.com/magento/magento2/issues/6294) + * The SalesRule table is the same whether you’ve freshly installed or updated Magento 2.2. + * Magento no longer discounts items that belong to an excluded category. Previously, you were unable to exclude products assigned to a specific category due to the cart price rule. + * The Cart Price rule now affects coupon life as expected. Previously, coupons did not persist longer than the current date if they did not have a designated end-date. + * Customers can no longer apply a coupon code twice. Previously, the "Uses per Coupon" limit did not work for auto-generated coupons. + * Magento now implements free shipping if there is a Cart Price Rule match. [GitHub-6584](https://github.com/magento/magento2/issues/6584) + * SalesRule now applies to auto-generated coupon codes as expected. + * You can now create a cart price rule without any date range restrictions. Previously, if you left the **From** and **To** dates empty, Magento filled them in with the current date. [GitHub-6762](https://github.com/magento/magento2/issues/6762), [GitHub-6122](https://github.com/magento/magento2/issues/6122) + * When you change the currency associated with store, Magento also adjusts the currency in all product listings. [GitHub-6746](https://github.com/magento/magento2/issues/6746) + * Non-administrative users with access rights to Products, Marketing, Promotions, and Cart Price rules can now search for categories in Cart Price rules. GitHub-6168](https://github.com/magento/magento2/issues/6168) ### Scope + * Changing a product price under the website scope now updates the product price across all stores. Previously, any price you set on the [store view](https://glossary.magento.com/store-view) level overrode the price set in website scope. [GitHub-5133](https://github.com/magento/magento2/issues/5133) + * The list of allowed countries is now configured as part of website scope, not store view scope. [GitHub-2946](https://github.com/magento/magento2/issues/2946) + * A restricted user can now change storeview- or website- level attributes that are defined within his scope. + * You can now select the scope for an action that you are running from the Catalog page's product table. + * The price you set on the website scope no longer overrides any local settings you set on configurable products at the store view level. + * The Product page scope selector now displays all related websites associated with a restricted user. ### Search + * Out-of-stock items no longer erroneously appear in results of layered navigation if that product option is out-of-stock. + * Segmentation faults no longer occur when doing a `catalogsearch_fulltext` re-index, and indexing succeeds. Previously, in a large database (more than 70,000 products), the `catalogsearch_fulltext` (MySQL) re-index failed with a `Segmentation fault` message. [GitHub-7963](https://github.com/magento/magento2/issues/7963) + * Magento now factors in the Weight attribute as expected when you use advanced search on grouped products. + * Attribute weighting now works correctly for the MySQL adapter. [GitHub-9020](https://github.com/magento/magento2/issues/9020) ### Shipping + * UPS now generates shipping rates for Puerto Rico postal codes. + * Magento now displays tracking information when selected for the second shipping label created for the DHL shipping method. Previously, when you tried to display a completed DHL shipping label, Magento displayed an exception. + * Refreshing your browser page while on the Review and Payments page of the checkout process no longer clears information from form fields. Previously, Magento cleared information from the **Ship to** field if you refreshed your browser page during this process. + * You can now reload a page during [checkout](https://glossary.magento.com/checkout) without unintentionally changing shipping information. + * You can now save the settings you enter when creating a shipping label on an existing shipment. Previously, clicking the **Save** button resulted in an error, and the shipping label was not saved. + * Added missing translation to label `argument xml`. *Fix submitted by community member Mr Khoa in pull request [9095](https://github.com/magento/magento2/pull/9095){: target="_blank"}.* + * Magento no longer throws a fatal error when you create a new shipment for a placed order. + * The State/Province field now changes to an input field as expected after you select United Kingdom when filling out the shipping address during checkout + * The Free Shipping rule now works as expected with table rate shipping. [GitHub-6346](https://github.com/magento/magento2/issues/6346) + * Magento now passes the correct object to the `\Magento\Shipping\Model\Shipping::collectRatesByAddress` method. [GitHub-7309](https://github.com/magento/magento2/issues/7309) + * Magento now displays the checkout page or cart as expected when you try to edit a virtual item from the multi shipping page. Previously, Magento displayed a 404 error page instead of redirecting to the checkout page or shopping cart. [GitHub-7257](https://github.com/magento/magento2/issues/7257) + * We've resolved an issue where Magento did not display applicable flat-rate USPS box methods during checkout. [GitHub-6798](https://github.com/magento/magento2/issues/6798) ### Sitemap + * Sitemap image URLs now match the URLs on product pages. *Fix submitted by community member Petar Sambolek in pull request [9082](https://github.com/magento/magento2/pull/9082){: target="_blank"}.* + * The sitemap is no longer generated in the wrong folder when `vhost` is connected to `/pub`. *Fix submitted by community member Joseph Maxwell in pull request [9094](https://github.com/magento/magento2/pull/9094){: target="_blank"}.* + * Magento now displays UPS rates on the initial load of the checkout page. Previously, although shipping rates showed up properly at the cart level, the payment page did not load the correct shipping options. [GitHub-6564](https://github.com/magento/magento2/issues/6564) ### Static file processing + * We've corrected a problem with `_requirejs` asset retrieval via `static.php` in [static content](https://glossary.magento.com/static-content) versioning. + * Versioning of [static files](https://glossary.magento.com/static-files) (including CSS, JS, font, and image files) is now enabled by default. + * We've improved the speed of static asset deployment. See [Deploy static view files]({{ page.baseurl }}/config-guide/cli/config-cli-subcommands-static-view.html){: target="_blank"} for more information about available options. + * The `setup:static-content:deploy` command now provides flags that you can use to exclude or include individual themes, areas, and locales. For more information, see [GitHub-4294](https://github.com/magento/magento2/issues/4294). ### Swatches + * Magento no longer creates redundant objects when initializing a configurable product on the Category page. + * You can now disable swatches for both the [Catalog](https://glossary.magento.com/catalog) page and search results (quick or advanced). To disable swatches from these requests, disable **Stores > Settings > Configuration > Catalog > Storefront > Show Swatches in Product List**. + * We've optimized the logic that Magento uses to validate swatch attributes. + * Magento now caches swatch data in the block cache, which improves the responsiveness of the configurable product pages. + * Magento now correctly matches images to products. Previously, after you selected a configurable product, Magento displayed the images for another product. + * Magento no longer displays a notice error when you create a text swatch attribute while the **update product preview image** setting is set to **Yes**. *Fix submitted by community member Pascal Brouwers in pull request [6707](https://github.com/magento/magento2/pull/6707){: target="_blank"}.* ### TargetRule + * Magento now displays Up-sells on the Product page. + * We’ve fixed an SQL error that previously caused a logical error during the creation of a TargetRule. (This issue affected the `modifyConditionByCategoryIdsAttribute` function.) ### Tax + * Magento now correctly calculates tax and order totals when a discount is used for prices that include tax and catalog prices excluding tax. Please note this is not a valid tax configuration and can introduce rounding errors. + * We’ve improved the performance of the Tax Rules form in installations containing many tax rates. + * You can now create a tax rule when running Magento in Mozilla Firefox and Internet Explorer. Previously, you could not select a tax rate, and Magento displayed an error. + * The `tax_region_id` value is no longer hard-coded in the `\Magento\Tax\Setup\InstallData` file. ### Testing + * We've fixed a fatal issue that occurred if you executed the CatalogImportExport test before running a subsequent test. Previously, you'd receive this error: ```Failed asserting that false is true```. + * We've fixed a fatal issue that occurred if you ran Travis builds on `imagettfbbox 2.1.2`. Previously, you'd receive this error: ```terminal @@ -1445,108 +1871,139 @@ This release includes substantial improvements to Magento caching, image process ``` + * `StdoTest` is now marked as skipped. *Fix submitted by community member David Manners in pull request [8487](https://github.com/magento/magento2/pull/8487){: target="_blank"}.* ### Tier pricing + * Magento now correctly calculates the tier price percentage when displayed prices include tax. [GitHub-8833](https://github.com/magento/magento2/issues/8833) + * Magento no longer resets the tier price during [quote](https://glossary.magento.com/quote) recalculation. Previously, when you triggered an automatic quote recalculation (by changing the shipping address, for example), the tier price was lost. (This issue occurred only if the product record in the database had values for `row_id` and `entity_id` that didn't match.) + * Magento no longer adds a thousands separator ( , ) to representations of quantities that exceed 1000. [GitHub-5745](https://github.com/magento/magento2/issues/5745) + * Tier pricing now works correctly with full page cache. [GitHub-5364](https://github.com/magento/magento2/issues/5364) ### Translation and locales + * String localizations now work as expected when phrases include text wrapped with single quotation marks. + * Translations now work for layered navigation attribute options. *Fix submitted by community member Pieter Hoste in pull request [9873](https://github.com/magento/magento2/pull/9873){: target="_blank"}.* ### URL rewrites + * You can now successfully create a product and assign it to a store without encountering the following error: `Unique constraint violation found`. [GitHub-6671](https://github.com/magento/magento2/issues/6671) + * The `catalog_url_rewrite_product_category` table is the same whether you’ve freshly installed or updated Magento 2.2. + * The **Use default URL Key** setting now works on the store-view level. + * We've fixed several issues with how Magento processes URLs with trailing slashes. *Fix submitted by community member Ihor Sviziev in pull request [10043](https://github.com/magento/magento2/pull/10043){: target="_blank"}.* + * Admin users can no longer create an empty URL key for a category. Previously, Magento let Admin users create an empty URL key, which lead to category-related errors. + * URL rewrites are now correctly generated for multiple store views during product import. [GitHub-8396](https://github.com/magento/magento2/issues/8396) + * Magento now rewrites URLs as expected when you save a product while running Magento in single-store mode. [GitHub-5929](https://github.com/magento/magento2/issues/5929) + * Magento now rewrites URLs as expected when you save a CMS page while running Magento in single-store mode. [GitHub-5923](https://github.com/magento/magento2/issues/5923) ### Varnish + * We've changed the behavior of the Varnish X-header. Only the parent (meta) SKU is now included in the list -- not the SKUs of all child products. [GitHub-6401](https://github.com/magento/magento2/issues/6401) + * Varnish no longer caches Cookie Restriction Mode Overlay. *Fix submitted by community member *Fix submitted by community member Bernhard in pull request 9711.* * Varnish now supports `grace` and `saint` mode to ensure that customers always see cached pages. + * Viewing the page with HTTPS instead of HTTP no longer causes the Category menu to disappear in installations using Varnish cache. [GitHub-4540](https://github.com/magento/magento2/issues/4540) ### Web API + * You can now use REST to add video to a product description. [GitHub-7153](https://github.com/magento/magento2/issues/7153) + * The `PUT /V1/products/:sku/media/:entryId` correctly updates a product's media gallery and image role. + * A null value may now be specified to unset the `special_price` attribute. + * The Swagger documentation erroneously indicated that search queries can return detailed information about multiple objects. The description of these APIs now state which API to use to return detailed information about a single object. + * You can now use REST to successfully update customer information without unintentionally deleting default billing and shipping address information. + * You can now use a REST request to retrieve a shopping cart that contained a product with custom options. Previously, you could not use a REST request to retrieve a shopping cart that contained a product with custom options. + * The `PUT /V1/products/:sku/media/:entryId` correctly updates a product's media gallery and image role. + * Searching for products via REST API using a store code in the URL returns products from all stores. [GitHub-8121](https://github.com/magento/magento2/issues/8121) + * You can now use the REST API to create a configurable product with a linked child product. [(GITHUB-5243)](https://github.com/magento/magento2/issues/5243){: target="_blank"} + * The REST API now successfully handles attribute options that start with a number. [GitHub-5715](https://github.com/magento/magento2/issues/5715) + * You can now save a billing address using the REST ’useForShipping' parameter. Previously use of the parameter resulted in a Rest API V1 error. [GitHub-6557](https://github.com/magento/magento2/issues/6557), [GitHub-5180](https://github.com/magento/magento2/issues/5180) + * We’ve resolved issues updating `default_frontend_label` using REST. [GitHub-5963](https://github.com/magento/magento2/issues/5963) + * Magento now sends REST multiselect attribute values in compatible formats. Previously, putting an unchanged GET returned errors on the multiselect attribute, and the only way to clear a multi-select field of all selections was to delete the product and re-create it. [GitHub-6120](https://github.com/magento/magento2/issues/6120) ## Community contributions diff --git a/guides/v2.2/release-notes/ReleaseNotes2.2.0EE.md b/guides/v2.2/release-notes/ReleaseNotes2.2.0EE.md index a1ce291062e..381a638701e 100644 --- a/guides/v2.2/release-notes/ReleaseNotes2.2.0EE.md +++ b/guides/v2.2/release-notes/ReleaseNotes2.2.0EE.md @@ -97,119 +97,157 @@ This release contains hundreds of fixes and enhancements. ### Installation, upgrade, deployment + * You can now run `magento setup:upgrade --keep-generated` in production mode. Previously, Magento would throw an error when you ran `setup:upgrade` after compiling dependency injection. (This significantly curtailed your ability to deploy continuous integration.) [GitHub-4795](https://github.com/magento/magento2/issues/4795) + * You can now upgrade your Magento installation when using multiple master databases for checkout, order management, and product data. + * We fixed an issue that blocked using the web installer to successfully set up Magento. Previously, if you tried to install Magento with the web installer, Magento would indicate that the readiness check failed, and installation would not complete. + * You can now deploy build processes on a different staging machine than the one you're running your production environment on. + * Magento 2.0.x and 2.1.x now support the use of table prefixing during installation. Previously, when you used table prefixing, your Magento installation failed with this error: "Duplicate key on write or update". [GitHub-5688](https://github.com/magento/magento2/issues/5688) + * Third-party command line tools no longer fail when you run `setup:di:compile`. + * Magento now correctly applies [website](https://glossary.magento.com/website) configuration parameters to the corresponding [store view](https://glossary.magento.com/store-view). [GitHub-7943](https://github.com/magento/magento2/issues/7943) + * Fixed HTML inline style used when sending emails when implementing the upgraded `emorgifier` library. [GitHub-8241](https://github.com/magento/magento2/issues/8241) + * We’ve changed how Magento displays status updates during a product upgrade. Previously, potentially vulnerable information such as full paths and module names were displayed in the product GUI, potentially exposing this information to a malicious user. Magento now restricts this potentially vulnerable information to logs that are available to administrators only. + * The `cron:install` command now works as expected in Magento 2.2.0. Previously, the configuration for `crontab` commands contained double quotes that were not escaped, which caused invalid commands to be written to the `crontab` file. [GitHub-10040](https://github.com/magento/magento2/issues/10040) + * Magento now moves the `sequence_*` table to the correct database after implementing a split database. + * Magento no longer throws an exception when the configuration checksum is absent on a new installation. + * It is now possible to configure Redis settings for session storage, default cache, and full page cache from the command line. + * Custom themes now inherit parent [XML](https://glossary.magento.com/xml) configuration information as expected. + * We've removed the sample password from the Setup Wizard + * You can now enable JavaScript minification without error. Previously, after enabling JS minification, the Magento Admin displayed 404 errors when accessing JavaScript elements. + * Magento no longer displays console errors after CSS merging and minification is enabled. Previously, when CSS merging and minification was enabled, the storefront was not displayed as expected, and the `styles-l.min.css` and `print.min.css` files could not be found. + * You can now successfully use the `config:set` command to set allowed or default currencies. + * Nginx now redirects to the setup page when using port 81. + * We've added the `dev:template-hints:enable` and `dev:template-hints:disable` commands to manage template hints. *Fix submitted by community member Miguel Balparda in pull request [9778](https://github.com/magento/magento2/pull/9778){: target="_blank"}.* + * We've added the `dev:query-log:enable` and `dev:query-log:disable` to manage database query logging. *Fix submitted by community member Federico Rivollier in pull request [9264](https://github.com/magento/magento2/pull/9264){: target="_blank"}.* + * We've added the `varnish:vcl:generate` command to create the Varnish VCL file. *Fix submitted by community member Piotr Kwiecinski in pull request [9286](https://github.com/magento/magento2/pull/9286){: target="_blank"}.* + * Magento now adds a new record to the quote table and adds the current date and time to the `created_at` field. Previously, this field was not updated. + * The installation script no longer creates files in the root directory for missing modules when you install a community-created language pack. Translation packs created by the community often include translations for Magento Commerce modules. When you install these translation packs on an Open Source installation, the Commerce modules are missing. Previously, the installation script creates a file in the root directory for these Commerce modules instead of skipping them. [GitHub-6260](https://github.com/magento/magento2/issues/6260) + * We've fixed issues with upgrading installations with split databases. + * Static content deployment (SCD) now works when multiple languages are specified. Previously, Magento displayed an error if you tried to deploy static content in more than one language (for example, `bin/magento setup:static-content:deploy en_CA fr_CA de_DE`). + * The import URL directive now contains base URL and locale placeholders instead of the real URL. + * Magento now works as expected on an Apache `php-fpm` environment. + * The `DOCUMENT_ROOT` directory is now writable. Previously, installation failed because this directory was not writable. + * When upgrading Magento from 2.1.x to 2.2, the `quote_address.free_shipping` column is the same whether you upgraded from a previous installation of Magento or performed a fresh installation. Previously, different upgrade/installation options affected the contents of this column. + * Command-line users now have read and write permissions to the `var/generation` directory. [GitHub-7933](https://github.com/magento/magento2/issues/7933) + * The Magento command-line interface now sets the correct exit codes when an upgrade task fails. [GitHub-7576](https://github.com/magento/magento2/issues/7576) + * You can now disable the Review module without incurring an error in the Product Edit page. Previously, if you tried to edit a product after disabling the review module, Magento displayed this error: "Something went wrong". [GitHub-6704](https://github.com/magento/magento2/issues/6704) + * You can now use Component Manager to enable a previously disabled module. Previously, when you ran `bin/magento module:disable Magento_AnyModule`, then tried to re-enable that module, Magento fails to enable it and any previously enabled cache types, and module installation fails. [GitHub-6078](https://github.com/magento/magento2/issues/6078) + * We’ve fixed problems with the uninstall process. Previously, when Magento tries to uninstall a module using composer, it simultaneously tried to update the `symfony/process` version. However, because the `module:uninstall`  command uses  `symfony/process`, the command stopped running. [GitHub-5797](https://github.com/magento/magento2/issues/5797) + * We’ve fixed problems with the uninstall process. Previously, when Magento tries to uninstall a module using composer, it simultaneously tried to update the `symfony/process` version. However, because the `module:uninstall`  command uses  `symfony/process`, the command stopped running. [GitHub-5797](https://github.com/magento/magento2/issues/5797) ### AMQP + * The `magento queue:consumers:start` command now works correctly when you provide the `max-messages` argument. + * Magento no longer indicates errors when you install without AMQP. Previously, Magento displayed the following error: ```text @@ -217,484 +255,636 @@ This release contains hundreds of fixes and enhancements. ``` + * You can now override queue publishers configuration through the `env.php` file. + * Magento now re-processes queue messages if the consumer process is terminated. + * Magento no longer inserts HTTPSS:// for HTTPS in a store address when you install Magento using an HTTPS address over SSL. [GitHub-6262](https://github.com/magento/magento2/issues/6262) ### Cart and checkout + * Magento now implements the minicart maximum display recently added item setting to your [shopping cart](https://glossary.magento.com/shopping-cart). Previously, Magento displayed all the items in the shopping cart, even when the number of items exceeded this limit. [GitHub-4750](https://github.com/magento/magento2/issues/4750) + * You can now reload a page during [checkout](https://glossary.magento.com/checkout) without unintentionally changing shipping information. + * Custom address attributes now appear in the Checkout summary. + * Lengthy [Order Status](https://glossary.magento.com/order-status) tables are now paginated as expected. + * Magento now displays the product add validation message ("Product was added to the cart") only after you have successfully added a product to your cart. + * We've resolved an issue that prevented you from adding more than one product to a [shopping cart](https://glossary.magento.com/shopping-cart) from a wishlist. [GitHub-5282](https://github.com/magento/magento2/issues/5282) + * The number of items in the minicart is now updated correctly when you run Magento in mixed HTTP/HTTPS mode. [GitHub-6487](https://github.com/magento/magento2/issues/6487) + * The minicart now performs as expected in deployments that span multiple websites. Previously, in a Magento installation that had multiple websites, products that you added to one [website](https://glossary.magento.com/website) appeared in the other websites' minicarts. + * A cart rule with a coupon code no longer overrides a cart rule without a coupon code when multiple [cart rules](https://glossary.magento.com/cart-rules) are applied. Previously, when you created two cart rules and applied them to a cart, the rule with a coupon was applied, but the second rule was not. [GitHub-6294](https://github.com/magento/magento2/issues/6294) + * Refreshing your browser page while on the Review and Payments page of the checkout process no longer clears information from form fields. Previously, Magento cleared information from the **Ship to** field if you refreshed your browser page during this process. + * Magento no longer lets you add a product variation to your shopping cart if the item is out of stock. Previously, Magento permitted you to select an out-of-stock item and when you added it to your cart, displayed the "Product is out of stock" message. + * We've corrected a problem with Magento throwing an HTTP ERROR 500 intermittently during checkout. + * We fixed a [JavaScript](https://glossary.magento.com/javascript) error that occurred on the Checkout page after you changed the country in the **Estimate Shipping and Tax** field. + * Magento now successfully estimates shipping costs. Previously, when you tried to estimate shipping costs, the load indicator would spin indefinitely, and Magento displayed this exception,```Object doesn't support this action```. [GitHub-5358](https://github.com/magento/magento2/issues/5358), [GitHub-7051](https://github.com/magento/magento2/issues/7051) + * Magento now displays the **State/Province** field on the Add New Address page. [GitHub-5279](https://github.com/magento/magento2/issues/5279) + * Credit card information now persists as expected after a user enters a promotion code during checkout. Previously, After an user enters credit card information, then discount code and then click **Place Order**. The credit card information fields are emptied and user has to enter the credit card information again to proceed with the order transaction. + * You can complete your order after entering a new shipping address during checkout. Previously, Magento would not let you place an order if you entered a new shipping address during checkout. -* Magento no longer throws an exception when a customer updates their shopping cart after you've enabled the Minimum Order setting. *Fix submitted by community member Eric Risler - in pull request [8474](https://github.com/magento/magento2/pull/8474){: target="_blank"}.* + +* Magento no longer throws an exception when a customer updates their shopping cart after you've enabled the Minimum Order setting. *Fix submitted by community member Eric Risler in pull request [8474](https://github.com/magento/magento2/pull/8474){: target="_blank"}.* + * You can now translate the FPT label on the checkout page. *Fix submitted by community member Oleksii Korshenko in pull request [9204](https://github.com/magento/magento2/pull/9204){: target="_blank"}.* + * Magento no longer truncates bill-to names and shio-to names to 20 characters in the Admin. *Fix submitted by community member Isolde in pull request [9654](https://github.com/magento/magento2/pull/9654){: target="_blank"}.* + * You can now delete the last item in your cart when the Minimum Order setting is enabled. *Fix submitted by community member storbahn in pull request [9714](https://github.com/magento/magento2/pull/9714){: target="_blank"}.* + * You can now create unique checkbox IDs for the Terms and Conditions part of the checkout process. *Fix submitted by community member Bernhard in pull request [9717](https://github.com/magento/magento2/pull/9717){: target="_blank"}.* + * Magento now correctly displays the coupon label in the shopping cart during checkout. *Fix submitted by community member Sylvain Rayé in pull request [9721](https://github.com/magento/magento2/pull/9721){: target="_blank"}.* + * Magento now pre-fills prefixes and suffixes in the quote shipping address *Fix submitted by community member Anton Evers in pull request [9925](https://github.com/magento/magento2/pull/9925){: target="_blank"}.* + * The country drop-down box now correctly shows the countries for which the current store and customer account are configured. *Fix submitted by community member Marcel in pull request [9429](https://github.com/magento/magento2/pull/9429){: target="_blank"}.* + * The shopping cart now handles products with custom options. [GitHub-5612](https://github.com/magento/magento2/issues/5612) + * Magento now requires completion of the State field during the check out process if this field has been configured as required. + * Checkout now loads as expected in Safari private mode. [GitHub-7942](https://github.com/magento/magento2/issues/7942), [GitHub-7329](https://github.com/magento/magento2/issues/7329), [GitHub-8358](https://github.com/magento/magento2/issues/8358) + * Minicart now shows all products you’ve added, whether you added them while signed-in or not. Previously, the minicart contained only products that you added while signed in. [GitHub-7500](https://github.com/magento/magento2/issues/7500) + * Magento now displays the ”Thank you for your purchase!" on the checkout success page. + * Magento now displays the correct error message when you enter an invalid discount code when making a payment. [GitHub-7230](https://github.com/magento/magento2/issues/7230) + * You can now directly add a configurable product to your shopping cart from category page. [GitHub-2574](https://github.com/magento/magento2/issues/2574), [GitHub-5850](https://github.com/magento/magento2/issues/5850), [GitHub-5882](https://github.com/magento/magento2/issues/5882), [GitHub-6572](https://github.com/magento/magento2/issues/6572), [GitHub-5558](https://github.com/magento/magento2/issues/5558), [GitHub-4184](https://github.com/magento/magento2/issues/4184) + * Magento now displays out-of-stock products in the shopping cart. Previously, if a product’s status changed between the time you added it to the cart and you proceeded to check out, Magento removed the product from your cart. [GitHub-6583](https://github.com/magento/magento2/issues/6583) + * When you select `New Address` while reviewing order information during check out, Magento now profiles the username and country fields, but leaves the address fields empty. Previously, Magento did not leave the address fields empty, and the checkout process failed. [GitHub-6869](https://github.com/magento/magento2/issues/6869) + * Checkout agreement validation now works as expected after you change payment method. [GitHub-6224](https://github.com/magento/magento2/issues/6224) + * The shopping cart now displays a shipping rate that reflects tax settings. Previously, the prices displayed in your shopping cart were not adjusted to include these settings. [GitHub-6166](https://github.com/magento/magento2/issues/6166) + * The shopping cart now displays a shipping rate that reflects tax settings. Previously, the prices displayed in your shopping cart were not adjusted to include these settings. [GitHub-6166](https://github.com/magento/magento2/issues/6166) ### Catalog + * Magento no longer locks the `category_product_entity` table. Unlocking this table reduces the potential of lock-related timeouts that can occur when indexing and checkout operations run in parallel. Previously, Magento locked the `category_product_entity` table. + * The [storefront](https://glossary.magento.com/storefront) now displays images that Magento resizes during product save operations, rather than resizing the product on the storefront. Previously, the image path contained `store_id`, and during save operations, Magento resized images for images the default store only. + * The `\Magento\CatalogInventory\Model\Stock\Status\getStockId()` method now returns the correct values. + * The [storefront](https://glossary.magento.com/storefront) gallery now displays all the images associated with a [configurable product](https://glossary.magento.com/configurable-product). Previously, when you clicked on the swatches associated with a configurable product, the gallery displayed only one of several possible images. [GitHub-6195](https://github.com/magento/magento2/issues/6195), [GitHub-4101](https://github.com/magento/magento2/issues/4101) + * Magento now displays the **This is a required field** message immediately adjacent to the product options as needed during [checkout](https://glossary.magento.com/checkout). Previously, Magento displayed this message at the bottom of the checkout form. + * The category page now shows the current price after Magento runs a scheduled update. Previously, the category page would not update the price after running a scheduled update. [GitHub-4945](https://github.com/magento/magento2/issues/4945) + * You can now sort and filter on the New Review page. [GitHub-5391](https://github.com/magento/magento2/issues/5391) + * Magento now displays server-side Ajax error messages. + * Magento now validates the uniqueness of product attribute values as you create or edit them. Previously, you could add identically named values to an attribute. [GitHub-4881](https://github.com/magento/magento2/issues/4881) + * Magento now displays the price of out-of-stock products on the product page. + * If you remove an item from the Compare Items list that is displayed on any [Category](https://glossary.magento.com/category) page, Magento no longer redirects you to the Compare Products page. + * Subcategories no longer show up in the menu when the parent category is disabled or hidden from the menu. [GitHub-10664](https://github.com/magento/magento2/issues/10664) + * We've corrected a problem with Magento throwing an HTTP ERROR 500 intermittently during checkout. + * The product attribute `category_ids` can have only **Global** scope. Previously, you could change the scope value of `category_ids` to **Store**. + * A price change to a custom option affects only that option. Previously, changing the price of a custom option also affected the price of related products. [GitHub-4588](https://github.com/magento/magento2/issues/4588), [GitHub-5798](https://github.com/magento/magento2/issues/5798), [GitHub-6041](https://github.com/magento/magento2/issues/6041), [GitHub-6097](https://github.com/magento/magento2/issues/6097) + * The prices you assign to custom options no longer change unexpectedly after you save them. [GitHub-6116](https://github.com/magento/magento2/issues/6116) + * You can now create a blank attribute option using the drop-down input option on products that do not require an attribute. [GitHub-3545](https://github.com/magento/magento2/issues/3545), [GitHub-5485](https://github.com/magento/magento2/issues/5485), [GitHub-4910](https://github.com/magento/magento2/issues/4910) + * Magento no longer encounters an error when it cannot find a product image file. [GitHub-5184](https://github.com/magento/magento2/issues/5184), [GitHub-5497](https://github.com/magento/magento2/issues/5497), [GitHub-5871](https://github.com/magento/magento2/issues/5871) + * You can now successfully set an SKU mask to empty. Previously, when a product SKU mask was set to empty, Magento experienced problems loading the Product Add page. [GitHub-5618](https://github.com/magento/magento2/issues/5618) + * Magento now correctly displays custom options at the store-view level. [GitHub-2908](https://github.com/magento/magento2/issues/2908), [GitHub-5885](https://github.com/magento/magento2/issues/5885), [GitHub-5612](https://github.com/magento/magento2/issues/5612) + * Magento now provides swatch input for the Admin Scope, and the attribute fall back mechanism now reverts to the default option value if no values are specified for specific store view. [GitHub-5143](https://github.com/magento/magento2/issues/5143), [GitHub-5142](https://github.com/magento/magento2/issues/5142) + * You can now create a custom attribute for a category that successfully uploads a custom image. Previously, you could create the attribute, but could not save the image. + * Sorting configurable products by price now works as expected when a simple product has a special price. [GitHub-4778](https://github.com/magento/magento2/issues/4778) + * Magento no longer displays an error when you open a product with a Fixed Product Tax attribute enabled. + * We've improved the process of using the WebAPI interface to save a product stock item. Previously, this type of save action worked inconsistently. + * You can no longer change or fake a product price from the Magento [storefront](https://glossary.magento.com/storefront) and then complete an order with that faked price. + * You can now save a product with images multiple times. + * View permissions to high-level product categories now work as expected. Previously, Magento displayed only the product categories that users who belonged to the NOT_LOGGED_IN customer group were permitted to view, no matter which user logged in. Additionally, a user restricted to browse a category could still see the category in the top-level navigation menu if the page were previously cached in FPC. + * You can now successfully add a product to the compare list. Previously, when you tried to add a product to a compare list, Magento displayed an error. + * You can now remove custom options from simple products. Previously, when you tried to remove a custom option from a product, Magento did not remove the options, and displayed an error message. + * You can now successfully set the **Enable Product** attribute to **no**. + * Magento no longer permits a shopper to place a re-order once you've disabled one of items in the order. + * Fixed an issue that occurred in the Catalog Gallery on mobile displays when the `allowfullscreen` setting is enabled. *Fix submitted by community member Dennis van Schaik in pull request [8434](https://github.com/magento/magento2/pull/8434){: target="_blank"}.* + * Magento now successfully loads re-ordered related products when Edge-Mode is activated. *Fix submitted by community member [@kirashet666](https://github.com/kirashet666){: target="_blank"} in pull request [8467](https://github.com/magento/magento2/pull/8467){: target="_blank"}.* + * Magento now displays cross-sells as expected when you use the `product/list/items.phtml` template. *Fix submitted by community member Koen V in pull request [8602](https://github.com/magento/magento2/pull/9662){: target="_blank"}.* + * Magento now displays the **Yes** or **No** attribute value on Product pages. *Fix submitted by community member Timo Klement in pull request [8623](https://github.com/magento/magento2/pull/8623){: target="_blank"}.* + * Setting the **show_out_of_stock** attribute to **No** now works as expected. *Fix submitted by community member Theis Corfixen in pull request [8736](https://github.com/magento/magento2/pull/8736){: target="_blank"}.* + * Magento now uses parent names (instead of SKU-based names) when creating configurable products. *Fix submitted by community member Pascal Brouwers in pull request [9681](https://github.com/magento/magento2/pull/9681){: target="_blank"}.* + * You can now create an `etc/view.xml` file containing an `images` tag with an attribute `module`. *Fix submitted by community member Marius Strajeru in pull request [10052](https://github.com/magento/magento2/pull/10052){: target="_blank"}.* + * Magento now displays the Category selection UI under Conditions when you select a rule for editing. *Fix submitted by community member duckchip in pull request [10094](https://github.com/magento/magento2/pull/10094){: target="_blank"}.* + * Magento now displays the correct image when you switch between a configurable product's options. Previously, Magento loaded product images from a different product. + * The Magento WYSIWYG editor now handles special characters such as percent sign (%). [GitHub-9452](https://github.com/magento/magento2/issues/9452) + * The `indexer:reindex catalog_category_product` process can now handle more than 500 products in a category. + * Magento now displays the price set at store view-level for a product that has different prices set on the global and store view level. + * Out-of-stock options for configurable products no longer show up in search and layered navigation results. + * You can render the `tax_class_id` attribute nonsearchable. Previously, Magento displayed a 503 error under these circumstances. + * If you’ve enabled persistent shopping cart, you can now check out even after your session has expired. + * Magento no longer throws an error when you try to save a product with imported custom options. + * Magento now displays the product price even when the product is out-of-stock. + * `productWebsiteLink` no longer deletes a product’s custom origins. + * Magento now successfully handles purchases of product with minimum quantities of less than one. [GitHub-5570](https://github.com/magento/magento2/issues/5570) + * Magento no longer pre-fills the **Set Product as New From Date** field when you set a special price for a product. [GitHub-4387](https://github.com/magento/magento2/issues/4387) + * When you edit a widget’s existing condition, Magento now loads the SKU grid with all available SKUs. [GitHub-6985](https://github.com/magento/magento2/issues/6985) + * Changing a product price under the website scope now updates the product price across all stores. Previously, any price you set on the store view level overrode the price set in website scope. [GitHub-5133](https://github.com/magento/magento2/issues/5133), [GitHub-7251](https://github.com/magento/magento2/issues/7251) + * Combine rule conditions now work as expected for product list widgets. [GitHub-7274](https://github.com/magento/magento2/issues/7274) + * Component Manager now handles custom Composer modules. Previously, when you tried to install a custom extension using **System > Tools > Web Setup > Component Manager**, Magento displayed the spinning widget indefinitely. [GitHub-6718](https://github.com/magento/magento2/issues/6718) + * We’ve fixed an issue with sorting products by tier price. Previously, if you enabled the Used for Sorting in Product Listing field in the Edit Tier Price Attribute page. and then selected sort by tier price on the storefront, Magento displayed an error message. [GitHub-6751](https://github.com/magento/magento2/issues/6751) + * Products returned by an API product paginated search now include `category_ids` as a member of `custom_attributes`. [GitHub-6127](https://github.com/magento/magento2/issues/6127) + * Product images in Magento installations with multiple store views are now assigned as expected to each store view. [GitHub-6259](https://github.com/magento/magento2/issues/6259) + * Products returned by an API product paginated search now include `category_ids` as a member of `custom_attributes`. [GitHub-6127](https://github.com/magento/magento2/issues/6127) + * Product images in Magento installations with multiple store views are now assigned as expected to each store view. [GitHub-6259](https://github.com/magento/magento2/issues/6259) + * Magento now successfully handles purchases of product with minimum quantities of less than one. [GitHub-5570](https://github.com/magento/magento2/issues/5570) + * Magento no longer adds an empty product option to each PUT request. Previously, Magento added an empty option even when the options array was empty. [GitHub-5963](https://github.com/magento/magento2/issues/5963) ### Configurable products + * You can now successfully disable the lowest price of a [configurable product](https://glossary.magento.com/configurable-product) and its associated simple products. Previously, Magento displayed a configurable product's lowest price even after you disabled that price. + * Magento no longer applies one simple product's special price to another [simple product](https://glossary.magento.com/simple-product) of the same configurable product. Previously, when you set a regular and special price for a child product, all products associated with the same configurable product displayed a regular and special price, even when these amounts were the same. [GitHub-4442](https://github.com/magento/magento2/issues/4442), [GitHub-5097](https://github.com/magento/magento2/issues/5097), [GitHub-6645](https://github.com/magento/magento2/issues/6645) + * You can now edit a product attribute for multiple configurable products. Previously, when you tried to bulk-edit an attribute on a collection of filtered, configurable products, Magento would complete the process without incorporating your edits, and then incorrectly tell you that the products had been edited. + * Magento no longer throws an [exception](https://glossary.magento.com/exception) when you add a configurable product by [SKU](https://glossary.magento.com/sku) if an associated simple product is out-of-stock. + * Magento now correctly displays a product as out-of-stock if its child products are disabled. Previously, the [category](https://glossary.magento.com/category) page failed to list the product at all, rather than listing it as out-of-stock. + * A price change to a custom option affects only that option. Previously, changing the price of a custom option also affected the price of related products. [GitHub-4588](https://github.com/magento/magento2/issues/4588), [GitHub-5798](https://github.com/magento/magento2/issues/5798), [GitHub-6041](https://github.com/magento/magento2/issues/6041), [GitHub-6097](https://github.com/magento/magento2/issues/6097) + * The check that Magento runs to confirm a configurable product's readiness for sale is now faster. (The `isSalable` method checks that a [configurable product](https://glossary.magento.com/configurable-product) can be sold (that is, is in a salable state)). + * Query optimizations have improved the speed of configurable product price calculation. + * Magento no longer calculates configurable product special prices on the category page. Previously, Magento calculated special prices on the category page, but did not display them. + * Magento now displays configurable products as expected after creation. + * Magento no longer displays a configurable product on the storefront when its child products are deleted and the **show out-of-stock** setting is set to **No**. + * Configurable products no longer show up on category page when all children are set to **enable product = No** and **display out-of-stock products = Off**. + * Magento no longer displays the **as low as** label for a disabled price on the Category page. + * The price you set on the website scope no longer overrides any local settings you set on configurable products at the store view level. + * You can now successfully disable the lowest price of a configurable product and its associated simple products. Previously, Magento displayed a configurable product's lowest price even after you disabled the price. [GitHub-4419](https://github.com/magento/magento2/issues/4419) + * Magento now correctly displays a product as out-of-stock if its child products are disabled. Previously, the [category](https://glossary.magento.com/category) page failed to list the product at all, rather than listing it as out-of-stock. + * Magento now displays the correct drop-down option labels for configurable products when using attributes with custom source. + * Magento now shows the correct price of a configurable product based in installations that run multiple websites. + * We’ve improved the performance of Magento installations that contain configurable products with many (1600+) options. + * We’ve resolved some issues with the display of configurable products on the Magento frontend after product creation. + * Magento now displays only the set price for a configurable product, not its set price and “as low as” price. Previously, Magento showed both prices if a minimum price was not configured. + * Magento no longer removes the simple products associated with a configurable product if you click on the **Save** button more than once while saving the configurable product. Previously, if you clicked on **Save** more than once during an attempt to save a configurable product, Magento removed the simple products that were assigned to it. + * Special prices now display correctly for future discounts [GitHub-8375](https://github.com/magento/magento2/issues/8375) + * Magento no longer applies one simple product's special price to another simple product of the same configurable product. Previously, when you set a regular and special price for a child product, all products associated with the same configurable product displayed a regular and special price, even when these amounts were the same. [GitHub-4442](https://github.com/magento/magento2/issues/4442), [GitHub-5097](https://github.com/magento/magento2/issues/5097), [GitHub-6645](https://github.com/magento/magento2/issues/6645) + * Magento now shows the correct product price for products that you add to the wish list from the category page. [GitHub-6866](https://github.com/magento/magento2/issues/6866) + * Videos now play as expected on simple products as they do for configurable products. Previously, simple product videos were displayed as thumbnail images only.[GitHub-6360](https://github.com/magento/magento2/issues/6360) + * Users no longer lose configurable product data when you change the interface locale to Chinese (China) or Arabic (Egypt). ### Email + * Magento now successfully loads the New Order Email templates. [GitHub-5101](https://github.com/magento/magento2/issues/5101) + * The **Send Welcome Email From** field now identifies the store that the customer is associated with. + * Magento no longer sends email when the **Disable email communication** setting is set to **yes**. Previously, Magento sent email even when this setting was enabled. [GitHub-5988](https://github.com/magento/magento2/issues/5988) ### Frameworks + * Static file generation is no longer affected by a race condition that affected merging CSS files. Previously, this race condition interfered with the proper generation of the product frontend. + * The ability to disable module output has been removed from Admin. If you disabled module output from Admin in a previous release, you must manually configure these settings. See [Disable module output]({{ page.baseurl }}/config-guide/config/disable-module-output.html) for details. + * Static tests run in a Windows environment no longer fail due to file path mismatches. *Fix submitted by community member barbazul in pull request [9902](https://github.com/magento/magento2/pull/9902){: target="_blank"}.* + * Magento now displays special characters in store names in email subject lines. Previously, special characters in the store name were converted to numerical character references in the email subject field. [GitHub-8094](https://github.com/magento/magento2/issues/8094) + * You can now link a simple product to a configurable one. Previously, when you tried to use REST to link a simple product to a configurable one, the products were not linked even though Magento responded, `Status Code: 200 OK`. #### Admin framework + * You can no longer delete a currently logged-in user. + * Inline editing in Admin now includes ACL checks. Previously, the Quick Edit editor did not respect permissions. #### Application framework + * Magento now supports new top level domains for email addresses. [GitHub-4547](https://github.com/magento/magento2/issues/4547) + * Page titles in layout files are not translatable. *Fix submitted by community member Anton Evers in pull request [9992](https://github.com/magento/magento2/pull/9992){: target="_blank"}.* + * The `setup:static-content:deploy`, `setup:di:compile` and `deploy:mode:set` commands now return non-zero exit code if an error occurs. *Fix submitted by community member Pablo Ivulic in pull request [7780](https://github.com/magento/magento2/pull/7780){: target="_blank"}.* + * We've changed the `select` protected property to `query` in the AbstractSearchResult class. *Fix submitted by community member Alex Gusev in pull request [5043](https://github.com/magento/magento2/pull/5043){: target="_blank"}.* + * `\Magento\Framework\Interception\Code\Generator\Interceptor` now supports interceptors for generating for methods that return references. [GitHub-9167](https://github.com/magento/magento2/issues/9167) + * The Magento Framework now makes its dependency upon the `zendframework/zend-stdlib` library explicit in `composer.json`. [(GITHUB-6442)](https://github.com/magento/magento2/issues/6442){: target="_blank"} #### Configuration framework + * Configuration values no longer return NULL when Redis reaches the limit set in the `max_memory` setting. Previously, when Redis met the limit specified in this setting, `ScopeConfig` returned a value of NULL for configuration options, which resulted in significant damage to data (for example, deleting all prices assigned to a website from the database). + * The currency setup in Admin no longer throws an `in_array` error when a single value is selected. *Fix submitted by community member Derik Nel in pull request [8077](https://github.com/magento/magento2/pull/8077){: target="_blank"}.* + * Magento now writes all default configuration values to the `config.php` file. #### JavaScript framework + * Customers can now place orders as expected when Magento is running a French locale in production mode. Previously, customers could not complete a transaction in a storefront running a French locale, although they could if they switched to the storefront running the English locale. + * Magento now displays server-side Ajax error messages. + * JavaScript mixins now work when you add a `urlArgs` argument to a `require_js` file. *Fix submitted by community member James Reed in pull request [9665](https://github.com/magento/magento2/pull/9665){: target="_blank"}.* #### Session framework + * The Magento storefront and Admin panel no longer share form keys. Previously, if a user were navigating both a storefront and the Admin simultaneously, he would be unexpectedly redirected to the Admin dashboard. [GitHub-6201](https://github.com/magento/magento2/issues/6201) #### Zend framework @@ -702,451 +892,593 @@ This release contains hundreds of fixes and enhancements. Thanks to our hardworking Magento Open Source community members for the following contributions! + * We’ve removed `Zend_Json` from Magento Theme and replaced it with a new serializer class. *Fix submitted by community member David Manners in pull request [9262](https://github.com/magento/magento2/pull/9262){: target="_blank"}.* + * We’ve removed `Zend_Json` from the Weee module. *Fix submitted by community member David Manners We’ve removed pull request [9261](https://github.com/magento/magento2/pull/9261){: target="_blank"}.* + * We’ve replaced the direct usage of `Zend_Json` with a call to the `Json_Help` class. *Fix submitted by community member David Manners in pull request [9344](https://github.com/magento/magento2/pull/9344){: target="_blank"}.* + * We’ve replaced `Zend_Json` in the configurable product block test. *Fix submitted by community member David Manners in pull request [9753](https://github.com/magento/magento2/pull/9753){: target="_blank"}.* + * We’ve removed `Zend_Json` from form elements. *Fix submitted by community member David Manners in pull request [9754](https://github.com/magento/magento2/pull/9754){: target="_blank"}.* + * We’ve replaced the Magento Framework's `Zend_Session` interface usage with SessionHandlerInterface. *Fix submitted by community member Timon de Groot in pull request [9285](https://github.com/magento/magento2/pull/9285){: target="_blank"}.* + * We’ve removed `Zend_Wildfire` and `Zend_Controller` from the codebase. *Fix submitted by community member Isolde in pull request [9622](https://github.com/magento/magento2/pull/9622){: target="_blank"}.* + * We've resolved issues with selecting widgets in TinyMCE. [GitHub-9655](https://github.com/magento/magento2/issues/9655), [GitHub-9518](https://github.com/magento/magento2/issues/9518) *Fixes submitted by community member Pieter Hoste in pull request [9540](https://github.com/magento/magento2/pull/9540){: target="_blank"} and community member Bernhard in pull request [9711](https://github.com/magento/magento2/pull/9711){: target="_blank"}.* + * We’ve replaced `Zend_Log` with `Psr\Log\LoggerInterface`. *Fix submitted by community member Timon de Groot in pull request [9285](https://github.com/magento/magento2/pull/9285){: target="_blank"}.* + * Magento no longer throws a `Zend_Db_Statement_Exception` when a user opens an empty Category page. *Fix submitted by community member adrian-martinez-interactiv4 in pull request [9400](https://github.com/magento/magento2/pull/9400){: target="_blank"}.* ### General fixes + * You can now save products using the multiple select attribute value. Previously, you could not save values if using this attribute. + * You can now log in successfully after creating a custom attribute. Previously, Magento would display an error message, and you could not log in, after first creating a custom attribute, then logging out. + * Magento now correctly displays customer address during account creation. Previously, when you selected a default billing address during creation of a new customer account, Magento would not display the address. + * Admin users with restricted permissions can now log in successfully as determined by those permissions. Previously, Magento displayed a fatal error when you logged in under these conditions. + * We've removed the duplicated [PHP](https://glossary.magento.com/php) settings from the sample web server configuration files. + * You can now make Return Merchandise [Authorization](https://glossary.magento.com/authorization) (RMA) comments visible from the storefront by setting **Stores > Settings > Configuration > Sales > RMA Settings > Enable RMA on Storefront**. + * When creating a new page with the Add New Page feature, Magento no longer throws a JavaScript error when [Layout](https://glossary.magento.com/layout) is set to empty. + * We've removed the sample password from the Setup Wizard. + * You can now assign open-ended start and complete dates for product rules. Previously, if you left the start and end date field blanks when creating a rule, Magento would supply the start and end dates based on the save date. + * The Magento Framework now makes its dependency upon the `zendframework/zend-stdlib` library explicit in `composer.json`. [GitHub-6442](https://github.com/magento/magento2/issues/6442) + * You can now upload changes to the `robots.txt` file from the Admin panel. + * We've eliminated difficulties saving product information when logged in as Admin. Previously, the Product Save feature worked erratically for Admin users. + * Custom themes now inherit parent [XML](https://glossary.magento.com/xml) configuration information as expected. + * Information set by the **Default Billing Address** and **Default Shipping Address** checkboxes on the Customer page are now saved correctly. + * [Admin](https://glossary.magento.com/admin) users with appropriate permissions can now reset the passwords of more than one customer at a time. [GitHub-5260](https://github.com/magento/magento2/issues/5260) + * Admin interface forms now load data as expected after initializing all components. Previously, under certain conditions, the load indicator would spin indefinitely, and Magento would not load data. + * Showing reports on the **Reports > Coupons** page no longer throws an error when the user is in a non-default Admin locale. [GitHub-7037](https://github.com/magento/magento2/issues/7037) + * You can now generate static content without a database connection. [GitHub-10041](https://github.com/magento/magento2/issues/10041) + * Static content deployment now generates secure content, whether content included secure or non-secure URLs. + * The Recently Viewed Products block now appears as expected when the full page cache is enabled. [GitHub-3890](https://github.com/magento/magento2/issues/3890) + * We've resolved an issue that prevented you from adding more than one product to a [shopping cart](https://glossary.magento.com/shopping-cart) from a wishlist. [GitHub-5282](https://github.com/magento/magento2/issues/5282) + * Widgets now accept UTF-8 special characters type as input parameters. Previously, you could successfully create a widget, but UTF-8 special characters were broken. [GitHub-4232](https://github.com/magento/magento2/issues/4232) *Fix submitted by community member Pieter Hoste in pull request [9333](https://github.com/magento/magento2/pull/9333){: target="_blank"}.* + * Magento now sends email that provides updates on the status of RMA authorization. + * Mass actions now work as expected on the Customer grid. Previously, Magento could not process more than 20 items at a time. + * Customers who subscribe to a newsletter are now subscribed as expected after confirming their account. Previously, Magento unsubscribed customers from the newsletter after confirming their account. + * Fixed issue with using the Magento Commerce invitations feature to insert malicious JavaScript and subsequently execute it in the Admin context. + * You can now save products using the multiple select attribute value. Previously, you could not save values if using this attribute. + * You can now assign open-ended start and complete dates for product rules. Previously, if you left the start and end date field blanks when creating a rule, Magento would supply the start and end dates based on the save date. + * Magento no longer generates incorrect URLs in the site map when the **Use Secure URLs in Admin** setting is set to **Yes**. [GitHub-8644](https://github.com/magento/magento2/issues/8644) + * We’ve resolved a conflict that occurred after you changed a base URL. Previously, after you changed a `base_url` value (**Stores->Configuration > General > Web > Base URLs (Secure)**), Magento would update the base URL, then resubscribe, potentially resulting in a failure during the next update secure `base_url` call. + * Magento now displays newly registered customers in the Admin customer list as expected. + * The Customer Segment page no longer shows non-matching customers when a customer logs in and you refresh the Customer Segment page. + * You can now add a `translate` attribute to any String argument in the `di.xml` file for any class. This attribute provides an ability on the level of dependency injection configuration to specify that an argument can be translated. The actual translation of strings is handled by another Magento component. + * Magento frontend scope filters now work as expected. Previously, Magento did not reload product information correctly when you applied a filter using **Catalog > Product**. + * Only users with permission to view a store can view or process the orders placed on it. + * You can render the `tax_class_id` attribute nonsearchable. Previously, Magento displayed a 503 error under these circumstances. + * We fixed an issue where cache-misses sometimes occurred when Fastly cache was implemented. Previously, the header information included in the response sometimes prevented the caching of this page. To minimize this potential problem, Magento now does not include header empty of real content in the response. + * Fixed the location of the `wishlist.js` file. *Fix submitted by community member [Koen V.](https://github.com/koenner01){: target="_blank"} in pull request [8633](https://github.com/magento/magento2/pull/8633){: target="_blank"}.* + * You can no longer download products after you’ve set order state to `STATE_CANCELED`. *Fix submitted by community member nazarpadalka in pull request [8917](https://github.com/magento/magento2/pull/8917){: target="_blank"}.* + * Fixed a typo in the Pull Request Template. *Fix submitted by community member tomislavsantek in pull request [8908](https://github.com/magento/magento2/pull/8908){: target="_blank"}.* + * You now receive an error message as expected if you try to submit a product review while not logged in. *Fix submitted by community member quienti in pull request [9001](https://github.com/magento/magento2/pull/9001){: target="_blank"}.* + * Fixed grammar error in the customer dashboard. *Fix submitted by community member Petar Sambolek in pull request [9080](https://github.com/magento/magento2/pull/9080){: target="_blank"}.* + * The popup window in the Safari browser now closes properly. *Fix submitted by community member Hans Schouten in pull request [8824](https://github.com/magento/magento2/pull/8824){: target="_blank"}.* + * We’ve fixed minor performance issues when you use `/pub` as `docroot`. *Fix submitted by community member Joseph Maxwell in pull request [9094](https://github.com/magento/magento2/pull/9094){: target="_blank"}.* + * The Actions dropdown menu is now properly aligned in the Admin when the action column is not the last column. *Fix submitted by community member Marius Strajeru in pull request [10082](https://github.com/magento/magento2/pull/10082){: target="_blank"}.* + * Magento now deletes pending entries in `cron_schedule` when you reconfigure a cron job. *Fix submitted by community member Anton Evers in pull request [9957](https://github.com/magento/magento2/pull/9957){: target="_blank"}.* + * We’ve fixed the cron timestamp method. *Fix submitted by community member Anton Evers in pull request [9943](https://github.com/magento/magento2/pull/9943){: target="_blank"}.* + * You can now save customers with unique attributes. *Fix submitted by community member storbahn in pull request [9712](https://github.com/magento/magento2/pull/9712){: target="_blank"}.* + * The `Magento_Framework/View/Layout/etc/elements.xsd` file `blockReferenceType` definition now allows for the optional argument template. *Fix submitted by community member jissereitsma in pull request [9772](https://github.com/magento/magento2/pull/9772){: target="_blank"}.* + * Customer sessions for different customers are no longer shared on installations on multiple websites. [GitHub-4842](https://github.com/magento/magento2/issues/4842), [GitHub-6468](https://github.com/magento/magento2/issues/6468) + * Magento now handles quotation marks in product names. Previously, quotation marks in product names caused a JSON error on the Product page. [GitHub-8059](https://github.com/magento/magento2/issues/8059) + * The website column in Customer Segment report now contains correct data. Previously, this column was blank in the **Reports > Customer > Segments** report. + * When you add an address, new custom attributes are now displayed together, along with other address details. + * You can now edit the default store view and save it under a different name. [GitHub-7349](https://github.com/magento/magento2/issues/7349) + * You can now reset a customer password if **website restrictions** is enabled. Previously, you were redirected to `customer/account/login/` with no possibility to reset the password. + * When you override `module-directory/etc/zip_codes.xml` from a local module, all country codes are now included as expected. Previously, only the last country code was included, which affected the custom check out process. [GitHub-6694](https://github.com/magento/magento2/issues/6694) + * `.htaccess` deny code execution now works as expected for Apache and php-fpm. [GitHub-6766](https://github.com/magento/magento2/issues/6766) + * Magento now displays the WYSIWYG editor as expected. [GitHub-6222](https://github.com/magento/magento2/issues/6222), [GitHub-4828](https://github.com/magento/magento2/issues/4828), [GitHub-6815](https://github.com/magento/magento2/issues/6815) + * Magento now renders images as expected in the product description area. Previously, Magento did not render images in this area, and would display a broken link. [GitHub-6138](https://github.com/magento/magento2/issues/6138) ### Gift cards + * Order emails now specify the amount of the [gift card](https://glossary.magento.com/gift-card) that you have purchased. + * The Checkout page no longer freezes when you order a virtual gift card using the Authorize.net Payment Action value set to **Authorize and Capture**. + * You can now complete the purchase of a gift card in environments where you have set the Braintree [payment method](https://glossary.magento.com/payment-method) Payment Action to **Authorize and Capture**. Previously, any order made under these conditions would remain indefinitely in the processing stage. + * You can now add a gift card with an undefined amount to the Items Ordered table. Previously, Magento did not permit you to add a gift card of an open value to this table. + * Customers can no longer exceed a gift card balance by using the gift card twice. + * You can now save the configuration settings of a gift card product. + * Gift card accounts are now automatically generated after an invoice is created, when the Authorize and Capture payment action on Authorize.net Direct Post is enabled. ### Gift registry + * The State/Province dropdown menu now works as expected in the frontend gift registry. + * We’ve fixed inconsistent gift options checkbox labels in both the CSV file (`app\code\Magento\GiftMessage\i18n\en_US.csv`) and PHTML file (`app\code\Magento\GiftMessage\view\frontend\templates\inline.phtml`). *Fix submitted by community member vpiyappan in pull request [9421](https://github.com/magento/magento2/pull/9421){: target="_blank"}.* ### Gift wrapping + * The **Allow Gift Wrapping for Order Items** setting now works as expected. Previously, when **Stores > Settings > Configuration > Sales > Gift Options** was set to **No**, users saw the Gift Option link under each product in their [shopping cart](https://glossary.magento.com/shopping-cart). + * You can now add gift options to an order if logged in using a secure URL + * Your gift wrapping selection now appears in the shopping cart regardless of whether you've selected a shipping method. Previously, Magento did not display your gift wrapping choice until you selected a shipping method. + * Magento no longer displays the gift wrap tax when no gift wrap is selected. + * You can now save products using the multiple select attribute value. Previously, you could not save values if using this attribute. + * We’ve fixed an issue with fetching quote item by ID. *Fix submitted by community member Mladen Ilic in pull request [10059](https://github.com/magento/magento2/pull/10059){: target="_blank"}.* + * We’ve corrected the ACL for the Developer Section resource. *Fix submitted by community member Pascal Brouwers in pull request [10149](https://github.com/magento/magento2/pull/10149){: target="_blank"}.* + * Layout merging no longer fails when you save a widget that contains the grave accent character in the data. *Fix submitted by community member Timon de Groot in pull request [10151](https://github.com/magento/magento2/pull/10151){: target="_blank"}.* + * Magento now uses the correct order when uploading image to the Admin using **Content > Design**. *Fix submitted by community member Ihor Sviziev in pull request [10126](https://github.com/magento/magento2/pull/10126){: target="_blank"}.* ### Google Analytics + * We’ve added the missing single quote (‘) to the Google API Tracking code. *Fix submitted by community member Petar Sambolek in pull request [9084](https://github.com/magento/magento2/pull/9084){: target="_blank"}.* + * Google Analytics tracking now works when Cookie Restriction is enabled. *Fix submitted by community member Bernhard in pull request [9713](https://github.com/magento/magento2/pull/9713){: target="_blank"}.* ### HTML + * The CSS minify option no longer removes the whitespace around the minus (-) sign. Also, this option is now compatible with the `calc()` CSS function. *Fix submitted by community member Petar Sambolek in pull request [9027](https://github.com/magento/magento2/pull/9027){: target="_blank"}.* ### Images + * Magento no longer encounters an error when it cannot find a product image file. [GitHub-5184](https://github.com/magento/magento2/issues/5184), [GitHub-5497](https://github.com/magento/magento2/issues/5497), [GitHub-3545](https://github.com/magento/magento2/issues/3545), [GitHub-5871](https://github.com/magento/magento2/issues/5871) + * Magento now successfully saves images that you edit in a [WYSIWYG](https://glossary.magento.com/wysiwyg) editor. Previously, when you tried to change an image by right-clicking it in a WYSIWYG editor and choosing Insert/Edit Image, Magento did not save your changes. + * You can now preview uploaded images. + * You can now set an image size for product watermarks. [GitHub-5270](https://github.com/magento/magento2/issues/5270) + * Graphics now scroll as expected on mobile devices. [GitHub-5302](https://github.com/magento/magento2/issues/5302) + * Magento now successfully saves images that you edit in a [WYSIWYG](https://glossary.magento.com/wysiwyg) editor. Previously, when you tried to change an image by right-clicking it in a WYSIWYG editor and choosing Insert/Edit Image, Magento did not save your changes. + * Inserted images on the content block of Category no longer reference the Admin URL. Previously, when you used the Wysiwyg editor to insert an image into the Content block of a Category, the image URL on the frontend would reference the Admin location. When you subsequently logged out of the Admin panel, and refreshed the Category page, the image is no longer available. #### Import/Export + * You can now successfully import multiselect attributes that contain special symbols or delimiters. Previously, when you tried to import attributes containing delimiters, data validation (and the import) failed. + * You can now import negative quantities. Previously, when importing a product quantity of '-1', Magento returned an error. + * Magento now imports custom options correctly. Previously, when you tried to import a custom option, the import failed, and Magento displayed this error: `Javascript Error: Uncaught RangeError: Maximum call stack size exceeded`. [GitHub-5573](https://github.com/magento/magento2/issues/5573) + * We’ve added a new way to import images: You can now successfully import images when you set your document root to `your_Magento_install_dir/pub`. Previously, you needed to set document root to `/magento` to import images. Both ways of importing now work. [GitHub-5359](https://github.com/magento/magento2/issues/5359) + * Magento now removes category URL keys from the `url_rewrite` table as expected during import. Previously, Magento did not remove these keys, which triggered a failure during import. This subsequently caused Magento to quickly reach the maximum error count, returning this error: "Maximum error count has been reached or system error is occurred!". [GitHub-1471](https://github.com/magento/magento2/issues/1471) + * You can now export a [bundle product](https://glossary.magento.com/bundle-product) that contains a custom text area attribute. Previously, if you tried to export this type of bundle product, the export would fail, and Magento displayed the message, "There is no data for the export". + * Magento now maintains super attribute ordering of configurable products with multiple super attributes after export or import. Previously, after import or export, the ordering of super attributes was not maintained. [GitHub-6079](https://github.com/magento/magento2/issues/6079) + * Magento now correctly displays both configurable and simple products, their attribute values, and visibility values after import if SKU is an integer. [GitHub-5547](https://github.com/magento/magento2/issues/5547) + * Magento now imports customer data as expected after the data passes the pre-import validation step. Previously, although data passed this validation step, an error would occur during import, and Magento displayed this message: `Invalid data for insert`. [GitHub-4921](https://github.com/magento/magento2/issues/4921), [GitHub-9469](https://github.com/magento/magento2/issues/9469) + * The export process now populates values in the configurable variations column for configurable products as expected. Previously, when exporting more than one product, the values for the configurable variations column for configurable products were not included. + * Magento now displays imported product images in this order: first, the base image, then the additional images in the order in which they were listed in the [CSV](https://glossary.magento.com/csv) file. Previously, Magento displayed images in this unexpected order: first, an additional image, then the base image, and finally, all remaining additional images. + * Magento now runs a selective partial re-indexing operation after import if you enable **Update on Schedule**. Previously, Magento ran a full reindex no matter which index mode was set. + * We've fixed an issue with the correct representation of date and time zones of items in a product [catalog](https://glossary.magento.com/catalog) during import or export. Previously, Magento exported all dates in the default format (UTC-8), including values that you set to be displayed using another standard. + * Magento now successfully imports customer multiselect attributes. Previously, when you imported a CSV file with either the option's ID numbers or the option's values, Magento returned an error. + * Magento now displays more verbose information about duplicated information with links to action for troubleshooting the import process. Previously, Magento displayed duplicated or incomplete information on the product page after import. + * Magento now exports rows only once when product information contains HTML special characters. Previously, Magento exported rows containing product information that included HTML characters at least twice. + * We've improved the import speed of advanced pricing data. Previously, the import process for this information frequently stopped after the import of approximately 300 rows of data, and Magento displayed this message: `Please Wait`. + * The CatalogImportExport uploader now handles HTTPS images as expected. *Fix submitted by community member Clement Beudot in pull request [8278](https://github.com/magento/magento2/pull/8278){: target="_blank"}.* + * You can now successfully import multiselect attributes that contain special symbols or delimiters. Previously, when you tried to import attributes containing delimiters, data validation (and the import) failed. + * When you delete an image in Admin, Magento no longer deletes it on the server. Previously, Magento deleted it from the server as well, which caused errors for other products (example error message: `Cannot gather stats! Warning!stat(): stat failed for`). + * The exported sheet now generates or renders data for columns that indicate associations for configurable products. + * Magento no longer deletes a product after you select the Replace option while importing a product. Previously, Magento deleted the product rather than replacing it. + * Magento can now import `additional_images` that are tagged with labels that contain a comma separator. + * We've fixed an issue where product URL keys (for SKUs) were not auto-generated as expected during import. [GitHub-5188](https://github.com/magento/magento2/issues/5188) + * Magento now updates attribute sets as expected when importing products from CSV. [GitHub-5498](https://github.com/magento/magento2/issues/5498) + * The CatalogImportExport uploader can now handle HTTPS images. Previously, if the URL of a file contained HTTPS, the uploader still used the HTTP provider to retrieve the image, which lead to an error. [GitHub-8277](https://github.com/magento/magento2/issues/8277) + * Magento now displays the WYSIWYG editor as expected. [GitHub-6222](https://github.com/magento/magento2/issues/6222), [GitHub-4828](https://github.com/magento/magento2/issues/4828), [GitHub-6815](https://github.com/magento/magento2/issues/6815) + * The Admin’s Most Viewed Products tab now displays correct product prices. Previously, prices for products in Most Viewed Products tab were incorrectly listed as $0. [GitHub-5660](https://github.com/magento/magento2/issues/5660) + * Magento now renders images as expected in the product description area. Previously, Magento did not render images in this area, and would display a broken link. [GitHub-6138](https://github.com/magento/magento2/issues/6138) #### Integrations + * With valid permissions, you can now regain access to your Admin account after it is temporarily disabled due to invalid credentials. Previously, you could not unlock the account of a valid Admin user if it were disabled due to multiple invalid login attempts. + * Web API tokens now have a default expiration period: 4 hours for Admin tokens and 1 hour for Customer tokens. This can be changed in the [Admin Panel configuration settings]({{ site.baseurl }}/guides/v2.2/get-started/authentication/gs-authentication-token.html#admin-and-customer-access-tokens) + * You can now edit `authentication_lock` from the Admin. *Fix submitted by community member Elias Kotlyar in pull request [9820](https://github.com/magento/magento2/pull/9820){: target="_blank"}.* ### Indexing + * We've improved the performance of the algorithm that Magento uses to calculate batch sizes while indexing categories. + * Magento no longer displays an indexing error when Elasticsearch is enabled. Previously, Magento displayed this indexing error when Elasticsearch was enabled: `mapper_parsing_exception`. + * The category/product indexer now successfully completes a full reindexing of all indexes on large profiles with 500,000 or more products. Previously, Magento successfully generated a large profile, but failed to complete the reindexing of the categories or products, and displayed the following error: "Error 1114: Table is full". + * `IndexerHandlerFactory` no longer tries to cast the `$indexer` object to a String if an error occurs. Since `$indexer` is an object of type `IndexerInterface` and does not have a `__toString()` method, attempting to cast the `$indexer` object to a String previously resulted in an error. [GitHub-5155](https://github.com/magento/magento2/issues/5155) + * The Magento flat indexer now collects correct product data for `ROW_ID`. + * The Magento flat indexer no longer throws an error after flat tables are enabled and reindexed. This fix applies to both product and [catalog](https://glossary.magento.com/catalog) tables. + * Magento now runs a selective partial re-indexing operation after import if you enable **Update on Schedule**. Previously, Magento ran a full reindex no matter which index mode was set. + * `IndexerHandlerFactory` no longer tries to cast the `$indexer` object to a String if an error occurs. Since `$indexer` is an object of type `IndexerInterface` and does not have a `__toString()` method, attempting to cast the `$indexer` object to a String previously resulted in an error. [GitHub-5155](https://github.com/magento/magento2/issues/5155) + * The category/product indexer now successfully completes a full reindexing of all indexes on large profiles with 500,000 or more products. Previously, Magento successfully generated a large profile, but failed to complete the reindexing of the categories or products, and displayed the following error: "Error 1114: Table is full". + * We’ve resolved failures with indexing in installations that implemented catalogs containing at least 5,000 - 6,000 SKUs. + * We've improved the performance of the algorithm that Magento uses to calculate batch sizes while indexing categories. + * Reindexing no longer results in an SQL error that prevents bundle products from being reindexed, and results in wrong product prices. ### Orders + * We’ve added PHP interfaces that add the ability to change the status of a [shipment](https://glossary.magento.com/shipment). The new Creditmemo interface supports tasks you can already do through the Magento Admin, including the ability to: * support returning multiple units of a configurable product. Previously, when you tried to refund an order, you could refund only one unit of a configurable product, not the amount in the original order. @@ -1156,135 +1488,177 @@ Thanks to our hardworking Magento Open Source community members for the followin * change order status after a credit memo has been created. + * You can now set the customer group when creating a new order from the Admin interface. [GitHub-6162](https://github.com/magento/magento2/issues/6162) + * You can now print invoices and credit memos from the Order page. + * You can now successfully place orders when the Enable and Configure [Website](https://glossary.magento.com/website) Payments Standard Payment Action attribute is set to Sale. Previously, under these conditions, Magento would display an error message and not allow you to complete the purchase. [GitHub-4785](https://github.com/magento/magento2/issues/4785) + * Attributes of the `salesInvoiceRepository` methods are now more appropriately type cast. (The data type is now a nullable float.) Previously, due to the use of an incorrect data type, Magento would produce an error when calling the `salesInvoiceRepositoryV1GetList` method. [GitHub-3605](https://github.com/magento/magento2/issues/3605) + * The order comments history no longer duplicates the time that a comment was made. Previously, the time that a comment was made was listed twice. + * Magento now uses the address template from store view level of the placed order (similar to how order confirmation email works). Previously, Magento used the wrong address template for order e-mails. + * Magento now correctly identifies an order being processed when it is placed in a store configured for multiple currencies. Previously, these orders always were identified as potentially fraudulent. + * The order comments history no longer duplicates the time that a comment was made. Previously, the time that a comment was made was listed twice. + * You can now add a gift card with an undefined amount to the Items Ordered table. Previously, Magento did not permit you to add a gift card of an open value to this table. + * The **Print Shipping Label** link now displays on the product frontend. Previously, the layout for the Shipping and Tracking block did not work properly. + * You can now create an order through Admin if there is a `translate csv` for order-header. *Fix submitted by community member Pascal Brouwers in pull request [6856](https://github.com/magento/magento2/pull/6856){: target="_blank"}.* + * You can now use a second credit memo to successfully issue a full refund for a credit memo with adjustment fees. *Fix submitted by community member Max Pronko in pull request [9715](https://github.com/magento/magento2/pull/9715){: target="_blank"}.* + * Coupon codes are now included in invoice print outs. *Fix submitted by community member Belgacem Naoui in pull request [9780](https://github.com/magento/magento2/pull/9780){: target="_blank"}.* + * The Orders grid now displays correct order dates. *Fix submitted by community member Anton Evers in pull request [9941](https://github.com/magento/magento2/pull/9941){: target="_blank"}.* + * Magento now displays the correct order time in the Sales Order grid in the Admin panel. [GitHub-9426](https://github.com/magento/magento2/issues/9426) + * We’ve increased the size of the `sales_order_payment.cc_number_enc` field. [GitHub-7334](https://github.com/magento/magento2/issues/7334) + * We’ve fixed an issue with an undefined offset in the `order\config.php` file. [GitHub-6111](https://github.com/magento/magento2/issues/6111) + * The Create Order page now works as expected after you select **Update items and quantities**. + * Magento no longer creates unnecessary loaders during checkout with an order that contains virtual products. + * New orders no longer stay in the processing state after you click the Place Order button. Previously, new orders stayed in the processing state even after you clicked Place Order. [GitHub-5860](https://github.com/magento/magento2/issues/5860) + * You can now use either the parent order item ID or child product order item ID when using the REST API (`/V1/order/:orderId/invoice : POST method API`) to create an invoice for an order containing bundle products. [GitHub-6988](https://github.com/magento/magento2/issues/6988) + * We’ve increased the size of the `shipping_method` column in the `sales_order` and `quote_address` tables. [GitHub-6475](https://github.com/magento/magento2/issues/6475) + * Magento now creates the shipping address as expected when you use REST to create an order. Previously, when you used REST to create an order, then subsequently viewed the order from the Admin, Magento threw an error. + * Magento now displays all tax details as expected on the Admin order page. Previously, Magento did not save the order tax rate information, and the full tax summary was incomplete. + * You can now cancel an order of a bundle product. [GitHub-5194](https://github.com/magento/magento2/issues/5194) + * We’ve fixed an issue with an undefined offset in the `order\config.php` file. [GitHub-6111](https://github.com/magento/magento2/issues/6111) + * The Admin’s Most Viewed Products tab now displays correct product prices. Previously, prices for products in Most Viewed Products tab were incorrectly listed as $0. [GitHub-5660](https://github.com/magento/magento2/issues/5660) + * New orders no longer stay in the processing state after you click the Place Order button. Previously, new orders stayed in the processing state even after you clicked Place Order. [GitHub-5860](https://github.com/magento/magento2/issues/5860) ### Payment methods + * We’ve added support for the change to the USPS API that USPS implemented on September 1, 2017. After installing or upgrading to this release, Magento will display the Domestic rate for USPS, First-Class Mail Parcel as expected. Previously, the USPS First-Class Mail Parcel option was not available after September 1, 2017 on installations running Magento 2.x. + * You can now successfully complete Paypal checkout with products that have custom options. [GitHub-5938](https://github.com/magento/magento2/issues/5938) + * Third-party payment gateways are now visible from the Admin. [GitHub-7891](https://github.com/magento/magento2/issues/7891) + * Magento no longer displays the **No [Payment method](https://glossary.magento.com/payment-method) available** message when a customer tries to ship items to a billing-restricted country. + * Magento no longer displays the **No [Payment method](https://glossary.magento.com/payment-method) available** message when a customer tries to ship items to a billing-restricted country. + * Magento now successfully completes checkout when a custom address attribute is added. Previously, an error occurred during checkout when the user added a required custom address attribute. + * Removed a duplicate method call to the `getLinkField` method in the `Magento\Catalog\Model\ResourceModel\Category` class. *Fixed by will-b in pull request [9057](https://github.com/magento/magento2/pull/9057){: target="_blank"}.* + * During order creation, you can now continue with a payment after clicking the **Back** button to the payment selection window. [GitHub-4580](https://github.com/magento/magento2/issues/4580) + * The expiration year validator now works as expected. [GitHub-8482](https://github.com/magento/magento2/issues/8482) * We've introduced the `Magento\Vault\Block\TokenRendererInterface::getToken` method. This method provides details about payment tokens to renderer components, such as public hash and available card or account details. Third-party developers can use this method to implement this functionality in their payment integrations. + * Error messages associated with the `Authorize.net` payment method are now translated to fit the configured locale. [GitHub-5934](https://github.com/magento/magento2/issues/5934) + * We’ve increased the size of the `shipping_method` column in the `sales_order` and `quote_address` tables. [GitHub-6475](https://github.com/magento/magento2/issues/6475) + * We’ve fixed an issue with the REST API that previously resulted in the PayPal gateway rejecting requests. [GitHub-10410](https://github.com/magento/magento2/issues/10410) #### Braintree + * You can now place orders from the Admin using the Braintree payment method. + * We've enhanced our PayPal and Braintree implementations so that merchants can now: * Save customer PayPal account information in the Braintree Vault when using Braintree as a service. This enhancement provides a secure method for charging my customers without prompting them to enter a payment information for multiple purchases or for purchases from multiple devices. We've also added support for Maestro and Discover BINs added to the credit card form both for Braintree and PayPal solutions. @@ -1292,94 +1666,121 @@ Thanks to our hardworking Magento Open Source community members for the followin * Configure dynamic descriptors (Company Name, Phone and URL) for Braintree. This enhancement supports customers easily identifying a source of transactions in their bank statements. (This will potential simplify the resolution of disputed transactions by supporting the display of the Kount status for Braintree in the Admin interface.) + * Kount and 3D Secure now work as expected for Braintree Vault. + * Magento now updates you as expected on order comments and order history after you initiate a refund using Braintree. Previously, when you clicked the **Refund** button (to initiate a refund), Magento did not redirect you to order comments and history information. + * You can now use Braintree as a payment method when applying reward points or store credit to an order. + * The Braintree payment method now works as expected with Vault table prefixing. + * Magento no longer encounters an error when using the Braintree Vault payment GET order API call. [GitHub-6215](https://github.com/magento/magento2/issues/6215) + * You can now use JCB and Diners Club credit cards with the Authorize.net payment method. + * Fixed issue with credit card capture information failing to remain associated with its first authorization. [GitHub-6716](https://github.com/magento/magento2/issues/6716) + * You can now successfully place orders with Braintree when using an alternative [merchant account](https://glossary.magento.com/merchant-account) ID. (The merchant account does not need to match the 3D Secure authorization merchant account.) [GitHub-5910](https://github.com/magento/magento2/issues/5910) -* Braintree no longer encounters an error during checkout when you apply a 100% discount coupon to a product and enable free shipping. Previously, Magento displayed a spinning loader widget, and your screen froze. The Developer console displayed this error: -`Uncaught Error: [paypal-container] is not a valid DOM Element`. + +* Braintree no longer encounters an error during checkout when you apply a 100% discount coupon to a product and enable free shipping. Previously, Magento displayed a spinning loader widget, and your screen froze. The Developer console displayed this error: `Uncaught Error: [paypal-container] is not a valid DOM Element`. + * The Braintree payment method now works as expected with Vault table prefixing. + * Merchants can now accept payment on a Suspected Fraud order without Magento altering the amount in Total Paid. Previously, when a merchant accepted payment for an order with a status of Suspected Fraud, Magento doubled the payment amount. -* Braintree no longer encounters an error during checkout when you apply a 100% discount coupon to a product and enable free shipping. Previously, Magento displayed a spinning loader widget, and your screen froze. The Developer console displayed this error: -`Uncaught Error: [paypal-container] is not a valid DOM Element`. + +* Braintree no longer encounters an error during checkout when you apply a 100% discount coupon to a product and enable free shipping. Previously, Magento displayed a spinning loader widget, and your screen froze. The Developer console displayed this error: `Uncaught Error: [paypal-container] is not a valid DOM Element`. + * The Braintree PayPal locale now has its own setting. [GitHub-9639](https://github.com/magento/magento2/issues/9639) + * You can now modify the product quantities of a previous order and re-order it using the saved credit card information from the first order. #### PayPal + * We've improved and streamlined the [Magento Admin](https://glossary.magento.com/magento-admin) PayPal configuration interface. + * PayPal Payflow Pro now uses the currency you've specified in your store settings. Previously, Magento converted the total price into U.S. dollars, no matter which currency was specified in the store settings. + * We've fixed an issue with using PayPal Express Checkout to order products with custom options. Previously, although an Admin user could create and configure “File type” custom options, customers could not upload and store files within the order [quote](https://glossary.magento.com/quote). [GitHub-5434](https://github.com/magento/magento2/issues/5434) + * Fixed issue related to incorrect stock quantity calculation for bundle and configurable products during place order flow with PayPal Express Checkout. + * Third-party payment gateways are now visible from the Admin. [GitHub-7891](https://github.com/magento/magento2/issues/7891) + * Fixed issue with credit card capture information failing to remain associated with its first authorization. [GitHub-6716](https://github.com/magento/magento2/issues/6716) + * PayPal Express payments no longer fail when there is adequate product inventory to cover your order. Previously, you'd receive this error message: `We can't place the order`. [GitHub-6296](https://github.com/magento/magento2/issues/6296) + * Paypal errors no longer occur when Fixed Product Tax (FPT) is enabled. Previously, when a product had a FPT, Paypal Express reported an error when you tried to place the order. + * PayPal Payflow Pro now uses the currency you've specified in your store settings. Previously, Magento converted the total price into U.S. dollars, no matter which currency was specified in the store settings. + * When refunding an order from PayPal, Magento now creates a credit memo with the correct status. + * The exported sheet now generates or renders data for columns that indicate associations for configurable products. + * We’ve fixed errors in processing valid orders using a PayPal account that had been previously used to pay for a valid order that had problems during checkout. + * We’ve resolved a loader issue with Payflow Pro. The loader image is now invisible after redirecting to the payment page/success page or error page. [GitHub-7159](https://github.com/magento/magento2/issues/7159), [GitHub-9296](https://github.com/magento/magento2/issues/9296) + * PayPal Express checkout no longer discards address line 2 for billing and shipping addresses. [GitHub-8313](https://github.com/magento/magento2/issues/8313) + * The checkout page no longer freezes when you try to use PayPal to pay for a purchase that contains a downloadable product. Previously, a `PayPal.js` error occurred. [GitHub-7000](https://github.com/magento/magento2/issues/7000) ### Performance @@ -1387,348 +1788,453 @@ Thanks to our hardworking Magento Open Source community members for the followin This release includes substantial improvements to Magento caching, image processing, and re-indexing, among other enhancements. + * We've improved the speed of static asset deployment and now support a variety of asset deployment strategies that can be used to optimize speed and size of assets deployed. Indexers can now be run with 256M of PHP RAM and default MySQL configuration settings. Developers can further tune memory usage to improve indexer performance (in some cases up to 100% improvement). Please see [Magento Optimization Guide]({{ page.baseurl }}/config-guide/prod/prod_perf-optimize.html) for further details. + * We've improved [storefront](https://glossary.magento.com/storefront) performance when creating 2500 or more product variants. + * The processing speed of category URL rewrites for catalogs containing more than 20,000 products has greatly improved. + * Opening many products from the Admin interface is now faster. + * Creating many (2500 - 5000) product variants, both simple and complex [product types](https://glossary.magento.com/product-types) is more efficient. + * You can now quickly generate or preview multiple variations of a [configurable product](https://glossary.magento.com/configurable-product). (Saving these variations to the database can be time-consuming, if you have several thousand product options, and our efforts to improve performance continue.) Previously, Magento threw an Invalid Form key error is thrown while you tried to save a configurable product with variations. + * Magento no longer performs unnecessary file check operations (for example, `file_exists`, `is_file`), which improves the performance of the category and product pages. + * We've optimized compiler performance (that is, the [`setup:di:compile`]({{ page.baseurl }}/config-guide/cli/config-cli-subcommands-compiler.html) command). + * We’ve improved the performance of the Display Time for Category Edit page for catalogs with many products or categories. [GitHub-7469](https://github.com/magento/magento2/issues/7469) #### Image processing + * We've improved the process of resizing images on the [frontend](https://glossary.magento.com/frontend). + * The process of loading many configurable products with multiple images (for example, configurable products with three attributes and 250 options) is more efficient. [(GITHUB-6979)](https://github.com/magento/magento2/issues/6979){: target="_blank"} #### Caching + * Magento now caches image metadata, which avoids the time-consuming need to read images for [metadata](https://glossary.magento.com/metadata) loading. + * Magento now caches attribute options for the layered navigation feature. This reduces the number of queries to the database, and consequently improves performance. + * We’ve optimized and streamlined how we cache EAV attributes by removing unnecessary SQL queries. ### PHP + * PHPCS can now correctly parse the syntax of PHP 7.x return types. + * Cart Price rules are now applied as expected to [payment method](https://glossary.magento.com/payment-method) conditions. Previously, discounts set in Cart Price rules were not applied during [checkout](https://glossary.magento.com/checkout). ### Sample data + * Magento now handles the `catalog_product_entity_media_gallery_value.position` value the same whether you’ve installed or upgraded the product. Previously, these values differed depending upon whether you upgraded or freshly installed your Magento code. + * You can now successfully install Magento with sample data when **auto_increment_increment** is set to **3** in the `options` file. Previously, installation completed successfully, but Magento displayed this error: `Something went wrong while installing sample data. Please check var/log/system.log for details. You can retry installing the data now or just start using Magento.` ### SalesRule + * You can now select and add a category to a Cart Price rule. Previously, Magento displayed this error: "Uncaught ReferenceError: sales_rule_form is not defined", and did not add the selected category to the condition. [GitHub-5526](https://github.com/magento/magento2/issues/5526) + * A cart rule with a coupon code no longer overrides a cart rule without a coupon code when multiple [cart rules](https://glossary.magento.com/cart-rules) are applied. Previously, when you created two cart rules and applied them to a cart, the rule with a coupon was applied, but the second rule was not. [GitHub-6294](https://github.com/magento/magento2/issues/6294) + * The SalesRule table is the same whether you’ve freshly installed or updated Magento 2.2. + * Magento no longer discounts items that belong to an excluded category. Previously, you were unable to exclude products assigned to a specific category due to the cart price rule. + * The Cart Price rule now affects coupon life as expected. Previously, coupons did not persist longer than the current date if they did not have a designated end-date. + * Customers can no longer apply a coupon code twice. Previously, the "Uses per Coupon" limit did not work for auto-generated coupons. + * Magento now implements free shipping if there is a Cart Price Rule match. [GitHub-6584](https://github.com/magento/magento2/issues/6584) + * SalesRule now applies to auto-generated coupon codes as expected. + * You can now create a cart price rule without any date range restrictions. Previously, if you left the **From** and **To** dates empty, Magento filled them in with the current date. [GitHub-6762](https://github.com/magento/magento2/issues/6762), [GitHub-6122](https://github.com/magento/magento2/issues/6122) + * When you change the currency associated with store, Magento also adjusts the currency in all product listings. [GitHub-6746](https://github.com/magento/magento2/issues/6746) + * Non-administrative users with access rights to Products, Marketing, Promotions, and Cart Price rules can now search for categories in Cart Price rules. GitHub-6168](https://github.com/magento/magento2/issues/6168) + * Non-administrative users with access rights to Products, Marketing, Promotions, and Cart Price rules can now search for categories in Cart Price rules. GitHub-6168](https://github.com/magento/magento2/issues/6168) ### Scope + * Changing a product price under the website scope now updates the product price across all stores. Previously, any price you set on the [store view](https://glossary.magento.com/store-view) level overrode the price set in website scope. [GitHub-5133](https://github.com/magento/magento2/issues/5133) + * The list of allowed countries is now configured as part of website scope, not store view scope. [GitHub-2946](https://github.com/magento/magento2/issues/2946) + * A restricted user can now change storeview- or website- level attributes that are defined within his scope. + * You can now select the scope for an action that you are running from the Catalog page's product table. + * The price you set on the website scope no longer overrides any local settings you set on configurable products at the store view level. + * The Product page scope selector now displays all related websites associated with a restricted user. ### Search + * Out-of-stock items no longer erroneously appear in results of layered navigation if that product option is out-of-stock. + * Magento now factors in the Weight attribute as expected when you use advanced search on grouped products. + * The Elasticsearch indexer search-by-attribute functionality now works as expected. + * Elasticsearch does not throw errors when there are more than 100 searchable attributes or when user-defined price attributes are marked searchable. + * ElasticSearch now includes data about composite products in its search index. Previously, search results did not include this data. + * Magento now sends the `parent_id` of a deleted configurable product variation to ElasticSearch. Previously, Magento didn’t send this information to the ElasticSearch server if the simple product associated with a configurable product were changed. + * Segmentation faults no longer occur when doing a `catalogsearch_fulltext` re-index, and indexing succeeds. Previously, in a large database (more than 70,000 products), the `catalogsearch_fulltext` (MySQL) re-index failed with a `Segmentation fault` message. [GitHub-7963](https://github.com/magento/magento2/issues/7963) + * Magento now implements the Attribute Weight Boosting Function for Elasticsearch. + * Magento now handles special characters in an Elasticsearch request as expected. Previously, Magento displayed a MySQL syntax error in search requests that contained special characters. [GitHub-8335](https://github.com/magento/magento2/issues/8335) + * Attribute weighting now works correctly for the MySQL adapter. [GitHub-9020](https://github.com/magento/magento2/issues/9020) + * Magento no longer throws an indexing error when Elastic search is enabled. ### Shipping + * UPS now generates shipping rates for Puerto Rico postal codes. + * Magento now displays tracking information when selected for the second shipping label created for the DHL shipping method. Previously, when you tried to display a completed DHL shipping label, Magento displayed an exception. + * Refreshing your browser page while on the Review and Payments page of the checkout process no longer clears information from form fields. Previously, Magento cleared information from the **Ship to** field if you refreshed your browser page during this process. + * You can now reload a page during [checkout](https://glossary.magento.com/checkout) without unintentionally changing shipping information. + * You can now save the settings you enter when creating a shipping label on an existing shipment. Previously, clicking the **Save** button resulted in an error, and the shipping label was not saved. + * Added missing translation to label `argument xml`. *Fix submitted by community member Mr Khoa in pull request [9095](https://github.com/magento/magento2/pull/9095){: target="_blank"}.* + * Magento no longer throws a fatal error when you create a new shipment for a placed order. + * The State/Province field now changes to an input field as expected after you select United Kingdom when filling out the shipping address during checkout + * The Free Shipping rule now works as expected with table rate shipping.[GitHub-6346](https://github.com/magento/magento2/issues/6346) + * Magento now passes the correct object to the `\Magento\Shipping\Model\Shipping::collectRatesByAddress` method. [GitHub-7309](https://github.com/magento/magento2/issues/7309) + * Magento now displays the checkout page or cart as expected when you try to edit a virtual item from the multi shipping page. Previously, Magento displayed a 404 error page instead of redirecting to the checkout page or shopping cart. [GitHub-7257](https://github.com/magento/magento2/issues/7257) + * Magento now displays UPS rates on the initial load of the checkout page. Previously, although shipping rates showed up properly at the cart level, the payment page did not load the correct shipping options. [GitHub-6564](https://github.com/magento/magento2/issues/6564) + * We've resolved an issue where Magento did not display applicable flat-rate USPS box methods during checkout. [GitHub-6798](https://github.com/magento/magento2/issues/6798) + * The Free Shipping rule now works as expected with table rate shipping. [GitHub-6346](https://github.com/magento/magento2/issues/6346) ### Sitemap + * Sitemap image URLs now match the URLs on product pages. *Fix submitted by community member Petar Sambolek in pull request [9082](https://github.com/magento/magento2/pull/9082){: target="_blank"}.* + * The sitemap is no longer generated in the wrong folder when `vhost` is connected to `/pub`. *Fix submitted by community member Joseph Maxwell in pull request [9094](https://github.com/magento/magento2/pull/9094){: target="_blank"}.* ### Staging + * The [CMS](https://glossary.magento.com/cms) page now refreshes as expected after an update. + * Magento no longer creates extraneous database values when you schedule new Staging updates. + * Magento no longer performs unnecessary staging-related flag operations on the Category page. Previously, Magento performed staging-related flag operations even when the Staging [module](https://glossary.magento.com/module) was not used. + * You can now delete updates from a campaign's page [entity](https://glossary.magento.com/entity) grid. + * You can now create a staging update for a product that contains a unique attribute in its attribute set. Previously, under these conditions, Magento displayed this error: `The value of attribute "test" must be unique’`. + * You can now install Magento Commerce without staging modules. + * The Magento flat indexer no longer throws an error after flat tables are enabled and reindexed. This fix applies to both product and [catalog](https://glossary.magento.com/catalog) tables. It also now collects correct product data for `ROW_ID` + * The staging dashboard now loads without error when you sort by status on the dashboard. Previously, the staging dashboard broke and remained in an infinite loop when you attempted to sort by status on the dashboard. + * You can now preview an update from the dashboard and click on links and see how the entire instance would look like for a store between some dates. Previously, the links from the Preview page were broken. + * Magento now displays the correct content on the preview page for a scheduled update. + * Magento now applies all scheduled product changes to all scopes. + * The view/edit option for a scheduled change is now available for the duration that the scheduled change is in progress. Previously, you could not view or edit a scheduled change when it was in progress, which left no way to edit or remove it. + * You can now create a new scheduled update for a product. Previously. when you tried to create an update, Magento displayed this error: `Uncaught TypeError: Failed to execute 'removeChild' on 'Node': parameter 1 is not of type 'Node'.` + * Magento now displays the correct date and time for staging updates. Previously, when your current time in Daylight Saving time, and your target time was in Standard time, your target time was incorrect. + * Magento now correctly assigns images to duplicated products. + * Scheduled Update no longer removes simple variations from Configurable products. Previously, if you set up a scheduled update to toggle the **New** setting on a configurable product, Magento removes all simple variations from the configurable product once the update takes effect. + * Content staging values for fields are now saved in database. + * When you import products that exist in the CSV file, but not on the store (including categories), Magento now populates the categories as expected. + * Magento no longer deletes images associated with categories scheduled for update after you modify the image. + * Once the time frame for the scheduled update has passed, Magento removes the special price and displays the original price. + * You can now remove a product or category from a campaign. + * You can now preview a scheduled update for a category that contains a recently viewed block. + * We’ve resolved a scheduling issue that previously resulted in Magento displaying a 404 error on most frontend pages. This occurred if you deleted a Catalog Rule with an end date, then ran an update. + * You can now save simple products created in 2.0.x environments after upgrading to environments running Magento 2.1.x. Previously, you could not successfully save the opened product after upgrading. ### Static file processing + * We've corrected a problem with `_requirejs` asset retrieval via `static.php` in [static content](https://glossary.magento.com/static-content) versioning. + * Versioning of [static files](https://glossary.magento.com/static-files) (including CSS, JS, font, and image files) is now enabled by default. + * We've improved the speed of static asset deployment. See [Deploy static view files]({{ page.baseurl }}/config-guide/cli/config-cli-subcommands-static-view.html){: target="_blank"} for more information about available options. + * The `setup:static-content:deploy` command now provides flags that you can use to exclude or include individual themes, areas, and locales. For more information, see [GitHub-4294](https://github.com/magento/magento2/issues/4294). ### Swatches + * Magento no longer creates redundant objects when initializing a configurable product on the Category page. + * You can now disable swatches for both the [Catalog](https://glossary.magento.com/catalog) page and search results (quick or advanced). To disable swatches from these requests, disable **Stores > Settings > Configuration > Catalog > Storefront > Show Swatches in Product List**. + * We've optimized the logic that Magento uses to validate swatch attributes. + * Magento now caches swatch data in the block cache, which improves the responsiveness of the configurable product pages. + * Magento now correctly matches images to products. Previously, after you selected a configurable product, Magento displayed the images for another product. + * Magento no longer displays a notice error when you create a text swatch attribute while the **update product preview image** setting is set to **Yes**. *Fix submitted by community member Pascal Brouwers in pull request [6707](https://github.com/magento/magento2/pull/6707){: target="_blank"}.* ### TargetRule + * Magento now displays Up-sells on the Product page. + * We’ve fixed an SQL error that previously caused a logical error during the creation of a TargetRule. (This issue affected the `modifyConditionByCategoryIdsAttribute` function.) ### Tax + * Magento now correctly calculates tax and order totals when a discount is used for prices that include tax and catalog prices excluding tax. Please note this is not a valid tax configuration and can introduce rounding errors. + * We’ve improved the performance of the Tax Rules form in installations containing many tax rates. + * You can now create a tax rule when running Magento in Mozilla Firefox and Internet Explorer. Previously, you could not select a tax rate, and Magento displayed an error. + * The `tax_region_id` value is no longer hard-coded in the `\Magento\Tax\Setup\InstallData` file. ### Testing + * We've fixed a fatal issue that occurred if you executed the CatalogImportExport test before running a subsequent test. Previously, you'd receive this error: ```Failed asserting that false is true```. + * We've fixed a fatal issue that occurred if you ran Travis builds on `imagettfbbox 2.1.2`. Previously, you'd receive this error: ```terminal @@ -1736,131 +2242,169 @@ This release includes substantial improvements to Magento caching, image process ``` + * `StdoTest` is now marked as skipped. *Fix submitted by community member David Manners in pull request [8487](https://github.com/magento/magento2/pull/8487){: target="_blank"}.* ### Tier pricing + * Magento now correctly calculates the tier price percentage when displayed prices include tax. [GitHub-8833](https://github.com/magento/magento2/issues/8833) + * Magento no longer resets the tier price during [quote](https://glossary.magento.com/quote) recalculation. Previously, when you triggered an automatic quote recalculation (by changing the shipping address, for example), the tier price was lost. (This issue occurred only if the product record in the database had values for `row_id` and `entity_id` that didn't match.) + * Magento no longer adds a thousands separator ( , ) to representations of quantities that exceed 1000. [GitHub-5745](https://github.com/magento/magento2/issues/5745) + * Tier pricing now works correctly with full page cache. [GitHub-5364](https://github.com/magento/magento2/issues/5364) ### Translation and locales + * String localizations now work as expected when phrases include text wrapped with single quotation marks. + * Translations now work for layered navigation attribute options. *Fix submitted by community member Pieter Hoste in pull request [9873](https://github.com/magento/magento2/pull/9873){: target="_blank"}.* ### URL rewrites + * You can now successfully create a product and assign it to a store without encountering the following error: `Unique constraint violation found`. [GitHub-6671](https://github.com/magento/magento2/issues/6671) + * The `catalog_url_rewrite_product_category` table is the same whether you’ve freshly installed or updated Magento 2.2. + * You can now assign products to a category when **Match Products by rule** is enabled. + * The **Use default URL Key** setting now works on the store-view level. + * You no longer need to delete the URL rewrite to force Magento to display links after adding pages to the CMS hierarchy. Previously, when you added new pages to the CMS hierarchy, Magento did not show the links to the new pages until you deleted the URL rewrites. + * We've fixed several issues with how Magento processes URLs with trailing slashes. *Fix submitted by community member Ihor Sviziev in pull request [10043](https://github.com/magento/magento2/pull/10043){: target="_blank"}.* + * Admin users can no longer create an empty URL key for a category. Previously, Magento let Admin users create an empty URL key, which lead to category-related errors. + * Magento now rewrites URLs as expected when you save a product while running Magento in single-store mode. [GitHub-5929](https://github.com/magento/magento2/issues/5929) + * Magento now rewrites URLs as expected when you save a CMS page while running Magento in single-store mode. [GitHub-5923](https://github.com/magento/magento2/issues/5923) + * URL rewrites are now correctly generated for multiple store views during product import. [GitHub-8396](https://github.com/magento/magento2/issues/8396) + * Magento now rewrites URLs as expected when you save a CMS page while running Magento in single-store mode. [GitHub-5923](https://github.com/magento/magento2/issues/5923) ### Varnish + * We've changed the behavior of the Varnish X-header. Only the parent (meta) SKU is now included in the list -- not the SKUs of all child products. [GitHub-6401](https://github.com/magento/magento2/issues/6401) + * Varnish no longer caches Cookie Restriction Mode Overlay. *Fix submitted by community member Bernhard in pull request 9711.* * Varnish now supports `grace` and `saint` mode to ensure that customers always see cached pages. + * Viewing the page with HTTPS instead of HTTP no longer causes the Category menu to disappear in installations using Varnish cache. [GitHub-4540](https://github.com/magento/magento2/issues/4540) ### Visual Merchandiser + * The order of products in a category display no longer changes when you add a new product to the category. + * Visual Merchandiser `Match products by rule` now works as expected. ### Web API + * You can now use REST to add video to a product description. [GitHub-7153](https://github.com/magento/magento2/issues/7153) + * The `PUT /V1/products/:sku/media/:entryId` correctly updates a product's media gallery and image role. + * A null value may now be specified to unset the `special_price` attribute. + * The Swagger documentation erroneously indicated that search queries can return detailed information about multiple objects. The description of these APIs now state which API to use to return detailed information about a single object. + * You can now use REST to successfully update customer information without unintentionally deleting default billing and shipping address information. + * You can now use a REST request to retrieve a shopping cart that contained a product with custom options. Previously, you could not use a REST request to retrieve a shopping cart that contained a product with custom options. + * The `PUT /V1/products/:sku/media/:entryId` correctly updates a product's media gallery and image role. + * Searching for products via REST API using a store code in the URL returns products from all stores. [GitHub-8121](https://github.com/magento/magento2/issues/8121) + * You can now use the REST API to create a configurable product with a linked child product. [(GITHUB-5243)](https://github.com/magento/magento2/issues/5243){: target="_blank"} + * The REST API now successfully handles attribute options that start with a number. [GitHub-5715](https://github.com/magento/magento2/issues/5715) + * We’ve fixed an issue with the REST API that previously resulted in the PayPal gateway rejecting requests. [GitHub-10410](https://github.com/magento/magento2/issues/10410) + * You can now save a billing address using the REST ’useForShipping' parameter. Previously use of the parameter resulted in a Rest API V1 error. [GitHub-6557](https://github.com/magento/magento2/issues/6557), [GitHub-5180](https://github.com/magento/magento2/issues/5180) + * We’ve resolved issues updating `default_frontend_label` using REST. [GitHub-5963](https://github.com/magento/magento2/issues/5963) + * Magento now sends REST multiselect attribute values in compatible formats. Previously, putting an unchanged GET returned errors on the multiselect attribute, and the only way to clear a multi-select field of all selections was to delete the product and re-create it. [GitHub-6120](https://github.com/magento/magento2/issues/6120) + * The REST API now successfully handles attribute options that start with a number. [GitHub-5715](https://github.com/magento/magento2/issues/5715) ## Community contributions diff --git a/guides/v2.2/release-notes/ReleaseNotes2.2.1CE.md b/guides/v2.2/release-notes/ReleaseNotes2.2.1CE.md index f9d842efc14..11287807c77 100644 --- a/guides/v2.2/release-notes/ReleaseNotes2.2.1CE.md +++ b/guides/v2.2/release-notes/ReleaseNotes2.2.1CE.md @@ -33,144 +33,185 @@ See [Magento Security Center](https://magento.com/security/patches/magento-221-2 ### Installation, upgrade, deployment + * We’ve improved the message that Magento displays during upgrade if any schema or data version in the `setup_modules` database is higher than the current module version in the code. *Fix submitted by community member Fabian Schmengler in pull request 11064.* + * When a callback during commit throws an exception, the calling plugin can now distinguish this exception from an unsuccessful commit and logs an exception. Previously, Magento threw an “Asymmetric transaction rollback error”. [GitHub-9955](https://github.com/magento/magento2/issues/9955) + * We’ve resolved a fatal error in the repository generator. Both `InputException` and `NoSuchEntityException` now require a Phrase object as their first constructor argument. [GitHub-10601](https://github.com/magento/magento2/issues/10601) ### Catalog + * Magento now displays products that are filtered to a particular store view even when the corresponding store view has been deleted. Previously, Magento displayed a continuously spinning spinner widget and this error message: **A technical problem with the server created an error. Try again to continue what you were doing. If the problem persists, try again later.** + * `LowestPriceOptionsProvider` now returns products with the `tax_class_id` attribute, which is used for price calculation operations such as tax adjustment. [GitHub-6729](https://github.com/magento/magento2/issues/6729), [GitHub-6457](https://github.com/magento/magento2/issues/6457), [GitHub-7362](https://github.com/magento/magento2/issues/7362) + * The grouped product page now shows the lowest price for a simple product. [GitHub-9266](https://github.com/magento/magento2/issues/9266) + * We’ve fixed an issue with `priceScope` that had resulted in the storefront not displaying product prices that should be displayed. ### Configurable products + * Magento no longer displays the inappropriate product price when a configurable product has two price options. Previously, Magento displayed the out-of-stock price of a configurable product when both an out-of-stock and in-stock price were configured. + * Configurable products no longer show up on category page when all children are disabled by a mass action, and the **display out-of-stock products** setting is off. + * If a configurable product is part of a shipment that is being created by REST, only the parent's quantity will count towards the total quantity of shipped items. Previously, Magento counted both child and parent products when calculating quantity. ### Frameworks + * You can now run Magento in an environment where Redis cache is installed and the PHPRedis extension is enabled. + * Magento now properly loads default values for `ArraySerialized` fields. + * You can now set a default value to fields with config field type `image` or `file`. [GitHub-10253](https://github.com/magento/magento2/issues/10253) + * We’ve removed `Zend_Json` from the data object, test suite, and package information. [GitHub-10306](https://github.com/magento/magento2/issues/10306), [GitHub-10320](https://github.com/magento/magento2/issues/10320), [GitHub-10340](https://github.com/magento/magento2/issues/10340) + * We’ve replaced the usage of `Zend_Json::encode` in the setup marketplace tests. [GitHub-10329](https://github.com/magento/magento2/issues/10329) + * We’ve removed the usage of `Zend_Json` from the JSON controller. [GitHub-10342](https://github.com/magento/magento2/issues/10342) + * We’ve removed `Zend_Json` from `Setup/Migration.php`. [GitHub-10341](https://github.com/magento/magento2/issues/10341) + * We have replaced `Zend_Json` with `\Magento\Framework\Serialize\JsonConverter::convert` in customer data. [GitHub-10259](https://github.com/magento/magento2/issues/10259) ### General + * We've fixed JavaScript date validation on the storefront. Previously, validation of the date of birth field during customer registration when changing the default locale did not work. *Fix submitted by community member Joachim Vanthuyne in pull request 11067.* + * We’ve added a CSS selector to remove an additional top-margin that was rendered when you added a link widget to the footer in the Luma theme. Previously, when you added new footer links, the block of footer links did not line up with the default footer links. *Fix submitted by community member Sandro Wagner in pull request 11063.* + * String localizations now work as expected when phrases include text wrapped with single quotation marks. + * PHPCS can now correctly parse the syntax of PHP 7.x return types. + * You can now generate unsecured URLs even when the current URL is secure. + * The Checkout authentication popup now contains the correct message. [GitHub-9533](https://github.com/magento/magento2/issues/9533), [GitHub-10627](https://github.com/magento/magento2/issues/10627) + * The **Reset** button no longer causes a JavaScript error on the URL rewrite creation page. [GitHub-10462](https://github.com/magento/magento2/issues/10462) + * Websites that conduct transactions in multiple currencies can now send currency to Google Analytics. [GitHub-10508](https://github.com/magento/magento2/issues/10508) + * The Products Ordered report now shows the simple (child) products of configurable products. + * Creating a new product with a custom attribute set now works as expected. [GitHub-10565](https://github.com/magento/magento2/issues/10565), [GitHub-10575](https://github.com/magento/magento2/issues/10575) + * Cookie lifetime works as expected when you set the form_key value to zero (0). [GitHub-10528](https://github.com/magento/magento2/issues/10528) + * We’ve fixed an issue where Magento did not retrieve relevant data when displaying reviews if `$displayIfNoReviews` was set to false. [GitHub-4530](https://github.com/magento/magento2/issues/4530) + * You can now remove the system customer address and customer attributes from specific forms and prevent them from displaying on the frontend. ### Indexing + * We’ve fixed multiple issues where indexes were invalidated as a result of typical import, scheduled import, and catalog permission tasks. ### Orders + * You can now use PayPal Express Checkout to place an order in a split-database environment. + * If a credit card error occurs on an order, the user can now correct the error and successfully create a new order. Previously, Magento displayed the following error on any subsequent order, even when you entered accurate credit card information: "A customer with the same email already exists in an associated website”. + * We’ve added a `name` attribute to the layout default renderer, and you can now add a new column to the Admin Sales > Order table . Previously, the layout default renderer lacked a `name` attribute. *Fix submitted by community member Gabriel Somoza in pull request 11076.* ### Payment methods + * Double-clicking the **Place Order** button when using the Braintree payment method to place an order no longer creates duplicate order requests. [GitHub-10767](https://github.com/magento/magento2/issues/10767) + * Magento now completes processing an order if the customer needs to re-enter credit card information during the order process. Previously, Magento returned this error `No such entity with customerId = 0`. ### Search + * Search terms from the same synonym group now return the same results. + * A search query results are now more consistent. Previously, identical search terms entered in different browser tabs resulted in different search results. + * You can now search for attribute values on the store-view level. ### Sitemap + * Sitemap no longer crashes if the scope of the name attribute is set to global. [GitHub-5941](https://github.com/magento/magento2/issues/5941), [GitHub-8999](https://github.com/magento/magento2/issues/8999) ## Community contributions diff --git a/guides/v2.2/release-notes/ReleaseNotes2.2.1EE.md b/guides/v2.2/release-notes/ReleaseNotes2.2.1EE.md index 007c6358edc..15a544d6a81 100644 --- a/guides/v2.2/release-notes/ReleaseNotes2.2.1EE.md +++ b/guides/v2.2/release-notes/ReleaseNotes2.2.1EE.md @@ -33,188 +33,241 @@ See [Magento Security Center](https://magento.com/security/patches/magento-221-2 ### Installation, upgrade, deployment + * We’ve improved the message that Magento displays during upgrade if any schema or data version in the `setup_modules` database is higher than the current module version in the code. *Fix submitted by community member Fabian Schmengler in pull request 11064.* + * If you do not specify `—base_url` during installation, all URLs now use the host and port of the current request to create URLs. + * When a callback during commit throws an exception, the calling plugin can now distinguish this exception from an unsuccessful commit and logs an exception. Previously, Magento threw an “Asymmetric transaction rollback error”. [GitHub-9955](https://github.com/magento/magento2/issues/9955) + * We’ve resolved a fatal error in the repository generator. Both `InputException` and `NoSuchEntityException` now require a Phrase object as their first constructor argument. [GitHub-10601](https://github.com/magento/magento2/issues/10601) ### AMQP + * The `inventoryQtyCounter` consumer now works without having RabbitMQ installed. ### Catalog + * Magento now displays products that are filtered to a particular store view even when the corresponding store view has been deleted. Previously, Magento displayed a continuously spinning spinner widget and this error message: **A technical problem with the server created an error. Try again to continue what you were doing. If the problem persists, try again later.** + * You can now save custom shared catalogs. + * Magento no longer displays a 404 error when you change category permissions from Product Detail pages when multistore view is enabled. + * `LowestPriceOptionsProvider` now returns products with the `tax_class_id` attribute, which is used for price calculation operations such as tax adjustment. [GitHub-6729](https://github.com/magento/magento2/issues/6729), [GitHub-6457](https://github.com/magento/magento2/issues/6457), [GitHub-7362](https://github.com/magento/magento2/issues/7362) + * The grouped product page now shows the lowest price for a simple product. [GitHub-9266](https://github.com/magento/magento2/issues/9266) + * We’ve fixed an issue with `priceScope` that had resulted in the storefront not displaying product prices that should be displayed. ### Cart and checkout + * Magento now provides a **Login** button so that you can resume your checkout process if you return to the check out page after leaving it mid-order. ### Configurable products + * Magento no longer displays the inappropriate product price when a configurable product has two price options. Previously, Magento displayed the out-of-stock price of a configurable product when both an out-of-stock and in-stock price were configured. + * Configurable products no longer show up on category page when all children are disabled by a mass action, and the **display out-of-stock products** setting is off. + * If a configurable product is part of a shipment that is being created by REST, only the parent's quantity will count towards the total quantity of shipped items. Previously, Magento counted both child and parent products when calculating quantity. + * Configurable product pricing now reflects only in-stock configurations as expected. ### Frameworks + * You can now run Magento in an environment where Redis cache is installed and the PHPRedis extension is enabled. + * Magento now properly loads default values for `ArraySerialized` fields. + * You can now set a default value to fields with config field type `image` or `file`. [GitHub-10253](https://github.com/magento/magento2/issues/10253) + * We’ve removed `Zend_Json` from the data object, test suite, and package information. [GitHub-10306](https://github.com/magento/magento2/issues/10306), [GitHub-10320](https://github.com/magento/magento2/issues/10320), [GitHub-10340](https://github.com/magento/magento2/issues/10340) + * We’ve replaced the usage of `Zend_Json::encode` in the setup marketplace tests. [GitHub-10329](https://github.com/magento/magento2/issues/10329) + * We’ve removed the usage of `Zend_Json` from the JSON controller. [GitHub-10342](https://github.com/magento/magento2/issues/10342) + * We’ve removed `Zend_Json` from `Setup/Migration.php`. [GitHub-10341](https://github.com/magento/magento2/issues/10341) + * We have replaced `Zend_Json` with `\Magento\Framework\Serialize\JsonConverter::convert` in customer data. [GitHub-10259](https://github.com/magento/magento2/issues/10259) ### General + * We've fixed JavaScript date validation on the storefront. Previously, validation of the date of birth field during customer registration when changing the default locale did not work. *Fix submitted by community member Joachim Vanthuyne in pull request 11067.* + * We’ve added a CSS selector to remove an additional top-margin that was rendered when you added a link widget to the footer in the Luma theme. Previously, when you added new footer links, the block of footer links did not line up with the default footer links. *Fix submitted by community member Sandro Wagner in pull request 11063.* + * You can now remove system customer address and customer attributes from specific forms to prevent them from displaying on the frontend. + * String localizations now work as expected when phrases include text wrapped with single quotation marks. + * PHPCS can now correctly parse the syntax of PHP 7.x return types. + * You can now remove custom attributes from the Use in Forms grid. + * You can now generate unsecured URLs even when the current URL is secure. + * The Checkout authentication popup now contains the correct message. [GitHub-9533](https://github.com/magento/magento2/issues/9533), [GitHub-10627](https://github.com/magento/magento2/issues/10627) + * The **Reset** button no longer causes a JavaScript error on the URL rewrite creation page. [GitHub-10462](https://github.com/magento/magento2/issues/10462) + * Websites that conduct transactions in multiple currencies can now send currency to Google Analytics. [GitHub-10508](https://github.com/magento/magento2/issues/10508) + * The Products Ordered report now shows the simple (child) products of configurable products. + * Creating a new product with a custom attribute set now works as expected. [GitHub-10565](https://github.com/magento/magento2/issues/10565), [GitHub-10575](https://github.com/magento/magento2/issues/10575) + * Cookie lifetime works as expected when you set the form_key value to zero (0). [GitHub-10528](https://github.com/magento/magento2/issues/10528) + * We’ve fixed an issue where Magento did not retrieve relevant data when displaying reviews if `$displayIfNoReviews` was set to false. [GitHub-4530](https://github.com/magento/magento2/issues/4530) + * You can now remove the system customer address and customer attributes from specific forms and prevent them from displaying on the frontend. ### Indexing + * We’ve fixed multiple issues where indexes were invalidated as a result of typical import, scheduled import, and catalog permission tasks. ### Orders + * You can now use PayPal Express Checkout to place an order in a split-database environment. + * If a credit card error occurs on an order, the user can now correct the error and successfully create a new order. Previously, Magento displayed the following error on any subsequent order, even when you entered accurate credit card information: "A customer with the same email already exists in an associated website”. + * We’ve added a `name` attribute to the layout default renderer, and you can now add a new column to the **Admin Sales > Order table**. Previously, the layout default renderer lacked a `name` attribute. *Fix submitted by community member Gabriel Somoza in pull request 11076.* ### Payment methods + * Double-clicking the **Place Order** button when using the Braintree payment method to place an order no longer creates duplicate order requests. [GitHub-10767](https://github.com/magento/magento2/issues/10767) + * Magento now completes processing an order if the customer needs to re-enter credit card information during the order process. Previously, Magento returned this error `No such entity with customerId = 0`. ### Search + * Search terms from the same synonym group now return the same results. + * A search query results are now more consistent. Previously, identical search terms entered in different browser tabs resulted in different search results. + * You can now search for attribute values on the store-view level. + * Magento now displays grouped products in the Shared Catalog page when Elasticsearch is enabled. ### Sitemap + * Sitemap no longer crashes if the scope of the name attribute is set to global. [GitHub-5941](https://github.com/magento/magento2/issues/5941), [GitHub-8999](https://github.com/magento/magento2/issues/8999) ### Staging + * Bundle simple products now reflect expected changes after a scheduled update. ### Visual Merchandiser + * We’ve improved the performance of editing or saving products in large categories (more than 18,000 products per category). + * Visual Merchandiser now retains page view options and position after you remove a product. Previously, when you removed a product from a category, and you weren't on the first page, Magento returned you to the first page. ## Community contributions diff --git a/guides/v2.2/release-notes/ReleaseNotes2.2.2CE.md b/guides/v2.2/release-notes/ReleaseNotes2.2.2CE.md index e9347c40d13..b4e2e1b1176 100644 --- a/guides/v2.2/release-notes/ReleaseNotes2.2.2CE.md +++ b/guides/v2.2/release-notes/ReleaseNotes2.2.2CE.md @@ -48,440 +48,573 @@ Looking for more information on these new features as well as many others? Check ### Installation, setup, and deployment + * We've increased the `memory_limit` of the `.user.ini` files to 2GB. [GitHub-11322](https://github.com/magento/magento2/issues/11322) + * The contents of the `js-translation.json` files are now correct when you deploy static content with multiple locales. + * All cron dates are now saved in a single format and displayed according to user preference or needs. [GitHub-4237](https://github.com/magento/magento2/issues/4237) + * Static versioning and minification no longer break email font styles. [GitHub-8241](https://github.com/magento/magento2/issues/8241) + * You can now successfully upgrade from 2.1.x to 2.2.0. Previously, when you tried to upgrade from 2.1.9 to 2.2.0, Magento displayed the **postcode is a required field** error message, and `setup:upgrade` failed. *Fix submitted by Mr. Lewis in pull request 11651*. [GitHub-11095](https://github.com/magento/magento2/issues/11095) + * We've replaced `FollowSymLinks` with `SymLinksIfOwnerMatch` in the `htaccess` templates. [GitHub-10811](https://github.com/magento/magento2/issues/10811) + * The `htaccess` template now supports `apache2.4` commands. *Fix submitted by Jonas Hünig in pull request 11459*. [GitHub-10810](https://github.com/magento/magento2/issues/10810) [GitHub-10810](https://github.com/magento/magento2/issues/10810) + * `configVariables` now contains a variable for VAT numbers. *Fix submitted by JeroenVanLeusden in pull request 11486*. [GitHub-10996](https://github.com/magento/magento2/issues/10996) + * We've fixed an issue with using the command line to install or remove `crontab`. Previously, installing or removing `crontab` via the command line appended `2>&1` to entries, even those not related to Magento. *Fix submitted by [@adrian-martinez-interactiv4](https://github.com/adrian-martinez-interactiv4) in pull request 11591*. [GitHub-11586](https://github.com/magento/magento2/issues/11586) + * You can now install and uninstall `cron` via the `bin/magento cron:install` command. *Fix submitted by [@adrian-martinez-interactiv4](https://github.com/adrian-martinez-interactiv4) in pull request 11359*. + * The `admin:user:create` command now recognizes the configured table prefix. *Fix submitted by Oscar Recio in pull request 11199*. [GitHub-11176](https://github.com/magento/magento2/issues/11176) + * The default cron success or failure history is now seven days. *Fix submitted by Max Chadwick in pull request 11505*. + * The `admin:user:create` command now asks for the input value if a required option is not passed. *Fix submitted by Christian Münch in pull request 11510*. + * The `.user.ini` files at `/.user.ini` and `/pub/.user.ini` now specify a `memory_limit` value of at least 1G to 2G for debugging purposes. *Fix submitted by Mr. Lewis in pull request 11734*. [GitHub-11322](https://github.com/magento/magento2/issues/11322) + * The `setup:install` command now has an `-i` flag. It validates parameters interactively. *Fix submitted by Denis Ristic in pull request 11425*. + * Magento now restarts cron jobs as needed after a cron job was terminated during execution. ### Catalog + * You can now enter strings that exceed 255 characters in Admin or frontend input fields. Previously, Magento saved only the first 255 characters of a long input string. [GitHub-6238](https://github.com/magento/magento2/issues/6238) + * Magento now renders color attribute swatches correctly for the search result page if sorting for color attribute is enabled. *Fix submitted by Roman K. in pull request 12077*. [GitHub-10628](https://github.com/magento/magento2/issues/10628) + * The `\Magento\Quote\Model\ResourceModel\Quote\Item\Collection` now returns items that have only existing relations in the `catalog_product_entity` table. Previously, Magento loaded quote items with non-existing products. + * Magento no longer duplicates attribute option values. Previously, Magento did not confirm the uniqueness of an attribute option value if you created it using REST. [GitHub-8846](https://github.com/magento/magento2/issues/8846) + * Magento now saves the correct background color for images. Previously, product images always had a black background when using the Luma theme. [GitHub-8799](https://github.com/magento/magento2/issues/8799) + * You can now save a product custom option price with a value of 0 (zero) by simply not entering a price. *Fix submitted by Raul Mateos in pull request 11843*. [GitHub-4808](https://github.com/magento/magento2/issues/4808) + * You can now assign products to categories if those products are already assigned to the category tree. [GitHub-8970](https://github.com/magento/magento2/issues/8970) + * The `apply_to` setting for attributes is no longer hard-coded. [GitHub-7225](https://github.com/magento/magento2/issues/7225) + * The **Add-to-cart** checkboxes in Related Products are no longer visible on the storefront when **$canItemsAddToCart** is set to **false**. *Fix submitted by Marc Rodriguez in pull request 11610*. [GitHub-6891](https://github.com/magento/magento2/issues/6891) + * You can now successfully save and duplicate a simple product. Previously, when you clicked the **Save and Duplicate** option for an existing simple product in the Catalog Manager, Magento did not duplicate the product, but threw an error. *Fix submitted by Roman K. in pull request 12001*. [GitHub-11532](https://github.com/magento/magento2/issues/11532) + * The Magento Admin Product Edit page now displays product alerts as expected. *Fix submitted by Raul Mateos in pull request 11445*. [GitHub-10007](https://github.com/magento/magento2/issues/10007) + * The `StockItemCriteriaInterface` method `setProductsFilter` now accepts an array of IDs. Previously, this method accepted either a single integer or an array, but returned only one item. *Fix submitted by Kirill Morozov in pull request 11500*. [GitHub-7678](https://github.com/magento/magento2/issues/7678) + * The `$sortByPostion` flag has been added to the `getChildren()` method. *Fix submitted by Denis Ristic in pull request 11342*. [GitHub-11310](https://github.com/magento/magento2/issues/11310) + * `ProductRepository` SKU cache is no longer corrupted when `cacheLimit` is reached . *Fix submitted by Thomas in pull request 11553*. + * Magento no longer displays the perpetual spinner when you switch custom options types in the Product Edit page. *Fix submitted by Paul Briscoe in pull request 11824*. [GitHub-10291](https://github.com/magento/magento2/issues/10291) ### Cart and checkout + * The default shipping-save-processor now has a payload extender. This feature allows third party extensions to modify the payload for the shipping address selection process. As a result, developers can now add `extension_attributes` while minimizing potential extension conflicts. *Fix submitted by Navarr Barnier in pull request 11249*. + * You can now view the **Products in cart** report if the cart contains a bundle or a grouped product. Previously, when you viewed the Products in Cart report, Magento threw an exception under these conditions. [GitHub-12079](https://github.com/magento/magento2/issues/12079) + * Magento now recognizes zip codes without spaces for addresses located in the Netherlands. [GitHub-11898](https://github.com/magento/magento2/issues/11898) + * Magento now accepts coupon codes with special characters during checkout. *Fix submitted by Gabriel Queiroz Silva in pull request 11710*. [GitHub-9763](https://github.com/magento/magento2/issues/9763) + * We've improved cache control headers. + * Magento no longer throws an exception when you place an order using a new address. Previously, Magento displayed this error, **An error occurred on the server. Please try to place the order again.**. [GitHub-10583](https://github.com/magento/magento2/issues/10583) + * Magento now includes the Filter Groups and the Sort Order of the `$searchCriteria` parameter in the `searchCriteria` Object that is provided for the EAV set repository. *Fix submitted by David Verholen in pull request 11421*. [GitHub-11022](https://github.com/magento/magento2/issues/11022) + * Magento no longer sets the product price to zero when you use REST to add a product to an empty cart. Previously, Magento displayed an error when you used REST to populate an empty cart. *Fix submitted by Peter Jaap Blaakmeer in pull request 11458*. [GitHub-2991](https://github.com/magento/magento2/issues/2991), [GitHub-2991](https://github.com/magento/magento2/issues/2991) + * You can now translate the placeholder text for the checkout password field. *Fix submitted by JeroenVanLeusden in pull request 11493*. + * Magento now redirects a user to the checkout page if he logs in after selecting the **Checkout** button. Previously, a user was redirected to the store home page. *Fix submitted by [@p-bystritsky](https://github.com/p-bystritsky) in pull request 11876*. [GitHub-10834](https://github.com/magento/magento2/issues/10834) ### Configurable products + * `Magento\ConfigurableProduct\Model\Product\Type\Configurable:::loadUsedProducts` no longer ignores array keys that are returned by product collections. [GitHub-11880](https://github.com/magento/magento2/issues/11880) ### Frameworks + * The NGINX configuration sample now contains a health check. *Fix submitted by Andrew Howden in pull request 11690*. [GitHub-11157](https://github.com/magento/magento2/issues/11157) + * Magento now allows underscore characters in module names and also permits their use when modules add a block to the layout via XML. Previously, Magento did not support underscore characters in module names to be added to the layout via XML. *Fix submitted by Ben Tideswell in pull request 11765*. + * You can now save using the mass action **Update attributes** option when multiselect attributes are set. *Fix submitted by Manu Gonzalez Rodriguez in pull request 11349*. [GitHub-11329](https://github.com/magento/magento2/issues/11329) #### App framework + * Magento now correctly handles all meta keywords and description in categories and in every product in locales that use non-Latin characters. [GitHub-10682](https://github.com/magento/magento2/issues/10682) + * You can now include negative values in an XML export file and open the file with Office XML handler. Previously, the export files did not open correctly, and an Office XML handler error log was created. *Fix submitted by hauso in pull request 11757*. [GitHub-11729](https://github.com/magento/magento2/issues/11729), [GitHub-11729](https://github.com/magento/magento2/issues/11729) + * The Magento custom URL rewrite functionality now works as expected when you include redirection of Magento controllers. *Fix submitted by Marc Rodriguez in pull request 11470*. [GitHub-10231](https://github.com/magento/magento2/issues/10231), [GitHub-11469](https://github.com/magento/magento2/issues/11469), [GitHub-11471](https://github.com/magento/magento2/issues/11471) + * Magento now supports the setting of HTTP response status code in redirected responses. [GitHub-9028](https://github.com/magento/magento2/issues/9028) + * Magento now throws a meaningful exception when a virtual theme does not have a physical parent theme. *Fix submitted by David Fecke in pull request 11240*. + * `app:config:dump` no longer adds an extra space to multiline array values. *Fix submitted by [@adrian-martinez-interactiv4](https://github.com/adrian-martinez-interactiv4) in pull request 11439*. [GitHub-11328](https://github.com/magento/magento2/issues/11328) + * The TRAVIS_BRANCH variable is now surrounded by double-quotes instead of single-quotes . *Fix submitted by [@adrian-martinez-interactiv4](https://github.com/adrian-martinez-interactiv4) in pull request 11704*. + * The doc block of `setValue` in FilterBuilder now reflects that the `setValue` method will accept an array. *Fix submitted by ByteCreation in pull request 11854*. + * `htaccess` syntax now uses `Options -Indexes` instead of `Options All -Indexes`. Previously, Magento used `Options All -Indexes`, which resulted in Magento rendering a 500 error page because of high restrictions for Options overrides in shared hosting environments. *Fix submitted by [@Danny Verkade - Cream](https://github.com/dverkade) in pull request 11327*. [GitHub-10812](https://github.com/magento/magento2/issues/10812) #### Configuration framework + * The X-Magento-Tags header can now contain white space. *Fix submitted by Malyovanets Nickolas in pull request 11767*. [GitHub-7640](https://github.com/magento/magento2/issues/7640), [GitHub-7640](https://github.com/magento/magento2/issues/7640) + * The config array can now read all settings from `config`. Previously, the config array was hardcoded to read three settings only. *Fix submitted by Vova Yatsyuk in pull request 11643*. #### JavaScript framework + * Magento no longer incorrectly overly encodes UTF-8 files when JavaScript Bundling is enabled. Previously, this issue resulted in poor character encoding on the storefront. [GitHub-10562](https://github.com/magento/magento2/issues/10562), [GitHub-6733](https://github.com/magento/magento2/issues/6733) + * Magento now exports the Confirmed email and Account Lock values when you export customer data. Previously, this information was missing from the exported CSV. *Fix submitted by Luke Rodgers in pull request 11437*. [GitHub-10765](https://github.com/magento/magento2/issues/10765), [GitHub-10765](https://github.com/magento/magento2/issues/10765) + * You can now submit the search form from the keyboard. *Fix submitted by Romain Ruaud in pull request 11250*. [GitHub-10275](https://github.com/magento/magento2/issues/10275) #### Session framework + * We've removed the 30-second timeout limit for the session locking mechanism when Redis is used for session storage. + * A typo in `sessionStorage` polyfill has been corrected. *Fix submitted by mszydlo in pull request 11219*. #### Web API framework + * The `customerAccountManagementV1` interface now provides the `POST /V1/customers/resetPassword` endpoint. ### General + * XHTML templates now use schema URNs. [GitHub-6661](https://github.com/magento/magento2/issues/6661) + * The image size used as a cross-sell product placeholder now equals the size of the image used in product listing placeholder images. Previously, the cross-sell product placeholder image was too small. [GitHub-12017](https://github.com/magento/magento2/issues/12017) + * Magento now downloads the backup `.tgz` file that you select for downloading. Previously, no matter which backup you selected, Magento downloaded the most recent backup. *Fix submitted by Pieter Cappelle in pull request 11595*. [GitHub-10032](https://github.com/magento/magento2/issues/10032) + * Magento now leaves a product's date attribute's current date field blank if you do not enter a value. *Fix submitted by [@enriquei4](https://github.com/enriquei4) in pull request 11749*. [GitHub-9869](https://github.com/magento/magento2/issues/9869), [GitHub-11636](https://github.com/magento/magento2/issues/11636), [GitHub-6661](https://github.com/magento/magento2/issues/6661) + * The Magento store code validation `regex` now supports uppercase letters in store code. [GitHub-11996](https://github.com/magento/magento2/issues/11996) + * When you use a UI component-based form and add a custom regular expression pattern validation to an input field, the supplied pattern is now properly converted from a string to a JavaScript RegEx object. *Fix submitted by Brett in pull request 11565*. [GitHub-9919](https://github.com/magento/magento2/issues/9919) + * Magento now sets ISO-valid language code in the HTML header. *Fix submitted by Cristian Sanclemente in pull request 11561*. [GitHub-11540](https://github.com/magento/magento2/issues/11540) + * Magento now validates CMS blocks before creating one. *Fix submitted by thiagolima-bm in pull request 11802*. [GitHub-8236](https://github.com/magento/magento2/issues/8236), [GitHub-4831](https://github.com/magento/magento2/issues/4831) + * A custom field's name attribute no longer remains empty during form creation. *Fix submitted by Paul Briscoe in pull request 11637*. [GitHub-9944](https://github.com/magento/magento2/issues/9944) + * `widget.xml` files can now contain multiple `depends` parameters. *Fix submitted by Raul E Watson in pull request 11495*. [GitHub-9783](https://github.com/magento/magento2/issues/9783) + * You can now use an `adminhtml` URL that differs from `admin` and set **Add Store Code to Urls** to **Yes**. *Fix submitted by Sylvain Rayé in pull request 11460*. [GitHub-11140](https://github.com/magento/magento2/issues/11140), [GitHub-11140](https://github.com/magento/magento2/issues/11140) + * You can now add an HTML node to the page XML root of a theme without causing a validation error. [GitHub-11697](https://github.com/magento/magento2/issues/11697) + * The `customer_data_object` firstname is no longer equal to `orig_customer_data_object` after you save an existing user account with a new name or address. *Fix submitted by Roman K. in pull request 11676*. [GitHub-7915](https://github.com/magento/magento2/issues/7915) + * A typo in `Paypal/Test/TestCase/OnePageCheckoutTest.xml` has been fixed. *Fix submitted by Mr. Lewis in pull request 11673*. [GitHub-7591](https://github.com/magento/magento2/issues/7591) + * We’ve fixed the dashboard graph’s y-axis range. *Fix submitted by Oscar Recio in pull request 11751*. [GitHub-7927](https://github.com/magento/magento2/issues/7927) + * Magento no longer throws an error when you try to load a quote item collection. [GitHub-8954](https://github.com/magento/magento2/issues/8954) + * Customer Groups are now located in the Magento Admin under **Customers > Customer Groups**. *Fix submitted by Mr. Lewis in pull request 11677*. + * Magento now wraps long label text by word instead of letter. *Fix submitted by [@enriquei4](https://github.com/enriquei4) in pull request 11745*. [GitHub-7099](https://github.com/magento/magento2/issues/7099), [GitHub-711727](https://github.com/magento/magento2/issues/11727) + * Magento now displays and expects the format of birth years to match `yyyy` instead of `yy`. *Fix submitted by Manu Gonzalez Rodriguez in pull request 11351*. [GitHub-11332](https://github.com/magento/magento2/issues/11332) + * Magento now displays the State/Province field after you edit the billing address on sales orders. *Fix submitted by Raul Mateos in pull request 11381*. [GitHub-10441](https://github.com/magento/magento2/issues/10441) + * You can now successfully sync billing and shipping addresses on Admin Reorder and Admin Customer Create Order page for selected, existing addresses. *Fix submitted by Ievgen Sentiabov in pull request 11385*. [GitHub-10856](https://github.com/magento/magento2/issues/10856) + * The `FixAccountManagementTest` unit test now works as expected. *Fix submitted by [@adrian-martinez-interactiv4](https://github.com/adrian-martinez-interactiv4) in pull request 11607*. + * You can now submit a form by pressing **Enter**. *Fix submitted by Raul Encinas in pull request 11827*. [GitHub-4696](https://github.com/magento/magento2/issues/4696) + * The Store View switcher now works as expected. *Fix submitted by thiagolima-bm in pull request 11337*. [GitHub-10908](https://github.com/magento/magento2/issues/10908), [GitHub-11211](https://github.com/magento/magento2/issues/11211) + * We've removed object manager references as well as deprecated calls to `$messageManager`. *Fix submitted by Atish Goswami in pull request 12061*. + * Magento now prepares street data to guarantee that the street array will be converted to a string. *Fix submitted by Vova Yatsyuk in pull request 12130*. + * Disabling and enabling the WYSIWYG editor with `ui/form/element/helper/service` checkbox now works as expected. *Fix submitted by Vova Yatsyuk in pull request 12141*. + * The `sitemap.xml` `last mod` time stamp now contains the correct date. [GitHub-9151](https://github.com/magento/magento2/issues/9151) + * The Visual Swatch Attribute drop-down menu (accessible from Manage Swatch tab) now works as expected. Previously, when you clicked the **Add Swatch** button from this tab, the drop-down menu was not displayed. *Fix submitted by [@enriquei4](https://github.com/enriquei4) in pull request 11747*. [GitHub-11534](https://github.com/magento/magento2/issues/11534) + * Users are now subscribed by default to the Advanced Reporting service. + * The design rule hint message no longer includes a typo. *Fix submitted by Javier Villanueva in pull request 11390*. [GitHub-8958](https://github.com/magento/magento2/issues/8958) + * Storefront labels and messages now use the American English spelling of “optimization”. *Fix submitted by David Angel in pull request 11345*. + * The **Add page** button now works as expected. Previously, when you clicked **Add page** while logged in to the Admin, and clicked **Save**, Magento did not create a new page, but returned you to the **Orders** page, and displayed this message: **Data key is missing: code-entity**. *Fix submitted by Tomasz Gregorczyk in pull request 11205*. [GitHub-11163](https://github.com/magento/magento2/issues/11163) ### Import/export + * To improve performance, Magento now loads all relations using one query per bunch. Previously, Magento loaded relations one by one (multiple times for multiple attributes types). [GitHub-10920](https://github.com/magento/magento2/issues/10920) + * Magento now provides more helpful error messages if problems occur during the import of products and images using **System > Import Products**. [GitHub-4711](https://github.com/magento/magento2/issues/4711) + * Magento now provides better error reporting when an error occurs during the import of a CSV file with a semicolon delimiter. Previously, Magento stopped import, but did not provide a link to the error report CSV file. [GitHub-5015](https://github.com/magento/magento2/issues/5015) + * Exception message was passed as a exception description argument instead of exception message. *Fix submitted by Tim Bezhashvyly in pull request 11363*. [GitHub-6924](https://github.com/magento/magento2/issues/6924) + * Importing an import file to update customer data no longer results in the `entity fields` being removed if the columns were not present on the imported file. *Fix submitted by Juan Alonso in pull request 11968*. ### Indexing + * Magento no longer re-indexes entities if they are unchanged, which improves the performance of the refresh index cron job without any loss of functionality. [GitHub-4893](https://github.com/magento/magento2/issues/4893) + * Magento now correctly resets status to `StateInterface::STATUS_INVALID` if a fatal PHP error occurs during indexing. *Fix submitted by Lars Roettig in pull request 11183*. [GitHub-11166](https://github.com/magento/magento2/issues/11166) ### Infrastructure + * New static block tests now detect blocks without a name attribute. We've also added a missing block name to allow block customization, and added a name for the order items grid default renderer block. *Fix submitted by Ihor Sviziev in pull request 11235*. [GitHub-10824](https://github.com/magento/magento2/issues/10824) + * We've ported a fix for the Travis CI builds for the `2.2-develop` branch to the `2.3-develop` branch. *Fix submitted by Ievgen Shakhsuvarov in pull request 11555*. + * Integration tests now reset the integration test database when `TESTS_CLEANUP` is set to enabled. *Fix submitted by Joshua Warren in pull request 11499*. [GitHub-10025](https://github.com/magento/magento2/issues/10025) + * We fixed a typo in the `Paypal/Test/TestCase/OnePageCheckoutTest.xml`. *Fix submitted by Mr. Lewis in pull request 11673*. [GitHub-7591](https://github.com/magento/magento2/issues/7591) + * `FileClassScannerTest` no longer has a dependency upon `Magento_Catalog`. *Fix submitted by WEXO team in pull request 12144*. [GitHub-11230](https://github.com/magento/magento2/issues/11230) ### Newsletters + * Newsletter subscriptions now work as expected. Previously, Magento did not set the `create-date` field, and the `change_status_at` was broken. [GitHub-4004](https://github.com/magento/magento2/issues/4004) + * When a customer with the same email address has an account on different stores in the same Magento installation, changes to the newsletter subscription in one account no longer affects the other subscription. *Fix submitted by Sergio Baixauli in pull request 12035*. [GitHub-10014](https://github.com/magento/magento2/issues/10014) + * Magento now sends email confirmation of newsletter subscription to a user only when the user is newly subscribed. *Fix submitted by Oscar Recio in pull request 11317*. [GitHub-5439](https://github.com/magento/magento2/issues/5439) ### Orders + * Magento now retains an order's `relation_child_id` and `relation_child_real_id` field values when you edit the order. Previously, after you edited an order, the values of the `relation_child_id` and `relation_child_real_id` fields of the old order did not persist. [GitHub-10195](https://github.com/magento/magento2/issues/10195) + * Magento no longer duplicates the **Add Products** button after you change the customer group. [GitHub-11868](https://github.com/magento/magento2/issues/11868) + * New orders now appear as expected in the Order table after migrating data. [GitHub-10185](https://github.com/magento/magento2/issues/10185) + * You can now create an order from the Customer Edit page when working from the Admin. *Fix submitted by Roman K. in pull request 11952*. [GitHub-11832](https://github.com/magento/magento2/issues/11832) + * The `getTracksCollection()` method now returns collection objects. Previously, this method returned either collections or arrays. *Fix submitted by Roman K. in pull request 12173*. [GitHub-8022](https://github.com/magento/magento2/issues/8022) + * References to `Zend_Pdf_Color_RGB`now correctly use the camel-case class name (`Zend_Pdf_Color_Rgb`). Previously, the former class name resulted in references to wrong or nonexistent classes. *Fix submitted by Danny Verkade - Cream in pull request 11830*. [GitHub-11581](https://github.com/magento/magento2/issues/11581) + * The Order table now accurately reflects changes in order status. + * Invoices now display coupon code information. *Fix submitted by Cristian Sanclemente in pull request 11635*. [GitHub-10168](https://github.com/magento/magento2/issues/10168) + * Magento no longer lets you cancel an invoice more than once. *Fix submitted by Oscar Recio in pull request 11261*. [GitHub-9968](https://github.com/magento/magento2/issues/9968) + * `guest.php` now handles breadcrumb performance as expected. *Fix submitted by Juliano Vargas in pull request 11299*. [GitHub-11275](https://github.com/magento/magento2/issues/11275) + * Magento now sends confirmation emails to customers for orders containing a grouped product. Previously, when you tried to submit an invoice for an order containing a grouped product, Magento threw an error and did not send confirmation email to the customer. *Fix submitted by Michiel Gerritsen in pull request 11297*. [GitHub-5105](https://github.com/magento/magento2/issues/5105) ### Payment methods + * Magento PayPal integration now supports the Indian Rupee currency (INR). + * Braintree online refunds now work when you are using two Braintree accounts on two separate websites. Previously, when using two Braintree accounts for two separate websites, Magento did not process the refund, and displayed this message: **Sorry, but something went wrong**. + * Administrators with limited privileges can now log in without errors. Previously, Magento threw an error, but did not log errors in either the server or Magento logs. [GitHub-11700](https://github.com/magento/magento2/issues/11700) + * Corrected a typo in a translatable string. *Fix submitted by Danny Verkade - Cream in pull request 11569*. + * Magento now displays the correct payment method string as displayed during checkout. Previously, the translated string associated the payment method title for a particular store view was not consistently displayed. *Fix submitted by Bernhard in pull request 11165*. [GitHub-7582](https://github.com/magento/magento2/issues/7582) ### Reports + * The search for the Customer Review report now works as expected. *Fix submitted by Oscar Recio in pull request 11522*. [GitHub-10301](https://github.com/magento/magento2/issues/10301) + * Magento now reports handled exceptions to New Relic. Previously, Magento displayed only fatal errors. *Fix submitted by Max Chadwick in pull request 11944*. ### SalesRule + * You can now add a bundle product that includes a simple product with a price of 0 (zero) to your cart. Previously, Magento threw an error. [GitHub-8969](https://github.com/magento/magento2/issues/8969) + * Cart Price rules are now applied to products if dropdown attributes are present. Previously, Magento checked only the items that were visible in the cart against the specified conditions. *Fix submitted by Marina Gociu in pull request 11274*. [GitHub-10477](https://github.com/magento/magento2/issues/10477) + * The Admin's Most Viewed Products tab now displays all the products in all attribute sets, not simply the default attribute set. [GitHub-9768](https://github.com/magento/magento2/issues/9768) ### Search + * The search template now uses the custom URL specified in `Magento\Search\Helper\getSuggestUrl()` instead of the default. [GitHub-6802](https://github.com/magento/magento2/issues/6802) + * Magento no longer throws an asymmetric transaction error on re-indexing when you use ElasticSearch as your search engine. ### Shipping @@ -490,51 +623,65 @@ Looking for more information on these new features as well as many others? Check can find Magento Shipping-specific release notes in [Magento Shipping Release Notes]({{ page.baseurl }}/release-notes/ReleaseNotesMagentoShipping2.2.x.html). + * Magento now displays by default of two shipping address lines even when the `street_lines` setting in customer configuration is set to 0 (zero). [GitHub-7995](https://github.com/magento/magento2/issues/7995) + * Magent no longer displays a blank page at the shipping stage of checkout when the user tries to return to the Shipping page from the Payments page by clicking **Back**. [GitHub-11197](https://github.com/magento/magento2/issues/11197) + * The Shipping report available from the Admin now uses the correct currency code. [GitHub-11793](https://github.com/magento/magento2/issues/11793) + * An invoice's `grand_total` and `base_grand_total` now match as expected. Previously, these values differed, leading to a rounding error when calculating the `base_grand_total`. + * Magento now adds a customer note to a shipment invoice when the shipment is created by API and `appendComment` is set to **true**. *Fix submitted by JeroenVanLeusden in pull request 11383*. [GitHub-11207](https://github.com/magento/magento2/issues/11207) + * Shipping method radio buttons no longer have duplicate element IDs on the cart page. Previously, these radio buttons had duplicate IDs, which made it impossible to select the second method. *Fix submitted by Peter Jaap Blaakmeer in pull request 11406*. [GitHub-10795](https://github.com/magento/magento2/issues/10795) + * The **Shop By** button is now rendered as expected on Android platforms. Previously, the **Shop By** button and other contents were positioned incorrectly. *Fix submitted by Lorenzo Stramaccia in pull request 11430*. [GitHub-10941](https://github.com/magento/magento2/issues/10941) + * The `freePackageValue` value is now required to be defined. Previously, this value could be undefined, but in some cases was still accessed. *Fix submitted by Alexander Menk in pull request 11720*. ### Taxes + * We've fixed a problem with the **Ignore this notification** setting. *Fix submitted by Cristian Sanclemente in pull request 11410*. [GitHub-11365](https://github.com/magento/magento2/issues/11365) ### Translations + * You can now implement translations from themes (in contrast to translations from modules). + * Previously missing translation strings have been added to the UI module. *Fix submitted by JeroenVanLeusden in pull request 11440*. [GitHub-5956](https://github.com/magento/magento2/issues/5956) + * We've fixed an issue with the `` translate phrase in the `system.xml` file. [*Fix submitted by Malyovanets Nickolas in pull request 11675*. [GitHub-7767](https://github.com/magento/magento2/issues/7767) + * The update `button.phtml` translation has been simplified. *Fix submitted by Karla Saaremäe in pull request 12136*. ### Varnish + * Cache headers for documents now factor in the cookie for the store code as expected. ## Known issues diff --git a/guides/v2.2/release-notes/ReleaseNotes2.2.2EE.md b/guides/v2.2/release-notes/ReleaseNotes2.2.2EE.md index e82d014be97..46857e3d3f6 100644 --- a/guides/v2.2/release-notes/ReleaseNotes2.2.2EE.md +++ b/guides/v2.2/release-notes/ReleaseNotes2.2.2EE.md @@ -49,440 +49,573 @@ Looking for more information on these new features as well as many others? Check ### Installation, setup, and deployment + * We've increased the `memory_limit` of the `.user.ini` files to 2GB. [GitHub-11322](https://github.com/magento/magento2/issues/11322) + * The contents of the `js-translation.json` files are now correct when you deploy static content with multiple locales. + * All cron dates are now saved in a single format and displayed according to user preference or needs. [GitHub-4237](https://github.com/magento/magento2/issues/4237) + * Static versioning and minification no longer break email font styles. [GitHub-8241](https://github.com/magento/magento2/issues/8241) + * You can now successfully upgrade from 2.1.x to 2.2.0. Previously, when you tried to upgrade from 2.1.9 to 2.2.0, Magento displayed the **postcode is a required field** error message, and `setup:upgrade` failed. *Fix submitted by Mr. Lewis in pull request 11651*. [GitHub-11095](https://github.com/magento/magento2/issues/11095) + * We've replaced `FollowSymLinks` with `SymLinksIfOwnerMatch` in the `htaccess` templates. [GitHub-10811](https://github.com/magento/magento2/issues/10811) + * The `htaccess` template now supports `apache2.4` commands. *Fix submitted by Jonas Hünig in pull request 11459*. [GitHub-10810](https://github.com/magento/magento2/issues/10810) [GitHub-10810](https://github.com/magento/magento2/issues/10810) + * `configVariables` now contains a variable for VAT numbers. *Fix submitted by JeroenVanLeusden in pull request 11486*. [GitHub-10996](https://github.com/magento/magento2/issues/10996) + * We've fixed an issue with using the command line to install or remove `crontab`. Previously, installing or removing `crontab` via the command line appended `2>&1` to entries, even those not related to Magento. *Fix submitted by [@adrian-martinez-interactiv4](https://github.com/adrian-martinez-interactiv4) in pull request 11591*. [GitHub-11586](https://github.com/magento/magento2/issues/11586) + * You can now install and uninstall `cron` via the `bin/magento cron:install` command. *Fix submitted by [@adrian-martinez-interactiv4](https://github.com/adrian-martinez-interactiv4) in pull request 11359*. + * The `admin:user:create` command now recognizes the configured table prefix. *Fix submitted by Oscar Recio in pull request 11199*. [GitHub-11176](https://github.com/magento/magento2/issues/11176) + * The default cron success or failure history is now seven days. *Fix submitted by Max Chadwick in pull request 11505*. + * The `admin:user:create` command now asks for the input value if a required option is not passed. *Fix submitted by Christian Münch in pull request 11510*. + * The `.user.ini` files at `/.user.ini` and `/pub/.user.ini` now specify a `memory_limit` value of at least 1G to 2G for debugging purposes. *Fix submitted by Mr. Lewis in pull request 11734*. [GitHub-11322](https://github.com/magento/magento2/issues/11322) + * The `setup:install` command now has an `-i` flag. It validates parameters interactively. *Fix submitted by Denis Ristic in pull request 11425*. + * Magento now restarts cron jobs as needed after a cron job was terminated during execution. ### Catalog + * You can now enter strings that exceed 255 characters in Admin or frontend input fields. Previously, Magento saved only the first 255 characters of a long input string. [GitHub-6238](https://github.com/magento/magento2/issues/6238) + * Magento now renders color attribute swatches correctly for the search result page if sorting for color attribute is enabled. *Fix submitted by Roman K. in pull request 12077*. [GitHub-10628](https://github.com/magento/magento2/issues/10628) + * The `\Magento\Quote\Model\ResourceModel\Quote\Item\Collection` now returns items that have only existing relations in the `catalog_product_entity` table. Previously, Magento loaded quote items with non-existing products. + * Magento no longer duplicates attribute option values. Previously, Magento did not confirm the uniqueness of an attribute option value if you created it using REST. [GitHub-8846](https://github.com/magento/magento2/issues/8846) + * Magento now saves the correct background color for images. Previously, product images always had a black background when using the Luma theme. [GitHub-8799](https://github.com/magento/magento2/issues/8799) + * You can now save a product custom option price with a value of 0 (zero) by simply not entering a price. *Fix submitted by Raul Mateos in pull request 11843*. [GitHub-4808](https://github.com/magento/magento2/issues/4808) + * You can now assign products to categories if those products are already assigned to the category tree. [GitHub-8970](https://github.com/magento/magento2/issues/8970) + * The `apply_to` setting for attributes is no longer hard-coded. [GitHub-7225](https://github.com/magento/magento2/issues/7225) + * The **Add to cart** checkboxes in Related Products are no longer visible on the storefront when **$canItemsAddToCart** is set to **false**. *Fix submitted by Marc Rodriguez in pull request 11610*. [GitHub-6891](https://github.com/magento/magento2/issues/6891) + * You can now successfully save and duplicate a simple product. Previously, when you clicked the **Save and Duplicate** option for an existing simple product in the Catalog Manager, Magento did not duplicate the product, but threw an error. *Fix submitted by Roman K. in pull request 12001*. [GitHub-11532](https://github.com/magento/magento2/issues/11532) + * The Magento Admin Product Edit page now displays product alerts as expected. *Fix submitted by Raul Mateos in pull request 11445*. [GitHub-10007](https://github.com/magento/magento2/issues/10007) + * The `StockItemCriteriaInterface` method `setProductsFilter` now accepts an array of IDs. Previously, this method accepted either a single integer or an array, but returned only one item. *Fix submitted by Kirill Morozov in pull request 11500*. [GitHub-7678](https://github.com/magento/magento2/issues/7678) + * The `$sortByPostion` flag has been added to the `getChildren()` method. *Fix submitted by Denis Ristic in pull request 11342*. [GitHub-11310](https://github.com/magento/magento2/issues/11310) + * `ProductRepository` SKU cache is no longer corrupted when `cacheLimit` is reached . *Fix submitted by Thomas in pull request 11553*. + * Magento no longer displays the perpetual spinner when you switch custom options types in the Product Edit page. *Fix submitted by Paul Briscoe in pull request 11824*. [GitHub-10291](https://github.com/magento/magento2/issues/10291) ### Cart and checkout + * The default shipping-save-processor now has a payload extender. This feature allows third party extensions to modify the payload for the shipping address selection process. As a result, developers can now add `extension_attributes` while minimizing potential extension conflicts. *Fix submitted by Navarr Barnier in pull request 11249*. + * You can now view the **Products in cart** report if the cart contains a bundle or a grouped product. Previously, when you viewed the Products in Cart report, Magento threw an exception under these conditions. [GitHub-12079](https://github.com/magento/magento2/issues/12079) + * Magento now recognizes zip codes without spaces for addresses located in the Netherlands. [GitHub-11898](https://github.com/magento/magento2/issues/11898) + * Magento now accepts coupon codes with special characters during checkout. *Fix submitted by Gabriel Queiroz Silva in pull request 11710*. [GitHub-9763](https://github.com/magento/magento2/issues/9763) + * We've improved cache control headers. + * Magento no longer throws an exception when you place an order using a new address. Previously, Magento displayed this error, **An error occurred on the server. Please try to place the order again.**. [GitHub-10583](https://github.com/magento/magento2/issues/10583) + * Magento now includes the Filter Groups and the Sort Order of the `$searchCriteria` parameter in the `searchCriteria` Object that is provided for the EAV set repository. *Fix submitted by David Verholen in pull request 11421*. [GitHub-11022](https://github.com/magento/magento2/issues/11022) + * Magento no longer sets the product price to zero when you use REST to add a product to an empty cart. Previously, Magento displayed an error when you used REST to populate an empty cart. *Fix submitted by Peter Jaap Blaakmeer in pull request 11458*. [GitHub-2991](https://github.com/magento/magento2/issues/2991), [GitHub-2991](https://github.com/magento/magento2/issues/2991) + * You can now translate the placeholder text for the checkout password field. *Fix submitted by JeroenVanLeusden in pull request 11493*. + * Magento now redirects a user to the checkout page if he logs in after selecting the **Checkout** button. Previously, a user was redirected to the store home page. *Fix submitted by [@p-bystritsky](https://github.com/p-bystritsky) in pull request 11876*. [GitHub-10834](https://github.com/magento/magento2/issues/10834) ### Configurable products + * `Magento\ConfigurableProduct\Model\Product\Type\Configurable:::loadUsedProducts` no longer ignores array keys that are returned by product collections. [GitHub-11880](https://github.com/magento/magento2/issues/11880) ### Frameworks + * The NGINX configuration sample now contains a health check. *Fix submitted by Andrew Howden in pull request 11690*. [GitHub-11157](https://github.com/magento/magento2/issues/11157) + * Magento now allows underscore characters in module names and also permits their use when modules add a block to the layout via XML. Previously, Magento did not support underscore characters in module names to be added to the layout via XML. *Fix submitted by Ben Tideswell in pull request 11765*. + * You can now save using the mass action **Update attributes** option when multiselect attributes are set. *Fix submitted by Manu Gonzalez Rodriguez in pull request 11349*. [GitHub-11329](https://github.com/magento/magento2/issues/11329) #### App framework + * Magento now correctly handles all meta keywords and description in categories and in every product in locales that use non-Latin characters. [GitHub-10682](https://github.com/magento/magento2/issues/10682) + * You can now include negative values in an XML export file and open the file with Office XML handler. Previously, the export files did not open correctly, and an Office XML handler error log was created. *Fix submitted by hauso in pull request 11757*. [GitHub-11729](https://github.com/magento/magento2/issues/11729), [GitHub-11729](https://github.com/magento/magento2/issues/11729) + * The Magento custom URL rewrite functionality now works as expected when you include redirection of Magento controllers. *Fix submitted by Marc Rodriguez in pull request 11470*. [GitHub-10231](https://github.com/magento/magento2/issues/10231), [GitHub-11469](https://github.com/magento/magento2/issues/11469), [GitHub-11471](https://github.com/magento/magento2/issues/11471) + * Magento now supports the setting of HTTP response status code in redirected responses. [GitHub-9028](https://github.com/magento/magento2/issues/9028) + * Magento now throws a meaningful exception when a virtual theme does not have a physical parent theme. *Fix submitted by David Fecke in pull request 11240*. + * `app:config:dump` no longer adds an extra space to multiline array values. *Fix submitted by [@adrian-martinez-interactiv4](https://github.com/adrian-martinez-interactiv4) in pull request 11439*. [GitHub-11328](https://github.com/magento/magento2/issues/11328) + * The TRAVIS_BRANCH variable is now surrounded by double-quotes instead of single-quotes . *Fix submitted by [@adrian-martinez-interactiv4](https://github.com/adrian-martinez-interactiv4) in pull request 11704*. + * The doc block of `setValue` in FilterBuilder now reflects that the `setValue` method will accept an array. *Fix submitted by ByteCreation in pull request 11854*. + * `htaccess` syntax now uses `Options -Indexes` instead of `Options All -Indexes`. Previously, Magento used `Options All -Indexes`, which resulted in Magento rendering a 500 error page because of high restrictions for Options overrides in shared hosting environments. *Fix submitted by [@Danny Verkade - Cream](https://github.com/dverkade) in pull request 11327*. [GitHub-10812](https://github.com/magento/magento2/issues/10812) #### Configuration framework + * The X-Magento-Tags header can now contain white space. *Fix submitted by Malyovanets Nickolas in pull request 11767*. [GitHub-7640](https://github.com/magento/magento2/issues/7640), [GitHub-7640](https://github.com/magento/magento2/issues/7640) + * The config array can now read all settings from `config`. Previously, the config array was hardcoded to read three settings only. *Fix submitted by Vova Yatsyuk in pull request 11643*. #### JavaScript framework + * Magento no longer incorrectly overly encodes UTF-8 files when JavaScript Bundling is enabled. Previously, this issue resulted in poor character encoding on the storefront. [GitHub-10562](https://github.com/magento/magento2/issues/10562), [GitHub-6733](https://github.com/magento/magento2/issues/6733) + * Magento now exports the Confirmed email and Account Lock values when you export customer data. Previously, this information was missing from the exported CSV. *Fix submitted by Luke Rodgers in pull request 11437*. [GitHub-10765](https://github.com/magento/magento2/issues/10765), [GitHub-10765](https://github.com/magento/magento2/issues/10765) + * You can now submit the search form from the keyboard. *Fix submitted by Romain Ruaud in pull request 11250*. [GitHub-10275](https://github.com/magento/magento2/issues/10275) #### Session framework + * We've removed the 30-second timeout limit for the session locking mechanism when Redis is used for session storage. + * A typo in `sessionStorage` polyfill has been corrected. *Fix submitted by mszydlo in pull request 11219*. #### Web API framework + * The `customerAccountManagementV1` interface now provides the `POST /V1/customers/resetPassword` endpoint. ### General + * XHTML templates now use schema URNs. [GitHub-6661](https://github.com/magento/magento2/issues/6661) + * The image size used as a cross-sell product placeholder now equals the size of the image used in product listing placeholder images. Previously, the cross-sell product placeholder image was too small. [GitHub-12017](https://github.com/magento/magento2/issues/12017) + * Magento now downloads the backup `.tgz` file that you select for downloading. Previously, no matter which backup you selected, Magento downloaded the most recent backup. *Fix submitted by Pieter Cappelle in pull request 11595*. [GitHub-10032](https://github.com/magento/magento2/issues/10032) + * Magento now leaves a product's date attribute's current date field blank if you do not enter a value. *Fix submitted by [@enriquei4](https://github.com/enriquei4) in pull request 11749*. [GitHub-9869](https://github.com/magento/magento2/issues/9869), [GitHub-11636](https://github.com/magento/magento2/issues/11636), [GitHub-6661](https://github.com/magento/magento2/issues/6661) + * The Magento store code validation `regex` now supports uppercase letters in store code. [GitHub-11996](https://github.com/magento/magento2/issues/11996) + * When you use a UI component-based form and add a custom regular expression pattern validation to an input field, the supplied pattern is now properly converted from a string to a JavaScript RegEx object. *Fix submitted by Brett in pull request 11565*. [GitHub-9919](https://github.com/magento/magento2/issues/9919) + * Magento now sets ISO-valid language code in the HTML header. *Fix submitted by Cristian Sanclemente in pull request 11561*. [GitHub-11540](https://github.com/magento/magento2/issues/11540) + * Magento now validates CMS blocks before creating one. *Fix submitted by thiagolima-bm in pull request 11802*. [GitHub-8236](https://github.com/magento/magento2/issues/8236), [GitHub-4831](https://github.com/magento/magento2/issues/4831) + * A custom field's name attribute no longer remains empty during form creation. *Fix submitted by Paul Briscoe in pull request 11637*. [GitHub-9944](https://github.com/magento/magento2/issues/9944) + * `widget.xml` files can now contain multiple `depends` parameters. *Fix submitted by Raul E Watson in pull request 11495*. [GitHub-9783](https://github.com/magento/magento2/issues/9783) + * You can now use an `adminhtml` URL that differs from `admin` and set **Add Store Code to Urls** to **Yes**. *Fix submitted by Sylvain Rayé in pull request 11460*. [GitHub-11140](https://github.com/magento/magento2/issues/11140), [GitHub-11140](https://github.com/magento/magento2/issues/11140) + * You can now add an HTML node to the page XML root of a theme without causing a validation error. [GitHub-11697](https://github.com/magento/magento2/issues/11697) + * The `customer_data_object` firstname is no longer equal to `orig_customer_data_object` after you save an existing user account with a new name or address. *Fix submitted by Roman K. in pull request 11676*. [GitHub-7915](https://github.com/magento/magento2/issues/7915) + * We removed a typo in the Paypal Module. [GitHub-7591](https://github.com/magento/magento2/issues/7591) + * We’ve fixed the dashboard graph’s y-axis range. *Fix submitted by Oscar Recio in pull request 11751*. [GitHub-7927](https://github.com/magento/magento2/issues/7927) + * Magento no longer throws an error when you try to load a quote item collection. [GitHub-8954](https://github.com/magento/magento2/issues/8954) + * Customer Groups are now located in the Magento Admin under **Customers > Customer Groups**. *Fix submitted by Mr. Lewis in pull request 11677*. + * Magento now wraps long label text by word instead of letter. *Fix submitted by [@enriquei4](https://github.com/enriquei4) in pull request 11745*. [GitHub-7099](https://github.com/magento/magento2/issues/7099), [GitHub-711727](https://github.com/magento/magento2/issues/11727) + * Magento now displays and expects the format of birth years to match `yyyy` instead of `yy`. *Fix submitted by Manu Gonzalez Rodriguez in pull request 11351*. [GitHub-11332](https://github.com/magento/magento2/issues/11332) + * Magento now displays the State/Province field after you edit the billing address on sales orders. *Fix submitted by Raul Mateos in pull request 11381*. [GitHub-10441](https://github.com/magento/magento2/issues/10441) + * You can now successfully sync billing and shipping addresses on Admin Reorder and Admin Customer Create Order page for selected, existing addresses. *Fix submitted by Ievgen Sentiabov in pull request 11385*. [GitHub-10856](https://github.com/magento/magento2/issues/10856) + * The `FixAccountManagementTest` unit test now works as expected. *Fix submitted by [@adrian-martinez-interactiv4](https://github.com/adrian-martinez-interactiv4) in pull request 11607*. + * You can now submit a form by pressing **Enter**. *Fix submitted by Raul Encinas in pull request 11827*. [GitHub-4696](https://github.com/magento/magento2/issues/4696) + * The Store View switcher now works as expected. *Fix submitted by thiagolima-bm in pull request 11337*. [GitHub-10908](https://github.com/magento/magento2/issues/10908), [GitHub-11211](https://github.com/magento/magento2/issues/11211) + * We've removed object manager references as well as deprecated calls to `$messageManager`. *Fix submitted by Atish Goswami in pull request 12061*. + * Magento now prepares street data to guarantee that the street array will be converted to a string. *Fix submitted by Vova Yatsyuk in pull request 12130*. + * Disabling and enabling the WYSIWYG editor with `ui/form/element/helper/service` checkbox now works as expected. *Fix submitted by Vova Yatsyuk in pull request 12141*. + * The `sitemap.xml` `last mod` time stamp now contains the correct date. [GitHub-9151](https://github.com/magento/magento2/issues/9151) + * The Visual Swatch Attribute drop-down menu (accessible from Manage Swatch tab) now works as expected. Previously, when you clicked the **Add Swatch** button from this tab, the drop-down menu was not displayed. *Fix submitted by [@enriquei4](https://github.com/enriquei4) in pull request 11747*. [GitHub-11534](https://github.com/magento/magento2/issues/11534) + * Users are now subscribed by default to the Advanced Reporting service. + * The design rule hint message no longer includes a typo. *Fix submitted by Javier Villanueva in pull request 11390*. [GitHub-8958](https://github.com/magento/magento2/issues/8958) + * Storefront labels and messages now use the American English spelling of “optimization”. *Fix submitted by David Angel in pull request 11345*. + * The **Add page** button now works as expected. Previously, when you clicked **Add page** while logged in to the Admin, and clicked **Save**, Magento did not create a new page, but returned you to the **Orders** page, and displayed this message: **Data key is missing: code-entity**. *Fix submitted by Tomasz Gregorczyk in pull request 11205*. [GitHub-11163](https://github.com/magento/magento2/issues/11163) ### Import/export + * To improve performance, Magento now loads all relations using one query per bunch. Previously, Magento loaded relations one by one (multiple times for multiple attributes types). [GitHub-10920](https://github.com/magento/magento2/issues/10920) + * Magento now provides more helpful error messages if problems occur during the import of products and images using **System > Import Products**. [GitHub-4711](https://github.com/magento/magento2/issues/4711) + * Magento now provides better error reporting when an error occurs during the import of a CSV file with a semicolon delimiter. Previously, Magento stopped import, but did not provide a link to the error report CSV file. [GitHub-5015](https://github.com/magento/magento2/issues/5015) + * Exception message was passed as a exception description argument instead of exception message. *Fix submitted by Tim Bezhashvyly in pull request 11363*. [GitHub-6924](https://github.com/magento/magento2/issues/6924) + * Importing an import file to update customer data no loner results in the `entity fields` being removed if the columns were not present on the imported file. *Fix submitted by Juan Alonso in pull request 11968*. ### Indexing + * Magento no longer re-indexes entities if they are unchanged, which improves the performance of the refresh index cron job without any loss of functionality. [GitHub-4893](https://github.com/magento/magento2/issues/4893) + * Magento now correctly resets status to `StateInterface::STATUS_INVALID` if a fatal PHP error occurs during indexing. *Fix submitted by Lars Roettig in pull request 11183*. [GitHub-11166](https://github.com/magento/magento2/issues/11166) ### Infrastructure + * New static block tests now detect blocks without a name attribute. We've also added a missing block name to allow block customization, and added a name for the order items grid default renderer block. *Fix submitted by Ihor Sviziev in pull request 11235*. [GitHub-10824](https://github.com/magento/magento2/issues/10824) + * We've ported a fix for the Travis CI builds for the `2.2-develop` branch to the `2.3-develop` branch. *Fix submitted by Ievgen Shakhsuvarov in pull request 11555*. + * Integration tests now reset the integration test database when `TESTS_CLEANUP` is set to enabled. *Fix submitted by Joshua Warren in pull request 11499*. [GitHub-10025](https://github.com/magento/magento2/issues/10025) + * A typo in `Paypal/Test/TestCase/OnePageCheckoutTest.xml` has been fixed. *Fix submitted by Mr. Lewis in pull request 11673*. [GitHub-7591](https://github.com/magento/magento2/issues/7591) + * `FileClassScannerTest` no longer has a dependency upon `Magento_Catalog`. *Fix submitted by WEXO team in pull request 12144*. [GitHub-11230](https://github.com/magento/magento2/issues/11230) ### Newsletters + * Newsletter subscriptions now work as expected. Previously, Magento did not set the `create-date` field, and the `change_status_at` was broken. [GitHub-4004](https://github.com/magento/magento2/issues/4004) + * When a customer with the same email address has an account on different stores in the same Magento installation, changes to the newsletter subscription in one account no longer affects the other subscription. *Fix submitted by Sergio Baixauli in pull request 12035*. [GitHub-10014](https://github.com/magento/magento2/issues/10014) + * Magento now sends email confirmation of newsletter subscription to a user only when the user is newly subscribed. *Fix submitted by Oscar Recio in pull request 11317*. [GitHub-5439](https://github.com/magento/magento2/issues/5439) ### Orders + * Magento now retains an order's `relation_child_id` and `relation_child_real_id` field values when you edit the order. Previously, after you edited an order, the values of the `relation_child_id` and `relation_child_real_id` fields of the old order did not persist. [GitHub-10195](https://github.com/magento/magento2/issues/10195) + * Magento no longer duplicates the **Add Products** button after you change the customer group. [GitHub-11868](https://github.com/magento/magento2/issues/11868) + * New orders now appear as expected in the Order table after you migrating data. [GitHub-10185](https://github.com/magento/magento2/issues/10185) + * You can now create an order from the Customer Edit page when working from the Admin. *Fix submitted by Roman K. in pull request 11952*. [GitHub-11832](https://github.com/magento/magento2/issues/11832) + * The `getTracksCollection()` method now returns collection objects. Previously, this method returned either collections or arrays. *Fix submitted by Roman K. in pull request 12173*. [GitHub-8022](https://github.com/magento/magento2/issues/8022) + * References to `Zend_Pdf_Color_RGB`now correctly use the camel-case class name (`Zend_Pdf_Color_Rgb`). Previously, the former class name resulted in references to wrong or nonexistent classes. *Fix submitted by Danny Verkade - Cream in pull request 11830*. [GitHub-11581](https://github.com/magento/magento2/issues/11581) + * The Order table now accurately reflects changes in order status. + * Invoices now display coupon code information. *Fix submitted by Cristian Sanclemente in pull request 11635*. [GitHub-10168](https://github.com/magento/magento2/issues/10168) + * Magento no longer lets you cancel an invoice more than once. *Fix submitted by Oscar Recio in pull request 11261*. [GitHub-9968](https://github.com/magento/magento2/issues/9968) + * `guest.php` now handles breadcrumb performance as expected. *Fix submitted by Juliano Vargas in pull request 11299*. [GitHub-11275](https://github.com/magento/magento2/issues/11275) + * Magento now sends confirmation emails to customers for orders containing a grouped product. Previously, when you tried to submit an invoice for an order containing a grouped product, Magento threw an error and did not send confirmation email to the customer. *Fix submitted by Michiel Gerritsen in pull request 11297*. [GitHub-5105](https://github.com/magento/magento2/issues/5105) ### Payment methods + * Magento PayPal integration now supports the Indian Rupee currency (INR). + * Braintree online refunds now work when you are using two Braintree accounts on two separate websites. Previously, when using two Braintree accounts for two separate websites, Magento did not process the refund, and displayed this message: **Sorry, but something went wrong**. + * Administrators with limited privileges can now log in without errors. Previously, Magento threw an error, but did not log errors in either the server or Magento logs. [GitHub-11700](https://github.com/magento/magento2/issues/11700) + * Corrected a typo in a translatable string. *Fix submitted by Danny Verkade - Cream in pull request 11569*. + * Magento now displays the correct payment method string as displayed during checkout. Previously, the translated string associated the payment method title for a particular store view was not consistently displayed. *Fix submitted by Bernhard in pull request 11165*. [GitHub-7582](https://github.com/magento/magento2/issues/7582) ### Reports + * The search for the Customer Review report now works as expected. *Fix submitted by Oscar Recio in pull request 11522*. [GitHub-10301](https://github.com/magento/magento2/issues/10301) + * Magento now reports handled exceptions to New Relic. Previously, Magento displayed only fatal errors. *Fix submitted by Max Chadwick in pull request 11944*. + * The Admin's Most Viewed Products tab now displays all the products in all attribute sets, not simply the default attribute set. [GitHub-9768](https://github.com/magento/magento2/issues/9768) ### SalesRule + * You can now add a bundle product that includes a simple product with a price of 0 (zero) to your cart. Previously, Magento threw an error. [GitHub-8969](https://github.com/magento/magento2/issues/8969) + * Cart Price rules are now applied to products if dropdown attributes are present. Previously, Magento checked only the items that were visible in the cart against the specified conditions. *Fix submitted by Marina Gociu in pull request 11274*. [GitHub-10477](https://github.com/magento/magento2/issues/10477) ### Search + * The search template now uses the custom URL specified in `Magento\Search\Helper\getSuggestUrl()` instead of the default. [GitHub-6802](https://github.com/magento/magento2/issues/6802) + * Magento no longer throws an asymmetric transaction error on re-indexing when you use ElasticSearch as your search engine. ### Shipping @@ -491,51 +624,65 @@ Looking for more information on these new features as well as many others? Check You can find Magento Shipping-specific release notes in [Magento Shipping Release Notes]({{ page.baseurl }}/release-notes/ReleaseNotesMagentoShipping2.2.x.html). + * Magento now displays by default of two shipping address lines even when the `street_lines` setting in customer configuration is set to 0 (zero). [GitHub-7995](https://github.com/magento/magento2/issues/7995) + * Magento no longer displays a blank page at the shipping stage of checkout when the user tries to return to the Shipping page from the Payments page by clicking **Back**. [GitHub-11197](https://github.com/magento/magento2/issues/11197) + * The Shipping report available from the Admin now uses the correct currency code. [GitHub-11793](https://github.com/magento/magento2/issues/11793) + * An invoice's `grand_total` and `base_grand_total` now match as expected. Previously, these values differed, leading to a rounding error when calculating the `base_grand_total`. + * Magento now adds a customer note to a shipment invoice when the shipment is created by API and `appendComment` is set to **true**. *Fix submitted by JeroenVanLeusden in pull request 11383*. [GitHub-11207](https://github.com/magento/magento2/issues/11207) + * Shipping method radio buttons no longer have duplicate element IDs on the cart page. Previously, these radio buttons had duplicate IDs, which made it impossible to select the second method. *Fix submitted by Peter Jaap Blaakmeer in pull request 11406*. [GitHub-10795](https://github.com/magento/magento2/issues/10795) + * The **Shop By** button is now rendered as expected on Android platforms. Previously, the **Shop By** button and other contents were positioned incorrectly. *Fix submitted by Lorenzo Stramaccia in pull request 11430*. [GitHub-10941](https://github.com/magento/magento2/issues/10941) + * The `freePackageValue` value is now required to be defined. Previously, this value could be undefined, but in some cases was still accessed. *Fix submitted by Alexander Menk in pull request 11720*. ### Tax + * We've fixed a problem with the **Ignore this notification** setting. *Fix submitted by Cristian Sanclemente in pull request 11410*. [GitHub-11365](https://github.com/magento/magento2/issues/11365) ### Translations + * You can now implement translations from themes (in contrast to translations from modules). + * Previously missing translation strings have been added to the UI module. *Fix submitted by JeroenVanLeusden in pull request 11440*. [GitHub-5956](https://github.com/magento/magento2/issues/5956) + * We've fixed an issue with the `` translate phrase in the `system.xml` file. [*Fix submitted by Malyovanets Nickolas in pull request 11675*. [GitHub-7767](https://github.com/magento/magento2/issues/7767) + * The update `button.phtml` translation has been simplified. *Fix submitted by Karla Saaremäe in pull request 12136*. ### Varnish + * Cache headers for documents now factor in the cookie for the store code as expected. ## Known issues diff --git a/guides/v2.2/release-notes/ReleaseNotes2.2.3CE.md b/guides/v2.2/release-notes/ReleaseNotes2.2.3CE.md index 9bfdfb9631f..e459ff58413 100644 --- a/guides/v2.2/release-notes/ReleaseNotes2.2.3CE.md +++ b/guides/v2.2/release-notes/ReleaseNotes2.2.3CE.md @@ -18,6 +18,7 @@ Look for the following highlights in this release: * **Enhancements that help close cross-site request forgery (CSRF), unauthorized data leaks, and authenticated Admin user remote code execution vulnerabilities**. See [Magento Security Center](https://magento.com/security/patches/magento-223-2112-and-2018-security-update) for more information. + * **Support for Elasticsearch 5.x**. See [Install and configure Elasticsearch]({{ site.baseurl }}/guides/v2.2/config-guide/elasticsearch/es-overview.html) for more information about using Elasticsearch with Magento. *Fix submitted by community member Aurélien Foucret.* * **Change to Magento Admin to support recent USPS shipping changes**. On February 23, 2018, USPS removed APIs that support the creation of shipping labels without postage. In response, we’ve removed this functionality from the Magento Admin. Consequently, you cannot create and print shipping labels that do not have postage applied. If you require USPS postage printing capabilities, please visit [Magento Shipping](https://magento.com/products/shipping) to learn more, and explore various shipping extensions on Magento Marketplace. diff --git a/guides/v2.2/release-notes/ReleaseNotes2.2.3EE.md b/guides/v2.2/release-notes/ReleaseNotes2.2.3EE.md index 21a19bbaf29..443acb2d02a 100644 --- a/guides/v2.2/release-notes/ReleaseNotes2.2.3EE.md +++ b/guides/v2.2/release-notes/ReleaseNotes2.2.3EE.md @@ -18,6 +18,7 @@ Look for the following highlights in this release: * **Enhancements that help close cross-site request forgery (CSRF), unauthorized data leaks, and authenticated Admin user remote code execution vulnerabilities**. See [Magento Security Center](https://magento.com/security/patches/magento-223-2112-and-2018-security-update) for more information. + * **Support for Elasticsearch 5.x**. See [Install and configure Elasticsearch]({{ site.baseurl }}/guides/v2.2/config-guide/elasticsearch/es-overview.html) for more information about using Elasticsearch with Magento. *Fix submitted by community member Aurélien Foucret.* * **Change to Magento Admin to support recent USPS shipping changes**. On February 23, 2018, USPS removed APIs that support the creation of shipping labels without postage. In response, we’ve removed this functionality from the Magento Admin. Consequently, you cannot create and print shipping labels that do not have postage applied. If you require USPS postage printing capabilities, please visit [Magento Shipping](https://magento.com/products/shipping) to learn more, and explore various shipping extensions on Magento Marketplace. diff --git a/guides/v2.2/release-notes/ReleaseNotes2.2.4CE.md b/guides/v2.2/release-notes/ReleaseNotes2.2.4CE.md index 9822de2d08d..7a725205553 100644 --- a/guides/v2.2/release-notes/ReleaseNotes2.2.4CE.md +++ b/guides/v2.2/release-notes/ReleaseNotes2.2.4CE.md @@ -31,18 +31,23 @@ Looking for more information on these new features as well as many others? Check This section describes changes in this release that are not full-fledged features or bug fixes, but that add noticeable improvements to product performance or ease-of-use. + * The admin global search is now translatable, extensible, and takes into account the ACL settings for the current user. See [Using global search](http://docs.magento.com/m2/ce/user_guide/stores/admin-global-search.html) for more information. *Fix submitted by Roman K. in pull request 1167*. [GitHub-7698](https://github.com/magento/magento2/issues/7698) + * Magento has an automated checker to enforce the short array syntax convention that we are now enforcing in new code. This standard complies with all requirements of PSR-2. *Fix submitted by Nickolas Malyovanets in pull request 12499*. + * Magento now provides dedicated payment and shipping debug log files to store information specific to those functional areas. + * The Emogrifier dependency has been upgraded to 2.0.0 or later. *Fix submitted by Oliver Klee in pull request 13132*. + * We've replaced `is_null` with strict comparison only for models and block in the following modules: `Catalog`, `Tax`, `Sales`, and `EAV`. *Fixes submitted by Alexander Shkurko in pull requests 13171, 13170, 1163*. #### dotmailer enhancements @@ -74,27 +79,35 @@ We do not recommend upgrading to Magento 2.2.4 if you deploy across multiple web ### Installation, setup, and deployment + * The `backup` command now works as expected. *Fix submitted by Jagriti Joshi in pull request 13066*. [GitHub-12877](https://github.com/magento/magento2/issues/12877) + * Links to Magento installation documentation in `setup/view/magento/readiness-check/progress.html` are now correct. *Fix submitted by Jonas Hünig in pull request 12857*. + * You can now use the `app:config:status` command to check whether configuration propagation is up-to-date. *Fix submitted by Juan Alonso in pull request 12441*. + * The `bin/magento setup:rollback -d filename.sql` command now works as expected. Previously, this database rollback operation failed on certain versions of Magento (for example, 2.1.9). *Fix submitted by Roman K. in pull request 12108*. [GitHub-12064](https://github.com/magento/magento2/issues/12064) + * You can now set API access to integrations for Admin roles, which gives privileged users the ability to grant limited access to users such as third-party integrators. [GitHub-9684](https://github.com/magento/magento2/issues/9684) + * You can now enable or disable the Magento Profiler from the command line. [GitHub-9277](https://github.com/magento/magento2/issues/9277) + * The icons for Extension Manager and Module Manager are now consistent with the main content area and left-hand menu of the Web Setup Wizard. *Fix submitted by Danny Verkade in pull request 11388*. [GitHub-11236](https://github.com/magento/magento2/issues/11236) + * Magento now continues operating in maintenance mode if it was previously enabled. Previously, Magento disabled maintenance mode when you used one of these commands: * `bin\magento module:uninstall` @@ -106,869 +119,1131 @@ We do not recommend upgrading to Magento 2.2.4 if you deploy across multiple web *Fix submitted by Joke Puts in pull request 11052*. [GitHub-9918](https://github.com/magento/magento2/issues/9918) + * You can specify a custom version for static files being deployed, and now nginx sample config files can match these custom versions, too. *Fix submitted by Scott Buchanan in pull request 12521*. + * The `CrontabManager.php` file has been updated as follows: If `crontab` has already been populated, the `php bin/magento cron:install` command adds `#~ MAGENTO START` and the rest of code directly to the last row of crontab without any spaces. *Fix submitted by Michele Fantetti in pull request*. + * The `ext-bcmath` PHP extension is now required in Open Source. Previously, it was required for Commerce only. *Fix submitted by Mobecls in pull request 12768*. + * The `cache_lifetime` default setting for the `Magento\Theme\Block\Html\Footer` block is no longer set to **false**, and the new default setting is **3600**. *Fix submitted by zolat in pull request 13762*. + * The `magento maintenance:allow-ips` command now has the `--add` flag, which appends a new IP address to the list of allowed IP addresses. Previously, when you added a new IP address, you had to copy the existing addresses. *Fix submitted by Barry vd. Heuvel in pull request 13586*. + * The `config:set` command now has a `lock-config` option, and configuration values are always stored in `app/etc/config.php` instead of `app/etc/env.php`. *Fix submitted by Andreas von Studnitz in pull request 13280*. + * In the `Backend/etc/adminhtml/system.xml` file, the `url` group and `redirect_to_base` field are now configured so that the `showInWebsite` and `showInStore` attributes are set to `1`. *Fix submitted by JeroenVanLeusden in pull request 13614*. + * You can now deploy static content on demand while in production mode. + * The output of the `magento maintenance:status` command no longer inserts a comma in between IP addresses, making it easier to copy and paste the values. *Fix submitted by Barry vd. Heuvel in pull request 13587*. + * The `DeploymentConfig` reader now always returns an array. *Fix submitted by Barry vd. Heuvel in pull request 13584*. + * Magento has improved how it manages the size of the `cron_schedule` table. [GitHub-11002](https://github.com/magento/magento2/issues/11002) + * Magento now includes a helper object to facilitate access to styling objects in the Symfony console. *Fix submitted by Wesley Guthrie in pull request 11504*. + * Magento no longer throws an error when you try to generate an URN catalog for an empty `misc.xml` file. *Fix submitted by Timon de Groot in pull request 11686*. [GitHub-5188](https://github.com/magento/magento2/issues/5188) + * The `sampledata:deploy` and `remove` commands now have `no-update` options. *Fix submitted by Fabian Schmengler in pull request 12359*. + * The currencies dropdown menu that is available during the setup process (step 4 -- customize your store) no longer displays unallowed currencies. *Fix submitted by Ricardo Martins in pull request 13770*. + * A database backup created by `setup:backup --db` and restored with `setup:rollback -d` now includes triggers as expected. Previously, the restored database did not include triggers, which meant that indexes could not work correctly. *Fix submitted by Denis Ristic in pull request 11369*. [GitHub-9036](https://github.com/magento/magento2/issues/9036) ### Bundle products + * Save operations now work as expected for bundle products. *Fix submitted by dzianis-yurevich in pull request 12734*. [GitHub-6916](https://github.com/magento/magento2/issues/6916) + * You can now duplicate a bundle product without stripping the original bundle product of its options. *Fix submitted by MattUnity in pull request 1217*. ### Catalog + * Magento now successfully updates a product's `stock_item` `extension_attribute` parameter for a product previously created using REST. *Fix submitted by nuzil in pull request 13494*. + * When two customers check out concurrently for the same product, one of the checkouts now succeeds. Previously, when two customers checked out concurrently for the same product, and the total quantity being ordered is greater than the quantity available, the stock could become negative. *Fix submitted by Myroslav Dobra in pull request 2133*. + * The `getUrl` method in `Magento\Catalog\Model\Product\Attribu…` no longer returns image URLs with unexpected double slashes. *Fix submitted by Igor Tregub in pull request 13498*. + * When sorting by price, Magento now displays the same number of products no matter how it sorts products in the Catalog Product list. Previously, Magento reduced the product count by the number of disabled products when sorting by price. + * The category filter used for layered navigation for configurable products with no available options now counts products accurately. + * When you set the `category_ids` attribute to be visible in the storefront catalog, Magento now displays catalog listings as expected. Previously, Magento threw an exception. *Fix submitted by Manu Gonzalez Rodriguez in pull request 11389*. [GitHub-11341](https://github.com/magento/magento2/issues/11341) + * Product display issues within categories that have been filtered by price have been resolved: Products are no longer repeated within a category, and random products are no longer included. *Fix submitted by Mayank Zalavadia in pull request 11429*. [GitHub-11139](https://github.com/magento/magento2/issues/11139) + * Updating a product with the REST API (`PUT /rest/all/V1/products/example_sku`) no longer assigns the product to all websites automatically. (Automatic assignment to all websites now occurs only when you create the product in All Store Views scope.) *Fix submitted by adrian-martinez-interactiv4 in pull request 11444*. [GitHub-11324](https://github.com/magento/magento2/issues/11324) + * Magento no longer throws an error when you re-save a product attribute with a new name. *Fix submitted by Raul Mateos in pull request 11617*. [GitHub-6770](https://github.com/magento/magento2/issues/6770) + * You can now successfully remove a toolbar from a product listing page. Previously, you could explicitly remove the toolbar from layout configuration, but Magento would return `product_list_toolbar` to the layout. *Fix submitted by mariuscris in pull request 11473*. [GitHub-9413](https://github.com/magento/magento2/issues/9413) + * The `getAttributeText($attributeCode)` method now returns string values as expected. Previously, this method returned an array of attribute values. *Fix submitted by p-bystritsky in pull request 12003*. + * You can now add customizable options to a product. Previously, when you tried to add a custom option to product, Magento threw this error: `A 'Uncaught TypeError: Cannot read property 'apply' of undefined' error`. *Fix submitted by Roman K. in pull request 11965*. [GitHub-11792](https://github.com/magento/magento2/issues/11792) + * Magento now correctly decodes single quotation marks in the Admin attribute option input fields. *Fix submitted by erfanimani in pull request 12133*. [GitHub-12127](https://github.com/magento/magento2/issues/12127) + * You can now save emojis in custom product options. *Fix submitted by Carlos Lizaga in pull request 12253*. + * The `delay` parameter now works as expected, which permits you to set the delay on the JQuery widget opening or closing. Previously, this parameter was documented, but did not work as expected. *Fix submitted by Sam Carr in pull request 12161*. + * Third-party category images now have `size` and `type` properties. *Fix submitted by Vova Yatsyuk in pull request 12161*. + * Category page X-Magento-Tags headers no longer contain product cache identities when category display mode is set to **Static block only**. *Fix submitted by Atish Goswami in pull request 12466*. + * You can now delete rows in the `dynamicRows` component. *Fix submitted by Roman K. in pull request 921*. [GitHub-8830](https://github.com/magento/magento2/issues/8830) + * You can now add a new product with custom attributes that has the same name and attributes as a previously deleted product. Previously, Magento did not let you add this new product because a `request_path` with the same value already existed in `table url_rewrite` from the previous product. *Fix submitted by Nickolas Malyovanets in pull request 12167*. [GitHub-12110](https://github.com/magento/magento2/issues/12110) + * The `og:type` meta tag content value has been corrected from `` to ``. *Fix submitted by Atish Goswami in pull request 12530*. + * The Product Image Watermark Size Validation message has been revised for accuracy. *Fix submitted by Nickolas Malyovanets in pull request 985*. [GitHub-12613](https://github.com/magento/magento2/issues/12613) + * Magento no longer creates an extraneous new product when you save an existing product whose SKU you've changed. *Fix submitted by Nickolas Malyovanets in pull request 984*. [GitHub-12535](https://github.com/magento/magento2/issues/12535) + * cURL requests to delete a product's tier pricing when used on store code **all** now works as expected. Previously, this cURL request deleted the tier pricing but also all the image selections for the product. *Fix submitted by Nickolas Malyovanets in pull request 977*. [GitHub-10797](https://github.com/magento/magento2/issues/10797) + * Sort by Price now works as expected on the catalog search page. *Fix submitted by Roman K. in pull request 929*. [GitHub-12468](https://github.com/magento/magento2/issues/12468) + * If an error occurs when you run `catalog:images:resize`, Magento now includes an entry into the log file. Previously, Magento displayed an error message, but did not add an entry into any log files. *Fix submitted by Roman K. in pull request 1000*. [GitHub-8204](https://github.com/magento/magento2/issues/8204) + * You can now duplicate and save a product successfully. Previously, you could not successfully duplicate a product, and Magento displayed this message: `Notice: Undefined offset: 0 in /home/software/public_html/vendor/magento/module-catalog/Model/Category/Link/SaveHandler.php on line 124`. *Fix submitted by p-bystritsky in pull request 983*. [GitHub-12259](https://github.com/magento/magento2/issues/12259) + * The REST API now saves all product properties as expected. Previously, Magento did not save the price and weight, and these attributes were not returned in the result of the POST request. *Fix submitted by Nickolas Malyovanets in pull request 1018*. [GitHub-6486](https://github.com/magento/magento2/issues/6486) + * Duplicate `email` IDs no longer occur on the Magento default contact page when running Google Chrome { Version 63.0.3239.84 (Official Build) (64-bit) }. *Fix submitted by serhii-balko in pull request 1036*. [GitHub-12712](https://github.com/magento/magento2/issues/12712) + * The `hasDataChanges` attribute for loaded EAV collection items now returns `true` or `false` as expected. Previously, this attribute always returned `true`. *Fix submitted by virtual97 in pull request 12736*. [GitHub-12374](https://github.com/magento/magento2/issues/12374) + * `ajax:addToCart` now contains the `eventData` parameter, with variables for SKU and quantity. *Fix submitted by Renon Stewart in pull request 12875*. + * You can now successfully save a new option for a product custom attribute when the value of Admin scope is empty. Previously, Magento threw an exception. *Fix submitted by virtual97 in pull request 12755*. + * You can now sort product collections by the `is_saleable` attribute. *Fix submitted by Nickolas Malyovanets in pull request 1045*. [GitHub-7768](https://github.com/magento/magento2/issues/7768) + * We've added a failsafe to the `items.phtml` file. *Fix submitted by Sam Granger in pull request 13086*. + * You can now save a product with customizable options. Previously, if you were trying to add a customizable option (for example, a customer group) to a product, Magento did not let you save the product, the form did not close, and a validation issue was triggered. *Fix submitted by luismiguelyangehuaman in pull request 12048*. [GitHub-11528](https://github.com/magento/magento2/issues/11528) + * Magento now correctly displays stock status for products. *Fix submitted by Roman K. in pull request 955*. + * The catalog product list widget now works with multiple SKUs. Previously, Magento displayed this error, `We're sorry, an error has occurred while generating this email`. *Fix submitted by Nickolas Malyovanets in pull request 1050*. [GitHub-11897](https://github.com/magento/magento2/issues/11897) + * Magento now loads type-dependent layout handles before more specific ID/SKU layout handles. Previously, when Magento updated a product page layout for a specific ID with `catalog_product_view_id_.xml`, some changes were overwritten by a less specific `catalog_product_view_type_.xml`. *Fix submitted by Andreas Schrammel in pull request 12807*. + * Unused temporary variables have been removed from `Adminhtml/Category/Save.html`. *Fix submitted by Pierre Martin in pull request 13663*. + * Language switching now works as expected on the Catalog and Product pages. Previously, language switching did not work on these pages in production mode. *Fix submitted by p-bystritsky in pull request 1143*. [GitHub-11963](https://github.com/magento/magento2/issues/11963) + * The subcategory URL path is now updated for a store view according to the URL path of its parent category. + * In cases where `imagebuilder` makes multiple calls, it no longer re-uses attributes from the first call if attributes from a second call are empty. Previously, `imagebuilder` re-used the attributes from the first call, which lead to unexpected results in storefront image display. *Fix submitted by Ihor Sviziev in pull request 13438*. + * `updateCart.phtml` now uses dynamic rather than hardcoded validators. *Fix submitted by Gil Greenberg in pull request 13462*. + * An unused constructor dependency has been removed from the Product Link Save handler. *Fix submitted by Ihor Sviziev in pull request 13436*. + * The Low Stock report now accurately lists all out-of-stock products. Previously, this report was not accurate when the All Websites view was selected. *Fix submitted by gwharton in pull request 13682*. [GitHub-10595](https://github.com/magento/magento2/issues/10595) + * We've improved the visibility of products when displayed by category, and you can now filter by status. *Fix submitted by Peter Jaap Blaakmeer in pull request 12564*. + * Magento now correctly sets a `product_links` position attribute even when the attribute value is not set in a GET request. Previously, only the first two of each link type were shown in the backend or in a GET request response, even though Magento correctly added the product links to the database. *Fix submitted by Mohammad Haj-Salem in pull request 12650*. ### Cart and checkout + * Magento no longer adds addresses with `saveInAddressBook` set to **0** to the address book for new customers. Previously, if you placed an order as a guest and set the `save_in_address_book` setting for an address to **0**, Magento still copied that address to the customer address book when registering as a new customer on the checkout success page. [GitHub-7691](https://github.com/magento/magento2/issues/7691) + * Magento no longer combines the Custom Checkout and Shipping steps when Magento loads the checkout page. *Fix submitted by Roman K. in pull request 975*. + * You can now successfully change currency for an order before you complete the order. Previously, if you changed currency, when you proceeded with checkout by choosing as Bank Transfer Payment as Payment Method, Magento displayed, **Your credit card will be charged for**. *Fix submitted by Roman K. in pull request 993*. [GitHub-12526](https://github.com/magento/magento2/issues/12526) + * Magento no longer throws a JavaScript error on the cart from postcode validation when **United States** is deselected in the **Allowed Countries** Admin option (**Admin > Stores > Settings > Configuration > General > Default Country**). *Fix submitted by codekipple in pull request 13051*. + * Street format spacing when multiple streets are present is now consistent across **Shipping** and **Review & Payments** checkout steps. *Fix submitted by nfourteen in pull request 13082*. + * Magento now displays text on the New Cart Rules page correctly. Previously, labels listed in the Store View Specific Labels section of this page were sometimes truncated or duplicated. *Fix submitted by serhii-balko in pull request 1146*. [GitHub-12231](https://github.com/magento/magento2/issues/12231) + * When you check out as guest and click **Create an account** on the success page, you can now click on the customer name to jump to the customer record. *Fix submitted by Renon Stewart in pull request 12998*. + * The `XML_PATH_CUSTOMER_MUST_BE_LOGGED` constant has been deprecated. *Fix submitted by Roman K. in pull request 1148*. [GitHub-7848](https://github.com/magento/magento2/issues/7848) + * `dropdownDialog` is now required when the minicart is available. *Fix submitted by Alexander Menk in pull request 13830*. + * The Check Out with Multiple Addresses page now displays an empty state field as expected when a customer changes from one address to another. *Fix submitted by enriquei4 in pull request 13364*. [GitHub-8621](https://github.com/magento/magento2/issues/8621) ### Configurable products + * You can now use custom price symbols when assigning prices to configurable prices. Previously, Magento did not properly display prices for configurable products when you used a custom price symbol when assigning prices. *Fix submitted by pradeep-wagento in pull request 13025*. [GitHub-12430](https://github.com/magento/magento2/issues/12430) + * Magento now reorders configurable attribute options as expected on the product page. *Fix submitted by wardcapp in pull request 12963*. [GitHub-7441](https://github.com/magento/magento2/issues/7441) + * Magento now displays elements of the **Catalog > Products > Create Configurations** page correctly. Previously, the currency symbol overlapped with the attribute option's price during creation of a configurable product. *Fix submitted by Vasilina in pull request*. + * If you enter an invalid value for an SKU during the creation of the configurable product, Magento now displays a warning and does not let you save the product. Previously, you were not warned about invalid SKU values, and when you clicked **Save**, all the product information you entered was lost. *Fix submitted by Zamaroka in pull request 12737*. [GitHub-11953](https://github.com/magento/magento2/issues/11953) + * Magento now correctly runs a partial attribute (EAV) reindex of configurable products whose child products' visibility is set to **Not Visible Individually**. *Fix submitted by Roman K. in pull request 1023*. [GitHub-12667](https://github.com/magento/magento2/issues/12667) + * Magento now displays the ID and `Visibility` parameter of child products when you use the `LinkManagementInterface` service contract to retrieve the ID and visibility of these products. Previously, Magento displayed NULL. *Fix submitted by Nickolas Malyovanets in pull request 986*. + * The product price indexer (`catalog_product_price reindex`) no longer stalls during reindexing. + * Product records inside the `catalog_product_super_link` table are no longer updated needlessly when you save a configurable product. Previously, saving configurable product erased and then reinserted records in the `catalog_product_super_link` table even when child products were not changed. This practice quickly resulted in an unnecessarily large `catalog_product_super_link` table, especially in multi-website installations. ### Customer accounts + * Magento now trims trailing and leading spaces when saving the name of a new contact. *Fix submitted by wardcapp in pull request 12964*. [GitHub-10415](https://github.com/magento/magento2/issues/10415) + * We fixed the invalid parameter configuration that was provided for the `$block` argument of `Magento\\Ui\\Component\\HtmlContent`. *Fix submitted by Tomasz Gregorczyk in pull request 12964*. + * Magento now successfully sends email (with content) even when you make a mistake in the email template file name. Previously, when the template name was incorrect, Magento sent the email with no content. *Fix submitted by Roman K. in pull request 970*. [GitHub-8437](https://github.com/magento/magento2/issues/8437) + * You can now import customer addresses from websites with country restrictions. + * Magento no longer displays the `Too many password reset requests` error when the **max wait time between password resets** setting has been disabled. Previously, when you attempted to reset a customer's password through the Admin, Magento threw an error even when you disabled the `max wait time between password resets` setting in the store configuration settings. *Fix submitted by Cole Hafner in pull request*. [GitHub-11409](https://github.com/magento/magento2/issues/11409) + * Magento no longer throws an exception when you try to open your account address book immediately after creating a customer. *Fix submitted by Chris Pook in pull request 12220*. [GitHub-12180](https://github.com/magento/magento2/issues/12180) + * The `isConfirmationRequired` method in the `AccountManagement` class is now public, which makes it available for plugins. (For example, you can now develop custom business logic to decide if confirmation is required (yes/no) for certain customers.) *Fix submitted by Derrick Heesbeen in pull request 11878*. + * When configuring a customer account, you can now leave the prefix or suffix fields as optional. Previously, if you did not select an option for these fields, Magento defaulted to selecting the first option in the list. *Fix submitted by Andreas von Studnitz in pull request 11462*. [GitHub-7241](https://github.com/magento/magento2/issues/7241) + * The storefront **Back to Sign in** button now works as expected. Previously, when you clicked that button, Magento simply reloaded the current page. *Fix submitted by StasKozar in pull request 12759*. [GitHub-12715](https://github.com/magento/magento2/issues/12715) + * The `window.checkout.customerLoginUrl` now contains a URL that includes the referrer in base64 encoding (for example, https://myshop.com/customer/account/login/referrer/aHR0cHM6Ly9teXNob3AuY29tL2NoZWNrb3V0). Previously, the login URL did not include a referrer (for example, https://myshop.com/customer/account/login). *Fix submitted by Tommy Quissens in pull request 12630*. [GitHub-12627](https://github.com/magento/magento2/issues/12627) + * When you are on the cart page and click a product's **Edit** link, the product page now correctly displays the product quantity currently in the cart. *Fix submitted by Arnoud Beekman in pull request 13310*. + * You can now create a custom attribute of type file for Customer objects as expected. Previously, you could create the custom attribute, but the file would not upload. *Fix submitted by Mkennethsmith in pull request 13563*. [GitHub-11252](https://github.com/magento/magento2/issues/11252) + * The event `customer_address_after_save_viv_observer` is now spelled correctly in the Customer `events.xml` file.. *Fix submitted by Renon Stewart in pull request 13661*. + * The `is_subscribed` extended parameter is now returned when a web API is used to modify or return information about a customer. ### Dashboard + * The `top destinations` configuration field is now configurable on a store level. Previously, it was configurable on the global level only. *Fix submitted by Andreas von Studnitz in pull request 13052*. + * When multiple validation errors occur while saving a customer address, Magento now shows unique messages in the `adminhtml` customer edit page. *Fix submitted by adrian-martinez-interactiv4 in pull request 12922*. + * The scroll bar on the Admin store switcher is now scrollable on machines running OSX. *Fix submitted by Juan Alonso in pull request 12931*. ### Directory + * The `\Magento\Directory\Model\PriceCurrency::format()` method no longer fails if you do not configure a conversion rate from the base to the specified currency. Previously, if you did not specify this conversion rate, Magento rendered the price (amount) in the base currency, not the specified currency. *Fix submitted by Nickolas Malyovanets in pull request 1022*. [GitHub-6965](https://github.com/magento/magento2/issues/6965) + * Magento now requires that customers select State/Province when shipping orders to India, and the checkout page now provides a drop-down field with appropriate values. *Fix submitted by p-bystritsky in pull request*. [GitHub-12378](https://github.com/magento/magento2/issues/12378) + * You can now disable the **State is Required for** field. *Fix submitted by Burlacu Vasilii in pull request 12917*. [GitHub-12894](https://github.com/magento/magento2/issues/12894) ### EAV attributes + * Creating new configuration attributes no longer causes naming collisions in the JavaScript UI registry. Previously, when you created a new default attribute and then subsequently created a new product, JavaScript errors occurred. *Fix submitted by Volodymyr Zaets in pull request 12945*. [GitHub-12555](https://github.com/magento/magento2/issues/12555) + * You can now use a single query to retrieve attribute groups from multiple attribute sets. *Fix submitted by Marius Strajeru in pull request 12105*. [GitHub-11936](https://github.com/magento/magento2/issues/11936) + * Magento now saves multiselect attribute for a product that has a related product using another attribute set. Previously, multiselect attribute values were not saved for a product in the Admin panel when it had a related product that used another attribute set. *Fix submitted by awarche in pull request 12767*. + * The product attribute repository save method no longer resets the source model to null when you create a new product attribute through code. *Fix submitted by Nickolas Malyovanets in pull request 1012*. [GitHub-10814](https://github.com/magento/magento2/issues/10814) + * Magento now uses the correct `entity_model` in `table eav_entity_type` for invoices (`Magento\Sales\Model\ResourceModel\Order\Invoice`). Previously, in `table eav_entity_type` for `entity_type_code = "invoice"` the `entity_model` was `Magento\Sales\Model\ResourceModel\Order`. *Fix submitted by Nickolas Malyovanets in pull request 980*. [GitHub-10123](https://github.com/magento/magento2/issues/10123) + * When a validation message is returned, Magento no longer displays the attribute code (`$attrCode`), but instead returns the label (`$label`). This change makes it easier to translate messages. *Fix submitted by Hewerson Freitas in pull request 12120*. + * You can now perform a mass update on products that have more than 60 attributes. + * `Magento\Eav\Model\Config::getAttribute` now stops the Profiler before it returns Profiler run time. Previously, `Magento\Eav\Model\Config::getAttribute` did not stop the Profiler from returning early, and consequently reported incorrect run time. *Fix submitted by Nick Anstee in pull request 12810*. + * The `beforeSave` method encodes an attribute value only when it has not yet been encoded. Previously, the JSON-encoded attribute value was loaded correctly, but when you saved a product multiple times, the attribute value was also encoded multiple times. Consequently, Magento did save the product, and displayed this error, **Unable to unserialize value**. *Fix submitted by Tibor Kotosz in pull request 13551*. + * The deprecated `each()` function has been removed from the code. *Fix submitted by Ihor Sviziev in pull request*. ### Email + * Order confirmation emails from the Admin in multistore environments no longer default to the primary store, but instead are sent from the store that the customer used. *Fix submitted by Roman K. in pull request*. [GitHub-11740](https://github.com/magento/magento2/issues/11740) + * Magento no longer sends misleading feedback when sending tracking information email. Previously, instead of sending a notice that a shipment was underway, this response was sent, **You sent the shipment**. *Fix submitted by Nickolas Malyovanets in pull request 1245*. [GitHub-5697](https://github.com/magento/magento2/issues/5697) ### Frameworks + * You can now switch to default mode from production mode. Previously, if you tried to switch back to default mode, Magento displayed this error, `Cannot switch into given mode 'default'`. *Fix submitted by Etty in pull request 12752*. [GitHub-4292](https://github.com/magento/magento2/issues/4292) + * `vendor/magento/framework/composer.json` now declares a dependency on `magento/zendframework1`. Previously, packages depending on `magento/framework` packages failed to execute. *Fix submitted by Ihor Sviziev in pull request 12990*. [GitHub-12967](https://github.com/magento/magento2/issues/12967) + * The `filePutContents('file.txt')` now contains content as expected. Previously, Magento threw this error, `The specified "file.text" file could not be written`. *Fix submitted by Nickolas Malyovanets in pull request 962*. [GitHub-7467](https://github.com/magento/magento2/issues/7467) + * You can now subscribe to events that contain a number in their name. *Fix submitted by Mobecls in pull request 12758*. [GitHub-5035](https://github.com/magento/magento2/issues/5035) + * PhpDoc now shows correct parameter types. Previously, PhpDoc showed only a type of `string`, although `array` was also a valid parameter type. *Fix submitted by Freek Vandeursen in pull request 12826*. + * Content no longer jumps when pages are reloaded on the Admin because `notices-wrapper` now has a `min-height` setting. *Fix submitted by Anna Völkl in pull request 12985*. + * We've corrected a typo in the `Magento\Ui\Controller\Adminhtml\Index\Render` action. *Fix submitted by Nick in pull request 12951*. + * `X-Magento-Vary` and `PHPSESSID` now have the same expiration time. Previously, the `X-Magento-Vary` cookie had an expiration of `session`, which meant it was not considered expired until the browser was closed. In contrast, the `PHPSESSID` cookie had a finite expiration time (not `session`). At times, this resulted in Magento caching the wrong page for the logged-in user. + * `\Magento\Config\Model\Config\Structure\Reader::processingDocument` now throws a more helpful validation exception. *Fix submitted by Patrick McLain in pull request 12859*. + * Creating an observer that uses `ObserverInterface` no longer triggers a patch-level dependency on `magento/framework`. *Fix submitted by Kristof in pull request 13759*. + * RewriteBase directive has been added to the `.htaccess` file in `pub/static` to support the potential installation of Magento code under a directory inside the web root. *Fix submitted by Cristiano Casciotti in pull request 13678*. + * The doc block of the `walk` method in a collection now correctly describes that the method accepts a string or array. *Fix submitted by ByteCreation in pull request 13373*. + * The report processor now returns an HTTP 500 status code (which better communicates the need for user action) instead of a 503 status code. *Fix submitted by Andrew Howden in pull request 11513*. [GitHub-11512](https://github.com/magento/magento2/issues/11512) #### App framework + * The customer grid indexer now works as expected. Previously, this indexer did not work when reindexing using the command-line interface during upgrade. *Fix submitted by Leonid Poluyanov in pull request 10838*. [GitHub-10838](https://github.com/magento/magento2/issues/10838) + * `expectException()` calls now accept two parameters (instead of one). *Fix submitted by Fabian Schmengler in pull request 11099*. [GitHub-11059](https://github.com/magento/magento2/issues/11059) + * The `findAccessorMethodName()` method (`Magento\Framework\Reflection\NameFinder`) now provides a more helpful exception message. *Fix submitted by Roman K. in pull request 12303*. [GitHub-9764](https://github.com/magento/magento2/issues/9764) + * Customers with an empty **Date of Birth** field can now be saved even when the field is not marked (or checked on the JavaScript side) as mandatory. *Fix submitted by Vova Yatsyuk in pull request 12302*. [GitHub-12146](https://github.com/magento/magento2/issues/12146) + * You can now alter the transport variable in the `email_invoice_set_template_vars_before` event. *Fix submitted by Roman K. in pull request 12132*. [GitHub-10210](https://github.com/magento/magento2/issues/10210) + * Validation of South Korean zip codes now supports current South Korean zip code format. *Fix submitted by Roman K. in pull request 903*. [GitHub-9515](https://github.com/magento/magento2/issues/9515) #### Configuration framework + * Scope-based configuration now decrypts data as expected. Previously, scope-based configuration failed to decrypt data on the default store only. *Fix submitted by DubovykOleksandr in pull request 8591*. #### JavaScript framework + * The `depends` field now works for fields of type `radio` in `system.xml`. *Fix submitted by Javier Villanueva in pull request 11539*. + * Magento now sorts fields and amounts as expected when you extend a dynamic-row element in a `ui_component` and add a sort order attribute with an amount that falls between the other elements' amount. *Fix submitted by Harald Deiser in pull request 11846*. #### Session framework + * The Setup Wizard page now loads successfully when the session storage method is memcache. Previously, Magento returned an HTTP 500 error when you navigated to **System > Tools > Web Setup Wizard Setup Wizard** in installations where you've configured the session storage method to memcache in `env.php`. *Fix submitted by Marty S in pull request 11608*. [GitHub-9633](https://github.com/magento/magento2/issues/9633) + * When you add a product to your wish list after logging out, Magento now redirects you to your account wish list page and adds the product. Previously, you were redirected to your wish list page, but Magento did not add the product. *Fix submitted by Oscar Recio in pull request 12038*. [GitHub-11825](https://github.com/magento/magento2/issues/11825) + * Anonymous calls using REST no longer trigger the creation of PHP sessions. *Fix submitted by serhii-balko in pull request 1247*. [GitHub-7213](https://github.com/magento/magento2/issues/7213) #### Web API framework + * A user who has been denied permissions for negotiable quote editing can now create customer addresses. + * Swagger now works as expected on instances of Magento that are running on non-standard ports. *Fix submitted by JeroenVanLeusden in pull request 12541*. + * You can now set attribute values to empty strings using REST. Previously, Magento would not let you use REST to pass the following attributes with empty values: `special_from_date`, `special_to_date`, and `special_price`. *Fix submitted by Roman K. in pull request 916*. [GitHub-8862](https://github.com/magento/magento2/issues/8862) + * We've updated the `webapi` module to improve the order of how arguments are merged in multiple `di.xml` files. *Fix submitted by serhii-balko in pull request 995*. [GitHub-8647](https://github.com/magento/magento2/issues/8647) + * `SearchCriteriaBuilder` now has a check to determine if sort order should be applied. Previously, `SearchCriteriaBuilder` built wrong criteria (`ORDER BY part`). *Fix submitted by Nickolas Malyovanets in pull request 1003*. [GitHub-5738](https://github.com/magento/magento2/issues/5738) + * Anonymous Web API access to the Admin now unlocks REST catalog calls without requiring `auth` tokens. *Fix submitted by Roman K. in pull request 904*. [GitHub-9468](https://github.com/magento/magento2/issues/9468) #### Zend framework + * `vendor/magento/framework/composer.json` now declares a dependency on `magento/zendframework1`. Previously, packages depending on `magento/framework` packages failed to execute. *Fix submitted by Ihor Sviziev in pull request 12990*. ### General + * A customer can now successfully log out of a session and then immediately log back in. Previously, if a customer logged out and then attempted to log in without the logout success page first completing its timeout, Magento displayed the logout page. *Fix submitted by Vinay Shah in pull request 13040*. + * Magento now displays notification messages for only the expected duration. Previously, Magento displayed these messages indefinitely within a session. *Fix submitted by p-bystritsky in pull request 1111*. [GitHub-11527](https://github.com/magento/magento2/issues/11527) + * Sorting by product name now works as expected when filters are applied. *Fix submitted by p-bystritsky in pull request 1192*. [GitHub-12860](https://github.com/magento/magento2/issues/12860) + * We've removed the `Magento\ProductAlert\Controller\Add\TestObserver` class. *Fix submitted by Alexander Shkurko in pull request 13174*. + * In the top-level README file in the Magento Open Source repository, all links to DevDocs have been updated to 2.2. *Fix submitted by Bhargav Mehta in pull request 13161*. + * Elements within an array in `store_website` table are now correctly formatted. *Fix submitted by Nolwennig Guilbert in pull request 13324*. + * A type error in `CartTotalRepository` has been resolved. Previously, `CartTotalRepository` could not handle extension attributes in quote addresses, and Magento threw a `PHP Fatal error: Uncaught TypeError`. *Fix submitted by p-bystritsky in pull request 12993*. [GitHub-12993](https://github.com/magento/magento2/issues/12993), [GitHub-12819](https://github.com/magento/magento2/issues/12819) + * The WYSIWYG editor image insertion process now takes into account the static URLs configuration value (configuration setting `cms/wysiwyg/use_static_urls_in_catalog`). *Fix submitted by Nickolas Malyovanets in pull request 1215.* [GitHub-12147](https://github.com/magento/magento2/issues/12147) + * The `` statement in the `system.xml` file now works as expected. Previously, when you entered an XML layout update with CDATA for the first time, it worked as expected. After you saved the file, however, the `CDATA` tag disappeared. *Fix submitted by serhii-balko in pull request 1163*. [GitHub-12322](https://github.com/magento/magento2/issues/12322) + * Magento now strips out unnecessary whitespace in the attribute value IDs used on the review form. Previously, rating titles with whitespace resulted in broken ID attributes. *Fix submitted by Nickolas Malyovanets in pull request 1119*. [GitHub-5451](https://github.com/magento/magento2/issues/5451) + * The header label **Price** in the invoice PDF is now correctly aligned with the invoice item's price. *Fix submitted by serhii-balko in pull request 1216*. [GitHub-8453](https://github.com/magento/magento2/issues/8453) + * Google Analytics `pageview` is no longer triggered twice. *Fix submitted by Bhargav Mehta in pull request 13034*. [GitHub-12221](https://github.com/magento/magento2/issues/12221) + * Minor display issues on the Magento home product page have been resolved. *Fix submitted by Punit Vaswani in pull request 13081*. [GitHub-11796](https://github.com/magento/magento2/issues/11796) + * We've removed a condition from the password reset strength meter that caused a JavaScript error. *Fix submitted by Alisson Oldoni in pull request 13429*. + * The copyright year has been updated to 2018. *Fix submitted by Bhargav Mehta in pull request 13027*. + * Magento now displays the Contact Us page in the menu as expected. Previously, Magento displayed unnecessary space between the category page and the main footer. *Fix submitted by Sanjay Patel in pull request 13026*. [GitHub-12601](https://github.com/magento/magento2/issues/12601) + * The `Learn More Link` widget option in the Recently Viewed Products widget now respects its setting. *Fix submitted by JeroenVanLeusden in pull request 12946*. + * An unused `if` statement in the order invoice `Save.php` has been removed. *Fix submitted by JeroenVanLeusden in pull request 12887*. + * The `sid` variable no longer appears in the storefront URL even if it has been disabled in the Admin. Previously, even when the Magento setting **General > Web > Session Validation Settings > Use SID on Storefront** was set to **No**, the `sid` variable no longer appears in the URL. *Fix submitted by Roman Strelenko in pull request 12743*. [GitHub-9453](https://github.com/magento/magento2/issues/9453) + * The menu item handling has been refactored to read item data from two different sources: * from original XML definition if the cache is empty * from transformed item data when available in the cache. *Fix submitted by Pavel in pull request 12747*. [GitHub-9720](https://github.com/magento/magento2/issues/9720) + * A typo in the `SINGLE_PRODUCT_LAYOUT_HANLDE` constant has been fixed. *Fix submitted by Andreas Schrammel in pull request 12786*. + * The tracking link no longer returns a 404 error in the Admin. *Fix submitted by Ihor Sviziev in pull request*. [GitHub-12206](https://github.com/magento/magento2/issues/12206) + * The product option value price calculation has been improved. Previously, tier prices and customs options were not calculated correctly. *Fix submitted by Marina Gociu in pull request 11563*. [GitHub-5774](https://github.com/magento/magento2/issues/5774) + * White space that is prepended to a coupon code no longer causes an error. Previously, Magento did not apply the coupon and displayed this message: `Coupon code is not valid`. *Fix submitted by Roman K. in pull request 1021*. [GitHub-12656](https://github.com/magento/magento2/issues/12656) + * The **modified** date field on editing pages is now updated as expected. *Fix submitted by Oscar Recio in pull request*. [GitHub-12625](https://github.com/magento/magento2/issues/12625) + * Links to Magento Connect on the Partners and Extensions page have been removed and replaced with links to Magento Marketplace. *Fix submitted by Miguel Balparda in pull request 12633*. [GitHub-12632](https://github.com/magento/magento2/issues/12632) + * HTML tags have been removed from the display of attribute names in the dropdown menu of the Catalog Product list. *Fix submitted by Nickolas Malyovanets in pull request 968*. [GitHub-8011](https://github.com/magento/magento2/issues/8011) + * Magento now displays the orders that are associated with customer accounts on the Orders page. Previously, in the Admin display of customer accounts that have orders associated with them, Magento did not display orders on the Orders tab but instead displayed a blank page. + * The credit card form is now available when you create an order from the Admin, even when only one payment method is enabled. Previously, when only one payment method was enabled, the Admin did not render this form. + * Full Page Cache is no longer invalidated after you save a predictor category. Previously, all product-related cache data was invalidated, when only a narrow subset of cache tags associated with the `product_id` should have been. + * Magento now displays a more meaningful error message when a module name is misspelled in a unit test. *Fix submitted by Nickolas Malyovanets in pull request 13740*. + * Magento now displays a more meaningful error message when a module name is misspelled in `registration.php`. *Fix submitted by Jānis Elmeris in pull request 12843*. + * In the line `Perform login specific action` in `StorageInterface.php`, `login` has been replaced with `logout`. *Fix submitted by David Angel in pull request 13679*. + * The incorrect field value in the joined `variable_value` table has been replaced with two values: `plain_value` and `html_value`. *Fix submitted by Maksymilian Szydło in pull request 13596*. + * Duplicate array keys in `app/code/Magento/Bundle/Block/Adminhtml/Catalog/Product/Edit/Tab/Attributes/Extend.php` and `app/code/Magento/Downloadable/Helper/File.php` have been removed. *Fix submitted by Leandro F. L. in pull request 12513*. + * The typo in the `getDispretionPath` function name has been corrected to `getDispersionPath`. *Fix submitted by PascalBrouwers in pull request 12507*. [GitHub-12506](https://github.com/magento/magento2/issues/12506) + * Magento now saves new orders created by guest accounts to the Order display as expected. Previously, Magento did not display the order with the customer information assigned to it, and although Magento sent email containing the order ID, the email did not contain information about the ordered items. *Fix submitted by Roman K. in pull request 12241*. [GitHub-10128](https://github.com/magento/magento2/issues/10128) + * CAPTCHA labels now reflect both the symbols and letters associated with the CAPTCHA image. Previously, the text labels referred to the CAPTCHA image referred to letters only, despite there being numbers in the CAPTCHA images, too. This ambiguity had the potential to mislead users about which text to enter. *Fix submitted by RhodriOwainDavies in pull request 12387*. + * The `robots.txt` response header content type is now plain text. *Fix submitted by Milan Osztromok in pull request 12310*. + * Customers can now successfully use RSS to share their wish lists. Previously, when a logged-in user added products to the wish list and then tried to share them using RSS, Magento threw this exception: `report.INFO: Broken reference: the 'wishlist.email.rss' element cannot be added as child to 'root', because the latter doesn't exist` *Fix submitted by mediactbv in pull request*. + * When you select a new main menu option, the previously selected menu item now loses the `ui-state-active` class as expected. *Fix submitted by Arnoud Beekman in pull request 13341*. [GitHub-13327](https://github.com/magento/magento2/issues/13327) + * Issues with displaying full-screen images and video on the configurable product page have been resolved. Previously, Magento displayed video associated with product options on this page as images, rather than video, and full-screen mode for images ignored the configurations settings in `view.xml`. *Fix submitted by Ievgen Shakhsuvarov in pull request 991*. [GitHub-12268](https://github.com/magento/magento2/issues/12268) + * We've fixed issues with the "report module enable/disable changes as deployment markers" functionality in the `Magento_NewRelicReporting` module. Previously, if New Relic's cron was enabled, Magento sent a New Relic deployment marker for every enabled module once per cron period. This resulted in an excessive number of events. *Fix submitted by Kristof in pull request 12477*. + * The New Product Configuration process now works as expected from the Admin. Previously, on the last step of this process, Magento displayed the `the element.disabled is not a function` message, and did not create the product variations as expected. [GitHub-12555](https://github.com/magento/magento2/issues/12555) + * Save operations on CMS pages now load from `pageRepository`. *Fix submitted by JeroenVanLeusden in pull request 13814*. + * Magento now correctly displays product titles when displaying Sales information in Google Analytics. Previously, Magento replaced spaces in product names with their HTML values (for example, `\u0020`). *Fix submitted by Julien Anquetil in pull request 13844*. [GitHub-13827](https://github.com/magento/magento2/issues/13827), [GitHub-13350](https://github.com/magento/magento2/issues/13350) ### Import/export + * You can now successfully import product images and image labels from CSV files. Previously after import, the alt text field on the Admin was empty, even though the label was imported and was visible on the product list page as alt attribute, and the Product Detail page missed the alt attribute on image fields. *Fix submitted by Ben Robie in pull request 11323*. [GitHub-9931](https://github.com/magento/magento2/issues/9931) -* The CSV file created by using **System > Export** now incorporates the value of `hide_for_product_page`. -*Fix submitted by Nickolas Malyovanets in pull request 11926*. + +* The CSV file created by using **System > Export** now incorporates the value of `hide_for_product_page`. *Fix submitted by Nickolas Malyovanets in pull request 11926*. + * You can now import a value of zero (0) into a custom attribute when using the Admin product import feature. *Fix submitted by p-bystritsky in pull request 12283*. [GitHub-12083](https://github.com/magento/magento2/issues/12083) + * You can now import or export a specific store view that includes custom options and bundle product options. Previously, the import/export feature did not include store view-level edits for custom options. + * Import no longer fails when you import products with image filenames containing round brackets from a CSV file. *Fix submitted by p-bystritsky in pull request 1017*. [GitHub-12084](https://github.com/magento/magento2/issues/12084) + * When you import information about existing customers, Magento now changes only the specific rows for this customer. If rows for other customer attributes (for example, `group_id`, `store_id`, `created_at`) are absent in the import file, these values are included unchanged. + * Magento now provides a test for adding values in the system variable collection unit test. *Fix submitted by Nickolas Malyovanets in pull request 13742*. + * You can now successfully import configurable products with specified configurable links when the `store_view_code` setting isn't set. Previously, you could successfully import a configurable product with both configurable and additional attributes, but when you viewed the category to which the product belonged, the product was not displayed. [GitHub-5876](https://github.com/magento/magento2/issues/5876) + * Save operations on CMS blocks now load from `pageRepository`. *Fix submitted by JeroenVanLeusden in pull request 13796*. + * The default storefront welcome message now works as expected when the **Translate Inline** (**Stores > Settings > Configuration > Advanced > Developer >**) setting is enabled. *Fix submitted by Paresh Pansuriya in pull request 13038*. [GitHub-12711](https://github.com/magento/magento2/issues/12711) + * You can now use the layout update XML field to include custom CSS in CMS pages. [GitHub-4454](https://github.com/magento/magento2/issues/4454) + * Magento now correctly displays product titles when displaying Sales information in Google Analytics. Previously, Magento replaced spaces in product names with their HTML values (for example, `\u0020`). *Fix submitted by Julien Anquetil in pull request 13844*. [GitHub-13827](https://github.com/magento/magento2/issues/13827), [GitHub-13350](https://github.com/magento/magento2/issues/13350) ### Indexing + * The URL that points to Magento `crontab` documentation has been updated to reflect current cron documentation in `app/code/Magento/Indexer/Model/Message/Invalid.php`. *Fix submitted by Robbie Thompson in pull request 13050*. + * You can now view the state of the mview queue in real time, which can be useful when debugging indexing issues. You can now view how many items are in the queue pending processing, as well as view information from the `mview_state` table. *Fix submitted by Luke Rodgers in pull request 12122*. ### Infrastructure + * Zoom now works as expected when using dropdown menus. Previously, zoom worked fine, but when you hovered over the category dropdown menu to the overlap area of product image and dropdown menu, the zoom was abnormally active, even though the mouse was still on the dropdown menu. *Fix submitted by Mayank Zalavadia in pull request 13084*. [GitHub-5129](https://github.com/magento/magento2/issues/5129) + * RequireJS loading issues that occur when ad blockers are active have been resolved. Previously, `uBlock` (or any ad blocker) forbade the `trackingCode.js` file from loading, which prompted RequireJS to throw an exception. This exception broke the JavaScript execution flow and caused unexpected issues throughout the storefront. *Fix submitted by Yonn Trimoreau in pull request 13061*. + * `continue()` has been removed from templates. *Fix submitted by Ihor Sviziev in pull request 13076*. + * The comment that marks the `\Magento\Checkout\Model\Cart` class as deprecated now includes a pointer to an alternative class. This fix is part of an ongoing effort to add pointers to valid replacements when marking methods and classes as deprecated. *Fix submitted by Fabian Schmengler in pull request 13061*. [GitHub-10133](https://github.com/magento/magento2/issues/11070) + * A new file (`CODE_OF_CONDUCT.md`) that defines standards for how to engage in the community has been added. *Fix submitted by Ievgen Shakhsuvarov in pull request 12723*. + * `\Magento\Framework\Data\Tree::getNodeById()` no longer contains an invalid type in its PHPDoc block. *Fix submitted by Roman K. in pull request 964*. [GitHub-8507](https://github.com/magento/magento2/issues/8507) + * We’ve resolved naming collisions that previously occurred in the Javascript UI registry. Previously, these naming collisions resulted in the following behaviors: Magento displayed the `element.disabled is not a function` message, and did not create product variations as expected.
[GitHub-12555](https://github.com/magento/magento2/issues/12555) ### Newsletters + * The **About Us** and **Customer Service** links of the Order Confirmation email (and other emails sent to the customer) now work as expected. *Fix submitted by Roman K. in pull request*. [GitHub-12261](https://github.com/magento/magento2/issues/12261) -* Magento now sends the newsletter subscription success email as expected when a customer successfully subscribes to a newsletter. -*Fix submitted by Styopchik in pull request*. [GitHub-12439](https://github.com/magento/magento2/issues/12439) + +* Magento now sends the newsletter subscription success email as expected when a customer successfully subscribes to a newsletter. *Fix submitted by Styopchik in pull request*. [GitHub-12439](https://github.com/magento/magento2/issues/12439) + * Magento now uses indexes to retrieve subscriber information during the creation of email to newsletter subscribers. Previously, Magento did not use indexes for this task, and performance was poor. *Fix submitted by Amit Bera in pull request*. [GitHub-12787](https://github.com/magento/magento2/issues/12787) + * Magento no longer sends multiple confirmation emails when a customer successfully subscribes to a newsletter. *Fix submitted by Torben Höhn in pull request 13044*. [GitHub-12876](https://github.com/magento/magento2/issues/12876) + * The text of the **Subscribe to Newsletter** button now wraps correctly. *Fix submitted by monaemipro in pull request 13041*. [GitHub-12320](https://github.com/magento/magento2/issues/12320) ### Orders + * Magento now shows all products as expected in the Recently Ordered list when a customer places an order that contains products from multiple stores. Previously, in installations with two storefronts, if a customer added products from both stores to the same shopping cart, and placed a single order, the recently ordered product list would not show all ordered products. + * The `getDefaultStoreLocale()` method has been added to allow for the fetching of scoped values. Use this method in `getCreatedAtFormatted()` to ensure that Magento translates the `created_at` order date in emails for the locale being used in that store view. *Fix submitted by JeroenVanLeusden in pull request 11067*. + * You can now successfully open the Order edit page for orders that contain an address with extension attributes. Previously, when you tried to open this page, the page load failed with this error, `Recoverable Error: Object of class Magento\Sales\Api\Data\OrderAddressExtension could not be converted to string in .../module-sales/Model/AdminOrder/Create.php on line 503`. -* Magento now saves an invoice ID on the credit memo when you create a credit memo from the invoice in the Admin. Previously, -the invoice ID was not included. *Fix submitted by Anton Evers in pull request 11067*. [GitHub-11669](https://github.com/magento/magento2/issues/11669) + +* Magento now saves an invoice ID on the credit memo when you create a credit memo from the invoice in the Admin. Previously, the invoice ID was not included. *Fix submitted by Anton Evers in pull request 11067*. [GitHub-11669](https://github.com/magento/magento2/issues/11669) + * Credit memos can have the state open (`\Magento\Sales\Model\Order\Creditmemo::STATE_OPEN`). As a result, you can create a credit memo with an ID that still has to be refunded, and existing credit memos should be refundable if their state is open. *Fix submitted by Anton Evers in pull request 11550*. + * The `Magento\Sales\Service\V1\OrderCreateTest` test now has the correct shipping method fixture. Previously, this test contained an incorrect shipping method fixture, which produced an error whenever an order's shipping method was treated an object. *Fix submitted by andrew-garside-temando in pull request 12227*. + * When you create a credit memo comment with `POST /V1/creditmemo/:id/comments`, Magento now sends credit memo update emails as expected. Previously, Magento did not send this email, and no other transaction emails were sent to the customer. + * The `getReservedOrderId()` method now uses the current store as expected instead of the default store. *Fix submitted by Timon de Groot in pull request 11702*. [GitHub-9055](https://github.com/magento/magento2/issues/9055) + * When you are editing an order's shipping or billing address, Magento now displays the allowed countries from the correct store view. Previously, possible addresses were derived from the wrong store view. *Fix submitted by Roman K. in pull request*. [GitHub-12560](https://github.com/magento/magento2/issues/12560) + * The `\Magento\Sales\Model\Order\Pdf\AbstractPdf::drawLineBlocks` method now works as expected. Previously, when a text block spanned more than one page, Magento threw a `Zend_Pdf_Exception` error, and displayed this error: `Font has not been set`. *Fix submitted by serhii-balko in pull request 1016*. [GitHub-11743](https://github.com/magento/magento2/issues/11743) + * Magento no longer exports extra records when you export invoices for multiple orders. *Fix submitted by Sanjay Patel in pull request 13208*. [GitHub-12714](https://github.com/magento/magento2/issues/12714) + * You can now place orders using PayPal when **Payment Action = Order**. Previously, when **Payment Action = Order**, Magento displayed this error when you reached the order review page: `We can't place the order.` + * The cancel order and restore quote methods now accurately calculate the amount of stock to be returned to inventory when an order is canceled. Previously, when you canceled an order, some of these methods did not accurately calculate the amount of restored stock. *Fix submitted by Danny Verkade in pull request 12668*. [GitHub-9969](https://github.com/magento/magento2/issues/9969) + * Join extension attributes are now added as expected to order results when the order is created using REST. *Fix submitted by Nickolas Malyovanets in pull request 1168*. + * The Shipment Tracking REST API now throws an error as expected if the specified order doesn't exist. *Fix submitted by Roman K. in pull request 1162*. + * Invoices now display the exact quantity of a product ordered, even if it is a fractional unit (for example, 6.5). Previously, when Magento tried to invoice an order that had products with quantities that required decimals, it rounded down the quantity to the nearest whole number in the invoice. *Fix submitted by Nickolas Malyovanets in pull request 11997*. [GitHub-11941](https://github.com/magento/magento2/issues/11941) ### Payment methods + * The multishipping checkout flow now supports the CyberSource payment method. This payment method is supported on Magento Commerce only. However, as part of the process of adding CyberSource support, we've made improvements to the Multishipping module to simplify integration process for other payment methods. + * Logged-out customers can no longer see previously saved credit cards. Previously, users logged in as guest could see some payment information from an earlier, canceled order. + * Third-party developers can now customize payment errors messages for payment integrations based on the Magento Payment Provider Gateway. + * PayPal Express Checkout now appears as a payment option on the Checkout page when the PayPal buttons are available on the shopping cart page. Previously, PayPal did not appear as a payment method on the Checkout page when the billing agreement was disabled, although the PayPal buttons were still available on the shopping cart page. + * You can now view order details for an order created with a custom offline payment method. Previously, Magento displayed PHP warning (undefined index) instead of the order details. *Fix submitted by Alex in pull request 12296*. [GitHub-3596](https://github.com/magento/magento2/issues/3596) + * Magento no longer disables the BrainTree **Place Order** button after a failed payment validation. *Fix submitted by Ievgen Sentiabov in pull request 12902*. + * The `is_active` and `is_visible` columns now default to true even when column default values are not set in the `vault_payment_token` installation script. *Fix submitted by helloitsluke in pull request 12965*. + * If you've chosen a custom payment method that is offline when you create an order, Magento now displays that payment method's name as expected when you view order details in **Payment & Shipping**. *Fix submitted by zamoroka in pull request 12731*. [GitHub-12209](https://github.com/magento/magento2/issues/12209) + * PayPal now works as expected with virtual products such as gift cards. Previously, when you tried to place an order for a virtual product using PayPal, Magento did not display the PayPal popup when you clicked **Continue PayPal** during checkout. + * Magento now correctly adds checkout agreements data to requests and validates payment information when you place an order using PayPal Express. Previously, you could check this box, but Magento did not parse the agreements data or pass it to the set-payment-information API. This failure in turn triggered the `CheckoutAgreements` validation plugin, which failed to validate. *Fix submitted by Ričards Zālītis in pull request 12401*. + * Magento no longer archives active orders that are placed using PayPal Express Checkout. Previously, if you placed an order using PayPal Express Checkout, Magento would place the order as expected but also add it to the list of archived orders. + * Magento now correctly displays transparent `.PNG` watermarks on JPEG images. Previously, Magento did not correctly display a transparent watermark as expected on an image, but instead displayed a white outline of the box where the watermark should be. *Fix submitted by Elze Kool in pull request 11060*. [GitHub-10661](https://github.com/magento/magento2/issues/10661) -* We've improved the display of the Payment Methods section of the checkout page on mobile devices. Previously, the layout of page elements was not correctly spaced. *Fix submitted by Marcin Kwiatkowski in pull request 13777*. -[GitHub-13315](https://github.com/magento/magento2/issues/13315) + +* We've improved the display of the Payment Methods section of the checkout page on mobile devices. Previously, the layout of page elements was not correctly spaced. *Fix submitted by Marcin Kwiatkowski in pull request 13777*. [GitHub-13315](https://github.com/magento/magento2/issues/13315) + * Magento now correctly updates the credit memo total when a merchant issues a refund. *Fix submitted by serhii-balko in pull request 1185*. [GitHub-11798](https://github.com/magento/magento2/issues/11798) ### Performance + * The addition of a cache for the `getimagesize()` function has improved product image loading. + * Each cache type now has its own separate cache storage. + * We’ve optimized the initialization of the Product View block, which gives an 11% performance improvement for simple product views. + * Magento now caches search results for faster response time on popular searches. A system administrator can configure how many top search queries can be cached. This enhancement can result in up to a 36% improvement for cacheable search terms. ### Quote + * If a customer changes the currency type of his order-in-progress while viewing the shopping cart, Magento displays a message that shows the minimum order necessary in the new currency. Previously, this minimum was calculated incorrectly. *Fix submitted by Neeta Kangiya in pull request 13039*. + * Magento no longer truncates very long telephone numbers in the order page. Previously, Magento cut off very long phone numbers at 20 digits. *Fix submitted by Danny Verkade in pull request 13015*. [GitHub-10869](https://github.com/magento/magento2/issues/10869) -* You can now implement a product attribute that sets **Catalog Input Type for Store Owner** equal to **Fixed Product Tax** in a multistore environment. *Fix submitted by Danny Verkade in pull request 13019*. -[GitHub-12393](https://github.com/magento/magento2/issues/12393) + +* You can now implement a product attribute that sets **Catalog Input Type for Store Owner** equal to **Fixed Product Tax** in a multistore environment. *Fix submitted by Danny Verkade in pull request 13019*. [GitHub-12393](https://github.com/magento/magento2/issues/12393) + * When a customer is on the payment page and tries to reorder or retrace her steps backward through the checkout process, Magento now displays all the relevant shipping methods. Previously, Magento displayed only one shipping method under these circumstances. + * An integrity constraint violation error no longer occurs after you reorder a product with custom options. *Fix submitted by Vinay Shah in pull request 13036*. [GitHub-12705](https://github.com/magento/magento2/issues/12705) ### Reports + * The Products in Cart report is now accurate. Previously, if you created a Products in Cart report (**Open Reports** > Marketing > **Products in Cart**) after deleting a product from the catalog, the report displayed a blank list of products. *Fix submitted by angelo983 in pull request 12539*. + * You can now successfully export the Ordered Products report to a CSV file. Previously, the export file contained no report data. ### SalesRule + * Magento now displays the correct catalog rule price for bundle products with custom options. + * Cart prices now displays the Cart Price Rule shipping discount correctly. Previously, when you placed an order, Magento displayed this error: `Payment method is not available`. + * Magento now displays the exact label value that was given in the Admin during the cart price rule creation. *Fix submitted by Ihor Sviziev in pull request 13141*. [GitHub-11428](https://github.com/magento/magento2/issues/11428), [GitHub-11497](https://github.com/magento/magento2/issues/11497) + * Magento now correctly displays in Cart Price rules the nesting levels for categories with nesting levels that exceed three levels. + * Coupon codes that a customer applies to a subsequently canceled order are now available for re-use as expected. Previously, once a customer canceled this order, he could not apply the coupon code to another order. *Fix submitted by p-bystritsky in pull request*. [GitHub-12817](https://github.com/magento/magento2/issues/12817) ### Search + * Magento now displays popular search terms in **SEO & Search > Search Terms** as expected. *Fix submitted by p-bystritsky in pull request 1024*. [GitHub-10743](https://github.com/magento/magento2/issues/10743) + * Layered navigation now displays the correct product count. Previously, the layered navigation product count incorrectly included only in-stock products. *Fix submitted by Roman K. in pull request 12063*. [GitHub-11946](https://github.com/magento/magento2/issues/11946) + * Grid filtration now handles MySQL special characters as expected. *Fix submitted by laconica-sergey in pull request 12749*. ### Shipping @@ -977,158 +1252,201 @@ the invoice ID was not included. *Fix submitted by Anton Evers in pull request You can find Magento Shipping-specific release notes in [Magento Shipping Release Notes]({{ page.baseurl }}/release-notes/ReleaseNotesMagentoShipping2.2.x.html). + * The handling fee configuration of shipping methods is now explicitly cast to 0 to avoid warnings from PHP 7.1. *Fix submitted by Fabian Schmengler in pull request 13680*. + * Unused `count($_items)` in templates have been removed. *Fix submitted by Alexander Shkurko in pull request 12901*. + * Magento now enforces the minimum order amount during checkout as expected. Previously, you could bypass the minimum order amount logic by clicking **Check Out with Multiple Addresses**, removing products from the order,and then clicking **Update Qty & Addresses**. *Fix submitted by Roman K. in pull request 963*. + * DHL product codes now match those published in the latest DHL products and services guide. Previously, three DHL product codes in the DHL Shipping module were incorrect. *Fix submitted by gwharton in pull request 12666*. ### Sitemap + * `sitemap.xml` now displays URLs without `/home` appended. *Fix submitted by Oscar Recio in pull request 12649*. [GitHub-12446](https://github.com/magento/magento2/issues/12446) + * Sitemaps generated in a multi-store environment now include the correct URLs for each store (that is, `http://storename.com/` instead of `http://defaultstore.com/`). *Fix submitted by Roman K. in pull request 935*. [GitHub-12482](https://github.com/magento/magento2/issues/12482) + * Magento now handles errors that occur during sitemap generation in a less intrusive way. If Magento throws an exception when generating a sitemap, it now sends the errors through email as configured in the sitemap configuration XML. The former `_translateModel` property is not used anymore, and the inline translation is correctly suspended using the `inlineTranslation` property instead. *Fix submitted by Marina Gociu in pull request*. [GitHub-10502](https://github.com/magento/magento2/issues/10502) ### Swagger + * The code formatting in the Swagger block and template has been updated. *Fix submitted by JeroenVanLeusden in pull request 13485*. ### Swatches + * You can now use REST to import visual swatch attribute options. Previously, you could not add swatch options using service contracts unless a swatch option already existed for the attribute. *Fix submitted by gonzalopelon in pull request 12044*. [GitHub-9410](https://github.com/magento/magento2/issues/9410), [GitHub-10707](https://github.com/magento/magento2/issues/10707), [GitHub-10737](https://github.com/magento/magento2/issues/10737), [GitHub-11032](https://github.com/magento/magento2/issues/11032) + * Visual swatches that have a color assigned now show that color in the swatch box. Previously, Magento did not display any color in the color swatch box. *Fix submitted by Chris Pook in pull request 13101*. [GitHub-11828](https://github.com/magento/magento2/issues/11828) + * The error message displayed when you do not supply enough information during swatch creation has been edited for clarity and grammatical accuracy. *Fix submitted by Nickolas Malyovanets in pull request 1117*. [GitHub-5550](https://github.com/magento/magento2/issues/5550) ### Tax + * The default selector on the Admin's tax rule edit page now selects only the correct container (tax rate) following the Tax Rate multiselect. Previously, the default selector selected three elements, which resulted in inaccurate results. *Fix submitted by Pieter Hoste in pull request 13643*. [GitHub-12791](https://github.com/magento/magento2/issues/12791) + * We've removed the redundant default discount tax calculation (`tax/calculation/discount_tax`) from `Magento/Tax/etc/config.xml`. *Fix submitted by Vincent Marmiesse in pull request 13449*. + * The **Not yet calculated** text string immediately adjacent to the string **Tax** on the checkout page is now translated as expected. *Fix submitted by Roman K. in pull request 1147*. [GitHub-7849](https://github.com/magento/magento2/issues/7849) + * Magento no longer displays incorrect tax amounts for orders when using a non-default tax configuration.. *Fix submitted by Pieter Cappelle in pull request 12639*. [GitHub-10347](https://github.com/magento/magento2/issues/10347) ### Testing + * `ConfigurationTest` no longer fails when you install Magento using Composer. *Fix submitted by Nickolas Malyovanets in pull request 1161*. [GitHub-12574](https://github.com/magento/magento2/issues/12574) + * We've added `MagentoStyle` as console Input/output in Travis tests. + * We've reimplemented tests using Jasmine as part of the process of removing the legacy JavaScript test framework and completely removing `JSTestDriver` support. *Fix submitted by Carlos Lizaga in pull request*. [GitHub-12342](https://github.com/magento/magento2/issues/12342) + * `functional.suite.dist.yml` now handles custom backend names. Previously, the value for the `backend_name` configuration was hardcoded. *Fix submitted by scribam in pull request 12884*. + * We've added a missing preference for `ObjectManager\ConfigInterface` in integration tests. *Fix submitted by Fabian Schmengler in pull request 12845*. [GitHub-12844](https://github.com/magento/magento2/issues/12844) + * Integration Test Annotation `magentoAppArea` no longer breaks with valid values. *Fix submitted by Nickolas Malyovanets in pull request 996*. [GitHub-2907](https://github.com/magento/magento2/issues/2907) + * The inline documentation of the static test for XSS vulnerabilities now reflects that `@escapeNotVerified` is disallowed in Magento versions equal or greater than 2.2. *Fix submitted by Matthias Zeis in pull request 12639*. + * We've added integration tests for product URL rewrite generation. *Fix submitted by Adrien Louis-Rossignol in pull request 13567*. [GitHub-5863](https://github.com/magento/magento2/issues/5863), [GitHub-8227](https://github.com/magento/magento2/issues/8227), [GitHub-8957](https://github.com/magento/magento2/issues/8957), [GitHub-10073](https://github.com/magento/magento2/issues/10073), [GitHub-13240](https://github.com/magento/magento2/issues/13240) ### Themes + * Magento no longer caches warning messages as often as a customer clicks the **Update Shopping Cart** button while the shopping cart page loads. Previously, Magento cached a warning message each time a customer clicked this button while the page loaded in Firefox or Chrome, and this action resulted in multiple warning messages appearing on the top of the shopping cart page. + * If a customer is logged in while Magento loads, then the welcome message displays the customer's full name. *Fix submitted by Oleh Kravets in pull request 12738*. [GitHub-12719](https://github.com/magento/magento2/issues/12719) + * You can now disable the full screen gallery on mobile devices *Fix submitted by p-bystritsky in pull request 1006*. [GitHub-12490](https://github.com/magento/magento2/issues/12490), [GitHub-12285](https://github.com/magento/magento2/issues/12285) + * Protected method `getHtml` now checks each child for an existing class and then appends the `$outermostClass` if true. Previously, when creating a dependency injection for the `Magento\Theme\Block\Html\Topmenu` class, you could not change class names on children in a `beforeGetHtml` method because `getHtml` declares `setClass()` on all child items. *Fix submitted by jonshipman in pull request 12862*. + * Customers can now successfully close full-screen zoomed product images displayed on an iPhone 4s, 5s, 6, or 6s with the Safari browser. Previously, if a customer chose full screen zoom for any product image, he could not close the full screen zoom. ### Translations and locale + * Inline translations and custom translators now work for Knockout templates. *Fix submitted by Dmitry Fedyuk in pull request 12953*. [GitHub-2156](https://github.com/magento/magento2/issues/2156) + * Magento now provides a locale for Swedish (Finland). *Fix submitted by Nickolas Malyovanets in pull request 1207*. [GitHub-13095](https://github.com/magento/magento2/issues/13095) + * Magento now uses current locale (as defined in **Stores > Settings > Configuration > Advanced Reporting**) when translating the time zone label. Previously, Magento used operating system settings instead of current locale. *Fix submitted by adrian-martinez-interactiv4 in pull request 13408*. + * Newsletter labels can now handle Chinese language. *Fix submitted by Dasharth patel in pull request 13029*. [GitHub-12320](https://github.com/magento/magento2/issues/12320) + * The module responsible for generating the `js-translations.json` file now contains a routine that translates strings in tags such as ` + * You can now configure a form field with validation range-words. As a result, Category Name is validated, and Category is created (or displays the correct error message, if validation fails). Previously, Magento displayed an error message in the console. *Fix submitted by Robin Huy in pull request 12739*. -* The **Save Block** button on the Add New Block page no longer ignores clicks if the content editor is empty. -*Fix submitted by Roman K. in pull request 1032*. [GitHub-8114](https://github.com/magento/magento2/issues/8114) + +* The **Save Block** button on the Add New Block page no longer ignores clicks if the content editor is empty. *Fix submitted by Roman K. in pull request 1032*. [GitHub-8114](https://github.com/magento/magento2/issues/8114) + * Magento now disables the promo code input box after a user applies a promo code. *Fix submitted by Chirag P in pull request 13030*. + * Magento now displays video and images as expected when you select a video or click to view a full-screen image for a configurable product. *Fix submitted by Chumak Roman in pull request 12469*. [GitHub-12268](https://github.com/magento/magento2/issues/12268) + * The PHP notice that Magento displays when an invalid `ui_component` configuration is used has been improved. *Fix submitted by Vova Yatsyuk in pull request 12239*. + * Magento has added verification for previously set filters in `Magento/Ui/Component/Filters`, which has eliminated duplication of filters in collection `where` conditions. + * Inconsistency in the animation of the Admin spinner progress indicator has been corrected. *Fix submitted by Neill Robson in pull request 13700*. ### URL rewrites + * When using a store code in a URL, Magento now retrieves the value of `Store_Code` from the store if the store code value is empty. Previously, under these circumstances, Magento threw an error. *Fix submitted by Oscar Recio in pull request 12529*. [GitHub-8615](https://github.com/magento/magento2/issues/12450) ### Web API framework + * You can now use the REST API to make requests that include a slash (/) in an SKU. *Fix submitted by Roman K. in pull request 949*. [GitHub-8615](https://github.com/magento/magento2/issues/8615) ### Wish list + * Magento now correctly displays a product's special price when you add it to a wish list. Previously, if you added a product with a special price to the wish list, Magento displayed the product with its regular price. + * You can now remove an item description from a wish list. *Fix submitted by p-bystritsky in pull request 981*. [GitHub-12582](https://github.com/magento/magento2/issues/12582) diff --git a/guides/v2.2/release-notes/ReleaseNotes2.2.4EE.md b/guides/v2.2/release-notes/ReleaseNotes2.2.4EE.md index 4a5bbb4722f..d38a3561d78 100644 --- a/guides/v2.2/release-notes/ReleaseNotes2.2.4EE.md +++ b/guides/v2.2/release-notes/ReleaseNotes2.2.4EE.md @@ -31,21 +31,27 @@ Looking for more information on these new features as well as many others? Check This section describes changes in this release that are not full-fledged features or bug fixes, but that add noticeable improvements to product performance or ease-of-use. + * The admin global search is now translatable, extensible, and takes into account the ACL settings for the current user. See [Using global search](http://docs.magento.com/m2/ee/user_guide/stores/admin-global-search.html) for more information. *Fix submitted by Roman K. in pull request 1167*. [GitHub-7698](https://github.com/magento/magento2/issues/7698) + * The multi-shipping checkout flow now supports the CyberSource payment method. This payment method is supported by Magento Commerce only. As part of the process of adding CyberSource support, we've made improvements to the Multi-shipping module to simplify integration process for other payment methods. + * Magento has an automated checker to enforce the short array syntax convention that we are now enforcing in new code. This standard complies with all requirements of PSR-2. *Fix submitted by Nickolas Malyovanets in pull request 12499*. + * Magento now provides dedicated payment and shipping debug log files to store information specific to those functional areas. + * The Emogrifier dependency has been upgraded to 2.0.0 or later. *Fix submitted by Oliver Klee in pull request 13132*. + * We've replaced `is_null` with strict comparison only for models and block in the following modules: `Catalog`, `Tax`, `Sales`, and `EAV`. *Fixes submitted by Alexander Shkurko in pull requests 13171, 13170, 1163*. #### dotmailer enhancements @@ -77,27 +83,35 @@ We do not recommend upgrading to Magento 2.2.4 if you deploy across multiple web ### Installation, setup, and deployment + * The `backup` command now works as expected. *Fix submitted by Jagriti Joshi in pull request 13066*. [GitHub-12877](https://github.com/magento/magento2/issues/12877) + * Links to Magento installation documentation in `setup/view/magento/readiness-check/progress.html` are now correct. *Fix submitted by Jonas Hünig in pull request 12857*. + * You can now use the `app:config:status` command to check whether configuration propagation is up-to-date. *Fix submitted by Juan Alonso in pull request 12441*. + * The `bin/magento setup:rollback -d filename.sql` command now works as expected. Previously, this database rollback operation failed on certain versions of Magento (for example, 2.1.9). *Fix submitted by Roman K. in pull request 12108*. [GitHub-12064](https://github.com/magento/magento2/issues/12064) + * You can now set API access to integrations for Admin roles, which gives privileged users the ability to grant limited access to users such as third-party integrators. [GitHub-9684](https://github.com/magento/magento2/issues/9684) + * You can now enable or disable the Magento Profiler from the command line. [GitHub-9277](https://github.com/magento/magento2/issues/9277) + * The icons for Extension Manager and Module Manager are now consistent with the main content area and left-hand menu of the Web Setup Wizard. *Fix submitted by Danny Verkade in pull request 11388*. [GitHub-11236](https://github.com/magento/magento2/issues/11236) + * Magento now continues operating in maintenance mode if it was previously enabled. Previously, Magento disabled maintenance mode when you used one of these commands: * `bin\magento module:uninstall` @@ -109,893 +123,1163 @@ We do not recommend upgrading to Magento 2.2.4 if you deploy across multiple web *Fix submitted by Joke Puts in pull request 11052*. [GitHub-9918](https://github.com/magento/magento2/issues/9918) + * You can specify a custom version for static files being deployed, and now nginx sample config files can match these custom versions, too. *Fix submitted by Scott Buchanan in pull request 12521*. + * The `CrontabManager.php` file has been updated as follows: If `crontab` has already been populated, the `bin/magento cron:install` command adds `#~ MAGENTO START` and the rest of code directly to the last row of crontab without any spaces. *Fix submitted by Michele Fantetti in pull request*. + * The `ext-bcmath` PHP extension is now required in Open Source. Previously, it was required for Commerce only. *Fix submitted by Mobecls in pull request 12768*. + * The `cache_lifetime` default setting for the `Magento\Theme\Block\Html\Footer` block is no longer set to **false**, and the new default setting is **3600**. *Fix submitted by zolat in pull request 13762*. + * The `bin/magento maintenance:allow-ips` command now has the `--add` flag, which appends a new IP address to the list of allowed IP addresses. Previously, when you added a new IP address, you had to copy the existing addresses. *Fix submitted by Barry vd. Heuvel in pull request 13586*. + * The `config:set` command now has a `lock-config` option, and configuration values are always stored in `app/etc/config.php` instead of `app/etc/env.php`. *Fix submitted by Andreas von Studnitz in pull request 13280*. + * In the `Backend/etc/adminhtml/system.xml` file, the `url` group and `redirect_to_base` field are now configured so that the `showInWebsite` and `showInStore` attributes are set to `1`. *Fix submitted by JeroenVanLeusden in pull request 13614*. + * You can now deploy static content on demand while in production mode. + * The output of the `Magento maintenance:status` command no longer inserts a comma in between IP addresses, making it easier to copy and paste the values. *Fix submitted by Barry vd. Heuvel in pull request 13587*. + * The `DeploymentConfig` reader now always returns an array. *Fix submitted by Barry vd. Heuvel in pull request 13584*. + * Magento has improved how it manages the size of the `cron_schedule` table. [GitHub-11002](https://github.com/magento/magento2/issues/11002) + * Magento now includes a helper object to facilitate access to styling objects in the Symfony console. *Fix submitted by Wesley Guthrie in pull request 11504*. + * Magento no longer throws an error when you try to generate a URN catalog for an empty `misc.xml` file. *Fix submitted by Timon de Groot in pull request 11686*. [GitHub-5188](https://github.com/magento/magento2/issues/5188) + * The `sampledata:deploy` and `remove` commands now have `no-update` options. *Fix submitted by Fabian Schmengler in pull request 12359*. + * The currencies dropdown menu that is available during the setup process (step 4 -- customize your store) no longer displays unallowed currencies. *Fix submitted by Ricardo Martins in pull request 13770*. ### Bundle products + * Save operations now work as expected for bundle products. *Fix submitted by dzianis-yurevich in pull request 12734*. [GitHub-6916](https://github.com/magento/magento2/issues/6916) + * You can now duplicate a bundle product without stripping the original bundle product of its options. *Fix submitted by MattUnity in pull request 1217*. ### Catalog + * Magento now successfully updates a product's `stock_item` `extension_attribute` parameter for a product previously created using REST. *Fix submitted by nuzil in pull request 13494*. + * When two customers check out concurrently for the same product, one of the checkouts now succeeds. Previously, when two customers checked out concurrently for the same product, and the total quantity being ordered is greater than the quantity available, the stock could become negative. *Fix submitted by Myroslav Dobra in pull request 2133*. + * The `getUrl` method in `Magento\Catalog\Model\Product\Attribu…` no longer returns image URLs with unexpected double slashes. *Fix submitted by Igor Tregub in pull request 13498*. + * When sorting by price, Magento now displays the same number of products no matter how it sorts products in the Catalog Product list. Previously, Magento reduced the product count by the number of disabled products when sorting by price. + * The category filter used for layered navigation for configurable products with no available options now counts products accurately. + * When you set the `category_ids` attribute to be visible in the storefront catalog, Magento now displays catalog listings as expected. Previously, Magento threw an exception. *Fix submitted by Manu Gonzalez Rodriguez in pull request 11389*. [GitHub-11341](https://github.com/magento/magento2/issues/11341) + * Product display issues within categories that have been filtered by price have been resolved: Products are no longer repeated within a category, and random products are no longer included. *Fix submitted by Mayank Zalavadia in pull request 11429*. [GitHub-11139](https://github.com/magento/magento2/issues/11139) + * Updating a product with the REST API (`PUT /rest/all/V1/products/example_sku`) no longer assigns the product to all websites automatically. (Automatic assignment to all websites now occurs only when you create the product in All Store Views scope.) *Fix submitted by adrian-martinez-interactiv4 in pull request 11444*. [GitHub-11324](https://github.com/magento/magento2/issues/11324) + * Magento no longer throws an error when you re-save a product attribute with a new name. *Fix submitted by Raul Mateos in pull request 11617*. [GitHub-6770](https://github.com/magento/magento2/issues/6770) + * You can now successfully remove a toolbar from a product listing page. Previously, you could explicitly remove the toolbar from layout configuration, but Magento would return `product_list_toolbar` to the layout. *Fix submitted by mariuscris in pull request 11473*. [GitHub-9413](https://github.com/magento/magento2/issues/9413) + * The `getAttributeText($attributeCode)` method now returns string values as expected. Previously, this method returned an array of attribute values. *Fix submitted by p-bystritsky in pull request 12003*. + * You can now add customizable options to a product. Previously, when you tried to add a custom option to the product, Magento threw this error: `A 'Uncaught TypeError: Cannot read property 'apply' of undefined' error`. *Fix submitted by Roman K. in pull request 11965*. [GitHub-11792](https://github.com/magento/magento2/issues/11792) + * Magento now correctly decodes single quotation marks in the Admin attribute option input fields. *Fix submitted by erfanimani in pull request 12133*. [GitHub-12127](https://github.com/magento/magento2/issues/12127) + * You can now save emojis in custom product options. *Fix submitted by Carlos Lizaga in pull request 12253*. + * Magento no longer displays unused product attributes with a value of N/A or NO on the storefront. *Fix submitted by p-bystritsky in pull request 12057*. [GitHub-6634](https://github.com/magento/magento2/issues/6634), [GitHub-9961](https://github.com/magento/magento2/issues/9961) + * The `delay` parameter now works as expected, which permits you to set the delay on the JQuery widget opening or closing. Previously, this parameter was documented, but did not work as expected. *Fix submitted by Sam Carr in pull request 12161*. + * Third-party category images now have `size` and `type` properties. *Fix submitted by Vova Yatsyuk in pull request 12161*. + * Category page X-Magento-Tags headers no longer contain product cache identities when category display mode is set to **Static block only**. *Fix submitted by Atish Goswami in pull request 12466*. + * You can now delete rows in the `dynamicRows` component. *Fix submitted by Roman K. in pull request 921*. [GitHub-8830](https://github.com/magento/magento2/issues/8830) + * You can now add a new product with custom attributes that have the same name and attributes as a previously deleted product. Previously, Magento did not let you add this new product because a `request_path` with the same value already existed in `table url_rewrite` from the previous product. *Fix submitted by Nickolas Malyovanets in pull request 12167*. [GitHub-12110](https://github.com/magento/magento2/issues/12110) + * The `og:type` meta tag content value has been corrected from `` to ``. *Fix submitted by Atish Goswami in pull request 12530*. + * The Product Image Watermark Size Validation message has been revised for accuracy. *Fix submitted by Nickolas Malyovanets in pull request 985*. [GitHub-12613](https://github.com/magento/magento2/issues/12613) + * Magento no longer creates an extraneous new product when you save an existing product whose SKU you've changed. *Fix submitted by Nickolas Malyovanets in pull request 984*. [GitHub-12535](https://github.com/magento/magento2/issues/12535) + * cURL requests to delete a product's tier pricing when used on store code **all** now works as expected. Previously, this cURL request deleted the tier pricing but also all the image selections for the product. *Fix submitted by Nickolas Malyovanets in pull request 977*. [GitHub-10797](https://github.com/magento/magento2/issues/10797) + * Sort by Price now works as expected on the catalog search page. *Fix submitted by Roman K. in pull request 929*. [GitHub-12468](https://github.com/magento/magento2/issues/12468) + * If an error occurs when you run `catalog:images:resize`, Magento now includes an entry into the log file. Previously, Magento displayed an error message, but did not add an entry into any log files. *Fix submitted by Roman K. in pull request 1000*. [GitHub-8204](https://github.com/magento/magento2/issues/8204) + * You can now duplicate and save a product successfully. Previously, you could not successfully duplicate a product, and Magento displayed this message: `Notice: Undefined offset: 0 in /home/software/public_html/vendor/magento/module-catalog/Model/Category/Link/SaveHandler.php on line 124`. *Fix submitted by p-bystritsky in pull request 983*. [GitHub-12259](https://github.com/magento/magento2/issues/12259) + * The REST API now saves all product properties as expected. Previously, Magento did not save the price and weight, and these attributes were not returned in the result of the POST request. *Fix submitted by Nickolas Malyovanets in pull request 1018*. [GitHub-6486](https://github.com/magento/magento2/issues/6486) + * Duplicate `email` IDs no longer occur on the Magento default contact page when running Google Chrome { Version 63.0.3239.84 (Official Build) (64-bit) }. *Fix submitted by serhii-balko in pull request 1036*. [GitHub-12712](https://github.com/magento/magento2/issues/12712) + * The `hasDataChanges` attribute for loaded EAV collection items now returns `true` or `false` as expected. Previously, this attribute always returned `true`. *Fix submitted by virtual97 in pull request 12736*. [GitHub-12374](https://github.com/magento/magento2/issues/12374) + * `ajax:addToCart` now contains the `eventData` parameter, with variables for SKU and quantity. *Fix submitted by Renon Stewart in pull request 12875*. + * You can now successfully save a new option for a product custom attribute when the value of Admin scope is empty. Previously, Magento threw an exception. *Fix submitted by virtual97 in pull request 12755*. + * You can now sort product collections by the `is_saleable` attribute. *Fix submitted by Nickolas Malyovanets in pull request 1045*. [GitHub-7768](https://github.com/magento/magento2/issues/7768) + * We've added a failsafe to the `items.phtml` file. *Fix submitted by Sam Granger in pull request 13086*. + * You can now save a product with customizable options. Previously, if you were trying to add a customizable option (for example, a customer group) to a product, Magento did not let you save the product, the form did not close, and a validation issue was triggered. *Fix submitted by luismiguelyangehuaman in pull request 12048*. [GitHub-11528](https://github.com/magento/magento2/issues/11528) + * Magento now correctly displays stock status for products. *Fix submitted by Roman K. in pull request 955*. + * Visual Merchandiser now includes website scope when displaying the correct prices and availability of configurable products. + * The catalog product list widget now works with multiple SKUs. Previously, Magento displayed this error, `We're sorry, an error has occurred while generating this email`. *Fix submitted by Nickolas Malyovanets in pull request 1050*. [GitHub-11897](https://github.com/magento/magento2/issues/11897) + * Magento now loads type-dependent layout handles before more specific ID/SKU layout handles. Previously, when Magento updated a product page layout for a specific ID with `catalog_product_view_id_.xml`, some changes were overwritten by a less specific `catalog_product_view_type_.xml`. *Fix submitted by Andreas Schrammel in pull request 12807*. + * Unused temporary variables have been removed from `Adminhtml/Category/Save.html`. *Fix submitted by Pierre Martin in pull request 13663*. + * Language switching now works as expected on the Catalog and Product pages. Previously, language switching did not work on these pages in production mode. *Fix submitted by p-bystritsky in pull request 1143*. [GitHub-11963](https://github.com/magento/magento2/issues/11963) + * The subcategory URL path is now updated for a store view according to the URL path of its parent category. + * In cases where `imagebuilder` makes multiple calls, it no longer re-uses attributes from the first call if attributes from a second call are empty. Previously, `imagebuilder` re-used the attributes from the first call, which lead to unexpected results in storefront image display. *Fix submitted by Ihor Sviziev in pull request 13438*. + * `updateCart.phtml` now uses dynamic rather than hardcoded validators. *Fix submitted by Gil Greenberg in pull request 13462*. + * An unused constructor dependency has been removed from the Product Link Save handler. *Fix submitted by Ihor Sviziev in pull request 13436*. + * A database backup created by `setup:backup --db` and restored with `setup:rollback -d` now includes triggers as expected. Previously, the restored database did not include triggers, which meant that indexes could not work correctly. *Fix submitted by Denis Ristic in pull request 11369*. [GitHub-9036](https://github.com/magento/magento2/issues/9036) + * The Low Stock report now accurately lists all out-of-stock products. Previously, this report was not accurate when the All Websites view was selected. *Fix submitted by gwharton in pull request 13682*. [GitHub-10595](https://github.com/magento/magento2/issues/10595) + * We've improved the visibility of products when displayed by category, and you can now filter by status. *Fix submitted by Peter Jaap Blaakmeer in pull request 12564*. + * Magento now correctly sets a `product_links` position attribute even when the attribute value is not set in a GET request. Previously, only the first two of each link type was shown in the backend or in a GET request response, even though Magento correctly added the product links to the database. *Fix submitted by Mohammad Haj-Salem in pull request 12650*. + * We’re resolved issues with product creation that occurred on installations of Magento Commerce with B2B installed and Update by Schedule indexer mode set. ### Cart and checkout + * Magento no longer adds addresses with `saveInAddressBook` set to **0** to the address book for new customers. Previously, if you placed an order as a guest and set the `save_in_address_book` setting for an address to **0**, Magento still copied that address to the customer address book when registering as a new customer on the checkout success page. [GitHub-7691](https://github.com/magento/magento2/issues/7691) + * Magento no longer combines the Custom Checkout and Shipping steps when Magento loads the checkout page. *Fix submitted by Roman K. in pull request 975*. + * You can now successfully change currency for an order before you complete the order. Previously, if you changed currency, when you proceeded to checkout by choosing a Bank Transfer Payment as Payment Method, Magento displayed, **Your credit card will be charged for**. *Fix submitted by Roman K. in pull request 993*. [GitHub-12526](https://github.com/magento/magento2/issues/12526) + * Magento no longer throws a JavaScript error on the cart from postcode validation when the **United States** is deselected in the **Allowed Countries** Admin option (**Admin > Stores > Settings > Configuration > General > Default Country**). *Fix submitted by codekipple in pull request 13051*. + * Street format spacing when multiple streets are present is now consistent across **Shipping** and **Review & Payments** checkout steps. *Fix submitted by nfourteen in pull request 13082*. + * Magento now displays text on the New Cart Rules page correctly. Previously, labels listed in the Store View Specific Labels section of this page was sometimes truncated or duplicated. *Fix submitted by serhii-balko in pull request 1146*. [GitHub-12231](https://github.com/magento/magento2/issues/12231) + * When you check out as a guest and click **Create an account** on the success page, you can now click on the customer name to jump to the customer record. *Fix submitted by Renon Stewart in pull request 12998*. + * The `XML_PATH_CUSTOMER_MUST_BE_LOGGED` constant has been deprecated. *Fix submitted by Roman K. in pull request 1148*. [GitHub-7848](https://github.com/magento/magento2/issues/7848) + * `dropdownDialog` is now required when the mini cart is available. *Fix submitted by Alexander Menk in pull request 13830*. + * The Check Out with Multiple Addresses page now displays an empty state field as expected when a customer changes from one address to another. *Fix submitted by enriquei4 in pull request 13364*. [GitHub-8621](https://github.com/magento/magento2/issues/8621) ### Configurable products + * You can now use custom price symbols when assigning prices to configurable prices. Previously, Magento did not properly display prices for configurable products when you used a custom price symbol when assigning prices. *Fix submitted by pradeep-wagento in pull request 13025*. [GitHub-12430](https://github.com/magento/magento2/issues/12430) + * Magento now reorders configurable attribute options as expected on the product page. *Fix submitted by wardcapp in pull request 12963*. [GitHub-7441](https://github.com/magento/magento2/issues/7441) + * Magento now displays elements of the **Catalog > Products > Create Configurations** page correctly. Previously, the currency symbol overlapped with the attribute option's price during the creation of a configurable product. *Fix submitted by Vasilina in a pull request*. + * If you enter an invalid value for an SKU during the creation of the configurable product, Magento now displays a warning and does not let you save the product. Previously, you were not warned about invalid SKU values, and when you clicked **Save**, all the product information you entered was lost. *Fix submitted by Zamaroka in pull request 12737*. [GitHub-11953](https://github.com/magento/magento2/issues/11953) + * Magento now correctly runs a partial attribute (EAV) reindex of configurable products whose child products' visibility is set to **Not Visible Individually**. *Fix submitted by Roman K. in pull request 1023*. [GitHub-12667](https://github.com/magento/magento2/issues/12667) + * Magento now displays the ID and `Visibility` parameter of child products when you use the `LinkManagementInterface` service contract to retrieve the ID and visibility of these products. Previously, Magento displayed NULL. *Fix submitted by Nickolas Malyovanets in pull request 986*. + * The product price indexer (`catalog_product_price reindex`) no longer stalls during reindexing. + * Product records inside the `catalog_product_super_link` table are no longer updated needlessly when you save a configurable product. Previously, saving configurable product erased and then reinserted records in the `catalog_product_super_link` table even when child products were not changed. This practice quickly resulted in an unnecessarily large `catalog_product_super_link` table, especially in multi-website installations. ### Customer accounts + * Magento now trims trailing and leading spaces when saving the name of a new contact. *Fix submitted by wardcapp in pull request 12964*. [GitHub-10415](https://github.com/magento/magento2/issues/10415) + * We fixed the invalid parameter configuration that was provided for the `$block` argument of `Magento\\Ui\\Component\\HtmlContent`. *Fix submitted by Tomasz Gregorczyk in pull request 12964*. + * Magento now successfully sends an email (with content) even when you make a mistake in the email template file name. Previously, when the template name was incorrect, Magento sent the email with no content. *Fix submitted by Roman K. in pull request 970*. [GitHub-8437](https://github.com/magento/magento2/issues/8437) + * You can now import customer addresses from websites with country restrictions. + * Magento no longer displays the `Too many passwords reset requests` error when the **max wait time between password resets** setting has been disabled. Previously, when you attempted to reset a customer's password through the Admin, Magento threw an error even when you disabled the `max wait time between password resets` setting in the store configuration settings. *Fix submitted by Cole Hafner in a pull request*. [GitHub-11409](https://github.com/magento/magento2/issues/11409) + * Magento no longer throws an exception when you try to open your account address book immediately after creating a customer. *Fix submitted by Chris Pook in pull request 12220*. [GitHub-12180](https://github.com/magento/magento2/issues/12180) + * The `isConfirmationRequired` method in the `AccountManagement` class is now public, which makes it available for plugins. (For example, you can now develop custom business logic to decide if confirmation is required (yes/no) for certain customers.) *Fix submitted by Derrick Heesbeen in pull request 11878*. + * When configuring a customer account, you can now leave the prefix or suffix fields as optional. Previously, if you did not select an option for these fields, Magento defaulted to selecting the first option in the list. *Fix submitted by Andreas von Studnitz in pull request 11462*. [GitHub-7241](https://github.com/magento/magento2/issues/7241) + * The storefront **Back to Sign in** button now works as expected. Previously, when you clicked that button, Magento simply reloaded the current page. *Fix submitted by StasKozar in pull request 12759*. [GitHub-12715](https://github.com/magento/magento2/issues/12715) + * The `window.checkout.customerLoginUrl` now contains a URL that includes the referrer in base64 encoding (for example, https://myShop.com/customer/account/login/referrer/aHR0cHM6Ly9teXNob3AuY29tL2NoZWNrb3V0). Previously, the login URL did not include a referrer (for example, https://myShop.com/customer/account/login). *Fix submitted by Tommy Quissens in pull request 12630*. [GitHub-12627](https://github.com/magento/magento2/issues/12627) + * When you are on the cart page and click a product's **Edit** link, the product page now correctly displays the product quantity currently in the cart. *Fix submitted by Arnoud Beekman in pull request 13310*. + * You can now create a custom attribute of type file for Customer objects as expected. Previously, you could create the custom attribute, but the file would not upload. *Fix submitted by Mkennethsmith in pull request 13563*. [GitHub-11252](https://github.com/magento/magento2/issues/11252) + * The event `customer_address_after_save_viv_observer` is now spelled correctly in the Customer `events.xml` file. *Fix submitted by Renon Stewart in pull request 13661*. + * The `is_subscribed` extended parameter is now returned when a web API is used to modify or return information about a customer. ### Dashboard + * The `top destinations` configuration field is now configurable on a store level. Previously, it was configurable on the global level only. *Fix submitted by Andreas von Studnitz in pull request 13052*. + * When multiple validation errors occur while saving a customer address, Magento now shows unique messages in the `adminhtml` customer edit page. *Fix submitted by adrian-martinez-interactiv4 in pull request 12922*. + * The scrollbar on the Admin store switcher is now scrollable on machines running OSX. *Fix submitted by Juan Alonso in pull request 12931*. ### Directory + * The `\Magento\Directory\Model\PriceCurrency::format()` method no longer fails if you do not configure a conversion rate from the base to the specified currency. Previously, if you did not specify this conversion rate, Magento rendered the price (amount) in the base currency, not the specified currency. *Fix submitted by Nickolas Malyovanets in pull request 1022*. [GitHub-6965](https://github.com/magento/magento2/issues/6965) + * Magento now requires that customers select State/Province when shipping orders to India, and the checkout page now provides a drop-down field with appropriate values. *Fix submitted by p-bystritsky in pull request*. [GitHub-12378](https://github.com/magento/magento2/issues/12378) + * You can now disable the **State is Required for** field. *Fix submitted by Burlacu Vasilii in pull request 12917*. [GitHub-12894](https://github.com/magento/magento2/issues/12894) ### EAV attributes + * Creating new configuration attributes no longer causes naming collisions in the JavaScript UI registry. Previously, when you created a new default attribute and then subsequently created a new product, JavaScript errors occurred. *Fix submitted by Volodymyr Zaets in pull request 12945*. [GitHub-12555](https://github.com/magento/magento2/issues/12555) + * You can now use a single query to retrieve attribute groups from multiple attribute sets. *Fix submitted by Marius Strajeru in pull request 12105*. [GitHub-11936](https://github.com/magento/magento2/issues/11936) + * Magento now saves multi-select attributes for a product that has a related product using another attribute set. Previously, multi-select attribute values were not saved for a product in the Admin panel when it had a related product that used another attribute set. *Fix submitted by awarche in pull request 12767*. + * The product attribute repository save method no longer resets the source model to null when you create a new product attribute through code. *Fix submitted by Nickolas Malyovanets in pull request 1012*. [GitHub-10814](https://github.com/magento/magento2/issues/10814) + * Magento now uses the correct `entity_model` in `table eav_entity_type` for invoices (`Magento\Sales\Model\ResourceModel\Order\Invoice`). Previously, in `table eav_entity_type` for `entity_type_code = "invoice"` the `entity_model` was `Magento\Sales\Model\ResourceModel\Order`. *Fix submitted by Nickolas Malyovanets in pull request 980*. [GitHub-10123](https://github.com/magento/magento2/issues/10123) + * When a validation message is returned, Magento no longer displays the attribute code (`$attrCode`), but instead returns the label (`$label`). This change makes it easier to translate messages. *Fix submitted by Hewerson Freitas in pull request 12120*. + * You can now perform a mass update on products that have more than 60 attributes. + * `Magento\Eav\Model\Config::getAttribute` now stops the Profiler before it returns Profiler runtime. Previously, `Magento\Eav\Model\Config::getAttribute` did not stop the Profiler from returning early and consequently reported incorrect runtime. *Fix submitted by Nick Anstee in pull request 12810*. + * The `beforeSave` method encodes an attribute value only when it has not yet been encoded. Previously, the JSON-encoded attribute value was loaded correctly, but when you saved a product multiple times, the attribute value was also encoded multiple times. Consequently, Magento did save the product and displayed this error, **Unable to unserialize value**. *Fix submitted by Tibor Kotosz in pull request 13551*. + * The deprecated `each()` function has been removed from the code. *Fix submitted by Ihor Sviziev in a pull request*. ### Email + * Order confirmation emails from the Admin in multistore environments no longer default to the primary store, but instead are sent from the store that the customer used. *Fix submitted by Roman K. in pull request*. [GitHub-11740](https://github.com/magento/magento2/issues/11740) + * Magento no longer sends misleading feedback when sending tracking information email. Previously, instead of sending a notice that a shipment was underway, this response was sent, **You sent the shipment**. *Fix submitted by Nickolas Malyovanets in pull request 1245*. [GitHub-5697](https://github.com/magento/magento2/issues/5697) ### Frameworks + * You can now switch to default mode from production mode. Previously, if you tried to switch back to default mode, Magento displayed this error, `Cannot switch into given mode 'default'`. *Fix submitted by Etty in pull request 12752*. [GitHub-4292](https://github.com/magento/magento2/issues/4292) + * `vendor/magento/framework/composer.json` now declares a dependency on `magento/zendframework1`. Previously, packages depending on `magento/framework` packages failed to execute. *Fix submitted by Ihor Sviziev in pull request 12990*. [GitHub-12967](https://github.com/magento/magento2/issues/12967) + * The `filePutContents('file.txt')` now contains content as expected. Previously, Magento threw this error, `The specified "file.text" file could not be written*`. *Fix submitted by Nickolas Malyovanets in pull request 962*. [GitHub-7467](https://github.com/magento/magento2/issues/7467) + * You can now subscribe to events that contain a number in their name. *Fix submitted by Mobecls in pull request 12758*. [GitHub-5035](https://github.com/magento/magento2/issues/5035) + * PhpDoc now shows correct parameter types. Previously, PhpDoc showed only a type of `string`, although `array` was also a valid parameter type. *Fix submitted by Freek Vandeursen in pull request 12826*. + * Content no longer jumps when pages are reloaded on the Admin because `notices-wrapper` now has a `min-height` setting. *Fix submitted by Anna Völkl in pull request 12985*. + * We've corrected a typo in the `Magento\Ui\Controller\Adminhtml\Index\Render` action. *Fix submitted by Nick in pull request 12951*. + * `X-Magento-Vary` and `PHPSESSID` now have the same expiration time. Previously, the `X-Magento-Vary` cookie had an expiration of `session`, which meant it was not considered expired until the browser was closed. In contrast, the `PHPSESSID` cookie had a finite expiration time (not `session`). At times, this resulted in Magento caching the wrong page for the logged-in user. + * `\Magento\Config\Model\Config\Structure\Reader::processingDocument` now throws a more helpful validation exception. *Fix submitted by Patrick McLain in pull request 12859*. + * Creating an observer that uses `ObserverInterface` no longer triggers a patch-level dependency on `magento/framework`. *Fix submitted by Kristof in pull request 13759*. + * RewriteBase directive has been added to the `.htaccess` file in `pub/static` to support the potential installation of Magento code under a directory inside the web root. *Fix submitted by Cristiano Casciotti in pull request 13678*. + * The doc block of the `walk` method in a collection now correctly describes that the method accepts a string or array. *Fix submitted by ByteCreation in pull request 13373*. + * The report processor now returns an HTTP 500 status code (which better communicates the need for user action) instead of a 503 status code. *Fix submitted by Andrew Howden in pull request 11513*. [GitHub-11512](https://github.com/magento/magento2/issues/11512) #### App framework + * The customer grid indexer now works as expected. Previously, this indexer did not work when reindexing using the command-line interface during the upgrade. *Fix submitted by Leonid Poluyanov in pull request 10838*. [GitHub-10838](https://github.com/magento/magento2/issues/10838) + * `expectException()` calls now accept two parameters (instead of one). *Fix submitted by Fabian Schmengler in pull request 11099*. [GitHub-11059](https://github.com/magento/magento2/issues/11059) + * The `findAccessorMethodName()` method (`Magento\Framework\Reflection\NameFinder`) now provides a more helpful exception message. *Fix submitted by Roman K. in pull request 12303*. [GitHub-9764](https://github.com/magento/magento2/issues/9764) + * Customers with an empty **Date of Birth** field can now be saved even when the field is not marked (or checked on the JavaScript side) as mandatory. *Fix submitted by Vova Yatsyuk in pull request 12302*. [GitHub-12146](https://github.com/magento/magento2/issues/12146) + * You can now alter the transport variable in the `email_invoice_set_template_vars_before` event. *Fix submitted by Roman K. in pull request 12132*. [GitHub-10210](https://github.com/magento/magento2/issues/10210) + * Validation of South Korean zip codes now supports current South Korean zip code format. *Fix submitted by Roman K. in pull request 903*. [GitHub-9515](https://github.com/magento/magento2/issues/9515) #### Configuration framework + * Scope-based configuration now decrypts data as expected. Previously, scope-based configuration failed to decrypt data on the default store only. *Fix submitted by DubovykOleksandr in pull request 8591*. #### JavaScript framework + * The `depends` field now works for fields of type `radio` in `system.xml`. *Fix submitted by Javier Villanueva in pull request 11539*. + * Magento now sorts fields and amounts as expected when you extend a dynamic-row element in a `ui_component` and add a sort order attribute with an amount that falls between the other elements' amount. *Fix submitted by Harald Deiser in pull request 11846*. #### Session framework + * The Setup Wizard page now loads successfully when the session storage method is Memcache. Previously, Magento returned an HTTP 500 error when you navigated to **System > Tools > Web Setup Wizard Setup Wizard** in installations where you've configured the session storage method to Memcache in `env.php`. *Fix submitted by Marty S in pull request 11608*. [GitHub-9633](https://github.com/magento/magento2/issues/9633) + * When you add a product to your wish list after logging out, Magento now redirects you to your account Wish list page and adds the product. Previously, you were redirected to your wishlist page, but Magento did not add the product. *Fix submitted by Oscar Recio in pull request 12038*. [GitHub-11825](https://github.com/magento/magento2/issues/11825) + * Anonymous calls using REST no longer trigger the creation of PHP sessions. *Fix submitted by serhii-balko in pull request 1247*. [GitHub-7213](https://github.com/magento/magento2/issues/7213) #### Web API framework + * A user who has been denied permissions for negotiable quote editing can now create customer addresses. + * Swagger now works as expected on instances of Magento that are running on non-standard ports. *Fix submitted by JeroenVanLeusden in pull request 12541*. + * You can now set attribute values to empty strings using REST. Previously, Magento would not let you use REST to pass the following attributes with empty values: `special_from_date`, `special_to_date`, and `special_price`. *Fix submitted by Roman K. in pull request 916*. [GitHub-8862](https://github.com/magento/magento2/issues/8862) + * We've updated the `webapi` module to improve the order of how arguments are merged in multiple `di.xml` files. *Fix submitted by serhii-balko in pull request 995*. [GitHub-8647](https://github.com/magento/magento2/issues/8647) + * `SearchCriteriaBuilder` now has a check to determine if sort order should be applied. Previously, `SearchCriteriaBuilder` built wrong criteria (`ORDER BY part`). *Fix submitted by Nickolas Malyovanets in pull request 1003*. [GitHub-5738](https://github.com/magento/magento2/issues/5738) + * Anonymous Web API access to the Admin now unlocks REST catalog calls without requiring `auth` tokens. *Fix submitted by Roman K. in pull request 904*. [GitHub-9468](https://github.com/magento/magento2/issues/9468) #### Zend framework + * `vendor/magento/framework/composer.json` now declares a dependency on `magento/zendframework1`. Previously, packages depending on `magento/framework` packages failed to execute. *Fix submitted by Ihor Sviziev in pull request 12990*. ### General + * A customer can now successfully log out of a session and then immediately log back in. Previously, if a customer logged out and then attempted to log in without the logout success page first completing its timeout, Magento displayed the logout page. *Fix submitted by Vinay Shah in pull request 13040*. + * Magento now displays notification messages for only the expected duration. Previously, Magento displayed these messages indefinitely within a session. *Fix submitted by p-bystritsky in pull request 1111*. [GitHub-11527](https://github.com/magento/magento2/issues/11527) + * Sorting by product name now works as expected when filters are applied. *Fix submitted by p-bystritsky in pull request 1192*. [GitHub-12860](https://github.com/magento/magento2/issues/12860) + * We've removed the `Magento\ProductAlert\Controller\Add\TestObserver` class. *Fix submitted by Alexander Shkurko in pull request 13174*. + * In the top-level README file in the Magento Open Source repository, all links to DevDocs have been updated to 2.2. *Fix submitted by Bhargav Mehta in pull request 13161*. + * Elements within an array in `store_website` table are now correctly formatted. *Fix submitted by Nolwennig Guilbert in pull request 13324*. + * A type error in `CartTotalRepository` has been resolved. Previously, `CartTotalRepository` could not handle extension attributes in quote addresses, and Magento threw a `PHP Fatal error: Uncaught TypeError`. *Fix submitted by p-bystritsky in pull request 12993*. [GitHub-12993](https://github.com/magento/magento2/issues/12993), [GitHub-12819](https://github.com/magento/magento2/issues/12819) + * The WYSIWYG editor image insertion process now takes into account the static URLs configuration value (configuration setting `cms/wysiwyg/use_static_urls_in_catalog`). *Fix submitted by Nickolas Malyovanets in pull request 1215.* [GitHub-12147](https://github.com/magento/magento2/issues/12147) + * The `` statement in the `system.xml` file now works as expected. Previously, when you entered an XML layout update with CDATA for the first time, it worked as expected. After you saved the file, however, the `CDATA` tag disappeared. *Fix submitted by serhii-balko in pull request 1163*. [GitHub-12322](https://github.com/magento/magento2/issues/12322) + * Magento now strips out unnecessary whitespace in the attribute value IDs used on the review form. Previously, rating titles with whitespace resulted in broken ID attributes. *Fix submitted by Nickolas Malyovanets in pull request 1119*. [GitHub-5451](https://github.com/magento/magento2/issues/5451) + * The header label **Price** in the invoice PDF is now correctly aligned with the invoice item's price. *Fix submitted by serhii-balko in pull request 1216*. [GitHub-8453](https://github.com/magento/magento2/issues/8453) + * Google Analytics `pageview` is no longer triggered twice. *Fix submitted by Bhargav Mehta in pull request 13034*. [GitHub-12221](https://github.com/magento/magento2/issues/12221) + * Minor display issues on the Magento home product page have been resolved. *Fix submitted by Punit Vaswani in pull request 13081*. [GitHub-11796](https://github.com/magento/magento2/issues/11796) + * We've removed a condition from the password reset strength meter that caused a JavaScript error. *Fix submitted by Alisson Oldoni in pull request 13429*. + * The copyright year has been updated to 2018. *Fix submitted by Bhargav Mehta in pull request 13027*. + * Magento now displays the Contact Us page on the menu as expected. Previously, Magento displayed unnecessary space between the category page and the main footer. *Fix submitted by Sanjay Patel in pull request 13026*. [GitHub-12601](https://github.com/magento/magento2/issues/12601) + * The `Learn More Link` widget option in the Recently Viewed Products widget now respects its setting. *Fix submitted by JeroenVanLeusden in pull request 12946*. + * An unused `if` statement in the order invoice `Save.php` has been removed. *Fix submitted by JeroenVanLeusden in pull request 12887*. + * The `sid` variable no longer appears in the storefront URL even if it has been disabled in the Admin. Previously, even when the Magento setting **General > Web > Session Validation Settings > Use SID on Storefront** was set to **No**, the `sid` variable no longer appears in the URL. *Fix submitted by Roman Strelenko in pull request 12743*. [GitHub-9453](https://github.com/magento/magento2/issues/9453) + * The menu item handling has been refactored to read item data from two different sources: * from original XML definition if the cache is empty * from transformed item data when available in the cache. *Fix submitted by Pavel in pull request 12747*. [GitHub-9720](https://github.com/magento/magento2/issues/9720) + * A typo in the `SINGLE_PRODUCT_LAYOUT_HANLDE` constant has been fixed. *Fix submitted by Andreas Schrammel in pull request 12786*. + * The tracking link no longer returns a 404 error in the Admin. *Fix submitted by Ihor Sviziev in pull request*. [GitHub-12206](https://github.com/magento/magento2/issues/12206) + * The product option value price calculation has been improved. Previously, tier prices and customs options were not calculated correctly. *Fix submitted by Marina Gociu in pull request 11563*. [GitHub-5774](https://github.com/magento/magento2/issues/5774) + * White space that is prepended to a coupon code no longer causes an error. Previously, Magento did not apply the coupon and displayed this message: `Coupon code is not valid`. *Fix submitted by Roman K. in pull request 1021*. [GitHub-12656](https://github.com/magento/magento2/issues/12656) + * The **modified** date field on editing pages is now updated as expected. *Fix submitted by Oscar Recio in pull request*. [GitHub-12625](https://github.com/magento/magento2/issues/12625) + * Links to Magento Connect on the Partners and Extensions page have been removed and replaced with links to Magento Marketplace. *Fix submitted by Miguel Balparda in pull request 12633*. [GitHub-12632](https://github.com/magento/magento2/issues/12632) + * HTML tags have been removed from the display of attribute names in the dropdown menu of the Catalog Product list. *Fix submitted by Nickolas Malyovanets in pull request 968*. [GitHub-8011](https://github.com/magento/magento2/issues/8011) + * Magento now displays the orders that are associated with customer accounts on the Orders page. Previously, in the Admin display of customer accounts that have orders associated with them, Magento did not display orders on the Orders tab but instead displayed a blank page. + * Magento now displays information messages about both successful and failed actions when a company administrator adds or deletes entries in the Company Users section. Previously, Magento displayed this error message, `Something went wrong` in the response body, and did not display a message. + * The credit card form is now available when you create an order from the Admin, even when only one payment method is enabled. Previously, when only one payment method was enabled, the Admin did not render this form. + * Full Page Cache is no longer invalidated after you save a predictor category. Previously, all product-related cache data was invalidated, when only a narrow subset of cache tags associated with the `product_id` should have been. + * Magento now displays a more meaningful error message when a module name is misspelled in a unit test. *Fix submitted by Nickolas Malyovanets in pull request 13740*. + * Magento now displays a more meaningful error message when a module name is misspelled in `registration.php`. *Fix submitted by Jānis Elmeris in pull request 12843*. + * In the line `Perform login specific action` in `StorageInterface.php`, `login` has been replaced with `logout`. *Fix submitted by David Angel in pull request 13679*. + * The incorrect field value in the joined `variable_value` table has been replaced with two values: `plain_value` and `html_value`. *Fix submitted by Maksymilian Szydło in pull request 13596*. + * `Magento/Rma/Block/Adminhtml/Rma/Edit/Item/Form/Element/Boolean` is a new block element that allows rendering ability for the Boolean RMA attributes on the Admin. + * Duplicate array keys in `app/code/Magento/Bundle/Block/Adminhtml/Catalog/Product/Edit/Tab/Attributes/Extend.php` and `app/code/Magento/Downloadable/Helper/File.php` have been removed. *Fix submitted by Leandro F. L. in pull request 12513*. + * The typo in the `getDispretionPath` function name has been corrected to `getDispersionPath`. *Fix submitted by PascalBrouwers in pull request 12507*. [GitHub-12506](https://github.com/magento/magento2/issues/12506) + * Magento now saves new orders created by guest accounts to the Order display as expected. Previously, Magento did not display the order with the customer information assigned to it, and although Magento sent an email containing the order ID, the email did not contain information about the ordered items. *Fix submitted by Roman K. in pull request 12241*. [GitHub-10128](https://github.com/magento/magento2/issues/10128) + * CAPTCHA labels now reflect both the symbols and letters associated with the CAPTCHA image. Previously, the text labels referred to the CAPTCHA image referred to letters only, despite there being numbers in the CAPTCHA images, too. This ambiguity had the potential to mislead users about which text to enter. *Fix submitted by RhodriOwainDavies in pull request 12387*. + * The `robots.txt` response header content type is now plain text. *Fix submitted by Milan Osztromok in pull request 12310*. + * Customers can now successfully use RSS to share their wish lists. Previously, when a logged-in user added products to the wish list and then tried to share them using RSS, Magento threw this exception: `report.INFO: Broken reference: the 'wishlist.email.rss' element cannot be added as a child to 'root', because the latter doesn't exist` *Fix submitted by mediactbv in a pull request*. + * When you select a new main menu option, the previously selected menu item now loses the `ui-state-active` class as expected. *Fix submitted by Arnoud Beekman in pull request 13341*. [GitHub-13327](https://github.com/magento/magento2/issues/13327) + * Issues with displaying full-screen images and video on the configurable product page have been resolved. Previously, Magento displayed video associated with product options on this page as images, rather than video, and full-screen mode for images ignored the configurations settings in `view.xml`. *Fix submitted by Ievgen Shakhsuvarov in pull request 991*. [GitHub-12268](https://github.com/magento/magento2/issues/12268) + * We've fixed issues with the "report module enable/disable changes as deployment markers" functionality in the `Magento_NewRelicReporting` module. Previously, if New Relic's cron was enabled, Magento sent a New Relic deployment marker for every enabled module once per cron period. This resulted in an excessive number of events. *Fix submitted by Kristof in pull request 12477*. + * The New Product Configuration process now works as expected from the Admin. Previously, on the last step of this process, Magento displayed `the element.disabled is not a function` message and did not create the product variations as expected. [GitHub-12555](https://github.com/magento/magento2/issues/12555) + * Save operations on CMS pages now load from `pageRepository`. *Fix submitted by JeroenVanLeusden in pull request 13814*. + * Magento now correctly displays product titles when displaying Sales information in Google Analytics. Previously, Magento replaced spaces in product names with their HTML values (for example, `\u0020`). *Fix submitted by Julien Anquetil in pull request 13844*. [GitHub-13827](https://github.com/magento/magento2/issues/13827), [GitHub-13350](https://github.com/magento/magento2/issues/13350) ### Gift card + * Magento now includes a gift card recipient's email address in the gift card account history. Previously, Magento did not include the gift card recipient's name and email address in the gift card account history, even though Magento successfully sent the email. ### Import/export + * You can now successfully import product images and image labels from CSV files. Previously after import, the alt text field on the Admin was empty, even though the label was imported and was visible on the product list page as alt attribute, and the Product Detail page missed the alt attribute on image fields. *Fix submitted by Ben Robie in pull request 11323*. [GitHub-9931](https://github.com/magento/magento2/issues/9931) -* The CSV file created by using **System > Export** now incorporates the value of `hide_for_product_page`. -*Fix submitted by Nickolas Malyovanets in pull request 11926*. + +* The CSV file created by using **System > Export** now incorporates the value of `hide_for_product_page`. *Fix submitted by Nickolas Malyovanets in pull request 11926*. + * You can now import a value of zero (0) into a custom attribute when using the Admin product import feature. *Fix submitted by p-bystritsky in pull request 12283*. [GitHub-12083](https://github.com/magento/magento2/issues/12083) + * You can now import or export a specific store view that includes custom options and bundle product options. Previously, the import/export feature did not include store view-level edits for custom options. + * Import no longer fails when you import products with image filenames containing round brackets from a CSV file. *Fix submitted by p-bystritsky in pull request 1017*. [GitHub-12084](https://github.com/magento/magento2/issues/12084) + * When you import information about existing customers, Magento now changes only the specific rows for this customer. If rows for other customer attributes (for example, `group_id`, `store_id`, `created_at`) are absent in the import file, these values are included unchanged. + * Magento now provides a test for adding values to the system variable collection unit test. *Fix submitted by Nickolas Malyovanets in pull request 13742*. + * You can now successfully import configurable products with specified configurable links when the `store_view_code` setting isn't set. Previously, you could successfully import a configurable product with both configurable and additional attributes, but when you viewed the category to which the product belonged, the product was not displayed. [GitHub-5876](https://github.com/magento/magento2/issues/5876) + * Save operations on CMS blocks now load from `pageRepository`. *Fix submitted by JeroenVanLeusden in pull request 13796*. + * The default storefront welcome message now works as expected when the **Translate Inline** (**Stores > Settings > Configuration > Advanced > Developer >**) setting is enabled. *Fix submitted by Paresh Pansuriya in pull request 13038*. [GitHub-12711](https://github.com/magento/magento2/issues/12711) + * You can now use the layout update XML field to include custom CSS in CMS pages. [GitHub-4454](https://github.com/magento/magento2/issues/4454) + * We've added an @api annotation to the block argument marker interface. This identifies this interface as requiring only a minor version dependency. See [Dependencies]({{ site.baseurl }}/guides/v2.2/extension-dev-guide/versioning/dependencies.html) for more information. *Fix submitted by Vinai Kopp in pull request 13816*. ### Indexing + * The URL that points to Magento `crontab` documentation has been updated to reflect current cron documentation in `app/code/Magento/Indexer/Model/Message/Invalid.php`. *Fix submitted by Robbie Thompson in pull request 13050*. + * You can now view the state of the mview queue in real time, which can be useful when debugging indexing issues. Specifically, you can now view how many items are in the queue pending processing, as well as view information from the `mview_state` table. *Fix submitted by Luke Rodgers in pull request 12122*. ### Infrastructure + * Zoom now works as expected when using dropdown menus. Previously, zoom worked fine, but when you hovered over the category dropdown menu to the overlap area of product image and dropdown menu, the zoom was abnormally active, even though the mouse was still on the dropdown menu. *Fix submitted by Mayank Zalavadia in pull request 13084*. [GitHub-5129](https://github.com/magento/magento2/issues/5129) + * RequireJS loading issues that occur when ad blockers are active have been resolved. Previously, `uBlock` (or any ad blocker) forbade the `trackingCode.js` file from loading, which prompted RequireJS to throw an exception. This exception broke the JavaScript execution flow and caused unexpected issues throughout the storefront. *Fix submitted by Yonn Trimoreau in pull request 13061*. + * `continue()` has been removed from templates. *Fix submitted by Ihor Sviziev in pull request 13076*. + * The comment that marks the `\Magento\Checkout\Model\Cart` class as deprecated now includes a pointer to an alternative class. This fix is part of an ongoing effort to add pointers to valid replacements when marking methods and classes as deprecated. *Fix submitted by Fabian Schmengler in pull request 13061*. [GitHub-10133](https://github.com/magento/magento2/issues/11070) + * A new file (`CODE_OF_CONDUCT.md`) that defines standards for how to engage in the community has been added. *Fix submitted by Ievgen Shakhsuvarov in pull request 12723*. + * `\Magento\Framework\Data\Tree::getNodeById()` no longer contains an invalid type in its PHPDoc block. *Fix submitted by Roman K. in pull request 964*. [GitHub-8507](https://github.com/magento/magento2/issues/8507) + * We’ve resolved naming collisions that previously occurred in the Javascript UI registry. Previously, these naming collisions resulted in the following behaviors: Magento displayed the `element.disabled is not a function` message, and did not create product variations as expected.
[GitHub-12555](https://github.com/magento/magento2/issues/12555) ### Newsletters + * The **About Us** and **Customer Service** links of the Order Confirmation email (and other emails sent to the customer) now work as expected. *Fix submitted by Roman K. in pull request*. [GitHub-12261](https://github.com/magento/magento2/issues/12261) + * Magento now sends the newsletter subscription success email as expected when a customer successfully subscribes to a newsletter. *Fix submitted by Styopchik in pull request*. [GitHub-12439](https://github.com/magento/magento2/issues/12439) + * Magento now uses indexes to retrieve subscriber information during the creation of email to newsletter subscribers. Previously, Magento did not use indexes for this task, and performance was poor. *Fix submitted by Amit Bera in pull request*. [GitHub-12787](https://github.com/magento/magento2/issues/12787) + * Magento no longer sends multiple confirmation emails when a customer successfully subscribes to a newsletter. *Fix submitted by Torben Höhn in pull request 13044*. [GitHub-12876](https://github.com/magento/magento2/issues/12876) + * The text of the **Subscribe to Newsletter** button now wraps correctly. *Fix submitted by monaemipro in pull request 13041*. [GitHub-12320](https://github.com/magento/magento2/issues/12320) ### Orders + * Magento now shows all products as expected in the Recently Ordered list when a customer places an order that contains products from multiple stores. Previously, in installations with two storefronts, if a customer added products from both stores to the same shopping cart, and placed a single order, the recently ordered product list would not show all ordered products. + * The `getDefaultStoreLocale()` method has been added to allow for the fetching of scoped values. Use this method in `getCreatedAtFormatted()` to ensure that Magento translates the `created_at` order date in emails for the locale being used in that store view. *Fix submitted by JeroenVanLeusden in pull request 11067*. + * You can now successfully open the Order edit page for orders that contain an address with extension attributes. Previously, when you tried to open this page, the page load failed with this error, `Recoverable Error: Object of class Magento\Sales\Api\Data\OrderAddressExtension could not be converted to string in .../module-sales/Model/AdminOrder/Create.php on line 503`. -* Magento now saves an invoice ID on the credit memo when you create a credit memo from the invoice in the Admin. Previously, -the invoice ID was not included. *Fix submitted by Anton Evers in pull request 11067*. [GitHub-11669](https://github.com/magento/magento2/issues/11669) + +* Magento now saves an invoice ID on the credit memo when you create a credit memo from the invoice in the Admin. Previously, the invoice ID was not included. *Fix submitted by Anton Evers in pull request 11067*. [GitHub-11669](https://github.com/magento/magento2/issues/11669) + * Credit memos can have the state open (`\Magento\Sales\Model\Order\Creditmemo::STATE_OPEN`). As a result, you can create a credit memo with an ID that still has to be refunded, and existing credit memos should be refundable if their state is open. *Fix submitted by Anton Evers in pull request 11550*. + * The `Magento\Sales\Service\V1\OrderCreateTest` test now has the correct shipping method fixture. Previously, this test contained an incorrect shipping method fixture, which produced an error whenever an order's shipping method was treated as an object. *Fix submitted by andrew-garside-temando in pull request 12227*. + * When you create a credit memo comment with `POST /V1/creditmemo/:id/comments`, Magento now sends credit memo update emails as expected. Previously, Magento did not send this email, and no other transaction emails were sent to the customer. + * The `getReservedOrderId()` method now uses the current store as expected instead of the default store. *Fix submitted by Timon de Groot in pull request 11702*. [GitHub-9055](https://github.com/magento/magento2/issues/9055) + * When you are editing an order's shipping or billing address, Magento now displays the allowed countries from the correct store view. Previously, possible addresses were derived from the wrong store view. *Fix submitted by Roman K. in a pull request*. [GitHub-12560](https://github.com/magento/magento2/issues/12560) + * The `\Magento\Sales\Model\Order\Pdf\AbstractPdf::drawLineBlocks` method now works as expected. Previously, when a text block spanned more than one page, Magento threw a `Zend_Pdf_Exception` error, and displayed this error: `Font has not been set`. *Fix submitted by serhii-balko in pull request 1016*. [GitHub-11743](https://github.com/magento/magento2/issues/11743) + * Magento no longer exports extra records when you export invoices for multiple orders. *Fix submitted by Sanjay Patel in pull request 13208*. [GitHub-12714](https://github.com/magento/magento2/issues/12714) + * You can now place orders using PayPal when **Payment Action = Order**. Previously, when **Payment Action = Order**, Magento displayed this error when you reached the order review page: `We can't place the order.` + * The cancel order and restore quote methods now accurately calculate the amount of stock to be returned to inventory when an order is canceled. Previously, when you canceled an order, some of these methods did not accurately calculate the amount of restored stock. *Fix submitted by Danny Verkade in pull request 12668*. [GitHub-9969](https://github.com/magento/magento2/issues/9969) + * Join extension attributes are now added as expected to order results when the order is created using REST. *Fix submitted by Nickolas Malyovanets in pull request 1168*. + * The Shipment Tracking REST API now throws an error as expected if the specified order doesn't exist. *Fix submitted by Roman K. in pull request 1162*. + * Invoices now display the exact quantity of a product ordered, even if it is a fractional unit (for example, 6.5). Previously, when Magento tried to invoice an order that had products with quantities that required decimals, it rounded down the quantity to the nearest whole number in the invoice. *Fix submitted by Nickolas Malyovanets in pull request 11997*. [GitHub-11941](https://github.com/magento/magento2/issues/11941) ### Payment methods + * The multi-shipping checkout flow now supports the CyberSource payment method. This payment method is supported by Magento Commerce only. However, as part of the process of adding CyberSource support, we've made improvements to the Multi-shipping module to simplify integration process for other payment methods. Users of the CyberSource payment method should note that CyberSource uses the Magento Vault module only to store and retrieve tokens. Stored CyberSource tokens won't be displayed on the checkout page or customer account. + * Logged-out customers can no longer see previously saved credit cards. Previously, users logged in as guest could see some payment information from an earlier, canceled order. + * Third-party developers can now customize payment errors messages for payment integrations based on the Magento Payment Provider Gateway. + * PayPal Express Checkout now appears as a payment option on the Checkout page when the PayPal buttons are available on the shopping cart page. Previously, PayPal did not appear as a payment method on the Checkout page when the billing agreement was disabled, although the PayPal buttons were still available on the shopping cart page. + * You can now view order details for an order created with a custom offline payment method. Previously, Magento displayed PHP warning (undefined index) instead of the order details. *Fix submitted by Alex in pull request 12296*. [GitHub-3596](https://github.com/magento/magento2/issues/3596) + * Magento no longer disables the BrainTree **Place Order** button after a failed payment validation. *Fix submitted by Ievgen Sentiabov in pull request 12902*. + * The `is_active` and `is_visible` columns now default to true even when column default values are not set in the `vault_payment_token` installation script. *Fix submitted by helloitsluke in pull request 12965*. + * If you've chosen a custom payment method that is offline when you create an order, Magento now displays that payment method's name as expected when you view order details in **Payment & Shipping**. *Fix submitted by zamoroka in pull request 12731*. [GitHub-12209](https://github.com/magento/magento2/issues/12209) + * PayPal now works as expected with virtual products such as gift cards. Previously, when you tried to place an order for a virtual product using PayPal, Magento did not display the PayPal popup when you clicked **Continue PayPal** during checkout. + * Magento now correctly adds checkout agreements data to requests and validates payment information when you place an order using PayPal Express. Previously, you could check this box, but Magento did not parse the agreements data or pass it to the set-payment-information API. This failure in turn triggered the `CheckoutAgreements` validation plugin, which failed to validate. *Fix submitted by Ričards Zālītis in pull request 12401*. + * Magento no longer archives active orders that are placed using PayPal Express Checkout. Previously, if you placed an order using PayPal Express Checkout, Magento would place the order as expected but also add it to the list of archived orders. + * Magento now correctly displays transparent `PNG` watermarks on JPEG images. Previously, Magento did not correctly display a transparent watermark as expected on an image, but instead displayed a white outline of the box where the watermark should be. *Fix submitted by Elze Kool in pull request 11060*. [GitHub-10661](https://github.com/magento/magento2/issues/10661) -* We've improved the display of the Payment Methods section of the checkout page on mobile devices. Previously, the layout of page elements was not correctly spaced. *Fix submitted by Marcin Kwiatkowski in pull request 13777*. -[GitHub-13315](https://github.com/magento/magento2/issues/13315) + +* We've improved the display of the Payment Methods section of the checkout page on mobile devices. Previously, the layout of page elements was not correctly spaced. *Fix submitted by Marcin Kwiatkowski in pull request 13777*. [GitHub-13315](https://github.com/magento/magento2/issues/13315) + * Magento now correctly updates the credit memo total when a merchant issues a refund. *Fix submitted by serhii-balko in pull request 1185*. [GitHub-11798](https://github.com/magento/magento2/issues/11798) ### Performance + * The addition of a cache for the `getimagesize()` function has improved product image loading. + * Each cache type now has its own separate cache storage. + * We’ve optimized the initialization of the Product View block, which gives an 11% performance improvement for simple product views. + * Magento now caches search results for faster response time on popular searches. A system administrator can configure how many top search queries can be cached. This enhancement can result in up to a 36% improvement for cacheable search terms. ### Quote + * If a customer changes the currency type of his order-in-progress while viewing the shopping cart, Magento displays a message that shows the minimum order necessary in the new currency. Previously, this minimum was calculated incorrectly. *Fix submitted by Neeta Kangiya in pull request 13039*. + * Magento no longer truncates very long telephone numbers on the order page. Previously, Magento cut off very long phone numbers at 20 digits. *Fix submitted by Danny Verkade in pull request 13015*. [GitHub-10869](https://github.com/magento/magento2/issues/10869) -* You can now implement a product attribute that sets **Catalog Input Type for Store Owner** equal to **Fixed Product Tax** in a multi-store environment. *Fix submitted by Danny Verkade in pull request 13019*. -[GitHub-12393](https://github.com/magento/magento2/issues/12393) + +* You can now implement a product attribute that sets **Catalog Input Type for Store Owner** equal to **Fixed Product Tax** in a multi-store environment. *Fix submitted by Danny Verkade in pull request 13019*. [GitHub-12393](https://github.com/magento/magento2/issues/12393) + * When a customer is on the payment page and tries to reorder or retrace her steps backward through the checkout process, Magento now displays all the relevant shipping methods. Previously, Magento displayed only one shipping method under these circumstances. + * An integrity constraint violation error no longer occurs after you reorder a product with custom options. *Fix submitted by Vinay Shah in pull request 13036*. [GitHub-12705](https://github.com/magento/magento2/issues/12705) ### Reports + * The Products in Cart report is now accurate. Previously, if you created a Products in Cart report (**Open Reports** > Marketing > **Products in Cart**) after deleting a product from the catalog, the report displayed a blank list of products. *Fix submitted by angelo983 in pull request 12539*. + * You can now successfully export the Ordered Products report to a CSV file. Previously, the export file contained no report data. ### SalesRule + * Magento now display the correct catalog rule price for bundle products with custom options. + * Cart prices now displays the Cart Price Rule shipping discount correctly. Previously, when you placed an order, Magento displayed this error: `Payment method is not available`. + * Magento now displays the exact label value that was given in the Admin during the cart price rule creation. *Fix submitted by Ihor Sviziev in pull request 13141*. [GitHub-11428](https://github.com/magento/magento2/issues/11428), [GitHub-11497](https://github.com/magento/magento2/issues/11497) + * Magento now correctly displays in Cart Price rules the nesting levels for categories with nesting levels that exceed three levels. + * Coupon codes that a customer has applied to a subsequently canceled order are now available for re-use as expected. Previously, once a customer canceled this order, she could not apply the coupon code to another order. *Fix submitted by p-bystritsky in a pull request*. [GitHub-12817](https://github.com/magento/magento2/issues/12817) ### Search + * Magento now displays popular search terms in **SEO & Search > Search Terms** as expected. *Fix submitted by p-bystritsky in pull request 1024*. [GitHub-10743](https://github.com/magento/magento2/issues/10743) + * Layered navigation now displays the correct product count. Previously, the layered navigation product count incorrectly included only in-stock products. *Fix submitted by Roman K. in pull request 12063*. [GitHub-11946](https://github.com/magento/magento2/issues/11946) + * Grid filtration now handles MySQL special characters as expected. *Fix submitted by laconica-sergey in pull request 12749*. + * Magento no longer throws an error when you submit the search form in the header with an empty value. *Fix submitted by Koen V. in pull request 13811*. [GitHub-13791](https://github.com/magento/magento2/issues/13791) ### Shipping @@ -1004,163 +1288,207 @@ Users of the CyberSource payment method should note that CyberSource uses the Ma You can find Magento Shipping-specific release notes in [Magento Shipping Release Notes]({{ page.baseurl }}/release-notes/ReleaseNotesMagentoShipping2.2.x.html). + * The handling fee configuration of shipping methods is now explicitly cast to 0 to avoid warnings from PHP 7.1. *Fix submitted by Fabian Schmengler in pull request 13680*. + * Unused `count($_items)` in templates have been removed. *Fix submitted by Alexander Shkurko in pull request 12901*. + * Magento now enforces the minimum order amount during checkout as expected. Previously, you could bypass the minimum order amount logic by clicking **Check Out with Multiple Addresses**, removing products from the order and then clicking **Update Qty & Addresses**. *Fix submitted by Roman K. in pull request 963*. + * DHL product codes now match those published in the latest DHL products and services guide. Previously, three DHL product codes in the DHL Shipping module were incorrect. *Fix submitted by gwharton in pull request 12666*. ### Sitemap + * `sitemap.xml` now displays URLs without `/home` appended. *Fix submitted by Oscar Recio in pull request 12649*. [GitHub-12446](https://github.com/magento/magento2/issues/12446) + * Sitemaps generated in a multi-store environment now include the correct URLs for each store (that is, `http://storename.com/` instead of `http://defaultstore.com/`). *Fix submitted by Roman K. in pull request 935*. [GitHub-12482](https://github.com/magento/magento2/issues/12482) + * Magento now handles errors that occur during sitemap generation in a less intrusive way. If Magento throws an exception when generating a sitemap, it now sends the errors through email as configured in the sitemap configuration XML. The former `_translateModel` property is not used anymore, and the inline translation is correctly suspended using the `inlineTranslation` property instead. *Fix submitted by Marina Gociu in a pull request*. [GitHub-10502](https://github.com/magento/magento2/issues/10502) ### Swagger + * The code formatting in the Swagger block and template has been updated. *Fix submitted by JeroenVanLeusden in pull request 13485*. ### Swatches + * You can now use REST to import visual swatch attribute options. Previously, you could not add swatch options using service contracts unless a swatch option already existed for the attribute. *Fix submitted by gonzalopelon in pull request 12044*. [GitHub-9410](https://github.com/magento/magento2/issues/9410), [GitHub-10707](https://github.com/magento/magento2/issues/10707), [GitHub-10737](https://github.com/magento/magento2/issues/10737), [GitHub-11032](https://github.com/magento/magento2/issues/11032) + * Visual swatches that have a color assigned now show that color in the swatch box. Previously, Magento did not display any color in the color swatch box. *Fix submitted by Chris Pook in pull request 13101*. [GitHub-11828](https://github.com/magento/magento2/issues/11828) + * The error message displayed when you do not supply enough information during swatch creation has been edited for clarity and grammatical accuracy. *Fix submitted by Nickolas Malyovanets in pull request 1117*. [GitHub-5550](https://github.com/magento/magento2/issues/5550) ### TargetRule + * You can now successfully save a Related Product rule. ### Tax + * The default selector on the Admin's tax rule edit page now selects only the correct container (tax rate) following the Tax Rate multi-select. Previously, the default selector selected three elements, which resulted in inaccurate results. *Fix submitted by Pieter Hoste in pull request 13643*. [GitHub-12791](https://github.com/magento/magento2/issues/12791) + * We've removed the redundant default discount tax calculation (`tax/calculation/discount_tax`) from `Magento/Tax/etc/config.xml`. *Fix submitted by Vincent Marmiesse in pull request 13449*. + * The **Not yet calculated** text string immediately adjacent to the string **Tax** on the checkout page is now translated as expected. *Fix submitted by Roman K. in pull request 1147*. [GitHub-7849](https://github.com/magento/magento2/issues/7849) + * Magento no longer displays incorrect tax amounts for orders when using a non-default tax configuration. *Fix submitted by Pieter Cappelle in pull request 12639*. [GitHub-10347](https://github.com/magento/magento2/issues/10347) ### Testing + * `ConfigurationTest` no longer fails when you install Magento using Composer. *Fix submitted by Nickolas Malyovanets in pull request 1161*. [GitHub-12574](https://github.com/magento/magento2/issues/12574) + * We've added `MagentoStyle` to console input and output in Travis tests. + * We've re-implemented tests using Jasmine as part of the process of removing the legacy JavaScript test framework and completely removing `JSTestDriver` support. *Fix submitted by Carlos Lizaga in a pull request*. [GitHub-12342](https://github.com/magento/magento2/issues/12342) + * `functional.suite.dist.yml` now handles custom backend names. Previously, the value for the `backend_name` configuration was hardcoded. *Fix submitted by scribam in pull request 12884*. + * We've added a missing preference for `ObjectManager\ConfigInterface` in integration tests. *Fix submitted by Fabian Schmengler in pull request 12845*. [GitHub-12844](https://github.com/magento/magento2/issues/12844) + * Integration Test Annotation `magentoAppArea` no longer breaks with valid values. *Fix submitted by Nickolas Malyovanets in pull request 996*. [GitHub-2907](https://github.com/magento/magento2/issues/2907) + * The inline documentation of the static test for XSS vulnerabilities now reflects that `@escapeNotVerified` is disallowed in Magento versions equal or greater than 2.2. *Fix submitted by Matthias Zeis in pull request 12639*. + * We've added integration tests for product URL rewrite generation. *Fix submitted by Adrien Louis-Rossignol in pull request 13567*. [GitHub-5863](https://github.com/magento/magento2/issues/5863), [GitHub-8227](https://github.com/magento/magento2/issues/8227), [GitHub-8957](https://github.com/magento/magento2/issues/8957), [GitHub-10073](https://github.com/magento/magento2/issues/10073), [GitHub-13240](https://github.com/magento/magento2/issues/13240) ### Themes + * Magento no longer caches warning messages as often as a customer clicks the **Update Shopping Cart** button while the shopping cart page loads. Previously, Magento cached a warning message each time a customer clicked this button while the page loaded in Firefox or Chrome, and this action resulted in multiple warning messages appearing on the top of the shopping cart page. + * If a customer is logged in while Magento loads, then the welcome message displays the customer's full name. *Fix submitted by Oleh Kravets in pull request 12738*. [GitHub-12719](https://github.com/magento/magento2/issues/12719) + * You can now disable the full-screen gallery on mobile devices *Fix submitted by p-bystritsky in pull request 1006*. [GitHub-12490](https://github.com/magento/magento2/issues/12490), [GitHub-12285](https://github.com/magento/magento2/issues/12285) + * Protected method `getHtml` now checks each child for an existing class and then appends the `$outermostClass` if true. Previously, when creating a dependency injection for the `Magento\Theme\Block\Html\Topmenu` class, you could not change class names on children in a `beforeGetHtml` method because `getHtml` declares `setClass()` on all child items. *Fix submitted by jonshipman in pull request 12862*. + * Customers can now successfully close full-screen zoomed product images displayed on an iPhone 4s, 5s, 6, or 6s with the Safari browser. Previously, if a customer chose full-screen zoom for any product image, he could not close the full-screen zoom. ### Translations and locale + * Inline translations and custom translators now work for Knockout templates. *Fix submitted by Dmitry Fedyuk in pull request 12953*. [GitHub-2156](https://github.com/magento/magento2/issues/2156) + * Magento now provides a locale for Swedish (Finland). *Fix submitted by Nickolas Malyovanets in pull request 1207*. [GitHub-13095](https://github.com/magento/magento2/issues/13095) + * Magento now uses current locale (as defined in **Stores > Settings > Configuration > Advanced Reporting**) when translating the time zone label. Previously, Magento used operating system settings instead of the current locale. *Fix submitted by adrian-martinez-interactiv4 in pull request 13408*. + * Newsletter labels can now handle the Chinese language. *Fix submitted by Dasharth patel in pull request 13029*. [GitHub-12320](https://github.com/magento/magento2/issues/12320) + * The module responsible for generating the `js-translations.json` file now contains a routine that translates strings in tags such as ` + * You can now configure a form field with validation range words. As a result, the category name is validated, and the category is created (or displays the correct error message, if validation fails). Previously, Magento displayed an error message on the console. *Fix submitted by Robin Huy in pull request 12739*. -* The **Save Block** button on the Add New Block page no longer ignores clicks if the content editor is empty. -*Fix submitted by Roman K. in pull request 1032*. [GitHub-8114](https://github.com/magento/magento2/issues/8114) + +* The **Save Block** button on the Add New Block page no longer ignores clicks if the content editor is empty. *Fix submitted by Roman K. in pull request 1032*. [GitHub-8114](https://github.com/magento/magento2/issues/8114) + * Magento now disables the promo code input box after a user applies a promo code. *Fix submitted by Chirag P in pull request 13030*. + * Magento now displays video and images as expected when you select a video or click to view a full-screen image for a configurable product. *Fix submitted by Chumak Roman in pull request 12469*. [GitHub-12268](https://github.com/magento/magento2/issues/12268) + * The PHP notice that Magento displays when an invalid `ui_component` configuration is used has been improved. *Fix submitted by Vova Yatsyuk in pull request 12239*. + * Magento has added verification for previously set filters in `Magento/Ui/Component/Filters`, which has eliminated duplication of filters in the collection `where` conditions. + * Inconsistency in the animation of the Admin spinner progress indicator has been corrected. *Fix submitted by Neill Robson in pull request 13700*. ### URL rewrites + * When using a store code in a URL, Magento now retrieves the value of `Store_Code` from the store if the store code value is empty. Previously, under these circumstances, Magento threw an error. *Fix submitted by Oscar Recio in pull request 12529*. [GitHub-8615](https://github.com/magento/magento2/issues/12450) ### Web API framework + * You can now use the REST API to make requests that include a slash (/) in an SKU. *Fix submitted by Roman K. in pull request 949*. [GitHub-8615](https://github.com/magento/magento2/issues/8615) ### Wish list + * Magento now correctly displays a product's special price when you add it to a wish list. Previously, if you added a product with a special price to the wish list, Magento displayed the product with its regular price. + * You can now remove an item description from a wish list. *Fix submitted by p-bystritsky in pull request 981*. [GitHub-12582](https://github.com/magento/magento2/issues/12582) diff --git a/guides/v2.2/release-notes/ReleaseNotes2.2.5CE.md b/guides/v2.2/release-notes/ReleaseNotes2.2.5CE.md index 78cce8f0eb7..4c35bb74603 100644 --- a/guides/v2.2/release-notes/ReleaseNotes2.2.5CE.md +++ b/guides/v2.2/release-notes/ReleaseNotes2.2.5CE.md @@ -67,111 +67,139 @@ In addition to security enhancements, this release contains the following functi ### Installation, setup, and deployment + * Magento no longer permits you to re-run an already running cron job. *Fix submitted by Paavo Pokkinen in pull request 12497*. [GitHub-10650](https://github.com/magento/magento2/issues/10650) ### Bundle products + * You can now successfully delete an option from a bundle product. + * Magento now correctly applies coupon codes that exclude bundle products. Previously, Magento applied these coupons but did not exclude bundle products as expected. ### Catalog + * Merchants can now run the catalog search full text indexer and category product indexer in parallel mode by store view. + * The `Category\Collection::joinUrlRewrite` method now returns the URL of the store whose `storeId` is set on the collection. Previously, this method returned the name of the default store. *Fix submitted by Alessandro Pagnin in pull request 13716*. [GitHub-13704](https://github.com/magento/magento2/issues/13704) + * Sorting products by price now applies catalog rules as expected. + * Sorting products with required custom options by price now works as expected. + * Tier pricing for a single product unit now works as expected. If a tier price is set for one product unit, and this price is lower than the product price or special price, then the product price index table is populated with the tier price. + * Magento now successfully saves products when using a locale that formats dates in this way: DD/MM/YYYY. Previously, when you tried to save a product in a locale where dates were formatted this way, Magento did not save the product, and displayed this error: `Invalid input datetime format`. [GitHub-10485](https://github.com/magento/magento2/issues/10485) + * When you import new products using a CSV file, Magento no longer lists as in stock any products whose CSV values indicate that they should be represented as out-of-stock. ### CMS content + * When working in the media gallery, you can now successfully delete any files and folders that are symlinked in `pub/media`. Previously, any files or folders that were symlinked inside the `pub/media` directory could not be deleted because there was a validation check that used `realpath` to test whether the file was outside the media directory base path. Since `realpath` resolved symlinks to actual paths, this check would fail if the actual path were outside the base path, and would prevent action from being completed. ### Configurable products + * Magento now displays the correct status for a backordered configurable product on the order view page. + * Magento now displays the correct image for a configurable product on the wishlist. Previously, Magento displayed the image for the parent product rather than for the selected variant. *Fix submitted by Roman K. in pull request 1031*. [GitHub-8168](https://github.com/magento/magento2/issues/8168) + * The **Hide from Product Page** option now works for the child product of a configurable product. + * The **Update on Save** re-index operation now works as expected when re-indexing configurable products after changing options. Previously, when you manually re-indexed from the command line, your changes to configurable product options were not saved. ### Frameworks + * We've bumped the required minimal PHP version to 7.0.13. ### General + * The product repository now uses `store_id` (if set) when saving attributes for an existing product. Previously, Magento always saved attribute values for an existing product at the default store level. *Fix submitted by p-bystritsky in pull request 967*. [GitHub-7720](https://github.com/magento/magento2/issues/7720), [GitHub-12395](https://github.com/magento/magento2/issues/12395), [GitHub-12186](https://github.com/magento/magento2/issues/12186) + * The placement of Google Tag Manager code now follows the guidelines in the [Google Tag Manager Developer Guide](https://developers.google.com/tag-manager/devguide). (Previously, the Google Tag Manager code was inserted before the `dataLayer` variable was defined.) + * The Related Products rule for up-sell products with customer segments set to **Specified** now works as expected. ### Import/export + * The data check on imported customer information now completes as expected. Previously, when you clicked **Check Data** on a large CSV file created by **System** > **Data Transfer** > **Import**, the request failed, and Magento displayed the timeout spinner. + * If you remove a product's custom options from the CSV file created during product import, Magento no longer displays the custom options on the storefront. ### Indexing + * The search indexer is now scoped and multithreaded, which improves layered navigation, search, and indexing actions for complex sites with multiple store views and shared catalogs. ### Orders + * Magento now filters recent orders by store on the customer account page as expected. *Fix submitted by Alexander Shkurko in pull request 13257*. + * The performance and logic of `Magento\Sales\Helper\Guest` has been improved. *Fix submitted by Alexander Shkurko in pull request 12893*. ### Payment methods + * In multistore environments, Magento now retrieves the correct PayPal Payflow Pro credentials. Previously, Magento always retrieved the credentials that are configured for the default store. ### Performance + * We've removed the `count()` method from the condition section for some loops in a small subset of backend files. When this method is used in a loop condition, it will be executed at every iteration, which can degrade performance. *Fix submitted by Alexander Shkurko in pull request 13173*. ### Search + * Out-of-stock options for configurable products no longer show up in search and layered navigation results. + * Magento now caches popular search results for faster response time on popular searches. A system administrator can configure how many top search queries can be cached. ### Shipping @@ -180,64 +208,81 @@ In addition to security enhancements, this release contains the following functi You can find Magento Shipping-specific release notes in [Magento Shipping Release Notes]({{page.baseurl}}/release-notes/ReleaseNotesMagentoShipping2.2.x.html). + * Merchants can now choose whether to request and include tax information from UPS in the rate charged to the customer during checkout. (This permits merchants to pass on the tax costs to their customer as part of the overall shipping rate.) *Fix submitted by gwharton in pull request 11707*. ### Swagger + * Swagger now displays the text area that contains the payload structure of all POST and PUT operations. ### Swatches + * You can now use JavaScript mixins to extend swatch functionality in all supported browsers. *Fix submitted by Renon Stewart in pull request 12929*. [GitHub-10559](https://github.com/magento/magento2/issues/10559) ### Testing + * You can now use REST to update the `available_payment_methods` company extension attribute. Previously, Magento set to null any value you passed to the database `company_payment` table. + * The `phpunit.xml` configuration file is now blacklisted during schema validation static tests (particularly `Magento/Test/Integrity/Xml/SchemaTest.php`). + * The `\Magento\Test\Php\LiveCodeTest::testCodeStyle` method now uses whitelist files. *Fix submitted by Adrian Martinez in pull request 11376*. [GitHub-10559](https://github.com/magento/magento2/issues/10559) ### URL rewrites + * Magento no longer throws a 404 error when a customer navigates from the Catalog page of the default store to a custom Catalog page on a different store. ### Vertex + * The correct tax amount is now included as expected in the Order Total that is listed under the Order Summary section of the Orders page. Previously, the **Tax amount** field was missing from the Order Summary section, which resulted in an incorrect Order Total. + * The **including tax** and **excluding tax** fields on the Checkout page now contain correctly calculated prices. Previously, Magento displayed the same price in these fields. + * Magento now displays the **Tax amount** field in the Order Summary section of the Checkout page for orders that contain virtual products. + * Merchants can now create a Vertex invoice refund as expected after an order has been canceled. + * We’ve improved the performance of the **Admin Create Order** and **Performance Compare Report in Plain Text - Catalog** (server side) actions. + * Magento now prompts you to select order status if a customer does not select an option from the Order Status drop down list when setting the **When to send Invoice to Vertex** option. + * The **Allow tax quote request at shopping cart page** option has been removed from the Vertex Setting tab. + * Magento now disables Vertex API Status as expected when you set the **Enable Vertex Tax Calculation** option to **no**. + * Magento now displays the green checkmark and **Vertex invoice has been sent** message as expected when you set an order’s status to **Suspected Fraud**. + * Customers no longer receive a notice about negative tax amount after a merchant creates a refund on Vertex Cloud. + * Magento throws the following exception during checkout if you disable Amazon Pay when installing Magento using the web wizard: `Exception #0 (UnexpectedValueException): Payment model name is not provided in config!`. Note that this error occurs only if one or two of the three Amazon modules shipped with Magento are disabled. If all three Amazon modules are disabled, this problem does not occur. [GitHub-16167](https://github.com/magento/magento2/issues/16167) + * Magento displays the Amazon Pay option during checkout with multiple addresses even though multi shipping is not supported with Amazon Pay. + * Magento does not display the Amazon Pay button during checkout when the customer selects Klarna or PayPal as a payment method for an order containing a virtual product. + * Magento does not display the Amazon Pay button on the Checkout page if an order contains a virtual product. + * Customer cannot return to standard checkout flow by clicking the **Return to standard checkout** button. + * Customer cannot leave the Amazon Pay checkout page and return to the generic checkout page when an order contains virtual products. + * Customers cannot add a new shipping address to an order that contains virtual products. ### dotmailer known issues @@ -280,52 +332,67 @@ The Amazon Pay, Magento Shipping, and Vertex extensions have the following known The following Dotmailer behaviors have been observed when Magento Commerce for B2B is deployed with split databases: + * Customer, subscriber, and guest data are not being successfully synced. As a result, newly created contacts display the **Not imported** status in the contact report, and the relevant address books in dotmailer remain empty. + * Review remainder email cannot be sent to a subscribed customer if review remainder emails are not enabled for non-subscribed customers. + * Magento cannot send Customer and Guest Abandoned Cart email if these emails are not allowed for non-subscribed contacts. + * When a merchant clicks the **Run Contact Sync** button, Magento throws an exception when a merchant clicks the Run Contact Sync button. + * Magento throws an error during the creation of a subscriber or customer, but still creates the new subscriber or customer. ### Magento Shipping known issues + * A merchant can create multiple return shipments for an already shipped return. ### Vertex known issues + * The order amount on Vertex Cloud differs from the order information displayed by Magento when Catalog Price Rule is applied. + * Magento applies taxes to a custom price even when the **Original Price only** option from the fApply Tax On drop-down list has been selected. + * Magento displays an inaccurate Vertex API Status message when the **Vertex Address Validation API Url** and **Vertex Validation Function** fields contain invalid values. + * The Transaction Details reports and Transaction Summary reports have slight irregularities. Magento does not include product price and taxes in the Transaction Details Report "Gross Amount" and "Tax Amount" columns, and does not include product price in the Transaction Summary Report. + * The **Vertex invoice has been sent** message appears momentarily on the Review and Payments page, but not as expected on the Success page. + * When a customer places an order, Magento calculates the amount of tax and sends a Vertex invoice even when the Company Information tab is missing the company street, company city, and company postal code. + * Magento does not display the Vertex invoice has been sent message as expected when the payment method is Authorize.net and the order status is Suspect Fraud. + * Magento does not display the Vertex customer code field on the All Customers page as expected, which undermines the ability to filter by customer code. + * Magento does not display the tax section of the Order Summary that is included on the Review and Payments page during checkout when the shopping cart includes a virtual product. ## Community contributions diff --git a/guides/v2.2/release-notes/ReleaseNotes2.2.5EE.md b/guides/v2.2/release-notes/ReleaseNotes2.2.5EE.md index bbbf6269271..5cb28186d93 100644 --- a/guides/v2.2/release-notes/ReleaseNotes2.2.5EE.md +++ b/guides/v2.2/release-notes/ReleaseNotes2.2.5EE.md @@ -67,116 +67,145 @@ In addition to security enhancements, this release contains the following functi ### Installation, setup, and deployment + * Magento no longer permits you to re-run an already running cron job. *Fix submitted by Paavo Pokkinen in pull request 12497*. [GitHub-10650](https://github.com/magento/magento2/issues/10650) ### Bundle products + * You can now successfully delete an option from a bundle product. + * Magento now correctly applies coupon codes that exclude bundle products. Previously, Magento applied these coupons but did not exclude bundle products as expected. ### Catalog + * Merchants can now run the catalog search full text indexer and category product indexer in parallel mode by store view. + * The `Category\Collection::joinUrlRewrite` method now returns the URL of the store whose `storeId` is set on the collection. Previously, this method returned the name of the default store. *Fix submitted by Alessandro Pagnin in pull request 13716*. [GitHub-13704](https://github.com/magento/magento2/issues/13704) + * Sorting products by price now applies catalog rules as expected. + * Sorting products with required custom options by price now works as expected. + * Tier pricing for a single product unit now works as expected. If a tier price is set for one product unit, and this price is lower than the product price or special price, then the product price index table is populated with the tier price. + * Magento now successfully saves products when using a locale that formats dates in this way: DD/MM/YYYY. Previously, when you tried to save a product in a locale where dates are formatted this way, Magento did not save the product, and displayed this error: `Invalid input datetime format`. [GitHub-10485](https://github.com/magento/magento2/issues/10485) + * When you import new products using CSV, Magento no longer lists as in stock any products whose CSV values indicate that they should be represented as out-of-stock. ### CMS content + * When working in the media gallery, you can now successfully delete any files and folders that are symlinked in `pub/media`. Previously, any files or folders that were symlinked inside the `pub/media` directory could not be deleted because there was a validation check that used `realpath` to test whether the file was outside the media directory base path. Since `realpath` resolved symlinks to actual paths, this check would fail if the actual path were outside the base path, and would prevent action from being completed. ### Configurable products + * Magento now displays the correct status for a backordered configurable product on the order view page. + * Magento now displays the correct image for a configurable product on the wishlist. Previously, Magento displayed the image for the parent product rather than for the selected variant. *Fix submitted by Roman K. in pull request 1031*. [GitHub-8168](https://github.com/magento/magento2/issues/8168) + * The **Hide from Product Page** option now works for the child product of a configurable product. + * The **Update on Save** re-index operation now works as expected when re-indexing configurable products after changing options. Previously, when you manually re-indexed from the command line, your changes to configurable product options were not saved. ### Frameworks + * We've bumped the required minimal PHP version to 7.0.13. ### General + * The product repository now uses `store_id` (if set) when saving attributes for an existing product. Previously, Magento always saved attribute values for an existing product at the default store level. *Fix submitted by p-bystritsky in pull request 967*. [GitHub-7720](https://github.com/magento/magento2/issues/7720), [GitHub-12395](https://github.com/magento/magento2/issues/12395), [GitHub-12186](https://github.com/magento/magento2/issues/12186) + * The placement of Google Tag Manager code now follows the guidelines in the [Google Tag Manager Developer Guide](https://developers.google.com/tag-manager/devguide). (Previously, the Google Tag Manager code was inserted before the `dataLayer` variable was defined.) + * The Related Products rule for up-sell products with customer segments set to **Specified** now works as expected. ### Gift card + * Magento now displays the correct subtotal when a customer adds multiple gift cards of different amounts to his cart. ### Import/export + * The data check on imported customer information now completes as expected. Previously, when you clicked **Check Data** on a large CSV file created by **System** > **Data Transfer** > **Import**, the request failed, and Magento displayed the timeout spinner. + * If you remove a product's custom options from the CSV file created during product import, Magento no longer displays the custom options on the storefront. ### Indexing + * The search indexer is now scoped and multithreaded, which improves layered navigation, search and indexing actions for complex sites with multiple store views and shared catalogs. ### Orders + * Magento now filters recent orders by store on the customer account page as expected. *Fix submitted by Alexander Shkurko in pull request 13257*. + * The performance and logic of `Magento\Sales\Helper\Guest` has been improved. *Fix submitted by Alexander Shkurko in pull request 12893*. ### Payment methods + * In multistore environments, Magento now retrieves the correct PayPal Payflow Pro credentials. Previously, Magento always retrieved the credentials that are configured for the default store. ### Performance + * We've removed the `count()` method from the condition section for some loops in a small subset of backend files. When this method is used in a loop condition, it will be executed at every iteration, which can degrade performance. *Fix submitted by Alexander Shkurko in pull request 13173*. ### Search + * Out-of-stock options for configurable products no longer show up in search and layered navigation results. + * Magento now caches popular search results for faster response time on popular searches. A system administrator can configure how many top search queries can be cached. ### Shipping @@ -185,77 +214,97 @@ In addition to security enhancements, this release contains the following functi You can find Magento Shipping-specific release notes in [Magento Shipping Release Notes]({{page.baseurl}}/release-notes/ReleaseNotesMagentoShipping2.2.x.html). + * Merchants can now choose whether to request and include tax information from UPS in the rate charged to the customer during checkout. (This permits merchants to pass on the tax costs to their customer as part of the overall shipping rate.) *Fix submitted by gwharton in pull request 11707*. ### Staging + * Magento now correctly renders the dates on a Cart Rule staging update when an administrator uses a locale with a different date and time format. Previously, these dates were corrupted. + * You can now successfully edit the start date and time for a Catalog Price Rule schedule update. Previously, if you edited this date or time, Magento threw a 404 error when the new start time arrived. ### Swagger + * Swagger now displays the text area that contains the payload structure of all POST and PUT operations. ### Swatches + * You can now use JavaScript mixins to extend swatch functionality in all supported browsers. *Fix submitted by Renon Stewart in pull request 12929*. [GitHub-10559](https://github.com/magento/magento2/issues/10559) ### Testing + * You can now use REST to update the `available_payment_methods` company extension attribute. Previously, Magento set to null whatever value you passed to the database `company_payment` table. + * The `phpunit.xml` configuration file is now blacklisted during schema validation static tests (particularly `Magento/Test/Integrity/Xml/SchemaTest.php`). + * The `\Magento\Test\Php\LiveCodeTest::testCodeStyle` method now uses whitelist files. *Fix submitted by Adrian Martinez in pull request 11376*. [GitHub-10559](https://github.com/magento/magento2/issues/10559) ### URL rewrites + * Magento no longer throws a 404 error when a customer navigates from the Catalog page of the default store to a custom Catalog page on a different store. ### Vertex + * The correct tax amount is now included as expected in the Order Total that is listed under the Order Summary section of the Orders page. Previously, the **Tax amount** field was missing from the Order Summary section, which resulted in an incorrect Order Total. + * The **including tax** and **excluding tax** fields on the Checkout page now contain correctly calculated prices. Previously, Magento displayed the same price in these fields. + * Magento now displays the **Tax amount** field in the Order Summary section of the Checkout page for orders that contain virtual products. + * Merchants can now create a Vertex invoice refund as expected after an order has been canceled. + * We’ve improved the performance of the **Admin Create Order** and **Performance Compare Report in Plain Text - Catalog** (server side) actions. + * Magento now prompts you to select order status if a customer does not select an option from the Order Status drop down list when setting the **When to send Invoice to Vertex** option. + * The **Allow tax quote request at shopping cart page** option has been removed from the Vertex Setting tab. + * Magento now disables Vertex API Status as expected when you set the **Enable Vertex Tax Calculation** option to **no**. + * Magento now displays the green checkmark and **Vertex invoice has been sent** message as expected when you set an order’s status to **Suspected Fraud**. + * Customers no longer receive a notice about negative tax amount after a merchant creates a refund on Vertex Cloud. ### Visual Merchandiser + * We’ve improved the performance of editing or saving products in large categories (more than 18,000 products per category). + * Magento throws the following exception during checkout if you disable Amazon Pay when installing Magento using the web wizard: `Exception #0 (UnexpectedValueException): Payment model name is not provided in config!`. Note that this error occurs only if one or two of the three Amazon modules shipped with Magento are disabled. If all three Amazon modules are disabled, this problem does not occur. [GitHub-16167](https://github.com/magento/magento2/issues/16167) + * Magento displays the Amazon Pay option during checkout with multiple addresses even though multi shipping is not supported with Amazon Pay. + * Magento does not display the Amazon Pay button during checkout when the customer selects Klarna or PayPal as a payment method for an order containing a virtual product. + * Magento does not display the Amazon Pay button on the Checkout page if an order contains a virtual product. + * Customer cannot return to standard checkout flow by clicking the **Return to standard checkout** button. + * Customer cannot leave the Amazon Pay checkout page and return to the generic checkout page when an order contains virtual products. + * Customers cannot add a new shipping address to an order that contains virtual products. ### dotmailer known issues @@ -298,52 +354,67 @@ The Amazon Pay. dotmailer, Magento Shipping, and Vertex extensions have the foll The following Dotmailer behaviors have been observed when Magento Commerce for B2B is deployed with split databases: + * Customer, subscriber, and guest data are not being successfully synced. As a result, newly created contacts display the **Not imported** status in the contact report, and the relevant address books in dotmailer remain empty. + * Review remainder email cannot be sent to a subscribed customer if review remainder emails are not enabled for non-subscribed customers. + * Magento cannot send Customer and Guest Abandoned Cart email if these emails are not allowed for non-subscribed contacts. + * When a merchant clicks the **Run Contact Sync** button, Magento throws an exception when a merchant clicks the Run Contact Sync button. + * Magento throws an error during the creation of a subscriber or customer, but still creates the new subscriber or customer. ### Magento Shipping known issues + * A merchant can create multiple return shipments for an already shipped return. ### Vertex known issues + * The order amount on Vertex Cloud differs from the order information displayed by Magento when Catalog Price Rule is applied. + * Magento applies taxes to a custom price even when the **Original Price only** option from the Apply Tax On drop-down list has been selected. + * Magento displays an inaccurate Vertex API Status message when the **Vertex Address Validation API Url** and **Vertex Validation Function** fields contain invalid values. + * The Transaction Details reports and Transaction Summary reports have slight irregularities. Magento does not include product price and taxes in the Transaction Details Report "Gross Amount" and "Tax Amount" columns, and does not include product price in the Transaction Summary Report. + * The **Vertex invoice has been sent** message appears momentarily on the Review and Payments page, but not as expected on the Success page. + * When a customer places an order, Magento calculates the amount of tax and sends a Vertex invoice even when the Company Information tab is missing the company street, company city, and company postal code. + * Magento does not display the Vertex invoice has been sent message as expected when the payment method is Authorize.net and the order status is Suspect Fraud. + * Magento does not display the Vertex customer code field on the All Customers page as expected, which undermines the ability to filter by customer code. + * Magento does not display the tax section of the Order Summary that is included on the Review and Payments page during checkout when the shopping cart includes a virtual product. ## Community contributions diff --git a/guides/v2.2/release-notes/ReleaseNotes2.2.6CE.md b/guides/v2.2/release-notes/ReleaseNotes2.2.6CE.md index 4d3c62076ef..8f1d88f535e 100644 --- a/guides/v2.2/release-notes/ReleaseNotes2.2.6CE.md +++ b/guides/v2.2/release-notes/ReleaseNotes2.2.6CE.md @@ -24,9 +24,11 @@ This release includes significant performance improvements to the core Magento c Performance-tuning enhancements focus on catalog indexing and include: + * Category product indexer logic has been optimized, and re-indexing time has decreased up to 98%, from 40 minutes to one minute for 100,000 categories.  Previously, when your store contained many categories (100,0000), Magento could take up to 40 minutes to re-index product catalogs. + * The `catalog:images:resize` command execution time has been reduced by up to 90% in the release. However, this improvement necessitates these additional steps after upgrading your Magento instance to 2.2.6: * Remove `pub/media/catalog/product/cache` . (Removing this folder frees up space.) @@ -34,37 +36,47 @@ Performance-tuning enhancements focus on catalog indexing and include: * Run `bin/magento catalog:images:resize` to generate a new image cache. (This step is necessary because we’ve changed the path to cached images and must remove the previously cached images.) + * The catalog rule re-indexing operation has been optimized, and the average re-indexing time (which depends on rule conditions) has improved by more than 80%. Previously, a full catalog rule re-index operation on a medium B2C store took more than 20 minutes. + * The catalog price indexer is now scoped and multithreaded, which improves the performance of layered navigation, search, and indexing actions for Magento instances with multiple websites and stores. This makes it possible to parallelize catalog price indexing by websites and customer groups. To re-index in parallel mode, add the `MAGE_INDEXER_THREADS_COUNT` environment variable to `env.php`. + * The time required to load category or product pages for products that are configured with many attributes (more than 500) has been significantly reduced. Refactoring the logic for product attribute retrieval has resulted in a reduction of load time of almost 90% for scenarios with a large number of product attribute sets. (Performance will not noticeably improve for deployments with only one attribute set configured with 500 attributes. However, deployments with many attribute sets that contain only a few attributes will show significant performance improvement. For example, a deployment with 100 attribute sets, each of which contains 50 attributes, might see a 40-90% reduction in load time.) + * The time required to load a store’s home page has been reduced noticeably when the top menu contains many categories. (Load time is still affected by the number of categories and the structure of the top menu.) + * Merchants can now improve store performance by disabling Magento Report functionality. A new configuration setting (**System Configuration:** **General** > **Reports** > **General Options**) allows merchants to disable Magento Reports, which is recommended practice if a merchant's business function does not require this capability. #### **Improvements to the reliability and ease of the checkout process** + * A shopping cart’s contents remain constant even when the checkout page is repeatedly reloaded. Previously, if a customer reloaded the checkout page several times, Magento emptied the shopping cart, and the customer could not place the order. (This problem primarily affected stores running on HTTPS.) + * Refreshing the checkout page no longer deletes the shipping address when a guest checks out. Previously, when the persistent shopping cart was enabled, refreshing the checkout page affected information entered into form fields for a guest checkout. + * The speed at which Magento places an order is no longer affected by how many shipping methods are available. Previously, when a customer placed an order for which multiple shipping methods were available, Magento took more than 20 seconds to place the order. #### **Additional enhancements** + * Configurable products are now sorted by visible prices as expected. Previously, sorting a catalog by price produced sort results that included the prices of out-of-stock products and disabled child products. + * Magento no longer sends duplicate delete requests as a result of an unstable Internet connection. Previously, unintentional mass deletion of products sometimes occurred as a result of an unstable Internet connection. ### **Magento Cloud highlights** @@ -161,45 +173,59 @@ In addition to security enhancements, this release contains the following functi ### Installation, setup, and deployment + * You can now use the `app:config:status` command to check whether configuration propagation is up-to-date. (This fix restores this command, which was inadvertently deleted in a previous release.) *Fix submitted by Pieter Hoste in pull request [15174](https://github.com/magento/magento2/pull/15174)*. [GitHub-14104](https://github.com/magento/magento2/issues/14104) + * The `app:config:dump` command now has an argument that supports dumping only the specified settings that are required to prepare static content on a build system, not all system settings. This new option (`config-types`) makes it possible to dump scopes and themes automatically (which are needed for a build system) while managing system settings manually using `config:set --lock-config`. *Fix submitted by Juan Alonso in pull request [12410](https://github.com/magento/magento2/pull/12410)*. [GitHub-11396](https://github.com/magento/magento2/issues/11396) + * Configuration backend models are now populated as expected with all fieldset data, which makes it possible to access all configured values from a current group. [GitHub-16712](https://github.com/magento/magento2/issues/16712) + * The `magento-deploy-ignore` setting in `composer.json` now works as expected. Previously, files specified in this setting were overwritten during deployment. + * The `timestamp` fields in `oauth_nonce` now include indexes to avoid deadlocks while erasing old records. *Fix submitted by Carlos Lizaga in pull request [13328](https://github.com/magento/magento2/pull/13328)*. [GitHub-10346](https://github.com/magento/magento2/issues/10346) + * Sorting has been disabled in the `glob` and `scandir` functions to improve performance. *Fix submitted by Leandro F. L. in pull request [16052](https://github.com/magento/magento2/pull/16052)*. + * The `nginx.config.sample` file no longer includes an option for PHP 5.x. (Magento 2.2.x is not compatible with PHP 5.x.) *Fix submitted by Sean Breeden in pull request [16883](https://github.com/magento/magento2/pull/16883)*. + * Autoloading performance has improved on production environments as a result of the reduction in `file_exists` calls. *Fix submitted by Pieter Hoste in pull request [16435](https://github.com/magento/magento2/pull/16435)*. + * Setting deploy mode to production mode by using the `--skip-compilation` flag no longer clears generated code in `generated/code/` and `generated/metadata/`. *Fix submitted by platformvaimo in pull request [16211](https://github.com/magento/magento2/pull/16211)*. + * We've made two changes to `Magento/Config` module: `Magento/Config/Test/Unit/Block/System/Config/Form/Field/ImageTest.php::testGetElementHtmlWithValue()` method no longer references a invalid backend model, and the anonymous function no longer has an unused `$data` in `Magento/Config/Model/Config/Importer.php`. *Fix submitted by Marcel Hauri in pull request [15511](https://github.com/magento/magento2/pull/15511)*. + * The upgrade check implemented during setup now indicates success if the latest version of Magento is already installed. Previously, the message indicated that the latest product version was already installed was presented as error. *Fix submitted by Daniel Ruf in pull request [15012](https://github.com/magento/magento2/pull/15012)*. + * The **Add Block Names to Hints** configuration setting has been renamed to **Add Block Class Type to Hints**. *Fix submitted by Chris Pook in pull request [14939](https://github.com/magento/magento2/pull/14939)*. + * The `cron:run` command now reads `cron/enabled` configuration setting and if this value is set to **1** (the default value), then the `cron:run` command will execute. A value of **0** determines that `cron:run` will not be executed, and prompts Magento to send the customer email indicating that `cron` is disabled. + * New command-line interface (CLI) commands support setting and showing indexer dimension modes: * `bin/magento indexer:set-dimensions-mode` sets indexer dimensions mode @@ -209,318 +235,419 @@ In addition to security enhancements, this release contains the following functi ### Amazon Pay + * Amazon Pay no longer appears as an option during checkout when a customer selects **Check Out with Multiple Addresses**. Previously, Magento displayed Amazon Pay as an option, even though Amazon Pay does not support multishipping. + * You can now change and save Amazon Pay configuration settings from **Configuration** > **Sales** > **Payment Methods** > **Amazon Pay** when deploying Magento in a Cloud environment. Previously, Magento did not save changed settings. ### Bundle products + * Magento now successfully imports bundle products. Previously, bundle products were not visible in the product catalog, and were listed as out-of-stock on the storefront. + * The `Magento_Bundle` module name has been added to the relevant template files to meet Magento standard coding format. *Fix submitted by Namrata in pull request [15825](https://github.com/magento/magento2/pull/15825)*. + * The `option` variable has been renamed to `quoteItemOption` to improve code readability in `app/code/Magento/Bundle/Model/Product/Type.php`. *Fix submitted by Leandro F. L. in pull request [16143](https://github.com/magento/magento2/pull/16143)*. -* Magento now accurately displays the status of bundle product stock when **Add to Cart** is enabled for bundle products. Previously, bundle products with the **User Defined** field unchecked could not be back ordered as expected. -[GitHub-10061](https://github.com/magento/magento2/issues/10061) + +* Magento now accurately displays the status of bundle product stock when **Add to Cart** is enabled for bundle products. Previously, bundle products with the **User Defined** field unchecked could not be back ordered as expected. [GitHub-10061](https://github.com/magento/magento2/issues/10061) ### Catalog + * The breadcrumbs component no longer relies on the `mageMenu` widget. *Fix submitted by Vova Yatsyuk in pull request [15178](https://github.com/magento/magento2/pull/15178)*. [GitHub-14987](https://github.com/magento/magento2/issues/14987) + * The `data-container` class name is now based on view mode. *Fix submitted by sunilit42 in pull request [15350](https://github.com/magento/magento2/pull/15350)*. [GitHub-15319](https://github.com/magento/magento2/issues/15319) + * Breadcrumbs now work as expected when a product name contains quotation marks. Previously, the breadcrumbs on the product details page caused this syntax error to be thrown, `SyntaxError: Unexpected token x in JSON`. *Fix submitted by Jignesh Baldha in pull request [15347](https://github.com/magento/magento2/pull/15347)*. [GitHub-15037](https://github.com/magento/magento2/issues/15037) + * Disabling a product now removes it from the flat index as expected. *Fix submitted by Mr. Lewis in pull request [15019](https://github.com/magento/magento2/pull/15019)*. [GitHub-14966](https://github.com/magento/magento2/issues/14966) + * The success message that Magento displays when a customer adds a product to the compare list now contains a link to the comparison list. *Fix submitted by Andreas von Studnitz in pull request [13862](https://github.com/magento/magento2/pull/13862)*. + * Cache problems no longer occur when currencies are used without a currency symbol. *Fix submitted by Dmytro Cheshun in pull request [15902](https://github.com/magento/magento2/pull/15902)*. + * Catalog component blocks now contain correct return type suggestions, and typos have been corrected where needed in the PHPDocs. *Fix submitted by Dmytro Cheshun in pull request [15913](https://github.com/magento/magento2/pull/15913)*. + * Widget cache errors that resulted in one widget being loaded twice on the storefront have been resolved. *Fix submitted by Alexandr Kozyr in pull request [12764](https://github.com/magento/magento2/pull/12764)*. [GitHub-4389](https://github.com/magento/magento2/issues/4389) + * Magento no longer makes redundant requests on the 'customer data' on the checkout page. *Fix submitted by Andrey Bezyazychnyy in pull request [14314](https://github.com/magento/magento2/pull/14314)*. [GitHub-13765](https://github.com/magento/magento2/issues/13765) + * Administrators with permission to change product names on one website only cannot change product names on any other sites. Previously, an administrator with permission to change a product name on one site only could change product names on all websites in a multisite deployment. + * Administrators with limited privileges can now save products as expected. + * Magento now uses the current date as expected when setting the start date for a special price. Previously, Magento set the start date for a special price a few years in the future, which prevented the special price for being active. + * Magento now reliably displays category images on the custom store view level. Previously, the category image on custom store view level alternately disappeared and appeared after every save operation. + * Magento no longer removes downloadable product links after an attribute is updated. + * Extra POST requests are no longer sent if the **Synchronize widget products with backend storage** option is set to **yes**. + * You can now create a product date attribute that contains a day value than exceeds 12 (in the format dd/mm/yyyy). Previously, when you created a product attribute with a default date specifying a day greater than 12, Magento did not save the attribute, but instead displayed this error, `Invalid default date`. + * You can now use the `Magento\Catalog\Model\ProductRepository` class to assign a product to one website as expected. Previously, using this class to save a product assigned the product to all existing websites, not just the specified one. + * Images now load as expected on the product display page (PDP) when the image name contains double quotation marks. + * The SEO-friendly URL for the Category page now works as expected. + * The **Use Default Value** checkboxes in the design section of the category page are now enabled by default as expected. + * Customers can now use the **Add Product By SKU** button to add configurable products to a sales order. + * Empty dropdown or swatch type product attributes are no longer visible on the product page. + * Attributes that have empty values across all products being compared are not displayed as rows in the comparison table. Previously, Magento displayed these attributes with an N/A value on the Compare Products page. + * The Catalog page now displays breadcrumbs as expected. + * Tiered pricing and quantity increments now work as expected with decimal-based inventories. + * Magento now updates the `catalog_category_product_index` table as expected after a category is deleted. + * Customizable options are now configured the same for all websites to which a product is added. Previously, when a merchant added a product with customizable options to an additional site, the options were corrupted. + * The **Use default value** option is no longer unchecked unless the user overrides the value of the attribute in the store view scope. Previously, after creating an item, if the user changed to store view scope and did not make any modifications to the item's attributes and only clicked **Save**, most of the attributes that were set as **Use default value** became unchecked. + * Category product indexer logic has been optimized, and re-indexing time has been noticeably reduced.  Previously, when you had many categories (100,000), Magento could take up to 40 minutes to re-index product catalogs. + * Widget selection by Enabled Products no longer causes a fatal error on a storefront when the **Flat Product** is configured. + * Merchants can now change the `status` and `update` attributes from the product page. Previously, Magento returned a 404 page when bulk enabling or disabling products in the Admin with a restricted user role that is limited to a specific website. + * Magento now maintains the default setting for a product's `status` attribute when you create a new product. Previously, when creating a new product after changing the default option from Enabled to Disabled for this attribute, the status is incorrectly set to enabled by default. + * The print preview of product comparison results (that is, the page of results that Magento produces when you click **Compare** after selecting two or more products) now displays as expected. Previously, only a subset of page elements was displayed. + * Magento now maintains the correct dates in the results of filtering the Admin Product Grid Filter: Set Product as New from Date. [GitHub-11517](https://github.com/magento/magento2/issues/11517) + * As you type additional characters into the text field for a product's custom option, the hint showing the number of characters left before reaching the maximum now decreases as expected. + * Merchants can now set custom option fixed prices with negative values in the Admin. [GitHub-7333](https://github.com/magento/magento2/issues/7333) + * You can now unset a category image on the store-view level when the image is defined on all store views. + * The Catalog Products List widget can now display products on the storefront that have specific attributes. + * The shopping cart now correctly displays images of configurable products that have only size options (that is, no color options). Previously, when a customer added a configurable product that had only size options to her shopping cart, the shopping cart did not display the expected product image. *Fix submitted by Ronak Patel in pull request [16863](https://github.com/magento/magento2/pull/16863)*. [GitHub-16843](https://github.com/magento/magento2/issues/16843) + * Magento now throws an exception as expected when a user tries to submit a product review without selecting a star rating. Previously, if a user submitted a product review without selecting a star rating, Magento assigned a one-star rating. + * Magento now successfully displays product prices in currencies without minor units if the price amount is less then the number group size. [GitHub-11711](https://github.com/magento/magento2/issues/11711) + * Magento now displays the correct price on the product page for storefronts running Japanese locales. *Fix submitted by Vishal Gelani in pull request [15909](https://github.com/magento/magento2/pull/15909)*. [GitHub-11711](https://github.com/magento/magento2/issues/11711) + * Magento now correctly saves the value of a product's custom options. Previously, Magento saved all objects by using the same value object for all values. *Fix submitted by Jeroen Van Leusden in pull request [13569](https://github.com/magento/magento2/pull/13569)*. [GitHub-5067](https://github.com/magento/magento2/issues/5067) + * Magento now displays the product name as browser title as expected. Previously, the meta title tag was missing, which prevented Magento from displaying the product name. *Fix submitted by Riccardo Tempesta in pull request [15532](https://github.com/magento/magento2/pull/15532)*. [GitHub-15501](https://github.com/magento/magento2/issues/15501) + * Magento now maintains the default products sort order of “newest first” when you upgrade your Magento deployment to 2.2.4. Previously, after upgrade, the default products order in categories changed from “newest first” to “oldest first”. *Fix submitted by Danny Verkade in pull request [15629](https://github.com/magento/magento2/pull/15629)*. [GitHub-15627](https://github.com/magento/magento2/issues/15627) + * Links on product pages are now linkable as expected. Previously, when Magento displayed a product page, none of the provided links were clickable. *Fix submitted by simonjanguapa in pull request [15687](https://github.com/magento/magento2/pull/15687)*. [GitHub-15393](https://github.com/magento/magento2/issues/15393) + * Deprecated methods in Message Manager have been replaced with valid methods. *Fix submitted by Tiago Sampaio in pull request [16924](https://github.com/magento/magento2/pull/16924)*. + * Array short syntax usage has been standardized in these files: `app/code/Magento/Catalog/Test/Unit/Model/ProductTest.php`, `app/code/Magento/GroupedProduct/Test/Unit/Model/ProductTest.php`, and `setup/src/Magento/Setup/Module/Di/Code/Reader/FileScanner.php`. *Fix submitted by Leandro F. L. in pull request [16880](https://github.com/magento/magento2/pull/16880)*. + * The error message that Magento displayed when a duplicate error key occurred during product import has been improved. *Fix submitted by Vishal Gelani in pull request [16389](https://github.com/magento/magento2/pull/16389)*. + * We've removed the direct use of the object manager when saving Admin attribute sets. *Fix submitted by AnshuMishra17 in pull request [16217](https://github.com/magento/magento2/pull/16217)*. + * Breadcrumb JSON configuration has been moved to the view model and serialized using the Magento JSON serializer. *Fix submitted by Diederick Bruin in pull request [15521](https://github.com/magento/magento2/pull/15521)*. + * `row_id` has been added to the flat action indexer, ensuring that index values are not set to `0` for new products when using index on save. Previously, if you used `\Magento\Framework\Api\SearchCriteriaBuilder`, and the flat `product row_id` is set to `0`, Magento did not show the product in the `getList` of the `ProductRepository`. *Fix submitted by Mr. Lewis in pull request [15010](https://github.com/magento/magento2/pull/15010)*. + * Magento no longer inserts redundant links to the homepage into breadcrumbs on the product page. *Fix submitted by Vova Yatsyuk in pull request [14994](https://github.com/magento/magento2/pull/14994)*. + * Magento now correctly displays product information for products that have a negative price as a custom option. *Fix submitted by Danny Verkade in pull request [15202](https://github.com/magento/magento2/pull/15202)*. + * Product names can now contain a double quotation mark character (`"`). Previously, when a product name contained this character, Magento threw a JavaScript error. *Fix submitted by Vova Yatsyuk in pull request [15162](https://github.com/magento/magento2/pull/15162)*. + * Administrators who lack access to the CatalogRule module can now perform operations as expected in the Admin cart price rule edit page. *Fix submitted by Neos2007 in pull request [14886](https://github.com/magento/magento2/pull/14886)*. + * Magento now updates product options and quantity by checking the item ID when updating a cart that contains configurable products with different options. *Fix submitted by Nitin Khalasi in pull request [14765](https://github.com/magento/magento2/pull/14765)*. + * Product meta descriptions no longer contain unnecessary HTML tags. *Fix submitted by David Windell in pull request [14538](https://github.com/magento/magento2/pull/14538)*. + * Attributes that have empty values across all products being compared are not displayed on the Compare Products page as rows in the comparison table. Previously, these attributes were displayed with a value of **N/A**. + * Inputted data in filter fields now persists unchanged after you leave the product edit page. Previously, the values in the **Set Product as New from Date** field were not saved as expected. + * Company Admin can now use Quick Order to buy products. Previously, when a company administator tried to use Quick Order to buy products, Magento displayed this error: `The SKU was not found in the catalog`. ### CAPTCHA + * Customers can now successfully log in when guest checkout is disabled and CAPTCHA is enabled. Previously, Magento threw the `Provided form does not exist` error when a customer tried to log in under these conditions. + * CAPTCHA validation now works when the **Website Restrictions** setting is enabled. + * The `\Magento\Captcha\Observer\CaptchaStringResolver` class is now covered by unit tests. *Fix submitted by Yaroslav Rogoza in pull request [16065](https://github.com/magento/magento2/pull/16065)*. [GitHub-14966](https://github.com/magento/magento2/issues/14966) + * The `CheckRegisterCheckoutObserver` class is now covered by unit tests. *Fix submitted by Yaroslav Rogoza in pull request [16160](https://github.com/magento/magento2/pull/16160)*. + * The `\Magento\Captcha\Observer\CheckGuestCheckoutObserver` class is now covered by unit tests. *Fix submitted by Yaroslav Rogoza in pull request [16680](https://github.com/magento/magento2/pull/16680)*. + * Autocomplete for CAPTCHA inputs has been disabled. *Fix submitted by Denis Belevtsov in pull request [17114](https://github.com/magento/magento2/pull/17114)*. + * Integration tests now check that customer login attempts are removed after a successful login or account details edit. *Fix submitted by Yaroslav Rogoza in pull request [16306](https://github.com/magento/magento2/pull/16306)*. + * Integration tests now check that administrator login attempts are removed after a successful login or account details edit. *Fix submitted by Yaroslav Rogoza in pull request [16300](https://github.com/magento/magento2/pull/16300)*. + * The `CheckGuestCheckoutObserver` class is now covered by unit tests. *Fix submitted by Yaroslav Rogoza in pull request [16680](https://github.com/magento/magento2/pull/16680)*. ### Cart and checkout + * Placeholders for the password field no longer suggest that a password is optional. Previously, the placeholder for the password field in the checkout page suggested that the password was optional, but after validation, Magento indicated that the password field was mandatory. *Fix submitted by hitesh-wagento in pull request [16379](https://github.com/magento/magento2/pull/16379)*. [GitHub-16378](https://github.com/magento/magento2/issues/16378) + * The dropdown toggle icon on the shopping cart now works as expected. Previously, the arrow did not change direction as expected when you toggled the Discount or Tax options. *Fix submitted by Karla Saaremäe in pull request [15991](https://github.com/magento/magento2/pull/15991)*. + * The shopping cart icon on the checkout page on mobile screens now displays hover color and regular color as expected. *Fix submitted by Karla Saaremäe in pull request [16002](https://github.com/magento/magento2/pull/16002)*. + * Customers are not unexpectedly logged out if the customers hits the F5 key twice during checkout. *Fix submitted by adrian-martinez-interactiv4 in pull request [14428](https://github.com/magento/magento2/pull/14428)*. [GitHub-4301](https://github.com/magento/magento2/issues/4301), [GitHub-12362](https://github.com/magento/magento2/issues/12362), [GitHub-13427](https://github.com/magento/magento2/issues/13427) + * The **Purchased Order Form** button is now correctly aligned. *Fix submitted by Neeta Kangiya in pull request [15331](https://github.com/magento/magento2/pull/15331)*. [GitHub-15334](https://github.com/magento/magento2/issues/15334) + * The **Purchased Order Form** button is now visible. *Fix submitted by hitesh-wagento in pull request [15372](https://github.com/magento/magento2/pull/15372)*. [GitHub-15334](https://github.com/magento/magento2/issues/15334) + * Magento no longer displays duplicate element IDs on the Checkout page. *Fix submitted by Julien ANQUETIL in pull request [15585](https://github.com/magento/magento2/pull/15585)*. [GitHub-13415](https://github.com/magento/magento2/issues/13415) + * During the payment step of checkout, a customer can now successfully deselect the **Billing save-in address book** checkbox in a selected payment method other than the default method. *Fix submitted by Rakesh Gangani in pull request [15344](https://github.com/magento/magento2/pull/15344)*. [GitHub-13692](https://github.com/magento/magento2/issues/13692) + * The `.block-minicart` element on the mini cart dropdown menu no longer has an empty class. *Fix submitted by Karla Saaremäe in pull request [14715](https://github.com/magento/magento2/pull/14715)*. [GitHub-14669](https://github.com/magento/magento2/issues/14669) + * Customers can now add configurable products to their shopping cart when Magento is running on Internet Explorer 11.x. + * The free shipping cart price rule now works as expected when the UPS shipping method is enabled. Previously, UPS Ground shipping method was not available for free shipping at checkout when the UPS shipping method was enabled. + * Cart price rule condition values now handle commas as expected. + * Free shipping coupons now work as expected with Table Rates shipping. Previously, Magento displayed this message when a customer tried to use a free shipping coupon: `Sorry, no quotes are available for this order`. [GitHub-8172](https://github.com/magento/magento2/issues/8172) + * Magento now displays correct store view prices for cases when a merchant uses a CSV file to add products by SKU from the Admin. + * A merchant can successfully use SKU values that contain capital letters to add a product to a cart from the Admin. + * Refreshing the checkout page no longer deletes the shipping address when a guest checks out. Previously, when the persistent shopping cart was enabled, refreshing the checkout out page affected information entered into form fields for a guest checkout. + * The speed at which Magento places an order is no longer affected by how many shipping methods are available. Previously, when a customer placed an order for which multiple shipping methods were available, Magento took more than 20 seconds to place the order. + * Magento now maintains browser history as expected when a user navigates from the checkout contact information page to the checkout payment information page. Previously, when a user tried to retrace her steps after landing on the payment information page, Magento did not return them to the checkout contact information page, but instead landed on a product page. + * Magento now displays a message when a gift card card is removed during checkout. + * Guest orders placed with gift cards can now be canceled. + * A shopping cart’s contents remains constant even when the Checkout page is repeatedly reloaded. Previously, if a customer reloaded the checkout page several times, Magento emptied the shopping cart and the customer could not place the order. (This problem primarily affected stores running on HTTPS.) + * The message that Magento displays when a customer has successfully added a product to his shopping cart now contains a link to the cart. *Fix submitted by Andreas von Studnitz in pull request [13904](https://github.com/magento/magento2/pull/13904)*. + * The Update button now behaves the same whether product quantity is manually edited or changed by JavaScript. *Fix submitted by Valerij Ivashchenko in pull request [14935](https://github.com/magento/magento2/pull/14935)*. + * Magento no longer displays the infinite checkout loader when a module that is loading makes a `require` call, but the dependency is not returned (typically due to network error). *Fix submitted by Vova Yatsyuk in pull request [14874](https://github.com/magento/magento2/pull/14874)*. + * The minicart quantity label no longer has a fixed length. *Fix submitted by Karla Saaremäe in pull request [14716](https://github.com/magento/magento2/pull/14716)*. + * Double-clicking on the **Proceed to checkout** button from the minicart no longer returns an empty shopping cart. ### Cleanup @@ -530,327 +657,431 @@ Our community contributors have made many helpful, minor corrections to spelling #### Spelling corrections + * Corrected misspelling of `formatedPrice` throughout the code base. *Fix submitted by Arnoud Beekman in pull request [16726](https://github.com/magento/magento2/pull/16726)*. + * Corrected return message from `ProductRuleTest.php`. *Fix submitted by Namrata in pull request [16721](https://github.com/magento/magento2/pull/16721)*. + * Replaced the `proccessAdditionalValidation` method with `processAdditionalValidation`. *Fix submitted by Tiago Sampaio in pull request [16414](https://github.com/magento/magento2/pull/16414)*. + * Corrected misspelling in `SynonymGroupRepositoryInterface`. *Fix submitted by AnshuMishra17 in pull request [16711](https://github.com/magento/magento2/pull/16711)*. + * Corrected misspelling in library file. *Fix submitted by Namrata in pull request [16495](https://github.com/magento/magento2/pull/16495)*. + * Corrected punctuation in the message displayed on **CONTENT** > **Design** > **Configuration**. *Fix submitted by Erik Hansen in pull request [16489](https://github.com/magento/magento2/pull/16489)*. + * Correct misspellings in Model and library files. *Fix submitted by Namarata in pull request [16230](https://github.com/magento/magento2/pull/16230)*. + * Corrected misspelling in `_exportAddressses` method name. *Fix submitted by Marcel Hauri in pull request [15275](https://github.com/magento/magento2/pull/15275)*. + * Corrected misspelling in comments for `addTaxPercents()` in `app/code/Magento/Catalog/Model/ResourceModel/Product/Collection.php`. *Fix submitted by AnshuMishra17 in pull request [15431](https://github.com/magento/magento2/pull/15431)*. + * Corrected misspelling in `abstract.js`. *Fix submitted by VitaliyBoyko in pull request [15411](https://github.com/magento/magento2/pull/15411)*. + * Corrected misspellings in `app/code/Magento/Sales/Block/Adminhtml/Order/Create/Sidebar/AbstractSidebar.php`, `app/code/Magento/Ui/view/base/web/js/form/components/fieldset.js`, `app/code/Magento/Ui/view/base/web/js/form/components/group.js`, `setup/pub/angular-sanitize/angular-sanitize.js`, and `setup/pub/angular-sanitize/angular-sanitize.min.js.map`. *Fix submitted by Danny Verkade in pull request [15715](https://github.com/magento/magento2/pull/15715)*. + * Corrected misspelling in `app/code/Magento/Catalog/Model/Product/Type/AbstractType.php`. *Fix submitted by Saurabh Parekh in pull request [15519](https://github.com/magento/magento2/pull/15519)*. + * Corrected misspellings in Multishipping and User modules. *Fix submitted by Anna Völkl in pull request [15513](https://github.com/magento/magento2/pull/15513)*. + * Corrected a misspelling in function comment in `app/code/Magento/Paypal/Model/Api/Nvp.php` *Fix submitted by Namrata in pull request [15302](https://github.com/magento/magento2/pull/15302)*. + * Corrected misspellings in PHPDocs and comments. *Fix submitted by Dmytro Cheshun in pull request [15293](https://github.com/magento/magento2/pull/15293)*. + * Corrected typo in method name `_getCharg[e]ableOptionPrice`. *Fix submitted by Marcel Hauri in pull request [15276](https://github.com/magento/magento2/pull/15276)*. + * Corrected typo in database column comment in `app/code/Magento/Catalog/Setup/InstallSchema.php`. *Fix submitted by VitaliyBoyko in pull request [15291](https://github.com/magento/magento2/pull/15291)*. + * Corrected misspelling in the name of private method `\Magento\Catalog\Console\Command\ImagesResizeCommand::getUniq[ue]ImageIndex`. *Fix submitted by Marcel Hauri in pull request [15282](https://github.com/magento/magento2/pull/15282)*. + * Corrected typo in the `\Magento\Framework\Image::open` exception message. *Fix submitted by Tom Richards in pull request [15269](https://github.com/magento/magento2/pull/15269)*. + * Corrected misspelling in `ResourceModel\Coupon.php:updateSpecificCoupons`. *Fix submitted by Stephen Biston in pull request [14891](https://github.com/magento/magento2/pull/14891)*. + * Corrected typo in the name of the `\Magento\Framework\App\Request\Http::removeRepitedSlashes` method. *Fix submitted by Igor Tripolskiy in pull request [15256](https://github.com/magento/magento2/pull/15256)*. + * Corrected misspelling in `app/code/Magento/CatalogSearch/Block/Advanced/Form.php`. *Fix submitted by Jeevan M R in pull request [15053](https://github.com/magento/magento2/pull/15053)*. + * Corrected misspelling in `.less` files. *Fix submitted by Kalpesh Mehta in pull request [15023](https://github.com/magento/magento2/pull/15023)*. + * Removed double occurrence of 'it' from sentences and corrected minor grammar error. *Fix submitted by Namrata in pull request [16240](https://github.com/magento/magento2/pull/16240)*. + * Fixed typo in `app/code/Magento/Checkout/etc/webapi.xml`. *Fix submitted by Markus Haack in pull request [15845](https://github.com/magento/magento2/pull/15845)*. + * Corrected misspelling in `file-uploader.js` and `storage-manager.js`. *Fix submitted by Saurabh Parekh in pull request [15888](https://github.com/magento/magento2/pull/15888)*. + * Corrected misspelling in `scripts.js`. *Fix submitted by Ledian Hymetllari in pull request [15878](https://github.com/magento/magento2/pull/15907)*. + * Corrected grammar error in the "What is this" tooltip for the Braintree vault tool tip. *Fix submitted by kreativedev in pull request [17151](https://github.com/magento/magento2/pull/17151)*. + * Renamed `_requesetd` to `_requested` in `app/code/Magento/Ui/view/base/web/js/lib/core/element/element.js`. *Fix submitted by Valerij Ivashchenko in pull request [16971](https://github.com/magento/magento2/pull/16971)*. + * Removed double occurrences of words from the lib and dev test function comments and from these modules: `Magento_Catalog`, `Magento_Customer`, `Magento_Downloadable`, and `Magento_Sales`. *Fix submitted by Namrata in pull request [16644](https://github.com/magento/magento2/pull/16644)*. + * Removed double occurrences from `jQuery`, Angular JS files and the `Magento_Setup` module's scan function's comment. *Fix submitted by Namrata in pull request [16581](https://github.com/magento/magento2/pull/16581)*. + * Correct misspelling in method name and result in these files: `dev/tests/functional/tests/app/Magento/Checkout/Test/Block/Onepage/Shipping/Method.php` and `dev/tests/functional/tests/app/Magento/Shipping/Test/Constraint/AssertCityBasedShippingRateChanged.php`. *Fix submitted by Dmytro Cheshun in pull request [15297](https://github.com/magento/magento2/pull/15297)*. #### Minor corrections to code and code formatting + * Removed extra spaces from `Magento/Ui`. *Fix submitted by Ronak Patel in pull request [16872](https://github.com/magento/magento2/pull/16872)*. + * Improved code formatting. *Fix submitted by Pratik Oza in pull request [16821](https://github.com/magento/magento2/pull/16821)*. + * Removed comments and unnecessary spaces. *Fix submitted by Ronak Patel in pull request [16748](https://github.com/magento/magento2/pull/16748)*. + * Removed space before ending sentence throughout code base. *Fix submitted by Namrata in pull request [16717](https://github.com/magento/magento2/pull/16717)*. + * Removed unnecessary spaces in `app/code/Magento/Catalog/Pricing/Price/ConfiguredRegularPrice.php`. *Fix submitted by Ronak Patel in pull request [15129](https://github.com/magento/magento2/pull/15129)*. + * Removed extra space from the value of the `is_required` XML node in `SynonymGroup.xml`. *Fix submitted by Namrata in pull request [16557](https://github.com/magento/magento2/pull/16557)*. + * Minor corrections to code throughout the code base. *Fix submitted by GraysonChiang in pull request [16841](https://github.com/magento/magento2/pull/16841)*. + * Removed unused data from `app/code/Magento/Ui/Model/Export/ConvertToCsv.php` and `app/code/Magento/Ui/Model/Export/ConvertToXml.php`. *Fix submitted by Vishal Gelani in pull request [16524](https://github.com/magento/magento2/pull/16524)*. + * Removed unnecessary translations for label and comment tags and added missing translation strings. *Fix submitted by Yogesh Suhagiya in pull request [16090](https://github.com/magento/magento2/pull/16090)*. + * Removed redundant plug-in information (`dev:di:info`). *Fix submitted by Alexander Shkurko in pull request [16474](https://github.com/magento/magento2/pull/16474)*. + * Removed redundant semicolon from these files: `app/code/Magento/Tax/Model/Sales/Total/Quote/CommonTaxCollector.phpMagento/Multishipping/Test/Unit/Block/Checkout/SuccessTest.php` and `app/code/Magento/Tax/Model/Sales/Total/Quote/CommonTaxCollector.php`. *Fix submitted by Saurabh Parekh in pull request [15594](https://github.com/magento/magento2/pull/15594)*. + * Corrected errors in method description in `app/code/Magento/Config/Block/System/Config/Form.php`, `app/code/Magento/ConfigurableImportExport/Model/Import/Product/Type/Configurable.php`, and `app/code/Magento/Customer/Model/Session.php`. *Fix submitted by Vishal Gelani in pull request [15549](https://github.com/magento/magento2/pull/15549)*. + * Removed extra space and formatted the code in `app/code/Magento/Captcha/i18n/en_US.csv`. *Fix submitted by Saurabh Parekh in pull request [15552](https://github.com/magento/magento2/pull/15552)*. + * Removed the redundant `else` statement in `app/code/Magento/ConfigurableImportExport/Model/Import/Product/Type/Configurable.php`. *Fix submitted by Yaroslav Rogoza in pull request [15435](https://github.com/magento/magento2/pull/15435)*. + * Fixed misplaced bracket in `Option/Type/Text.php`. *Fix submitted by Valerij Ivashchenko in pull request [16566](https://github.com/magento/magento2/pull/16566)*. + * Removed a duplicate line and added comment in `app/code/Magento/Sales/Block/Adminhtml/Order/Create/Totals/Discount.php`. *Fix submitted by Vishal Gelani in pull request [15362](https://github.com/magento/magento2/pull/15362)*. + * Removed unused variable in `lib/web/css/source/lib/variables/_typography.less`. *Fix submitted by VitaliyBoyko in pull request [15386](https://github.com/magento/magento2/pull/15386)*. + * Corrected variable names in `LockAdminUserWhenEditingIntegrationTest` and `AssertCityBasedShippingRateChanged`, among others. *Fix submitted by Dmytro Cheshun in pull request [15294](https://github.com/magento/magento2/pull/15294)*. + * Corrected property name in `dev/tests/static/testsuite/Magento/Test/Integrity/Magento/Backend/ControllerAclTest.php`. *Fix submitted by Dmytro Cheshun in pull request [15292](https://github.com/magento/magento2/pull/15292)*. + * Removed non-existing argument from the constructor's comment block in `app/code/Magento/Translation/Block/Html/Head/Config.php` and added space where needed in `app/code/Magento/Translation/Model/Json/PreProcessor.php`. *Fix submitted by Yogesh Suhagiya in pull request [15249](https://github.com/magento/magento2/pull/15249)*. + * Removed redundant close tag from `app/code/Magento/Review/view/frontend/templates/view.phtml`. *Fix submitted by Yogesh Suhagiya in pull request [14928](https://github.com/magento/magento2/pull/14928)*. + * Removed extra spaces from a key-value pair in the `en_US.csv`language file. *Fix submitted by Yogesh Suhagiya in pull request [14896](https://github.com/magento/magento2/pull/14896)*. + * Cleaned up `foreach` and `break` statements in `app/code/Magento/Rule/Model/Condition/AbstractCondition.php`. *Fix submitted by Thomas Klein in pull request [14609](https://github.com/magento/magento2/pull/14609)*. + * Corrected grammar in `README.md`. *Fix submitted by Stanislav Idolov in pull request [14844](https://github.com/magento/magento2/pull/14844)*. + * Corrected type hints in `Webapi/Controller/Soap/Request/Handler.php` and `Webapi/Model/Plugin/GuestAuthorization.php`. Also corrected case in property annotation in `Soap\Server.php` and added undefined property `_appState` in `Controller\Soap.php`. *Fix submitted by Prince Patel in pull request [16626](https://github.com/magento/magento2/pull/16626)*. + * Corrected `Magento\Webapi\Model\Soap\Fault::toXml()` method invocation in `Soap\FaultTest.php`. *Fix submitted by Prince Patel in pull request [16626](https://github.com/magento/magento2/pull/16626)*. + * We've removed an unused class from the `lib/_forms.less` file. *Fix submitted by Chirag Matholiya in pull request [15791](https://github.com/magento/magento2/pull/15791)*. + * We've removed unnecessary CSS code from `_actions-toolbar.less`. *Fix submitted by Chirag Matholiya in pull request [15789](https://github.com/magento/magento2/pull/15789)*. + * We've removed the unnecessary double semicolon from the style sheets. *Fix submitted by Namrata in pull request [15795](https://github.com/magento/magento2/pull/15795)*. + * We've removed the unused code from `docs.less`. *Fix submitted by Daniel Ruf in pull request [15871](https://github.com/magento/magento2/pull/15871)*. + * Removed extraneous negative margin on product list and product list items. *Fix submitted by Steven de Jong in pull request [15936](https://github.com/magento/magento2/pull/15936)*. [GitHub-15308](https://github.com/magento/magento2/issues/15308) + * Indentation issues with LESS files have been resolved. *Fix submitted by hitesh-wagento in pull request [15811](https://github.com/magento/magento2/pull/15811)*. + * The syntax for before-after operators in LESS files has been corrected. *Fix submitted by Namrata in pull request [16181](https://github.com/magento/magento2/pull/16181)*. + * Redundant keywords have been removed from miscellaneous files. *Fix submitted by Namrata in pull request [16182](https://github.com/magento/magento2/pull/16182)*. + * We've corrected misspellings in the comment section of `OrderFixture.php`. *Fix submitted by Namrata in pull request [16183](https://github.com/magento/magento2/pull/16183)*. + * Unnecessary leading and trailing spaces have been removed from the customer account login page email field. *Fix submitted by Piyush Dankhara in pull request [15365](https://github.com/magento/magento2/pull/15365)*. [GitHub-6058](https://github.com/magento/magento2/issues/6058) + * Unnecessary leading and trailing spaces have been removed from fields in the customer account create and login forms. *Fix submitted by Piyush Dankhara in pull request [16192](https://github.com/magento/magento2/pull/16192)*. [GitHub-6058](https://github.com/magento/magento2/issues/6058) + * Unnecessary leading and trailing spaces have been removed from fields in newsletter, forgot password, checkout login and email to a friend forms. *Fix submitted by Piyush Dankhara in pull request [16564](https://github.com/magento/magento2/pull/16564)*. [GitHub-6058](https://github.com/magento/magento2/issues/6058) + * Unnecessary leading and trailing spaces have been removed from fields in the customer confirmation form. *Fix submitted by Vishal Gelani in pull request [16595](https://github.com/magento/magento2/pull/16595)*. [GitHub-6058](https://github.com/magento/magento2/issues/6058) + * Removed unnecessary commented code from these files: `app/code/Magento/Review/Model/ResourceModel/Rating/Collection.php`, `app/code/Magento/Sales/Model/Order/Creditmemo.php`, `lib/internal/Magento/Framework/Data/Form/Element/Checkboxes.php`, and `lib/internal/Magento/Framework/Model/ResourceModel/Db/Relation/ActionPool.php`. *Fix submitted by Pratik Oza in pull request [17077](https://github.com/magento/magento2/pull/17077)*. + * Removed unnecessary spaces from the price value in `app/code/Magento/Catalog/view/base/templates/product/price/amount/default.phtml`. *Fix submitted by Valerij Ivashchenko in pull request [17027](https://github.com/magento/magento2/pull/17027)*. + * Remove unused comments from `_initDiscount()` function. *Fix submitted by Prince Patel in pull request [17002](https://github.com/magento/magento2/pull/17002)*. + * Corrected misspellings in multiple files, including `app/code/Magento/Catalog/Block/Adminhtml/Product/Attribute/Set/Main/Tree/Attribute.php`, `app/code/Magento/Catalog/view/adminhtml/web/js/product/weight-handler.js`, `app/code/Magento/Signifyd/Test/Unit/Controller/Webhooks/HandlerTest.php`, `app/code/Magento/Ui/view/base/web/js/lib/core/element/element.js`, and `dev/tests/functional/tests/app/Magento/Widget/Test/Constraint/AssertWidgetCmsPageLink.php`. *Fix submitted by Pratik Oza in pull request [16980](https://github.com/magento/magento2/pull/16980)*. + * Fixed the DocBlock for `hasInvoices()`, `hasShipments()`, and `hasCreditmemos()` in `app/code/Magento/Sales/Model/Order.php`. *Fix submitted by Lyzun Oleksandr in pull request [16554](https://github.com/magento/magento2/pull/16554)*. + * Fixed type hints and docs for the Downloadable Samples block. *Fix submitted by Björn Kraus in pull request [16408](https://github.com/magento/magento2/pull/16408)*. + * Removed redundant `@throws` hinting and unused import for `AdvancedPricingImportExport` module classes. *Fix submitted by Dmytro Cheshun in pull request [15872](https://github.com/magento/magento2/pull/15872)*. + * Added missing PHPDoc to methods throughout the code base. *Fix submitted by Leandro F. L. in pull request [16215](https://github.com/magento/magento2/pull/16215)*. + * Fixed mismatches in case between class and method name spellings. *Fix submitted by Leandro F. L. in pull request [16141](https://github.com/magento/magento2/pull/16141)*. + * Removed an unnecessary comma from the `translate` attribute in `app/code/Magento/Sales/etc/adminhtml/system.xml`. *Fix submitted by Dmytro Cheshun in pull request [15615](https://github.com/magento/magento2/pull/15615)*. ### CMS content + * Page layout issues that resulted from incorrect module sequence have been corrected. Previously, the `Magento_theme` module was loaded too late, which resulted in unexpected display issues. + * Corrected use statements and return values in `AggregationInterface`. *Fix submitted by Yaroslav Rogoza in pull request [14893](https://github.com/magento/magento2/pull/14893)*. ### Configurable products + * Customers can now successfully complete checkout when their order contains a configurable product with a configurable option. Previously, customers could not check out when there is a configurable product in the cart with a configurable option, which is now deleted, shopping cart could not be loaded. *Fix submitted by jonshipman in pull request [15468](https://github.com/magento/magento2/pull/15468)*. [GitHub-15467](https://github.com/magento/magento2/issues/15467) + * Magento now displays the manufacturer attribute on the Admin on the Catalog page for configurable products. Previously, Magento displayed these attributes on the simple products catalog page, but not on the configurable products catalog page. + * Configurable products are now sorted by only visible prices as expected. Previously, sorting a catalog by price resulted in sort results that included the prices of out-of-stock products and disabled child products. + * When two simple products of a configurable product have different prices, Magento now uses the lowest price as the default price on the product detail page. Previously, if one of the simple products had price=0, Magento did not use it as the default. *Fix submitted by Torrey Tsui in pull request [16540](https://github.com/magento/magento2/pull/16540)*. + * The missing check for a `false` value has been added to `ConfiguredRegularPrice`. Previously, when the parent method returned false, Magento threw this fatal error: `NOTICE: PHP message: PHP Fatal error: Uncaught TypeError: Argument 1 passed to Magento\Catalog\Pricing\Price\ConfiguredOptions::getItemOptionsValue() must be of the type float, boolean given, called in /app/vendor/magento/module-catalog/Pricing/Price/ConfiguredRegularPrice.php on line 74 and defined in /app/vendor/magento/module-catalog/Pricing/Price/ConfiguredOptions.php:24`. *Fix submitted by Tibor Kotosz in pull request [15129](https://github.com/magento/magento2/pull/15129)*. + * Corrected formatting of the JavaScript code in the `app/code/Magento/Ui/view/base/templates/control/button/split.phtml` and `app/code/Magento/Ui/view/base/web/js/grid/controls/button/split.jstemplate` files. *Fix submitted by Yogesh Suhagiya in pull request [14967](https://github.com/magento/magento2/pull/14967)*. ### Cookies + * Magento now responds to a customer accepting a cookie notice by simply hiding the notice. Previously, Magento reloaded the entire site when a user accepted the cookie notice. *Fix submitted by Torben Höhn in pull request [16890](https://github.com/magento/magento2/pull/16890)*. ### Customer account + * Magento no longer logs out a customer after a successful password change. + * Magento no longer displays the State/Province instead of the State field on U.S. customer address forms. + * Customer attributes are now correctly validated on the Admin Order form. Previously, Magento validated attributes\length after an order has been submitted, but not on the Admin Order form. + * Customers no longer lose their session when they switch stores on different domains. + * Non-U.S. and non-Canadian addresses that are displayed in the **Address Book summary** field now display the State/Province values as expected if that information was provided. + * The checkout page no longer displays custom address attributes when **Show on frontend** is set to **no**. + * Magento now displays the default value for a new Customer attribute that is created from the Admin. Previously, Magento set this value to **no** by default. + * Administrators can see all customers when the **Share Customer Accounts** value is set to Global. + * User login email validation no longer fails if the field contains a leading or trailing space on Internet Explorer 11.x. *Fix submitted by Piyush Dankhara in pull request [15365](https://github.com/magento/magento2/pull/15365)*. [GitHub-6058](https://github.com/magento/magento2/issues/6058) + * Customer accounts are now unlocked as expected after a password reset. *Fix submitted by Andrea Gaspardo in pull request [15255](https://github.com/magento/magento2/pull/15255)*. [GitHub-15534](https://github.com/magento/magento2/issues/15534) + * Magento no longer changes the format of Date of Birth information when this field is enabled on the Create New Customer Account page, and an existing customer tries to re-register. *Fix submitted by KaushikChavda in pull request [15272](https://github.com/magento/magento2/pull/15272)*. + * When saving a customer group, Magento now copies extension attributes to the new data model that is returned. Previously, this action was not completed, and Magento behaved unpredictably. *Fix submitted by Joseph Maxwell in pull request [16254](https://github.com/magento/magento2/pull/16254)*. + * The `customer.account.dashboard.info.extra` block has been moved to contact information from the newsletter section in `app/code/Magento/Customer/view/frontend/templates/account/dashboard/info.phtml`. *Fix submitted by JeroenVanLeusden in pull request [14923](https://github.com/magento/magento2/pull/14923)*. ### Directory + * You can now configure different Allowed Countries for default and store scopes. *Fix submitted by Oleksandr Kravchuk in pull request [16693](https://github.com/magento/magento2/pull/16693)*. ### dotmailer @@ -866,46 +1097,59 @@ Our community contributors have made many helpful, minor corrections to spelling * Unexpected errors during subscriber or customer creation no longer occur. + * A merchant can now successfully create a new user and displays the appropriate welcome message. Previously, Magento threw an error during the creation of a customer or subscriber, although the new user/subscriber was created. ### EAV + * Magento now correctly renders multiselect product attributes with a custom source model in `adminhtml`. Previously, the selected value was saved the first time in the `catalog_product_entity_varchar` table, and the attribute was added to the `eav_attribute` table, but the selected options were not highlighted against the attribute. + * Magento now displays the fixed product tax attribute label as expected according to the specified store view. + * You can now successfully save a product after setting its special requirements multiselect attribute. (This means that attribute values are saved as expected to the database, checked in `_catalog_product_entity_varchar_ table`, and displayed as non-selected on product page in the Admin.) ### Frameworks + * `@api` annotation has been added to the `magento/framework` component of the Filter Group and Sort Order classes. *Fix submitted by Ronak Patel in pull request [16845](https://github.com/magento/magento2/pull/16845)*. + * `app/code/Magento/Theme/etc/di.xml` now uses `Translate` instead of `TranslateInterface`. *Fix submitted by Wouter Samaey in pull request [17124](https://github.com/magento/magento2/pull/17124)*. + * Classes with methods that contain variadic arguments can be also used in proxy classes. *Fix submitted by Vishal Gelani in pull request [16080](https://github.com/magento/magento2/pull/16080)*. + * The annotation in `_toOptionArray - lib\internal\Magento\Framework\Data\SearchResultProcessor.php` has been corrected. *Fix submitted by Namrata in pull request [15892](https://github.com/magento/magento2/pull/15892)*. + * Scheduled XML sitemap generation now works as expected. Previously, you could schedule sitemap generation (**Admin** > **Store** > **Configuration** > **Catalog** > **XML sitemap**), but Magento would not generate the sitemap. *Fix submitted by James Halsall in pull request [14822](https://github.com/magento/magento2/pull/14822)*. [GitHub-5768](https://github.com/magento/magento2/issues/5768) + * In multi-site deployments, a customer requesting a password reset on a non-default store should receive the password reset email from the non-default, not the primary, store. Previously, this password reset email was sent from the default store. *Fix submitted by Rodrigo Mourão in pull request [14800](https://github.com/magento/magento2/pull/14800)*. [GitHub-5726](https://github.com/magento/magento2/issues/5726) + * The `trigger_recollect` quote attribute no longer causes a time out. *Fix submitted by Philipp Sander in pull request [14719](https://github.com/magento/magento2/pull/14719)*. [GitHub-9580](https://github.com/magento/magento2/issues/9580) + * `Framework\Math\Random` now uses PHP 7.x features, including `random_bytes` and `random_int`. + * The `catalog:image:resize` command execution time has been reduced by up to 90% in the release. However, this improvement necessitates these additional steps after upgrading your Magento instance to 2.2.6: * Remove `pub/media/catalog/product/cache`. (Removing this folder frees up space.) @@ -913,388 +1157,507 @@ Our community contributors have made many helpful, minor corrections to spelling * Run `bin/magento catalog:image:resize` to generate a new image cache. (This step is necessary because we’ve changed the path to cached images and must remove the previously cached images.) + * We've fixed a display error that occurred when both a Critical Admin Notification and Release Notification window were opened. + * Changes that were made to file permissions for `lib/internal/Magento/Framework/View/Asset/Merged.php` and its associated test that were made in an earlier release have been reverted. *Fix submitted by Ihor Sviziev in pull request [16937](https://github.com/magento/magento2/pull/16937)*. + * The constructor in `Magento\Webapi\Model\Soap\Fault.php` now assigns `$exception->getOriginator()` to `_soapFaultCode` instead of to the dynamical property `_soapCode`. *Fix submitted by Marcel Hauri in pull request [15515](https://github.com/magento/magento2/pull/15515)*. + * Corrected annotation in `_toOptionArray` in `lib/internal/Magento/Framework/Data/Collection/AbstractDb.php`. *Fix submitted by Sanjay Patel in pull request [15336](https://github.com/magento/magento2/pull/15336)*. + * The invoice table now displays the correct shipping and handling for a partial items invoice. *Fix submitted by Ankur Raiyani in pull request [14795](https://github.com/magento/magento2/pull/14795)*. + * The return values from the `usort` and `value_compare_func` function now matches the PHP documentation for these functions. *Fix submitted by luke-denton-aligent in pull request [14726](https://github.com/magento/magento2/pull/14726)*. + * MySQL adapter can now reconnect successfully when using a nonstandard port. Previously, Magento threw this error, `Port must be configured within host parameter`. *Fix submitted by Julien ANQUETIL in pull request [14753](https://github.com/magento/magento2/pull/14753)*. #### Application framework + * You can now manually add a parameter to `app/etc/env.php: user_admin_email`. When an administrator is created, Magento sends an email to default store's email and, if present, to the email address defined in `user_admin_email`. + * Magento now removes unneeded PDF files after generation. Previously, Magento saved a copy of every generated invoice PDF in `/var`. *Fix submitted by Yaroslav Rogoza in pull request [16401](https://github.com/magento/magento2/pull/16401)*. [GitHub-3535](https://github.com/magento/magento2/issues/3535), [GitHub-14517](https://github.com/magento/magento2/issues/14517) + * Logs now indicate when Magento is in maintenance mode, which will help the debugging process. *Fix submitted by Ethan Yehuda in pull request [16840](https://github.com/magento/magento2/pull/16840)*. #### JavaScript framework + * `lib/web/mage/dropdowns.js` no longer fails when autoclose is set to **true**. *Fix submitted by Brian LaBelle in pull request [15499](https://github.com/magento/magento2/pull/15499)*. [GitHub-15469](https://github.com/magento/magento2/issues/15469) + * You can now view an entire zoomed product image in Fotorama fullscreen from the FireFox browser. Previously, the image jumps and the user cannot view all portions of the image. [GitHub-7978](https://github.com/magento/magento2/issues/7978) #### Web API framework + * The `array_push` function has been added to the list of forbidden functions. *Fix submitted by Leandro F. L. in pull request [16144](https://github.com/magento/magento2/pull/16144)*. + * A generated admin API token no longer expires immediately. Previously, when you created a token for an Admin user and have set **Admin Token Lifetime (hours))** to empty, Magento denied access because the token immediately expired. *Fix submitted by Maikel Martens in pull request [15598](https://github.com/magento/magento2/pull/15598)*. [GitHub-15564](https://github.com/magento/magento2/issues/15564) + * The `GET /V1/returns?searchCriteria` endpoint retrieves `tracks` arrays as expected. + * The `GET /V1/returns/:id` endpoint retrieves `tracks` arrays as expected. + * `catalogProductAttributeRepository` now returns the `frontend_labels` value as expected. #### Cache framework + * Magento no longer throws an exception when deploying static content on a deployment where Redis is used for cache management. See "Redis and static-content deployment" in [Redis troubleshooting]({{ page.baseurl }}/cloud/trouble/redis-troubleshooting.html) for more information. [GitHub-9287](https://github.com/magento/magento2/issues/9287) + * When a layout is loaded from the cache, Magento now repopulates the list of applied layout handles to prevent any chance of a layout handle being reapplied later. *Fix submitted by Scott Buchanan in pull request [12314](https://github.com/magento/magento2/pull/12314)*. ### Dashboard + * The dashboard now displays the correct order amount on orders when deploying Magento on multiple storefronts with different currencies. *Fix submitted by Ankur Raiyani in pull request [15661](https://github.com/magento/magento2/pull/15661)*. [GitHub-15660](https://github.com/magento/magento2/issues/15660) ### Directory + * Magento now supports seven-digit Israeli postal code masks. *Fix submitted by Itay Raz in pull request [16250](https://github.com/magento/magento2/pull/16250)*. ### General + * Magento now uses the correct amounts when creating a credit memo for an order that was placed using store credit, a gift card, or reward points. + * Magento no longer sends duplicate delete requests as a result of an unstable Internet connection. Previously, unintentional mass deletion of products sometimes occurred as a result of an unstable Internet connection. + * You can now successfully save a product video for one store view in deployments that have several store views. Previously, when you saved a product video for one store view, Magento saved it for all store views, although customers could play the video on the original store only. + * Customer data is now fully loaded after restarting the browser during an unexpired user session. Previously, the `section_data_ids` section of the session cookie was not properly completed. [GitHub-14912](https://github.com/magento/magento2/issues/14912) + * We've fixed an issue with unoptimized SQL queries in customer segments. Previously, the customer segment was not saved, and MySQL crashed. + * When a customer creates a product review, the link to the product from the review in the customer's **My Account** > **My Product Review** is now SEO friendly. + * The My Invitations page now accurately displays the reward points amount in numbers. Previously, this page displayed the special character `%` instead of numbers. + * The Enterprise Reward refund logic no longer permits administrators to grant double refunds. + * We moved the `isAllowed` method from `AccessChangeQuoteControl` to a separate service to optimize the logic that supports using recurrent payments in combination with pre-ordered products. *Fix submitted by Jeroen Van Leusden in pull request [12566](https://github.com/magento/magento2/pull/12566)*. + * The attribute checking logic has been optimized by reducing redundant checks. *Fix submitted by Freek Vandeursen in pull request [11554](https://github.com/magento/magento2/pull/11554)*. + * Magento no longer validates customer address attribute value length when the minimum/maximum length fields are not displayed on the Admin. + * The dropdown menu is now positioned as expected under the link on the UI Component listing. *Fix submitted by Ankur Raiyani in pull request [15661](https://github.com/magento/magento2/pull/15661)*. [GitHub-15660](https://github.com/magento/magento2/issues/15660) + * The timestamp field now includes indexes, which reduces the chances of deadlocks that can occur while erasing old records. *Fix submitted by Carlos Lizaga in pull request [13328](https://github.com/magento/magento2/pull/13328)*. [GitHub-10346](https://github.com/magento/magento2/issues/10346) + * `setCateroryIds([])` has been corrected to `setCategoryIds([])` throughout the test suites. *Fix submitted by Neeta Kangiya in pull request [15621](https://github.com/magento/magento2/pull/15621)*. [GitHub-15590](https://github.com/magento/magento2/issues/15590) + * Menus with nested elements now align correctly. *Fix submitted by hitesh-wagento in pull request [15645](https://github.com/magento/magento2/pull/15645)*. [GitHub-7897](https://github.com/magento/magento2/issues/7897) + * An administrator can now successfully download a PDF or export data immediately after log in. Previously, an administrator could not download a PDF or export data successfully after log in, but was redirected to the Admin dashboard. *Fix submitted by Riccardo Tempesta in pull request [15539](https://github.com/magento/magento2/pull/15539)*. [GitHub-15510](https://github.com/magento/magento2/issues/15510) + * Merchants can now apply styling by changing LESS variables in the Luma theme as expected. *Fix submitted by hitesh-wagento in pull request [15734](https://github.com/magento/magento2/pull/15734)*. [GitHub-15608](https://github.com/magento/magento2/issues/15608) + * Added a service configuration setting—Send Adminhtml and Frontend as Separate Apps—to collect and send separate data for frontend and adminhtml applications for New Relic reporting. See [New Relic Reporting]( https://docs.magento.com/m2/ce/user_guide/reports/new-relic-reporting.html?Highlight=New%20Relic%20service). *Fix submitted by Max Chadwick in pull request [12935](https://github.com/magento/magento2/pull/12935)*. + * Table alias prefixes in field mappings for customer group filter and sorting processors that were previously missing have been restored. Previous to this restoration, Magento threw this error when a merchant opened **Admin** > **Customers** > **All Customers**: `SQL Error: ambiguous column 'customer_group_id' in 'All customers' page in admin when extension attribute table is joined`. *Fix submitted by Maksim Gopey in pull request [15826](https://github.com/magento/magento2/pull/15826)*. + * `.limiter` now has the same parent selectors as `.pages`, which prevents clashes between styles and layouts. Previously, `.limiter` float was too generic. *Fix submitted by hitesh-wagento in pull request [15878](https://github.com/magento/magento2/pull/15878)*. + * The default `FormElementDependenceController` configuration is now extended by custom configuration rather than overridden. *Fix submitted by Valerij Ivashchenko in pull request [16001](https://github.com/magento/magento2/pull/16001)*. + * `inline-block` issues with space and font-size in the Name form have been resolved. *Fix submitted by Daniel Ruf in pull request [16048](https://github.com/magento/magento2/pull/16048)*. + * Alignment and layout issues on home and category pages of the Hot Seller section have been resolved. *Fix submitted by Chirag Matholiya in pull request [15893](https://github.com/magento/magento2/pull/15893)*. [GitHub-15213](https://github.com/magento/magento2/issues/15213) + * Updated old font formats of the default fonts (`woff` and `woff2`). *Fix submitted by Daniel Ruf in pull request [15870](https://github.com/magento/magento2/pull/15870)*. [GitHub-15213](https://github.com/magento/magento2/issues/15213) + * We've corrected the return type of methods and typos in `CategoriesJson.php`, `Engine.php`, `UrlRewrite.php`, and `ObserverConfig.php`. *Fix submitted by Saurabh Parekh in pull request [15993](https://github.com/magento/magento2/pull/15993)*. + * `@escapeNotVerified` annotations were replaced in `name.phtml` and `qty.phtml`. *Fix submitted by Riccardo Tempesta in pull request [15532](https://github.com/magento/magento2/pull/15532)*. [GitHub-15501](https://github.com/magento/magento2/issues/15501) + * We've removed redundant function calls in `app/code/Magento/CurrencySymbol/view/adminhtml/templates/grid.phtml`. *Fix submitted by Saurabh Parekh in pull request [15346](https://github.com/magento/magento2/pull/15346)*. [GitHub-15355](https://github.com/magento/magento2/issues/15355) + * `magnifier.js` now works no matter which mode is set. (`magnifier.js` offers the option of setting mode to 'inside' for an in-frame zoom.) *Fix submitted by Kacper Chara in pull request [15382](https://github.com/magento/magento2/pull/15382)*. [GitHub-4977](https://github.com/magento/magento2/issues/4977) + * The Change Password warning message no longer appears twice. *Fix submitted by Sanjay Patel in pull request [15774](https://github.com/magento/magento2/pull/15774)*. [GitHub-14895](https://github.com/magento/magento2/issues/14895) + * You can now add the `NOINDEX,NOFOLLOW` meta tag to the admin scope to instruct Google and other friendly bots to refrain from adding the Admin URL to search results. *Fix submitted by Itay Raz in pull request [17163](https://github.com/magento/magento2/pull/17163)*. + * The Create Account and Password Forget forms now include the required notice for relevant fields. *Fix submitted by Daniel Ruf in pull request [16965](https://github.com/magento/magento2/pull/16965)*. + * Reworked the `addError`, `addSuccess` methods in several files. *Fix submitted by Tiago Sampaio in pull request [16921](https://github.com/magento/magento2/pull/16921)*. + * Minor improvements to `app/code/Magento/CatalogRule/Model/Rule/Job.php` and `app/code/Magento/GroupedProduct/Model/Product/Initialization/Helper/ProductLinks/Plugin/Grouped.php`. *Fix submitted by Vladymyr Hrivinskyi in pull request [16900](https://github.com/magento/magento2/pull/16900)*. + * Refactored `app/code/Magento/User/Controller/Adminhtml/` by removing the direct use of ObjectManager and included the dependencies using constructor dependency injection. *Fix submitted by AnshuMishra17 in pull request [16560](https://github.com/magento/magento2/pull/16560)*. + * `gallery.less` no longer imports `_responsive.less`. *Fix submitted by Karla Saaremäe in pull request [16579](https://github.com/magento/magento2/pull/16579)*. + * Added missing `width` property for the confirmation modal in `lib/web/css/source/components/_modals.less`. *Fix submitted by Vladymyr Hrivinskyi in pull request [16861](https://github.com/magento/magento2/pull/16861)*. + * Removed the redundant `font-size` attribute from the toolbar pager in `lib/web/css/source/lib/_utilities.less`. *Fix submitted by Karla Saaremäe in pull request [16716](https://github.com/magento/magento2/pull/16716)*. + * Updated the "Reporting security issues" section of `README.md` to recommend that users create a bugcrowd account. *Fix submitted by Tommy Quissens in pull request [16685](https://github.com/magento/magento2/pull/16685)*. + * The currency format that was previously broken for some locales now works as expected. Previously, broken currency formats resulted in an incorrect price amount on the product page. *Fix submitted by Vishal Gelani in pull request [15909](https://github.com/magento/magento2/pull/15909)*. [GitHub-11717](https://github.com/magento/magento2/issues/11717) + * Changed the **My Dashboard** string to **My Account** in multiple files. *Fix submitted by Daniel Ruf in pull request [16009](https://github.com/magento/magento2/pull/16009)*. + * Corrected the annotation to the `formatDateTime` function in `lib/internal/Magento/Framework/Stdlib/DateTime/TimezoneInterface.php` file. *Fix submitted by Sanjay Patel in pull request [15602](https://github.com/magento/magento2/pull/15602)*. + * The `clickableOverlay` option now works as expected. *Fix submitted by virtua-pmakowski in pull request [15172](https://github.com/magento/magento2/pull/15172)*. [GitHub-7399](https://github.com/magento/magento2/issues/7399) + * The Instant Purchase module now works as expected. Previously, the `get($type)` method in `/Magento/InstantPurchase/Model/ShippingMethodChoose/DeferredShippingMethodChooserPool.php` threw an exception without showing the shipping method $type as it was hardcoded as 'chooser'. *Fix submitted by Marcel Hauri in pull request [15258](https://github.com/magento/magento2/pull/15258)*. + * Template files now follow Magento standard coding format. *Fix submitted by Vishal Gelani in pull request [15398](https://github.com/magento/magento2/pull/15398)*. + * Corrected `viewModel` to `view_model` where needed in `\Magento\Backend\Block\Template`. *Fix submitted by Abhishek Jakhotiya in pull request [15067](https://github.com/magento/magento2/pull/15067)*. + * Non-well-formed numeric values that were encountered in `app/code/Magento/Directory/Model/Currency.php` have been resolved. *Fix submitted by Mateusz Lerczak in pull request [14833](https://github.com/magento/magento2/pull/14833)*. + * The `README` file for the `magento2` repository now has Maintainers and Contributors sections. *Fix submitted by Stanislav Idolov in pull request [14790](https://github.com/magento/magento2/pull/14790)*. + * The documentation for `AdapterInterface::update` has been improved. *Fix submitted by Navarr Barnier in pull request [14769](https://github.com/magento/magento2/pull/14769)*. + * The product video feature is now GDPR-compliant. ### Gift cards + * Magento now displays the **Credit Memo** link at the top of the page for orders with a total of 0 (zero). Previously, this link was missing, which prevented users from creating a credit memo for the order. + * You can now save gift cards without the price being changed on the Admin to an unacceptable format. Previously, Magento tried to save amounts in unacceptable formats (such as the inclusion of a comma in a four-digit price), which triggered an error. + * Magento no longer permits users to save a new gift card without first completing the required values. Previously, when creating a gift card, users could save the card without having designated an amount, but the card could not be purchased. Magento also created a `report.CRITICAL: Warning` error message in the `system.log`. + * Orders now retain gift message information on both item and order level. Previously, gift messages disappeared from an order when a customer logged into his account during checkout. + * Magento now maintains relationships between new gift card accounts when a customer purchases several gift cards in the same order. + * Magento now refunds only the exact amount used on a gift card if only the part of the gift card was used. Previously, when a customer used a gift card account code to partially pay for an order, and Magento subsequently created a credit memo for a portion of the order, the full amount of the gift card was refunded. + * Magento now generates the same number of gift card codes when the full order is invoiced as the customer selected when creating an order. Previously, for orders that included both physical products and multiple gift cards, the number of gift card codes generated on an order corresponded to the quantity of the previous physical line items that the user had added to the cart before adding gift cards. ### Gift message + * Orders now retain gift message information on both item and order level. Previously, gift messages disappeared from an order when a customer logged into his account during checkout. ### Google Analytics + * Google analytics pageview is no longer triggered twice. *Fix submitted by Torben Höhn in pull request [15765](https://github.com/magento/magento2/pull/15765)*. [GitHub-12221](https://github.com/magento/magento2/issues/12221) + * `Magento\GoogleAnalytics\Observer\SetGoogleAnalyticsOnOrderSuccessPageViewObserver` is now covered by unit tests. *Fix submitted by Yaroslav Rogoza in pull request [17137](https://github.com/magento/magento2/pull/17137)*. ### Google Tag Manager + * The `addToCart` event triggers on the Google Task Manager console only when an item is added to the cart. Previously, the event was triggered before the cart was updated. + * Google Analytics events are now triggered as expected. Specifically, the `addToCart` and `removeFromCart` events are not triggered until after a customer adds a product to the mini cart. + * Magento now accurately updates the mini cart when a customer removes a product while accessing a storefront using Internet Explorer 11.x. Previously, when a customer removed a product from the mini cart, Magento did not remove the product but instead threw this error, `(SCRIPT438: Object doesn't support property or method 'find'. File: sidebar.js, Line: 237, Column: 13 )`. + * Google Tag Manager product category data is now fully reported. Previously, the Google Tag Manager product category (Enhanced Ecommerce) data did not report all information. ### HTML + * Responsive table headers now work as expected. Previously, when no heading was present in the `data-th` attribute on a column for a responsive table in Magento, only a colon was present. *Fix submitted by Sean Templeton in pull request [16517](https://github.com/magento/magento2/pull/16517)*. + * Corrected HTML syntax in the `report.phtml` error template. *Fix submitted by abcpremium in pull request [15454](https://github.com/magento/magento2/pull/15454)*. ### Import/export + * Product import now updates the **Enable Qty Increments** field as expected. *Fix submitted by Sergey P in pull request [14379](https://github.com/magento/magento2/pull/14379)*. [GitHub-14351](https://github.com/magento/magento2/issues/14351) + * `Magento_ImportExport` now supports unicode characters in column names. Previously, column names such `vitamin_a_µg` were marked invalid. *Fix submitted by Timon de Groot in pull request [15197](https://github.com/magento/magento2/pull/15197)*. ### Infrastructure + * Return Merchandise Authorization (RMA) calls now return order items and comments as expected. + * The RMA status label now shows on the email that Magento sends to customers when the status of an RMA changes. + * Magento now deselects only the attributes you choose to deselect when you set the **Use Default Value** setting on a store view to **no** for certain attributes. Previously, when you deselected the **Use Default Value** setting on a store view for certain attributes, Magento unselected other attributes as well. + * Magento now deploys the translations in `js-translation.json` file when deploying static content. *Fix submitted by Sergey Dmitruk in pull request [4814](https://github.com/magento/magento2/pull/4814)*. + * Magento now updates the `Enable Qty Increments` field as expected during product import. *Fix submitted by Alexander Lukyanov in pull request [15144](https://github.com/magento/magento2/pull/15144)*. [GitHub-11354](https://github.com/magento/magento2/issues/11354) + * We've expanded the HTTP request class by adding the `isPostRequest` method. *Fix submitted by Pavel Usachev in pull request [12626](https://github.com/magento/magento2/pull/12626)*. + * You can now change only the primary button `font-weight` without changing regular button `font-weight` with LESS variables. *Fix submitted by Karla Saaremäe in pull request [16012](https://github.com/magento/magento2/pull/16012)*. [GitHub-15832](https://github.com/magento/magento2/issues/15832) + * We've added missing properties to the `Magento/Widget` component and removed a reference to a non-existent class in the associated tests. *Fix submitted by Marcel Hauri in pull request [15647](https://github.com/magento/magento2/pull/15647)*. + * We've improved the readability of `app/code/Magento/Backend/Block/Widget/Form/Element/Dependence.php`. *Fix submitted by Valerij Ivashchenko in pull request [16010](https://github.com/magento/magento2/pull/16010)*. + * Template syntax errors in `app/code/Magento/Theme/Block/Html/Breadcrumbs.php` have been corrected. *Fix submitted by Namrata in pull request [15339](https://github.com/magento/magento2/pull/15339)*. [GitHub-15345](https://github.com/magento/magento2/issues/15345) + * The calendar widget (`jQuery UI DatePicker`) now correctly displays more than one month. *Fix submitted by Burlacu Vasilii in pull request [16279](https://github.com/magento/magento2/pull/16279)*. [GitHub-7379](https://github.com/magento/magento2/issues/7379) + * An error with the template notation for `Magento_CatalogWidget` module has been fixed. *Fix submitted by Namrata in pull request [16530](https://github.com/magento/magento2/pull/16530)*. [GitHub-16529](https://github.com/magento/magento2/issues/16529) + * You can now use the `addTabAfter` method to add two or more tabs to the Admin (for example, the Order View page) in the expected order. Previously, Magento did not preserve the correct sort order for the new tabs. *Fix submitted by Tiago Sampaio in pull request [16175](https://github.com/magento/magento2/pull/16175)*. [GitHub-16174](https://github.com/magento/magento2/issues/16174) + * The headers of the User Agent Rules table now align as expected with the content of the table's rows. *Fix submitted by Justin in pull request [16704](https://github.com/magento/magento2/pull/16704)*. [GitHub-16703](https://github.com/magento/magento2/issues/16703) + * We've added `@navigation-level0-item__hover__color` missing variable for mobile and tablet view. *Fix submitted by hitesh-wagento in pull request [16732](https://github.com/magento/magento2/pull/16732)*. [GitHub-15848](https://github.com/magento/magento2/issues/15848) + * Store view home pages in multistore deployments no longer display breadcrumbs. Previously, the first store view in a multistore deployment looked fine, but the other store views included unnecessary breadcrumbs on the home page. *Fix submitted by Oleksandr Kravchuk in pull request [16732](https://github.com/magento/magento2/pull/16732)*. [GitHub-6504](https://github.com/magento/magento2/issues/6504) + * HTML minification now works as expected. *Fix submitted by Ronak Patel in pull request [16916](https://github.com/magento/magento2/pull/16916)*. [GitHub-5316](https://github.com/magento/magento2/issues/5316) + * The type of the `transport` event parameter has been changed to `DataObject`. This change reverts a change from type `DataObject` to `Array()` made in a previous release. *Fix submitted by gwharton in pull request [16599](https://github.com/magento/magento2/pull/16599)*. [GitHub-10210](https://github.com/magento/magento2/issues/10210) + * Transport variable can now be altered in the `email_invoice_set_template_vars_before` event. *Fix submitted by gwharton in pull request [15040](https://github.com/magento/magento2/pull/15040)*. [GitHub-10210](https://github.com/magento/magento2/issues/10210) + * Replaced deprecated methods in the `app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/ApplyRules.php`, `app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/Delete.php`, `app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/Edit.php`, `app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/Save.php`, and `app/code/Magento/CatalogRule/Plugin/Indexer/Product/Attribute.php`. *Fix submitted by Tiago Sampaio in pull request [17227](https://github.com/magento/magento2/pull/17227)*. + * Replaced deprecated methods in 44 files. *Fix submitted by Tiago Sampaio in pull request [17035](https://github.com/magento/magento2/pull/17035)*. + * The `template.js` has been updated to make the `jquery` variable consistently use `$`. Previously, JavaScript in the `template.js` sometimes used `jquery` and sometimes `$`, and Magento threw an error when running in Internet Explorer. *Fix submitted by Angelo Maragna in pull request [17129](https://github.com/magento/magento2/pull/17129)*. + * Corrected an undefined class property in the `app/code/Magento/Backend/Block/Media/Uploader.php getConfigJson()` method. *Fix submitted by Prince Patel in pull request [17099](https://github.com/magento/magento2/pull/17099)*. + * Corrected sticky footer in `page-main` container height on mobile devices. *Fix submitted by Denis Belevtsov in pull request [17006](https://github.com/magento/magento2/pull/17006)*. [GitHub-15118](https://github.com/magento/magento2/issues/15118) + * Corrected the return type of methods in `app/code/Magento/Catalog/Controller/Category/View.php`, `app/code/Magento/CatalogSearch/Model/Indexer/Fulltext/Action/DataProvider.php`, and `app/code/Magento/CatalogSearch/Model/ResourceModel/EngineInterface.php`. *Fix submitted by Pratik Oza in pull request [16988](https://github.com/magento/magento2/pull/16988)*. + * Style groups for mobile devices (`max-width`) are now specified in the correct order. *Fix submitted by Tejash Kumbhare in pull request [16959](https://github.com/magento/magento2/pull/16959)*. [GitHub-14476](https://github.com/magento/magento2/issues/14476) + * Removed double occurrences of words from `Magento_Catalog`, `Magento_Customer`, `Magento_Downloadable`, `Magento_Sales`, and `lib` and `dev` test function comments. *Fix submitted by Pratik Oza in pull request [16977](https://github.com/magento/magento2/pull/16977)*. + * Corrected the namespace that is defined in `compare.phtml`. *Fix submitted by Ronak Patel in pull request [16978](https://github.com/magento/magento2/pull/16978)*. + * Edited verbose code in `app/code/Magento/Customer/Controller/Account/LoginPost.php`. *Fix submitted by Glenn Cheng in pull request [16928](https://github.com/magento/magento2/pull/16928)*. + * Fixed annotations in the following methods: `lib/internal/Magento/Framework/Acl/AclResource/Config/Converter/Dom.php`, `lib/internal/Magento/Framework/Acl/AclResource/Config/SchemaLocator.php`, and `lib/internal/Magento/Framework/Acl/Loader/ResourceLoader.php`. *Fix submitted by Tiago Sampaio in pull request [16899](https://github.com/magento/magento2/pull/16899)*. + * Removed or edited code comments in the following files: * `app/code/Magento/Backend/Block/Dashboard/Bar.php` @@ -1310,137 +1673,179 @@ Our community contributors have made many helpful, minor corrections to spelling * `app/code/Magento/Sales/view/adminhtml/templates/order/totals.phtml`. *Fix submitted by Pratik Oza in pull request [16891](https://github.com/magento/magento2/pull/16891)*. + * Improved product gallery block helper code (`app/code/Catalog/Block/Adminhtml/Product/Helper/Form/Gallery.php`). *Fix submitted by Valerij Ivashchenko in pull request [16889](https://github.com/magento/magento2/pull/16889)*. + * Removed duplicated string from `app/code/Magento/ProductVideo/i18n/en_US.csv`. *Fix submitted by Valerij Ivashchenko in pull request [16882](https://github.com/magento/magento2/pull/16882)*. + * Refactored code in `dev/tests/static/framework/Magento/Sniffs/NamingConventions/ReservedWordsSniff.php` so that an undefined index warning is no longer triggered when using uppercase reserved word *Fix submitted by Freek Vandeursen in pull request [16785](https://github.com/magento/magento2/pull/16785)*. + * Regex in `ControllerAclTest::getControllerPath()` has been changed to avoid classes that are under a namespace with a controller component (such as controller plugins) being interpreted as controllers. *Fix submitted by Freek Vandeursen in pull request [16707](https://github.com/magento/magento2/pull/16707)*. + * Knockout template files now include a `title` attribute in the `img` tag. *Fix submitted by Namrata in pull request [16691](https://github.com/magento/magento2/pull/16691)*. + * Added `title` attribute to links as needed for compatibility with w3c standards to these files: `app/code/Magento/Backend/view/adminhtml/templates/page/header.phtml`, `app/code/Magento/Backend/view/adminhtml/templates/widget/form/element/gallery.phtml`, `app/code/Magento/Theme/view/frontend/templates/html/bugreport.phtml`, `app/code/Magento/Theme/view/frontend/templates/html/header/logo.phtml`, and `app/code/Magento/Ui/view/base/web/templates/block-loader.html`. *Fix submitted by Namrata in pull request [16689](https://github.com/magento/magento2/pull/16689)*. + * Search icons are now defined by header icon variables. *Fix submitted by Karla Saaremäe in pull request [16559](https://github.com/magento/magento2/pull/16559)*. + * Module namespace is now defined before template path name. Previously, when we overrode any core block to any custom module, Magento threw an error because trying to find the template file in the custom module if the module namespace is not defined before the template path. *Fix submitted by Prince Patel in pull request [16576](https://github.com/magento/magento2/pull/16576)*. + * Corrected the comment for the `Magento_Setup` module `includeClasses` function. *Fix submitted by Namrata in pull request [16549](https://github.com/magento/magento2/pull/16549)*. + * The `module:status` command now clearly provides an easily parsed listing of all enabled and disabled modules. *Fix submitted by Jisse Reitsma in pull request [15543](https://github.com/magento/magento2/pull/15543)*. + * Fixed the `false` value for the `cache_lifetime` argument in `Magento/Swatches/view/frontend/layout/checkout_cart_configure_type_configurable.xml`. *Fix submitted by yuriyDne in pull request [16086](https://github.com/magento/magento2/pull/16086)*. + * CSRF tokens are now considered sensitive strings. *Fix submitted by Robert in pull request [13509](https://github.com/magento/magento2/pull/13509)*. + * Refactored JavaScript code in `popup.phtml` and `popup.js`. *Fix submitted by IvanPletnyov in pull request [16216](https://github.com/magento/magento2/pull/16216)*. + * Removed extraneous cursor property. *Fix submitted by Daniel Ruf in pull request [15305](https://github.com/magento/magento2/pull/15305)*. + * `app/code/Magento/Marketplace/view/adminhtml/templates/partners.phtml` now uses the stored value of the `getPartners` method instead of calling same method again. *Fix submitted by Saurabh Parekh in pull request [15517](https://github.com/magento/magento2/pull/15517)*. + * Added missing lowercase conversion on grouped product assignation. *Fix submitted by Juan Alonso in pull request [15312](https://github.com/magento/magento2/pull/15312)*. + * Removed code responsible for multiple add-to-cart initializations when Magento loads the product listing. *Fix submitted by Vova Yatsyuk in pull request [15409](https://github.com/magento/magento2/pull/15409)*. + * Refactored JavaScript code from `popup.phtml` to meet Magento coding standards. *Fix submitted by Rahul Kachhadiya in pull request [15341](https://github.com/magento/magento2/pull/15341)*. + * Removed redundant PHPdoc comment and deprecated private method `getSerializer` in `\Magento\Customer\Model\Customer\NotificationStorage` class. *Fix submitted by adrian-martinez-interactiv4 in pull request [15262](https://github.com/magento/magento2/pull/15262)*. + * CSS code is now automatically updated in the browser. Previously, users had to press **CTRL+F5** to see CSS changes. *Fix submitted by Alexander Lukyanov in pull request [15144](https://github.com/magento/magento2/pull/15144)*. [GitHub-11354](https://github.com/magento/magento2/issues/11354) + * Concrete type hints for product and category resources have been added to `app/code/Magento/Catalog/Model/Category.php` and `app/code/Magento/Catalog/Model/Product.php` to help with static analysis and IDE autocompletion. *Fix submitted by Yaroslav Rogoza in pull request [15136](https://github.com/magento/magento2/pull/15136)*. + * Replaced `rand` with `rand_int` in several modules. *Fix submitted by Daniel Ruf in pull request [15017](https://github.com/magento/magento2/pull/15017)*. + * Optimized `if-condition` in `/Magento/Catalog/Controller/Adminhtml/Product/Initialization/Helper/AttributeFilter.php`. *Fix submitted by Valerij Ivashchenko in pull request [15002](https://github.com/magento/magento2/pull/15002)*. + * We've upgraded to Node.js 8 from Node.js 6. *Fix submitted by Daniel Ruf in pull request [15018](https://github.com/magento/magento2/pull/15018)*. + * Replaced `template/path` with `Module_Name::template/path` in the block class to ensure extensibility of the class. Previously, if the source block classes referenced a template without specifying the module name, then block render failed with this error: `Invalid template file`. *Fix submitted by Abhishek Jakhotiya in pull request [14946](https://github.com/magento/magento2/pull/14946)*. + * Replaced the `\Magento\Backend\Helper\Data` parameter with `\Magento\Backend\Model\UrlInterface` to make them identical with the constructor. *Fix submitted by Abhishek Jakhotiya in pull request [14946](https://github.com/magento/magento2/pull/14946)*. + * The return type of `addToCartPostParams` in `app/code/Magento/Catalog/Block/Product/ListProduct.php` has been changed to array. *Fix submitted by Sean Templeton in pull request [14946](https://github.com/magento/magento2/pull/14946)*. + * Datepicker now correctly converts date formats in locales other than `en-US`. *Fix submitted by Tao Sasaki in pull request [14627](https://github.com/magento/magento2/pull/14627)*. + * `default_head_blocks.xml` now contains the `order` attribute for setting the load order of stylesheets. *Fix submitted by Tao Sasaki in pull request [14290](https://github.com/magento/magento2/pull/14290)*. + * Magento now displays validation messages on the advanced search form as expected if you submit the advanced search form without entries. [GitHub-8131](https://github.com/magento/magento2/issues/8131) + * `\Magento\Framework\Reflection\TypeProcessor` methods have been simplified. + * Magento no longer unsets the taxed shipping total information before returning the total tax. ### JavaScript + * Refactored the JavaScript code of the button split widget. *Fix submitted by amittiwari024 in pull request [15351](https://github.com/magento/magento2/pull/15351)*. [GitHub-15354](https://github.com/magento/magento2/issues/15354) ### Klarna + * Magento no longer throws multiple JavaScript errors when a customer selects Klarna from the Review & Payments page. ### Module Manager + * Module Manager module grid now works as expected. *Fix submitted by Alex Gusev in pull request [15211](https://github.com/magento/magento2/pull/15211)*. [GitHub-15192](https://github.com/magento/magento2/issues/15192) ### Newsletter + * Guest users can now sign up for newsletters for multiple stores. Previously, when a guest user signed up for a newsletter from multiple stores, Magento sent a subscription confirmation message, but did not successfully subscribe the user. + * Magento now correctly updates newsletter subscriptions when the customer is registered on two stores. Previously, when the customer tried to subscribe to the newsletter from a second store, Magento displayed this message, `You are (not) subscribed to "General Subscription"`. + * The newsletter subscription confirmation message does not display after a customer clicks the link that is included in the confirmation email. *Fix submitted by Kaushik Chavda in pull request [15247](https://github.com/magento/magento2/pull/15247)*. [GitHub-14747](https://github.com/magento/magento2/issues/14747) + * Magento now sends a confirmation request email to the customer when she unsubscribes to a newsletter. *Fix submitted by Lyzun Oleksandr in pull request [15464](https://github.com/magento/magento2/pull/15464)*. [GitHub-15218](https://github.com/magento/magento2/issues/15218) + * Removed the direct use of the object manager and loaded the dependency via constructor dependency injection in `app/code/Magento/Newsletter/Controller/Adminhtml/Subscriber/MassDelete.php` and `app/code/Magento/Newsletter/Controller/Adminhtml/Subscriber/MassUnsubscribe.php`. *Fix submitted by AnshuMishra17 in pull request [16851](https://github.com/magento/magento2/pull/16851)*. + * Newsletter registration now works the same when registered customers subscribe from My Account and or from the newsletter block. *Fix submitted by Lyzun Oleksandr in pull request [15479](https://github.com/magento/magento2/pull/15479)*. + * Removed the redundant return statement from `getJsTemplateName` function comment in the `Magento_Newsletter`'s block file. *Fix submitted by Namrata in pull request [16645](https://github.com/magento/magento2/pull/16645)*. ### Payment methods @@ -1448,87 +1853,113 @@ Our community contributors have made many helpful, minor corrections to spelling #### Braintree + * You can now cancel an order that was placed with Braintree when the Braintree authorization had expired. + * All invoices now have the merchant account ID set in the store configuration for the Braintree payment method. Previously, the default merchant account ID was sent to Braintree for any subsequent partial order invoices after the initial invoice is generated. + * Braintree configuration (`app/code/Magento/Braintree/etc/adminhtml/system.xml`) now contains `showInStore` attributes. *Fix submitted by Andreas Schrammel in pull request [16458](https://github.com/magento/magento2/pull/16458)*. + * Magento now retains the correct address information when a customer using Braintree's **Pay with PayPal** button to complete an order navigates back to the shipping step and changes the shipping address fields. *Fix submitted by Vova Yatsyuk in pull request [15133](https://github.com/magento/magento2/pull/15133)*. #### PayPal + * Customers can now continue creating an order after a PayFlow Pro payment has been declined. Previously, under these circumstances. the customer could not continue his purchase. + * Paypal Onboarding has been configured to work for merchants from countries other than the United States. + * Magento now accurately displays the status of PayPal orders. Previously, the status of PayPal orders was displayed only as **Processing**. + * Magento no longer sends duplicate order confirmation emails when a customer uses PayPal Express to complete an order. *Fix submitted by Rocket Web in pull request [14820](https://github.com/magento/magento2/pull/14820)*. + * Tax amount calculation for payments processed through PayPal now works as expected. Previously, Magento sent the wrong amount to PayPal when a discount was applied to an order. + * The `Allmethods config` source model now reports the full list of payment methods as expected. *Fix submitted by Manuel Schmid in pull request [15032](https://github.com/magento/magento2/pull/15032)*. [GitHub-13460](https://github.com/magento/magento2/issues/13460) + * You can now cancel an order placed through Cybersource when the fraud filters are triggered. + * Magento now emails customer order confirmations for orders that are placed through Worldpay. + * Magento now correctly applies free shipping to an order after the customer applied the free shipping code during checkout. + * Magento no longer sends Admin orders to Signifyd for review when Signifyd is disabled on the website on which the administrator is logged in. + * Magento now successfully creates shipping labels for a return merchandise authorization (RMA) when using FedEx Smart Post as the shipping option. Previously, Magento threw an error under these circumstances. + * Magento now sends email about payment failures to customers. Previously, Magento did not send a customer email, but instead logged an error in `support.log`, and displayed this message on the storefront, **Transaction has been declined. Please try again later**. + * Magento no longer throws an error when multiple payment methods are enabled. Previously, when a merchant tried to enable more than one payment method from the Admin, Magento displayed this error in the console, `Found elements with non-unique id billing-address-form`. *Fix submitted by Neeta Kangiya in pull request [15349](https://github.com/magento/magento2/pull/15349)*. [GitHub-15348](https://github.com/magento/magento2/issues/15348) + * Magento now sends order confirmation emails as expected for orders purchased with WorldPay. + * A type error in the payment void method of the Authorizenet module has been fixed. *Fix submitted by Oleh Kravets in pull request [16194](https://github.com/magento/magento2/pull/16194)*. [GitHub-16184](https://github.com/magento/magento2/issues/16184) ### Pagecache + * Full-page cache now works as expected in multistore deployments. Previously, when you opened the URL of a non-default store in a multistore deployment, full-page cache did not return the URL. ### Performance + * The catalog rule re-indexing operation has been optimized, and average re-indexing time (which depends on rule conditions) has improved by more than 80%. Previously, a full catalog rule re-index operation on a medium B2C store took more than 20 minutes. + * Merchants can now improve store performance by disabling Magento Report functionality if business function does not require this capability. A new configuration setting (**System Configuration**: **General** > **Reports** > **General Options**) allows merchants to disable Magento Reports, which is recommended practice if a merchant's business function does not require this capability. + * You can change store locale without the exporting and importing configuration process. While Magento is in Production and the `SCD_ON_DEMAND` is enabled, the Magento store and admin locale options are available. See [Change locales]({{ page.baseurl }}/cloud/live/sens-data-over.html#change-locales). + * The time required to load category or product pages for products that are configured with many attributes (more than 500) has been significantly reduced. Refactoring the logic for product attribute retrieval has resulted in a reduction of load time of almost 90% for certain scenarios. + * The time required to load a store’s home page has been reduced noticeably when the top menu contains many categories. (Load time is still affected by the number of categories and the structure of the top menu.) + * The speed of catalog price rule save operations has been improved by these changes: * elimination of unnecessary reindexing @@ -1536,156 +1967,199 @@ Our community contributors have made many helpful, minor corrections to spelling * improvement to the way that the `getMatchingProductIds` function fetches products, which has eliminated unnecessary checks of the data set. *Fix submitted by Andrey Zabara in pull request [14707](https://github.com/magento/magento2/pull/14707)*. + * The ID to SKU lookup process for tier prices has been optimized. Previously, with a large number of tier or group prices, each tier would separately make a database query to look up the associated SKU. *Fix submitted by Todd Christensen in pull request [14699](https://github.com/magento/magento2/pull/14699)*. ### Product video + * Magento now populates the YouTube video URL and Title fields with the same values as are populated on the default store view on multisite deployments. (These fields are global scope attributes and should be the same on all storefronts.) Previously, Magento left these fields blank in multisite deployments. ### Quote + * Magento now displays the correct product price for an order created from the Admin in multisite deployments. Previously, when an order was created from the Admin in a multisite deployment where products were assigned different prices per store view, Magento defaulted to the product price of the primary storeview if the order was edited or updated. *Fix submitted by Riccardo Tempesta in pull request [14904](https://github.com/magento/magento2/pull/14904)*. [GitHub-14869](https://github.com/magento/magento2/issues/14869) + * Magento now successfully saves the value of `REMOTE_IP` when a customer uses an IPV6 (Internet Protocol version 6) address. Previously, this value was only partially saved in the `sales_order` and `quote` tables. *Fix submitted by George Schiopu in pull request [14976](https://github.com/magento/magento2/pull/14976)*. [GitHub-10395](https://github.com/magento/magento2/issues/10395) + * Coupon codes now work for guest users through the web API as well as from the storefront. *Fix submitted by Marcin Dykas in pull request [15320](https://github.com/magento/magento2/pull/15320)*. [GitHub-14056](https://github.com/magento/magento2/issues/14056) + * Magento no longer runs an SQL query on every item in the database when a quote is empty, which has improved the performance of the checkout process. *Fix submitted by Sean Templeton in pull request [16675](https://github.com/magento/magento2/pull/16675)*. ### Reports + * The timezone has been removed from the date when Magento retrieves the current month from a UTC timestamp. *Fix submitted by Prince Patel in pull request [16584](https://github.com/magento/magento2/pull/16584)*. [GitHub-15940](https://github.com/magento/magento2/issues/15940) ### Review + * Removed the unused class declaration from controller's index action and the unused code in the comment block from the template file in `app/code/Magento/Review/view/frontend/templates/redirect.phtml` and `app/code/Magento/Version/Controller/Index/Index.php`. *Fix submitted by Yogesh Suhagiya in pull request [15173](https://github.com/magento/magento2/pull/15173)*. ### Rule + * A cart rule that uses a `subselection` condition now works as executed. Previously, cart rules with this condition automatically granted a discount. + * The retrieval of first array elements in the following files has been improved: `app/code/Magento/Rule/Model/Action/AbstractAction.php` and `app/code/Magento/Rule/Model/Condition/Combine.php`. *Fix submitted by Thomas Klein in pull request [16053](https://github.com/magento/magento2/pull/16053)*. [GitHub-15940](https://github.com/magento/magento2/issues/15940) + * The condition category chooser now handles multiple nested categories as expected. Previously, if a cart rule contained several nested categories, no categories appeared on the page, the page became unresponsive, and eventually crashed. *Fix submitted by Keith Bentrup in pull request [15265](https://github.com/magento/magento2/pull/15265)*. [GitHub-15121](https://github.com/magento/magento2/issues/15121) ### Sales + * Order status now remains in the Complete state after Magento refunds store credit on a partial credit memo. Previously, under these circumstances, Magento changed the status of the order to Closed. + * You can now create multiple credit memos in one session and save each successfully. Previously, Magento displayed this error when you tried to save a second credit memo after creating the first memo: `Could not save credit memo`. + * Magento now displays any errors that occur during order creation in the browser console. Previously, Magento displayed this message: `Uncaught ReferenceError: order is not defined during order creation` instead of a specific error message. + * The `POST /V1/shipment` endpoint processes `tracks` arrays as expected. + * Magento no longer reverts to the country associated with the default website when a customer edits the billing address for an order. Previously, if a customer edited the shipping address for an order, Magento would reset the billing address to the default address specified for the default website. + * Credit memo email template file incorrect object types have been corrected. Previously, when a merchant created a credit memo and checked the **Email** checkbox, Magento threw an error. *Fix submitted by Joseph Maxwell in pull request [16438](https://github.com/magento/magento2/pull/16438)*. + * Performance issues that resulted from disabling invoice emails have been resolved. + * The Invoices grid now reflects changes in invoice state as expected. *Fix submitted by JeroenVanLeusden in pull request [16286](https://github.com/magento/magento2/pull/16286)*. + * You can now set the `is_visible_on_front` parameter from the `addStatusHistoryComment` of the order mode. Previously, you could set the `is_visible_on_front` parameter from the Admin only. *Fix submitted by Mark Shust in pull request [15637](https://github.com/magento/magento2/pull/15637)*. + * Module name space is now declared before the template pathname in `Magento_Sales::order/info.phtml`. *Fix submitted by Ronak Patel in pull request [16206](https://github.com/magento/magento2/pull/16206)*. + * The `addFieldToFilter` has been added to `addressCollection` in `app/code/Magento/Sales/Setup/UpgradeData.php`, which optimizes the process of collecting addresses during upgrade. *Fix submitted by Dmytro Cheshun in pull request [15615](https://github.com/magento/magento2/pull/15615)*. + * Invoice prefixes now contain the correct store ID when Magento is deployed in a multistore environment. Previously, Magento always created the invoice number using the default store view ID. *Fix submitted by Sanjay Patel in pull request [15615](https://github.com/magento/magento2/pull/15615)*. [GitHub-14063](https://github.com/magento/magento2/issues/14063) + * The `GET /V1/orders/items/{id}` request now returns `parent_item`. *Fix submitted by Sanjay Patel in pull request [15615](https://github.com/magento/magento2/pull/15615)*. ### Sales rules + * Cart price rules with associated coupons are no longer affected by edits to scheduled updates. + * The `discount` label in the `app/code/Magento/SalesRule/view/frontend/web/js/view/summary/discount.js` file is now compatible with custom module discount. *Fix submitted by Rodrigo Santellan in pull request [16093](https://github.com/magento/magento2/pull/16093)*. ### Search + * Magento no longer throws an error when a customer uses quick search to search on a term that does not exist in the search database. Previously, Magento returned this error, `TypeError: this._getFirstVisibleElement(...).addClass is not a function`. *Fix submitted by Julien ANQUETIL in pull request [14839](https://github.com/magento/magento2/pull/14839)*. [GitHub-14274](https://github.com/magento/magento2/issues/14274) + * Customers can now use the **Enter** key to submit searches from a page header. Previously, when a customer used the **Enter** key to submit a search query, event handlers that were bound to the form submit (through jQuery) were fired twice. *Fix submitted by Amjad M in pull request [15340](https://github.com/magento/magento2/pull/15340)*. [GitHub-13793](https://github.com/magento/magento2/issues/13793) + * Swagger now handles `searchCriteria`-related requests as expected. *Fix submitted by Jakub in pull request [15040](https://github.com/magento/magento2/pull/15040)*. [GitHub-15322](https://github.com/magento/magento2/issues/15322) + * The Admin panel search now filters catalogs as expected. Previously, if a merchant tried to narrow a search when using the Search tool in the Admin panel, Magento displayed the full catalog view without narrowing down the list. *Fix submitted by Pavel in pull request [12735](https://github.com/magento/magento2/pull/12735)*. [GitHub-7861](https://github.com/magento/magento2/issues/7861) + * You can now use an asterix when searching on customer names. Previously, if you used an asterix in a search query, Magento displayed this message, `Something went wrong with processing the default view and we have restored the filter to its original state.` *Fix submitted by Riccardo Tempesta in pull request [14905](https://github.com/magento/magento2/pull/14905)*. [GitHub-14855](https://github.com/magento/magento2/issues/14855) + * Magento now displays validation messages as needed on advanced searches. Previously, Magento did not display a message even after a customer submitted the advanced search form with no entries. *Fix submitted by Ben Robie in pull request [16952](https://github.com/magento/magento2/pull/16952)*. [GitHub-8131](https://github.com/magento/magento2/issues/8131) + * Server load has been reduced for advanced searching. Previously, when a customer entered text in the search suggestion box, Magento immediately sent every character to the server. The auto-complete box now delays sending the request. *Fix submitted by Sean Templeton in pull request [16669](https://github.com/magento/magento2/pull/16669)*. + * You can now successfully clone the minisearch widget. *Fix submitted by Daniel Ruf in pull request [15485](https://github.com/magento/magento2/pull/15485)*. ### Shipping + * The shipping and estimated tax form now display country, city, and postcode fields as expected. *Fix submitted by [Alexander Kras'ko](https://github.com/0m3r) in pull request [16213](https://github.com/magento/magento2/pull/16213)*. [GitHub-8222](https://github.com/magento/magento2/issues/8222) + * A method with a misspelled name was deprecated and the new method with correct spelling added to `app/code/Magento/Multishipping/Block/Checkout/AbstractMultishipping.php`. *Fix submitted by Anna Völkl in pull request [15514](https://github.com/magento/magento2/pull/15514)*. ### Store + * Magento now adds the correct store code to product URLs in stores with more than one store view when **Stores** > **Settings** > **Configuration** > **General** > **Web** > **Add Store Code to Urls** is set to **yes**. *Fix submitted by Elias Kotlyar in pull request [15566](https://github.com/magento/magento2/pull/15566)*. [GitHub-15565](https://github.com/magento/magento2/issues/15565) + * Magento now displays store views as expected when you select **Stores** > **Terms and Conditions**. *Fix submitted by afirlejczyk in pull request [14546](https://github.com/magento/magento2/pull/14546)*. [GitHub-13944](https://github.com/magento/magento2/issues/13944) #### Elasticsearch + * Bundle products are now indexed as expected in Elasticsearch. + * Elasticsearch now correctly calculates the relevance of quick search results according to selected attribute search weights. #### Admin global search + * Admin global search preview now works as expected. Previously, this feature worked inconsistently, and search results differed depending on which area was being searched (for example, Products, Categories, or Customers). + * The Admin global search now returns results that match the keyword for all available pages, or if a user searches in specific sections, the search feature now returns only the results that matched the key words in those specific sections. Previously, the Admin global search did not return results that matched the specified keywords and did not restrict results to specified sections. + * Catalogs are now correctly filtered by the Admin search bar. Previously, if you attempted to use the Search tool in the Admin, and selected "XX in Products", Magento displayed the full catalog view without narrowing down the list. *Fix submitted by Pavel in pull request 12735*. [GitHub-12193](https://github.com/magento/magento2/issues/12193), [GitHub-7861](https://github.com/magento/magento2/issues/7861) ### Shipping @@ -1695,33 +2169,41 @@ You can find Magento Shipping-specific release notes in [Magento Shipping Releas + * The free shipping cart price rule now works as expected when **UPS shipping method** is enabled and **Free Shipping** is set to "For matching items only". + * The shipping progress dates displayed in tracking popup for FedEx shipping are now accurate. ### Sitemap + * Sitemaps generated by `cron` no longer display `/pub/` in image URLs when `docroot` is set to `/pub`. Previously, if the `docroot` was set to `pub` and `BASE MEDIA URL` was not set, the cron-generated sitemap generated incorrect image URLs. + * Magento now generates correct product URLs for sitemaps. Previously, when the **Use Categories Path for Product URLs** attribute was set to **no** in **Configuration** > **Catalog** > **Search Engine Optimization**, Magento generated the wrong product URL in the sitemap. + * Images in XML sitemap are no longer always linked to the primary store in a multistore deployment. *Fix submitted by Steven de Jong in pull request [15689](https://github.com/magento/magento2/pull/15689)*. [GitHub-15588](https://github.com/magento/magento2/issues/15588) + * Split sitemaps now use the index sitemap name as a prefix. Previously, when generating large sitemaps that result in a single index sitemap and several smaller split sitemap files, the split sitemap files did not use the same name prefix as the parent. *Fix submitted by James Halsall in pull request [14836](https://github.com/magento/magento2/pull/14836)*. ### Store + * The `getUrlInStore()` method no longer returns URLs that contain the store code, which has shortened the extremely long URLs it previously returned. *Fix submitted by Burlacu Vasilii in pull request [16468](https://github.com/magento/magento2/pull/16468)*. [GitHub-16273](https://github.com/magento/magento2/issues/16273) ### Swatches + * The process of switching attribute input type has been fixed, which resolves multiple issues that customers were experiencing when working with swatches, including: * inability to change attribute types from `swatch` to `dropdown` @@ -1733,188 +2215,245 @@ You can find Magento Shipping-specific release notes in [Magento Shipping Releas ### Tax + * Redundant product tax recalculation has been reduced during the loading of category pages, which has improved page loading. *Fix submitted by JeroenVanLeusden in pull request [15089](https://github.com/magento/magento2/pull/15089)*. [GitHub-14941](https://github.com/magento/magento2/issues/14941) + * JavaScript code in the `*.phtml` file of the Tax module has been refactored to meet Magento coding standards. *Fix submitted by Vishal Gelani in pull request [15343](https://github.com/magento/magento2/pull/15343)*. [GitHub-15352](https://github.com/magento/magento2/issues/15352) + * The `Invalid country code` error message that sometimes occurred during import of tax CSV files now includes the name of the country whose data is causing the error. Previously, the message did not identify which country's data caused the error. *Fix submitted by Adam Moss in pull request [16873](https://github.com/magento/magento2/pull/16873)*. ### Testing + * The `testGetIgnoresFirstSlash` method in `ObjectManagerTest` has been updated. *Fix submitted by Prince Patel in pull request [17098](https://github.com/magento/magento2/pull/17098)*. + * The `\Magento\Backup\Model\Db` model is now covered by unit tests. *Fix submitted by Yaroslav Rogoza in pull request [17063](https://github.com/magento/magento2/pull/17063)*. + * Corrected block name in the `Magento_Framework` test XML file. *Fix submitted by Namrata in pull request [16646](https://github.com/magento/magento2/pull/16646)*. + * Metadata titles in `lib/internal/Magento/Framework/View/Page/Config.php` are now covered by a unit test. *Fix submitted by Lorenzo Stramaccia in pull request [16333](https://github.com/magento/magento2/pull/16333)*. + * The `\Magento\Checkout\Model\Cart\CollectQuote` class is now covered by a unit test. *Fix submitted by Chitoraga Eduard in pull request [16271](https://github.com/magento/magento2/pull/16271)*. ### Theme + * Merchants can now successfully change the applied theme. Previously, Magento displayed an error when a merchant tried to save changes to the applied theme on **Content** > **Design** > **Configuration**. *Fix submitted by Daniel Ruf in pull request [15137](https://github.com/magento/magento2/pull/15137)*. [GitHub-13530](https://github.com/magento/magento2/issues/13530) + * Merchants can now successfully change the applied theme setting for a store view (**Content** > **Design** > **Configuration**). *Fix submitted by Daniel Ruf in pull request [15137](https://github.com/magento/magento2/pull/15137)*. [GitHub-14968](https://github.com/magento/magento2/issues/14968) + * Changing the `@tab-content__border` variable in Blank theme now works as expected. *Fix submitted by hitesh-wagento in pull request [15914](https://github.com/magento/magento2/pull/15914)*. [GitHub-14999](https://github.com/magento/magento2/issues/14999) ### Translation + * The `translation.json` file now contains translatable strings for the phrases "Store Credit" and "Gift Card". Previously, these strings were not translated for the shopping cart, one-page checkout, or order view in the customer account on the storefront. + * We've added client-side caching of `js-translation.js`. + * Removed the unused translation for `comment` tag from these files: `app/code/Magento/Analytics/etc/adminhtml/system.xml`, `app/code/Magento/Catalog/etc/adminhtml/system.xml`, `app/code/Magento/Swatches/etc/adminhtml/system.xml`, and `app/code/Magento/Ups/etc/adminhtml/system.xml`. *Fix submitted by Yaroslav Rogoza in pull request [15604](https://github.com/magento/magento2/pull/15604)*. + * Added language translation capability for `comment` tags in the `system.xml` file of the Signifyd module. *Fix submitted by Yogesh Suhagiya in pull request [15364](https://github.com/magento/magento2/pull/15364)*. [GitHub-15361](https://github.com/magento/magento2/issues/15361) + * All previously unsupported `translate` tags in the mini cart template are now supported. *Fix submitted by VitaliyBoyko in pull request [15782](https://github.com/magento/magento2/pull/15782)*. + * The string for `moreButtonText` in `app/code/Magento/Swatches/view/frontend/web/js/swatch-renderer.js` can now be translated. *Fix submitted by Karla Saaremäe in pull request [16190](https://github.com/magento/magento2/pull/16190)*. [GitHub-16079](https://github.com/magento/magento2/issues/16079) + * Added language translation capability to the Braintree module's template file. *Fix submitted by Namrata in pull request [16690](https://github.com/magento/magento2/pull/16690)*. + * Added mini cart checkout-related translations that were missing from `app/code/Magento/Checkout/i18n/en_US.csv`. *Fix submitted by JeroenVanLeusden in pull request [16553](https://github.com/magento/magento2/pull/16553)*. + * Added language translation capability for labels in the Braintree, Multishipping, and PayPal modules. *Fix submitted by Rahul Kachhadiya in pull request [15371](https://github.com/magento/magento2/pull/15371)*. + * Added language translation capability for message strings in `app/code/Magento/AdminNotification/Controller/Adminhtml/System/Message/ListAction.php` and `app/code/Magento/AdminNotification/i18n/en_US.csv`. *Fix submitted by Yogesh Suhagiya in pull request [15333](https://github.com/magento/magento2/pull/15333)*. ### UI + * The `clickableOverlay` option now works as expected, which improves the performance of modal popups. *Fix submitted by virtua-pmakowski in pull request [15172](https://github.com/magento/magento2/pull/15172)*. [GitHub-7399](https://github.com/magento/magento2/issues/7399) + * Customers can now place orders from grouped products where the quantity of subproducts is less than one. *Fix submitted by Valerij Ivashchenko in pull request [14752](https://github.com/magento/magento2/pull/14752)*. [GitHub-14692](https://github.com/magento/magento2/issues/14692) + * Footers now behave as expected when displaying Magento on a mobile device. *Fix submitted by Chirag Matholiya in pull request [15353](https://github.com/magento/magento2/pull/15353)*. [GitHub-15118](https://github.com/magento/magento2/issues/15118) + * The pagination of customer group prices in Advanced Pricing when viewed on the Admin now works as expected. *Fix submitted by Dmytro Cheshun in pull request [15614](https://github.com/magento/magento2/pull/15614)*. [GitHub-15210](https://github.com/magento/magento2/issues/15210) + * Magento now displays a caret icon as expected when a user hovers his mouse over a navigation category on a storefront. *Fix submitted by Tejash Kumbhare in pull request [16082](https://github.com/magento/magento2/pull/16082)*. [GitHub-15220](https://github.com/magento/magento2/issues/15220) + * Users can now press the **Esc** button on the delete-from-cart confirmation pop-up window without generating a `jQuery` UI error. Previously, when a customer added a product to the shopping cart, then pressed the trash icon to delete it, Magento displayed this confirmation pop-up window, but threw an error when the customer pressed the window's **Esc** button. *Fix submitted by [Alexander Kras'ko](https://github.com/0m3r) in pull request [16477](https://github.com/magento/magento2/pull/16477)*. [GitHub-14593](https://github.com/magento/magento2/issues/14593) + * The alignment **Title** and **Items** on the left bar has been corrected. *Fix submitted by Rafael Corrêa Gomes in pull request [16984](https://github.com/magento/magento2/pull/16984)*. + * The black color coding standard has been changed from `color: #000;` to `color: @color-black;`. *Fix submitted by Chirag Matholiya in pull request [17019](https://github.com/magento/magento2/pull/17019)*. + * The white color coding standard has been changed from `color: #fff;` to `color: @color-white;`. *Fix submitted by Chirag Matholiya in pull request [16903](https://github.com/magento/magento2/pull/16903)*. + * Minor issues with the dynamically defined ``$filter`` property and missing throws to PHPDocs for methods in the UI export converter classes have been corrected. *Fix submitted by Dmytro Cheshun in pull request [15694](https://github.com/magento/magento2/pull/15694)*. + * The `ClassMagento\Ui\Component\Control\ActionPool` constructor and `getConfiguration()` in the UI module are now invoked with the correct number of parameters. *Fix submitted by Marcel Hauri in pull request [15512](https://github.com/magento/magento2/pull/15512)*. + * Unneeded JavaScript was removed from `logout.phtml` and replaced with a new JavaScript component. *Fix submitted by Nimesh Patel in pull request [15301](https://github.com/magento/magento2/pull/15301)* + * Page wrapper CSS has been moved from media query to `.page-wrapper`. *Fix submitted by Vishal Gelani in pull request [15416](https://github.com/magento/magento2/pull/15416)*. + * The `font-size` variable has been updated and standardized. *Fix submitted by Vishal Gelani in pull request [15421](https://github.com/magento/magento2/pull/15421)*. + * Layout arguments now support for the `const` type. *Fix submitted by Igor Vitol in pull request [15058](https://github.com/magento/magento2/pull/15058)*. + * Button definitions have been moved to the new `buttons.js` file. *Fix submitted by Jisse Reitsma in pull request [15194](https://github.com/magento/magento2/pull/15194)*. + * Overlay issues with the mini cart have been resolved. Previously, if you logged in as a customer, then clicked on the mini cart icon and then the Account menu, the mini cart overlaid the Account menu. *Fix submitted by Arthur James in pull request [14963](https://github.com/magento/magento2/pull/14963)*. + * Magento now supports multiple `ui_components` with layout type `tabs` on a page. Previously, the second UI component failed to render, and Magento displayed this error, `Element with ID 'tabs_nav' already exists`. *Fix submitted by Freek Vandeursen in pull request [14742](https://github.com/magento/magento2/pull/14742)*. + * The order of style groups for mobile devices has been corrected. [GitHub-14476](https://github.com/magento/magento2/issues/14476) + * Dynamic data rows no longer fail due to a read operation after a delete condition. Previously, Magento threw an undefined JavaScript error. *Fix submitted by Chirag Matholiya in pull request [15840](https://github.com/magento/magento2/pull/15840)*. [GitHub-911](https://github.com/magento-engcom/msi/issues/911) ### URL rewrites + * Categories of the Main menu in the different store view are now updated when Varnish is enabled. + * URL key values are now derived from the default value set on the default store. Previously, Magento derived the product URL key value from the product name on storeview level. + * The Magento URL rewrite functionality now supports the use of special characters in category names. Previously, the category tree did not load if a category name contained a special character. *Fix submitted by Vinay Shah in pull request [13397](https://github.com/magento/magento2/pull/13397)*. [GitHub-13296](https://github.com/magento/magento2/issues/13296) + * An unnecessary parameter has been removed from `_addProductLinkBlock()`. *Fix submitted by Saurabh Parekh in pull request [15891](https://github.com/magento/magento2/pull/15891)*. + * Template files have been refactored to follow Magento coding standards. *Fix submitted by Nimesh Patel in pull request [15422](https://github.com/magento/magento2/pull/15422)*. [GitHub-15356](https://github.com/magento/magento2/issues/15356) + * Undefined mixin parameters are now defined and variable scope has been improved in `lib/web/css/source/lib/_icons.less`, `lib/web/css/source/lib/_pages.less`, and `lib/web/css/source/lib/_utilities.less`. *Fix submitted by Prince Patel in pull request [17097](https://github.com/magento/magento2/pull/17097)*. + * Magento now removes URL rewrites as expected after you delete a CMS page through the API or in the `crontab` area. *Fix submitted by Roman in pull request [14751](https://github.com/magento/magento2/pull/14751)*. + * Main menu categories in different store views are now updated as expected when Varnish is enabled. ### Vertex + * The Gross Amount and Tax Amount columns in the Transaction Details Report file now include price and tax for products as expected. ### Wishlist + * Incorrect return type hinting in DocBlocks has been corrected for several methods in the Wishlist module. *Fix submitted by Yaroslav Rogoza in pull request [15854](https://github.com/magento/magento2/pull/15854)*. + * Removed an unnecessary parameter from the `toHtml()` method in `Wishlist/view/frontend/templates/item/list.phtml`. *Fix submitted by Yaroslav Rogoza in pull request [16023](https://github.com/magento/magento2/pull/16023)*. + * Magento no longer thows errors when you log in using the wishlist URL. *Fix submitted by Oleksandr Kravchuk in pull request [16386](https://github.com/magento/magento2/pull/16386)*. + * Magento no longer removes a product from the wishlist when you update a wishlist item. *Fix submitted by Chitoraga Eduard in pull request [16372](https://github.com/magento/magento2/pull/16372)*. + * Magento now passes empty arrays (instead of null values) into the DataObject constructor. Previously, a null value was passed, which caused a fatal error. *Fix submitted by Abhishek Jakhotiya in pull request [16220](https://github.com/magento/magento2/pull/16220)*. + * The `\Magento\Wishlist\CustomerData\Wishlist::getImageData()` method DocBlock now correctly indicates that the method returns an array. *Fix submitted by Yaroslav Rogoza in pull request [15718](https://github.com/magento/magento2/pull/15718)*. + * Magento now displays the correct product image for the selected configurable product variant in the My Wishlist sidebar. Previously, Magento always displayed the image associated with the default configurable product in the My Wishlist sidebar. *Fix submitted by kishanpatadia in pull request [15477](https://github.com/magento/magento2/pull/15477)*. diff --git a/guides/v2.2/release-notes/ReleaseNotes2.2.6EE.md b/guides/v2.2/release-notes/ReleaseNotes2.2.6EE.md index 51a693fc848..b0fec303e41 100644 --- a/guides/v2.2/release-notes/ReleaseNotes2.2.6EE.md +++ b/guides/v2.2/release-notes/ReleaseNotes2.2.6EE.md @@ -25,9 +25,11 @@ This release includes significant performance improvements to the core Magento c Performance-tuning enhancements focus on catalog indexing and include: + * Category product indexer logic has been optimized, and re-indexing time has decreased up to 98%, from 40 minutes to one minute for 100,000 categories.  Previously, when your store contained many categories (100,0000), Magento could take up to 40 minutes to re-index product catalogs. + * The `catalog:image:resize` command execution time has been reduced by up to 90% in the release. However, this improvement necessitates these additional steps after upgrading your Magento instance to 2.2.6: * Remove `pub/media/catalog/product/cache` . (Removing this folder frees up space.) @@ -35,37 +37,47 @@ Performance-tuning enhancements focus on catalog indexing and include: * Run `bin/magento catalog:image:resize` to generate a new image cache. (This step is necessary because we’ve changed the path to cached images and must remove the previously cached images.) + * The catalog rule re-indexing operation has been optimized, and the average re-indexing time (which depends on rule conditions) has improved by more than 80%. Previously, a full catalog rule re-index operation on a medium B2C store took more than 20 minutes. + * The catalog price indexer is now scoped and multithreaded, which improves the performance of layered navigation, search, and indexing actions for Magento instances with multiple websites and stores. This makes it possible to parallelize catalog price indexing by websites and customer groups. To re-index in parallel mode, add the `MAGE_INDEXER_THREADS_COUNT` environment variable to `env.php`. + * The time required to load category or product pages for products that are configured with many attributes (more than 500) has been significantly reduced. Refactoring the logic for product attribute retrieval has resulted in a reduction of load time of almost 90% for scenarios with a large number of product attribute sets. (Performance will not noticeably improve for deployments with only one attribute set configured with 500 attributes. However, deployments with many attribute sets that contain only a few attributes will show significant performance improvement. For example, a deployment with 100 attribute sets, each of which contains 50 attributes, might see a 40-90% reduction in load time.) + * The time required to load a store’s home page has been reduced noticeably when the top menu contains many categories. (Load time is still affected by the number of categories and the structure of the top menu.) + * Merchants can now improve store performance by disabling Magento Report functionality. A new configuration setting (**System Configuration:** **General** > **Reports** > **General Options**) allows merchants to disable Magento Reports, which is recommended practice if a merchant's business function does not require this capability. #### **Improvements to the reliability and ease of the checkout process** + * A shopping cart’s contents remain constant even when the checkout page is repeatedly reloaded. Previously, if a customer reloaded the checkout page several times, Magento emptied the shopping cart, and the customer could not place the order. (This problem primarily affected stores running on HTTPS.) + * Refreshing the checkout page no longer deletes the shipping address when a guest checks out. Previously, when the persistent shopping cart was enabled, refreshing the checkout page affected information entered into form fields for a guest checkout. + * The speed at which Magento places an order is no longer affected by how many shipping methods are available. Previously, when a customer placed an order for which multiple shipping methods were available, Magento took more than 20 seconds to place the order. #### **Additional enhancements** + * Configurable products are now sorted by visible prices as expected. Previously, sorting a catalog by price produced sort results that included the prices of out-of-stock products and disabled child products. + * Magento no longer sends duplicate delete requests as a result of an unstable Internet connection. Previously, unintentional mass deletion of products sometimes occurred as a result of an unstable Internet connection. ### **Magento Cloud highlights** @@ -163,45 +175,59 @@ In addition to security enhancements, this release contains the following functi ### Installation, setup, and deployment + * You can now use the `app:config:status` command to check whether configuration propagation is up-to-date. (This fix restores this command, which was inadvertently deleted in a previous release.) *Fix submitted by Pieter Hoste in pull request [15174](https://github.com/magento/magento2/pull/15174)*. [GitHub-14104](https://github.com/magento/magento2/issues/14104) + * The `app:config:dump` command now has an argument that supports dumping only the specified settings that are required to prepare static content on a build system, not all system settings. This new option (`config-types`) makes it possible to dump scopes and themes automatically (which are needed for a build system) while managing system settings manually using `config:set --lock-config`. *Fix submitted by Juan Alonso in pull request [12410](https://github.com/magento/magento2/pull/12410)*. [GitHub-11396](https://github.com/magento/magento2/issues/11396) + * Configuration backend models are now populated as expected with all fieldset data, which makes it possible to access all configured values from a current group. [GitHub-16712](https://github.com/magento/magento2/issues/16712) + * The `magento-deploy-ignore` setting in `composer.json` now works as expected. Previously, files specified in this setting were overwritten during deployment. + * The `timestamp` fields in `oauth_nonce` now include indexes to avoid deadlocks while erasing old records. *Fix submitted by Carlos Lizaga in pull request [13328](https://github.com/magento/magento2/pull/13328)*. [GitHub-10346](https://github.com/magento/magento2/issues/10346) + * Sorting has been disabled in the `glob` and `scandir` functions to improve performance. *Fix submitted by Leandro F. L. in pull request [16052](https://github.com/magento/magento2/pull/16052)*. + * The `nginx.config.sample` file no longer includes an option for PHP 5.x. (Magento 2.2.x is not compatible with PHP 5.x.) *Fix submitted by Sean Breeden in pull request [16883](https://github.com/magento/magento2/pull/16883)*. + * Autoloading performance has improved on production environments as a result of the reduction in `file_exists` calls. *Fix submitted by Pieter Hoste in pull request [16435](https://github.com/magento/magento2/pull/16435)*. + * Setting deploy mode to production mode by using the `--skip-compilation` flag no longer clears generated code in `generated/code/` and `generated/metadata/`. *Fix submitted by platformvaimo in pull request [16211](https://github.com/magento/magento2/pull/16211)*. + * We've made two changes to `Magento/Config` module: `Magento/Config/Test/Unit/Block/System/Config/Form/Field/ImageTest.php::testGetElementHtmlWithValue()` method no longer references a invalid backend model, and the anonymous function no longer has an unused `$data` in `Magento/Config/Model/Config/Importer.php`. *Fix submitted by Marcel Hauri in pull request [15511](https://github.com/magento/magento2/pull/15511)*. + * The upgrade check implemented during setup now indicates success if the latest version of Magento is already installed. Previously, the message indicated that the latest product version was already installed was presented as error. *Fix submitted by Daniel Ruf in pull request [15012](https://github.com/magento/magento2/pull/15012)*. + * The **Add Block Names to Hints** configuration setting has been renamed to **Add Block Class Type to Hints**. *Fix submitted by Chris Pook in pull request [14939](https://github.com/magento/magento2/pull/14939)*. + * The `cron:run` command now reads `cron/enabled` configuration setting and if this value is set to **1** (the default value), then the `cron:run` command will execute. A value of **0** determines that `cron:run` will not be executed, and prompts Magento to send the customer email indicating that `cron` is disabled. + * New command-line interface (CLI) commands support setting and showing indexer dimension modes: * `bin/magento indexer:set-dimensions-mode` sets indexer dimensions mode @@ -211,353 +237,465 @@ In addition to security enhancements, this release contains the following functi ### Amazon Pay + * Amazon Pay no longer appears as an option during checkout when a customer selects **Check Out with Multiple Addresses**. Previously, Magento displayed Amazon Pay as an option, even though Amazon Pay does not support multishipping. + * You can now change and save Amazon Pay configuration settings from **Configuration** > **Sales** > **Payment Methods** > **Amazon Pay** when deploying Magento in a Cloud environment. Previously, Magento did not save changed settings. ### B2B + * Company blocked warnings are no longer included in the source code. Previously, source code included these warning strings, which search indexers detected and treated as text. + * Category pages now display as expected all products whose SKUs contain either single or double quotation marks. Previously, Magento threw an error when trying to set pricing and structure on a shared catalog when product SKUs contained these characters. + * In multisite environments, you can now save the address of a company that is allowed only on the non-primary website. Previously, if a merchant tried to save a company address from the default website, Magento displayed this error, `Invalid value of "UA" provided for the 'country_id' field`. + * Access to the Companies resource can now be explicitly set on the Roles Resources page in Admin. Previously, this resource was available only to top-level administrators with all resources selected. + * Magento now displays the correct product total price value on all websites in a B2B deployment. Previously, Magento did not apply cart price rules for product prices on non-primary websites, but instead displayed the product price assigned to products on the primary website to all websites. + * When **Website Restrictions** are set to **Private Sales: Login Only**, access to the storefront is now restricted to customers who log in, and merchants can still create new companies in the Admin. Previously, when a merchant tried to create a company when this setting was enabled, Magento threw this error, `Can not register new customer due to restrictions are enabled`. + * Configurable products can now be added to the requisition list directly from the Category page. + * The `beforeSave` method on Braintree `CountryCreditCard` class now has a statement that supports `app:config:import`. Previously, Magento threw an exception during import if it encountered an empty field in the Braintree configuration file. *Fix submitted by Mateusz Lerczak in pull request [14829](https://github.com/magento/magento2/pull/14829)*. + * Guests can now view products as expected when shared catalogs are enabled. Previously, if a merchant added a product when shared catalogs were enabled, guest users could not view the product, even when shared catalogs were later disabled. + * Company administrators can now use Quick Order to buy products. Previously, when a company administator tried to use Quick Order to buy products, Magento displayed this error: `The SKU was not found in the catalog`. + * You can now successfully search for products when the **Shared Catalog** setting is enabled. ### Bundle products + * Magento now successfully imports bundle products. Previously, bundle products were not visible in the product catalog, and were listed as out-of-stock on the storefront. + * The `Magento_Bundle` module name has been added to the relevant template files to meet Magento standard coding format. *Fix submitted by Namrata in pull request [15825](https://github.com/magento/magento2/pull/15825)*. + * The `option` variable has been renamed to `quoteItemOption` to improve code readability in `app/code/Magento/Bundle/Model/Product/Type.php`. *Fix submitted by Leandro F. L. in pull request [16143](https://github.com/magento/magento2/pull/16143)*. -* Magento now accurately displays the status of bundle product stock when **Add to Cart** is enabled for bundle products. Previously, bundle products with the **User Defined** field unchecked could not be back ordered as expected. -[GitHub-10061](https://github.com/magento/magento2/issues/10061) + +* Magento now accurately displays the status of bundle product stock when **Add to Cart** is enabled for bundle products. Previously, bundle products with the **User Defined** field unchecked could not be back ordered as expected. [GitHub-10061](https://github.com/magento/magento2/issues/10061) ### Catalog + * The breadcrumbs component no longer relies on the `mageMenu` widget. *Fix submitted by Vova Yatsyuk in pull request [15178](https://github.com/magento/magento2/pull/15178)*. [GitHub-14987](https://github.com/magento/magento2/issues/14987) + * The `data-container` class name is now based on view mode. *Fix submitted by sunilit42 in pull request [15350](https://github.com/magento/magento2/pull/15350)*. [GitHub-15319](https://github.com/magento/magento2/issues/15319) + * Breadcrumbs now work as expected when a product name contains quotation marks. Previously, the breadcrumbs on the product details page caused this syntax error to be thrown, `SyntaxError: Unexpected token x in JSON`. *Fix submitted by Jignesh Baldha in pull request [15347](https://github.com/magento/magento2/pull/15347)*. [GitHub-15037](https://github.com/magento/magento2/issues/15037) + * Disabling a product now removes it from the flat index as expected. *Fix submitted by Mr. Lewis in pull request [15019](https://github.com/magento/magento2/pull/15019)*. [GitHub-14966](https://github.com/magento/magento2/issues/14966) + * The success message that Magento displays when a customer adds a product to the compare list now contains a link to the comparison list. *Fix submitted by Andreas von Studnitz in pull request [13862](https://github.com/magento/magento2/pull/13862)*. + * Cache problems no longer occur when currencies are used without a currency symbol. *Fix submitted by Dmytro Cheshun in pull request [15902](https://github.com/magento/magento2/pull/15902)*. + * Catalog component blocks now contain correct return type suggestions, and typos have been corrected where needed in the PHPDocs. *Fix submitted by Dmytro Cheshun in pull request [15913](https://github.com/magento/magento2/pull/15913)*. + * Widget cache errors that resulted in one widget being loaded twice on the storefront have been resolved. *Fix submitted by Alexandr Kozyr in pull request [12764](https://github.com/magento/magento2/pull/12764)*. [GitHub-4389](https://github.com/magento/magento2/issues/4389) + * Magento no longer makes redundant requests on the 'customer data' on the checkout page. *Fix submitted by Andrey Bezyazychnyy in pull request [14314](https://github.com/magento/magento2/pull/14314)*. [GitHub-13765](https://github.com/magento/magento2/issues/13765) + * Administrators with permission to change product names on one website only cannot change product names on any other sites. Previously, an administrator with permission to change a product name on one site only could change product names on all websites in a multisite deployment. + * Administrators with limited privileges can now save products as expected. + * Magento now uses the current date as expected when setting the start date for a special price. Previously, Magento set the start date for a special price a few years in the future, which prevented the special price for being active. + * Magento now reliably displays category images on the custom store view level. Previously, the category image on custom store view level alternately disappeared and appeared after every save operation. + * Magento no longer removes downloadable product links after an attribute is updated. + * Extra POST requests are no longer sent if the **Synchronize widget products with backend storage** option is set to **yes**. + * You can now create a product date attribute that contains a day value than exceeds 12 (in the format dd/mm/yyyy). Previously, when you created a product attribute with a default date specifying a day greater than 12, Magento did not save the attribute, but instead displayed this error, `Invalid default date`. + * You can now use the `Magento\Catalog\Model\ProductRepository` class to assign a product to one website as expected. Previously, using this class to save a product assigned the product to all existing websites, not just the specified one. + * Images now load as expected on the product display page (PDP) when the image name contains double quotation marks. + * The SEO-friendly URL for the Category page now works as expected. + * The **Use Default Value** checkboxes in the design section of the category page are now enabled by default as expected. + * Customers can now use the **Add Product By SKU** button to add configurable products to a sales order. + * Empty dropdown or swatch type product attributes are no longer visible on the product page. + * Attributes that have empty values across all products being compared are not displayed as rows in the comparison table. Previously, Magento displayed these attributes with an N/A value on the Compare Products page. + * The Catalog page now displays breadcrumbs as expected. + * Tiered pricing and quantity increments now work as expected with decimal-based inventories. + * Magento now updates the `catalog_category_product_index` table as expected after a category is deleted. + * Customizable options are now configured the same for all websites to which a product is added. Previously, when a merchant added a product with customizable options to an additional site, the options were corrupted. + * The **Use default value** option is no longer unchecked unless the user overrides the value of the attribute in the store view scope. Previously, after creating an item, if the user changed to store view scope and did not make any modifications to the item's attributes and only clicked **Save**, most of the attributes that were set as **Use default value** became unchecked. + * Category product indexer logic has been optimized, and re-indexing time has been noticeably reduced.  Previously, when you had many categories (100,000), Magento could take up to 40 minutes to re-index product catalogs. + * Widget selection by Enabled Products no longer causes a fatal error on a storefront when the **Flat Product** is configured. + * Merchants can now change the `status` and `update` attributes from the product page. Previously, Magento returned a 404 page when bulk enabling or disabling products in the Admin with a restricted user role that is limited to a specific website. + * Magento now maintains the default setting for a product's `status` attribute when you create a new product. Previously, when creating a new product after changing the default option from Enabled to Disabled for this attribute, the status is incorrectly set to enabled by default. + * The print preview of product comparison results (that is, the page of results that Magento produces when you click **Compare** after selecting two or more products) now displays as expected. Previously, only a subset of page elements was displayed. + * Magento now maintains the correct dates in the results of filtering the Admin Product Grid Filter: Set Product as New from Date. [GitHub-11517](https://github.com/magento/magento2/issues/11517) + * As you type additional characters into the text field for a product's custom option, the hint showing the number of characters left before reaching the maximum now decreases as expected. + * Merchants can now set custom option fixed prices with negative values in the Admin. [GitHub-7333](https://github.com/magento/magento2/issues/7333) + * You can now unset a category image on the store-view level when the image is defined on all store views. + * The Catalog Products List widget can now display products on the storefront that have specific attributes. + * The shopping cart now correctly displays images of configurable products that have only size options (that is, no color options). Previously, when a customer added a configurable product that had only size options to her shopping cart, the shopping cart did not display the expected product image. *Fix submitted by Ronak Patel in pull request [16863](https://github.com/magento/magento2/pull/16863)*. [GitHub-16843](https://github.com/magento/magento2/issues/16843) + * Magento now throws an exception as expected when a user tries to submit a product review without selecting a star rating. Previously, if a user submitted a product review without selecting a star rating, Magento assigned a one-star rating. + * Magento now successfully displays product prices in currencies without minor units if the price amount is less then the number group size. [GitHub-11711](https://github.com/magento/magento2/issues/11711) + * Magento now displays the correct price on the product page for storefronts running Japanese locales. *Fix submitted by Vishal Gelani in pull request [15909](https://github.com/magento/magento2/pull/15909)*. [GitHub-11711](https://github.com/magento/magento2/issues/11711) + * Magento now correctly saves the value of a product's custom options. Previously, Magento saved all objects by using the same value object for all values. *Fix submitted by Jeroen Van Leusden in pull request [13569](https://github.com/magento/magento2/pull/13569)*. [GitHub-5067](https://github.com/magento/magento2/issues/5067) + * Magento now displays the product name as browser title as expected. Previously, the meta title tag was missing, which prevented Magento from displaying the product name. *Fix submitted by Riccardo Tempesta in pull request [15532](https://github.com/magento/magento2/pull/15532)*. [GitHub-15501](https://github.com/magento/magento2/issues/15501) + * Magento now maintains the default products sort order of “newest first” when you upgrade your Magento deployment to 2.2.4. Previously, after upgrade, the default products order in categories changed from “newest first” to “oldest first”. *Fix submitted by Danny Verkade in pull request [15629](https://github.com/magento/magento2/pull/15629)*. [GitHub-15627](https://github.com/magento/magento2/issues/15627) + * Links on product pages are now linkable as expected. Previously, when Magento displayed a product page, none of the provided links were clickable. *Fix submitted by simonjanguapa in pull request [15687](https://github.com/magento/magento2/pull/15687)*. [GitHub-15393](https://github.com/magento/magento2/issues/15393) + * Deprecated methods in Message Manager have been replaced with valid methods. *Fix submitted by Tiago Sampaio in pull request [16924](https://github.com/magento/magento2/pull/16924)*. + * Array short syntax usage has been standardized in these files: `app/code/Magento/Catalog/Test/Unit/Model/ProductTest.php`, `app/code/Magento/GroupedProduct/Test/Unit/Model/ProductTest.php`, and `setup/src/Magento/Setup/Module/Di/Code/Reader/FileScanner.php`. *Fix submitted by Leandro F. L. in pull request [16880](https://github.com/magento/magento2/pull/16880)*. + * The error message that Magento displayed when a duplicate error key occurred during product import has been improved. *Fix submitted by Vishal Gelani in pull request [16389](https://github.com/magento/magento2/pull/16389)*. + * We've removed the direct use of the object manager when saving Admin attribute sets. *Fix submitted by AnshuMishra17 in pull request [16217](https://github.com/magento/magento2/pull/16217)*. + * Breadcrumb JSON configuration has been moved to the view model and serialized using the Magento JSON serializer. *Fix submitted by Diederick Bruin in pull request [15521](https://github.com/magento/magento2/pull/15521)*. + * `row_id` has been added to the flat action indexer, ensuring that index values are not set to `0` for new products when using index on save. Previously, if you used `\Magento\Framework\Api\SearchCriteriaBuilder`, and the flat `product row_id` is set to `0`, Magento did not show the product in the `getList` of the `ProductRepository`. *Fix submitted by Mr. Lewis in pull request [15010](https://github.com/magento/magento2/pull/15010)*. + * Magento no longer inserts redundant links to the homepage into breadcrumbs on the product page. *Fix submitted by Vova Yatsyuk in pull request [14994](https://github.com/magento/magento2/pull/14994)*. + * Magento now correctly displays product information for products that have a negative price as a custom option. *Fix submitted by Danny Verkade in pull request [15202](https://github.com/magento/magento2/pull/15202)*. + * Product names can now contain a double quotation mark character (`"`). Previously, when a product name contained this character, Magento threw a JavaScript error. *Fix submitted by Vova Yatsyuk in pull request [15162](https://github.com/magento/magento2/pull/15162)*. + * Administrators who lack access to the CatalogRule module can now perform operations as expected in the Admin cart price rule edit page. *Fix submitted by Neos2007 in pull request [14886](https://github.com/magento/magento2/pull/14886)*. + * Magento now updates product options and quantity by checking the item ID when updating a cart that contains configurable products with different options. *Fix submitted by Nitin Khalasi in pull request [14765](https://github.com/magento/magento2/pull/14765)*. + * Product meta descriptions no longer contain unnecessary HTML tags. *Fix submitted by David Windell in pull request [14538](https://github.com/magento/magento2/pull/14538)*. + * Attributes that have empty values across all products being compared are not displayed on the Compare Products page as rows in the comparison table. Previously, these attributes were displayed with a value of **N/A**. + * Magento now maintains the correct dates in the results of filtering the Admin Product Grid Filter: Set Product as New from Date. [GitHub-11517](https://github.com/magento/magento2/issues/11517) + * Company Admin can now use Quick Order to buy products. Previously, when a company administator tried to use Quick Order to buy products, Magento displayed this error: `The SKU was not found in the catalog`. ### CAPTCHA + * Customers can now successfully log in when guest checkout is disabled and CAPTCHA is enabled. Previously, Magento threw the `Provided form does not exist` error when a customer tried to log in under these conditions. + * CAPTCHA validation now works when the **Website Restrictions** setting is enabled. + * The `\Magento\Captcha\Observer\CaptchaStringResolver` class is now covered by unit tests. *Fix submitted by Yaroslav Rogoza in pull request [16065](https://github.com/magento/magento2/pull/16065)*. [GitHub-14966](https://github.com/magento/magento2/issues/14966) + * The `CheckRegisterCheckoutObserver` class is now covered by unit tests. *Fix submitted by Yaroslav Rogoza in pull request [16160](https://github.com/magento/magento2/pull/16160)*. + * The `\Magento\Captcha\Observer\CheckGuestCheckoutObserver` class is now covered by unit tests. *Fix submitted by Yaroslav Rogoza in pull request [16680](https://github.com/magento/magento2/pull/16680)*. + * Autocomplete for CAPTCHA inputs has been disabled. *Fix submitted by Denis Belevtsov in pull request [17114](https://github.com/magento/magento2/pull/17114)*. + * Integration tests now check that customer login attempts are removed after a successful login or account details edit. *Fix submitted by Yaroslav Rogoza in pull request [16306](https://github.com/magento/magento2/pull/16306)*. + * Integration tests now check that administrator login attempts are removed after a successful login or account details edit. *Fix submitted by Yaroslav Rogoza in pull request [16300](https://github.com/magento/magento2/pull/16300)*. + * The `CheckGuestCheckoutObserver` class is now covered by unit tests. *Fix submitted by Yaroslav Rogoza in pull request [16680](https://github.com/magento/magento2/pull/16680)*. ### Cart and checkout + * Placeholders for the password field no longer suggest that a password is optional. Previously, the placeholder for the password field in the checkout page suggested that the password was optional, but after validation, Magento indicated that the password field was mandatory. *Fix submitted by hitesh-wagento in pull request [16379](https://github.com/magento/magento2/pull/16379)*. [GitHub-16378](https://github.com/magento/magento2/issues/16378) + * The dropdown toggle icon on the shopping cart now works as expected. Previously, the arrow did not change direction as expected when you toggled the Discount or Tax options. *Fix submitted by Karla Saaremäe in pull request [15991](https://github.com/magento/magento2/pull/15991)*. + * The shopping cart icon on the checkout page on mobile screens now displays hover color and regular color as expected. *Fix submitted by Karla Saaremäe in pull request [16002](https://github.com/magento/magento2/pull/16002)*. + * Customers are not unexpectedly logged out if the customers hits the F5 key twice during checkout. *Fix submitted by adrian-martinez-interactiv4 in pull request [14428](https://github.com/magento/magento2/pull/14428)*. [GitHub-4301](https://github.com/magento/magento2/issues/4301), [GitHub-12362](https://github.com/magento/magento2/issues/12362), [GitHub-13427](https://github.com/magento/magento2/issues/13427) + * The **Purchased Order Form** button is now correctly aligned. *Fix submitted by Neeta Kangiya in pull request [15331](https://github.com/magento/magento2/pull/15331)*. [GitHub-15334](https://github.com/magento/magento2/issues/15334) + * The **Purchased Order Form** button is now visible. *Fix submitted by hitesh-wagento in pull request [15372](https://github.com/magento/magento2/pull/15372)*. [GitHub-15334](https://github.com/magento/magento2/issues/15334) + * Magento no longer displays duplicate element IDs on the Checkout page. *Fix submitted by Julien ANQUETIL in pull request [15585](https://github.com/magento/magento2/pull/15585)*. [GitHub-13415](https://github.com/magento/magento2/issues/13415) + * During the payment step of checkout, a customer can now successfully deselect the **Billing save-in address book** checkbox in a selected payment method other than the default method. *Fix submitted by Rakesh Gangani in pull request [15344](https://github.com/magento/magento2/pull/15344)*. [GitHub-13692](https://github.com/magento/magento2/issues/13692) + * The `.block-minicart` element on the mini cart dropdown menu no longer has an empty class. *Fix submitted by Karla Saaremäe in pull request [14715](https://github.com/magento/magento2/pull/14715)*. [GitHub-14669](https://github.com/magento/magento2/issues/14669) + * Customers can now add configurable products to their shopping cart when Magento is running on Internet Explorer 11.x. + * The free shipping cart price rule now works as expected when the UPS shipping method is enabled. Previously, UPS Ground shipping method was not available for free shipping at checkout when the UPS shipping method was enabled. + * Cart price rule condition values now handle commas as expected. + * Free shipping coupons now work as expected with Table Rates shipping. Previously, Magento displayed this message when a customer tried to use a free shipping coupon: `Sorry, no quotes are available for this order`. [GitHub-8172](https://github.com/magento/magento2/issues/8172) + * Magento now displays correct store view prices for cases when a merchant uses a CSV file to add products by SKU from the Admin. + * A merchant can successfully use SKU values that contain capital letters to add a product to a cart from the Admin. + * Refreshing the checkout page no longer deletes the shipping address when a guest checks out. Previously, when the persistent shopping cart was enabled, refreshing the checkout out page affected information entered into form fields for a guest checkout. + * The speed at which Magento places an order is no longer affected by how many shipping methods are available. Previously, when a customer placed an order for which multiple shipping methods were available, Magento took more than 20 seconds to place the order. + * Magento now maintains browser history as expected when a user navigates from the checkout contact information page to the checkout payment information page. Previously, when a user tried to retrace her steps after landing on the payment information page, Magento did not return them to the checkout contact information page, but instead landed on a product page. + * Magento now displays a message when a gift card card is removed during checkout. + * Guest orders placed with gift cards can now be canceled. + * A shopping cart’s contents remains constant even when the Checkout page is repeatedly reloaded. Previously, if a customer reloaded the checkout page several times, Magento emptied the shopping cart and the customer could not place the order. (This problem primarily affected stores running on HTTPS.) + * The message that Magento displays when a customer has successfully added a product to his shopping cart now contains a link to the cart. *Fix submitted by Andreas von Studnitz in pull request [13904](https://github.com/magento/magento2/pull/13904)*. + * The Update button now behaves the same whether product quantity is manually edited or changed by JavaScript. *Fix submitted by Valerij Ivashchenko in pull request [14935](https://github.com/magento/magento2/pull/14935)*. + * Magento no longer displays the infinite checkout loader when a module that is loading makes a `require` call, but the dependency is not returned (typically due to network error). *Fix submitted by Vova Yatsyuk in pull request [14874](https://github.com/magento/magento2/pull/14874)*. + * The minicart quantity label no longer has a fixed length. *Fix submitted by Karla Saaremäe in pull request [14716](https://github.com/magento/magento2/pull/14716)*. + * Double-clicking on the **Proceed to checkout** button from the minicart no longer returns an empty shopping cart. ### Cleanup @@ -567,330 +705,435 @@ Our community contributors have made many helpful, minor corrections to spelling #### Spelling corrections + * Corrected misspelling of `formatedPrice` throughout the code base. *Fix submitted by Arnoud Beekman in pull request [16726](https://github.com/magento/magento2/pull/16726)*. + * Corrected return message from `ProductRuleTest.php`. *Fix submitted by Namrata in pull request [16721](https://github.com/magento/magento2/pull/16721)*. + * Replaced the `proccessAdditionalValidation` method with `processAdditionalValidation`. *Fix submitted by Tiago Sampaio in pull request [16414](https://github.com/magento/magento2/pull/16414)*. + * Corrected misspelling in `SynonymGroupRepositoryInterface`. *Fix submitted by AnshuMishra17 in pull request [16711](https://github.com/magento/magento2/pull/16711)*. + * Corrected misspelling in library file. *Fix submitted by Namrata in pull request [16495](https://github.com/magento/magento2/pull/16495)*. + * Corrected punctuation in the message displayed on **CONTENT** > **Design** > **Configuration**. *Fix submitted by Erik Hansen in pull request [16489](https://github.com/magento/magento2/pull/16489)*. + * Correct misspellings in Model and library files. *Fix submitted by Namarata in pull request [16230](https://github.com/magento/magento2/pull/16230)*. + * Corrected misspelling in `_exportAddressses` method name. *Fix submitted by Marcel Hauri in pull request [15275](https://github.com/magento/magento2/pull/15275)*. + * Corrected misspelling in comments for `addTaxPercents()` in `app/code/Magento/Catalog/Model/ResourceModel/Product/Collection.php`. *Fix submitted by AnshuMishra17 in pull request [15431](https://github.com/magento/magento2/pull/15431)*. + * Corrected misspelling in `abstract.js`. *Fix submitted by VitaliyBoyko in pull request [15411](https://github.com/magento/magento2/pull/15411)*. + * Corrected misspellings in `app/code/Magento/Sales/Block/Adminhtml/Order/Create/Sidebar/AbstractSidebar.php`, `app/code/Magento/Ui/view/base/web/js/form/components/fieldset.js`, `app/code/Magento/Ui/view/base/web/js/form/components/group.js`, `setup/pub/angular-sanitize/angular-sanitize.js`, and `setup/pub/angular-sanitize/angular-sanitize.min.js.map`. *Fix submitted by Danny Verkade in pull request [15715](https://github.com/magento/magento2/pull/15715)*. + * Corrected misspelling in `app/code/Magento/Catalog/Model/Product/Type/AbstractType.php`. *Fix submitted by Saurabh Parekh in pull request [15519](https://github.com/magento/magento2/pull/15519)*. + * Corrected misspellings in Multishipping and User modules. *Fix submitted by Anna Völkl in pull request [15513](https://github.com/magento/magento2/pull/15513)*. + * Corrected a misspelling in function comment in `app/code/Magento/Paypal/Model/Api/Nvp.php` *Fix submitted by Namrata in pull request [15302](https://github.com/magento/magento2/pull/15302)*. + * Corrected misspellings in PHPDocs and comments. *Fix submitted by Dmytro Cheshun in pull request [15293](https://github.com/magento/magento2/pull/15293)*. + * Corrected typo in method name `_getCharg[e]ableOptionPrice`. *Fix submitted by Marcel Hauri in pull request [15276](https://github.com/magento/magento2/pull/15276)*. + * Corrected typo in database column comment in `app/code/Magento/Catalog/Setup/InstallSchema.php`. *Fix submitted by VitaliyBoyko in pull request [15291](https://github.com/magento/magento2/pull/15291)*. + * Corrected misspelling in the name of private method `\Magento\Catalog\Console\Command\ImagesResizeCommand::getUniq[ue]ImageIndex`. *Fix submitted by Marcel Hauri in pull request [15282](https://github.com/magento/magento2/pull/15282)*. + * Corrected typo in the `\Magento\Framework\Image::open` exception message. *Fix submitted by Tom Richards in pull request [15269](https://github.com/magento/magento2/pull/15269)*. + * Corrected misspelling in `ResourceModel\Coupon.php:updateSpecificCoupons`. *Fix submitted by Stephen Biston in pull request [14891](https://github.com/magento/magento2/pull/14891)*. + * Corrected typo in the name of the `\Magento\Framework\App\Request\Http::removeRepitedSlashes` method. *Fix submitted by Igor Tripolskiy in pull request [15256](https://github.com/magento/magento2/pull/15256)*. + * Corrected misspelling in `app/code/Magento/CatalogSearch/Block/Advanced/Form.php`. *Fix submitted by Jeevan M R in pull request [15053](https://github.com/magento/magento2/pull/15053)*. + * Corrected misspelling in `.less` files. *Fix submitted by Kalpesh Mehta in pull request [15023](https://github.com/magento/magento2/pull/15023)*. + * Removed double occurrence of 'it' from sentences and corrected minor grammar error. *Fix submitted by Namrata in pull request [16240](https://github.com/magento/magento2/pull/16240)*. + * Fixed typo in `app/code/Magento/Checkout/etc/webapi.xml`. *Fix submitted by Markus Haack in pull request [15845](https://github.com/magento/magento2/pull/15845)*. + * Corrected misspelling in `file-uploader.js` and `storage-manager.js`. *Fix submitted by Saurabh Parekh in pull request [15888](https://github.com/magento/magento2/pull/15888)*. + * Corrected misspelling in `scripts.js`. *Fix submitted by Ledian Hymetllari in pull request [15878](https://github.com/magento/magento2/pull/15907)*. + * Corrected grammar error in the "What is this" tooltip for the Braintree vault tool tip. *Fix submitted by kreativedev in pull request [17151](https://github.com/magento/magento2/pull/17151)*. + * Renamed `_requesetd` to `_requested` in `app/code/Magento/Ui/view/base/web/js/lib/core/element/element.js`. *Fix submitted by Valerij Ivashchenko in pull request [16971](https://github.com/magento/magento2/pull/16971)*. + * Removed double occurrences of words from `Magento_Catalog`, `Magento_Customer`, `Magento_Downloadable`, `Magento_Sales`, and `lib` and `dev` test function comments. *Fix submitted by Pratik Oza in pull request [16977](https://github.com/magento/magento2/pull/16977)*. + * Correct misspelling in method name and result in these files: `dev/tests/functional/tests/app/Magento/Checkout/Test/Block/Onepage/Shipping/Method.php` and `dev/tests/functional/tests/app/Magento/Shipping/Test/Constraint/AssertCityBasedShippingRateChanged.php`. *Fix submitted by Dmytro Cheshun in pull request [15297](https://github.com/magento/magento2/pull/15297)*. #### Minor corrections to code and code formatting + * Removed extra spaces from `Magento/Ui`. *Fix submitted by Ronak Patel in pull request [16872](https://github.com/magento/magento2/pull/16872)*. + * Improved code formatting. *Fix submitted by Pratik Oza in pull request [16821](https://github.com/magento/magento2/pull/16821)*. + * Removed comments and unnecessary spaces. *Fix submitted by Ronak Patel in pull request [16748](https://github.com/magento/magento2/pull/16748)*. + * Removed space before ending sentence throughout code base. *Fix submitted by Namrata in pull request [16717](https://github.com/magento/magento2/pull/16717)*. + * Removed unnecessary spaces in `app/code/Magento/Catalog/Pricing/Price/ConfiguredRegularPrice.php`. *Fix submitted by Ronak Patel in pull request [15129](https://github.com/magento/magento2/pull/15129)*. + * Removed double occurrences of words from the lib and dev test function comments and from these modules: `Magento_Catalog`, `Magento_Customer`, `Magento_Downloadable`, and `Magento_Sales`. *Fix submitted by Namrata in pull request [16644](https://github.com/magento/magento2/pull/16644)*. + * Removed double occurrences from `jQuery`, Angular JS files and the `Magento_Setup` module's scan function's comment. *Fix submitted by Namrata in pull request [16581](https://github.com/magento/magento2/pull/16581)*. + * Removed extra space from the value of the `is_required` XML node in `SynonymGroup.xml`. *Fix submitted by Namrata in pull request [16557](https://github.com/magento/magento2/pull/16557)*. + * Minor corrections to code throughout the code base. *Fix submitted by GraysonChiang in pull request [16841](https://github.com/magento/magento2/pull/16841)*. + * Removed unused data from `app/code/Magento/Ui/Model/Export/ConvertToCsv.php` and `app/code/Magento/Ui/Model/Export/ConvertToXml.php`. *Fix submitted by Vishal Gelani in pull request [16524](https://github.com/magento/magento2/pull/16524)*. + * Removed unnecessary translations for label and comment tags and added missing translation strings. *Fix submitted by Yogesh Suhagiya in pull request [16090](https://github.com/magento/magento2/pull/16090)*. + * Removed redundant plug-in information (`dev:di:info`). *Fix submitted by Alexander Shkurko in pull request [16474](https://github.com/magento/magento2/pull/16474)*. + * Removed redundant semicolon from these files: `app/code/Magento/Tax/Model/Sales/Total/Quote/CommonTaxCollector.phpMagento/Multishipping/Test/Unit/Block/Checkout/SuccessTest.php` and `app/code/Magento/Tax/Model/Sales/Total/Quote/CommonTaxCollector.php`. *Fix submitted by Saurabh Parekh in pull request [15594](https://github.com/magento/magento2/pull/15594)*. + * Corrected errors in method description in `app/code/Magento/Config/Block/System/Config/Form.php`, `app/code/Magento/ConfigurableImportExport/Model/Import/Product/Type/Configurable.php`, and `app/code/Magento/Customer/Model/Session.php`. *Fix submitted by Vishal Gelani in pull request [15549](https://github.com/magento/magento2/pull/15549)*. + * Removed extra space and formatted the code in `app/code/Magento/Captcha/i18n/en_US.csv`. *Fix submitted by Saurabh Parekh in pull request [15552](https://github.com/magento/magento2/pull/15552)*. + * Removed the redundant `else` statement in `app/code/Magento/ConfigurableImportExport/Model/Import/Product/Type/Configurable.php`. *Fix submitted by Yaroslav Rogoza in pull request [15435](https://github.com/magento/magento2/pull/15435)*. + * Fixed misplaced bracket in `Option/Type/Text.php`. *Fix submitted by Valerij Ivashchenko in pull request [16566](https://github.com/magento/magento2/pull/16566)*. + * Removed a duplicate line and added comment in `app/code/Magento/Sales/Block/Adminhtml/Order/Create/Totals/Discount.php`. *Fix submitted by Vishal Gelani in pull request [15362](https://github.com/magento/magento2/pull/15362)*. + * Removed unused variable in `lib/web/css/source/lib/variables/_typography.less`. *Fix submitted by VitaliyBoyko in pull request [15386](https://github.com/magento/magento2/pull/15386)*. + * Corrected variable names in `LockAdminUserWhenEditingIntegrationTest` and `AssertCityBasedShippingRateChanged`, among others. *Fix submitted by Dmytro Cheshun in pull request [15294](https://github.com/magento/magento2/pull/15294)*. + * Corrected property name in `dev/tests/static/testsuite/Magento/Test/Integrity/Magento/Backend/ControllerAclTest.php`. *Fix submitted by Dmytro Cheshun in pull request [15292](https://github.com/magento/magento2/pull/15292)*. + * Removed non-existing argument from the constructor's comment block in `app/code/Magento/Translation/Block/Html/Head/Config.php` and added space where needed in `app/code/Magento/Translation/Model/Json/PreProcessor.php`. *Fix submitted by Yogesh Suhagiya in pull request [15249](https://github.com/magento/magento2/pull/15249)*. + * Removed redundant close tag from `app/code/Magento/Review/view/frontend/templates/view.phtml`. *Fix submitted by Yogesh Suhagiya in pull request [14928](https://github.com/magento/magento2/pull/14928)*. + * Removed extra spaces from a key-value pair in the `en_US.csv`language file. *Fix submitted by Yogesh Suhagiya in pull request [14896](https://github.com/magento/magento2/pull/14896)*. + * Cleaned up `foreach` and `break` statements in `app/code/Magento/Rule/Model/Condition/AbstractCondition.php`. *Fix submitted by Thomas Klein in pull request [14609](https://github.com/magento/magento2/pull/14609)*. + * Corrected grammar in `README.md`. *Fix submitted by Stanislav Idolov in pull request [14844](https://github.com/magento/magento2/pull/14844)*. + * Corrected type hints in `Webapi/Controller/Soap/Request/Handler.php` and `Webapi/Model/Plugin/GuestAuthorization.php`. Also corrected case in property annotation in `Soap\Server.php` and added undefined property `_appState` in `Controller\Soap.php`. *Fix submitted by Prince Patel in pull request [16626](https://github.com/magento/magento2/pull/16626)*. + * Corrected `Magento\Webapi\Model\Soap\Fault::toXml()` method invocation in `Soap\FaultTest.php`. *Fix submitted by Prince Patel in pull request [16626](https://github.com/magento/magento2/pull/16626)*. + * We've removed an unused class from the `lib/_forms.less` file. *Fix submitted by Chirag Matholiya in pull request [15791](https://github.com/magento/magento2/pull/15791)*. + * We've removed unnecessary CSS code from `_actions-toolbar.less`. *Fix submitted by Chirag Matholiya in pull request [15789](https://github.com/magento/magento2/pull/15789)*. + * We've removed the unnecessary double semicolon from the style sheets. *Fix submitted by Namrata in pull request [15795](https://github.com/magento/magento2/pull/15795)*. + * We've removed the unused code from `docs.less`. *Fix submitted by Daniel Ruf in pull request [15871](https://github.com/magento/magento2/pull/15871)*. + * Removed extraneous negative margin on product list and product list items. *Fix submitted by Steven de Jong in pull request [15936](https://github.com/magento/magento2/pull/15936)*. [GitHub-15308](https://github.com/magento/magento2/issues/15308) + * Indentation issues with LESS files have been resolved. *Fix submitted by hitesh-wagento in pull request [15811](https://github.com/magento/magento2/pull/15811)*. + * The syntax for before-after operators in LESS files has been corrected. *Fix submitted by Namrata in pull request [16181](https://github.com/magento/magento2/pull/16181)*. + * Redundant keywords have been removed from miscellaneous files. *Fix submitted by Namrata in pull request [16182](https://github.com/magento/magento2/pull/16182)*. + * We've corrected misspellings in the comment section of `OrderFixture.php`. *Fix submitted by Namrata in pull request [16183](https://github.com/magento/magento2/pull/16183)*. + * Unnecessary leading and trailing spaces have been removed from the customer account login page email field. *Fix submitted by Piyush Dankhara in pull request [15365](https://github.com/magento/magento2/pull/15365)*. [GitHub-6058](https://github.com/magento/magento2/issues/6058) + * Unnecessary leading and trailing spaces have been removed from fields in the customer account create and login forms. *Fix submitted by Piyush Dankhara in pull request [16192](https://github.com/magento/magento2/pull/16192)*. [GitHub-6058](https://github.com/magento/magento2/issues/6058) + * Unnecessary leading and trailing spaces have been removed from fields in newsletter, forgot password, checkout login and email to a friend forms. *Fix submitted by Piyush Dankhara in pull request [16564](https://github.com/magento/magento2/pull/16564)*. [GitHub-6058](https://github.com/magento/magento2/issues/6058) + * Unnecessary leading and trailing spaces have been removed from fields in the customer confirmation form. *Fix submitted by Vishal Gelani in pull request [16595](https://github.com/magento/magento2/pull/16595)*. [GitHub-6058](https://github.com/magento/magento2/issues/6058) + * Removed unnecessary commented code from these files: `app/code/Magento/Review/Model/ResourceModel/Rating/Collection.php`, `app/code/Magento/Sales/Model/Order/Creditmemo.php`, `lib/internal/Magento/Framework/Data/Form/Element/Checkboxes.php`, and `lib/internal/Magento/Framework/Model/ResourceModel/Db/Relation/ActionPool.php`. *Fix submitted by Pratik Oza in pull request [17077](https://github.com/magento/magento2/pull/17077)*. + * Removed unnecessary spaces from the price value in `app/code/Magento/Catalog/view/base/templates/product/price/amount/default.phtml`. *Fix submitted by Valerij Ivashchenko in pull request [17027](https://github.com/magento/magento2/pull/17027)*. + * Remove unused comments from `_initDiscount()` function. *Fix submitted by Prince Patel in pull request [17002](https://github.com/magento/magento2/pull/17002)*. + * Corrected misspellings in multiple files, including `app/code/Magento/Catalog/Block/Adminhtml/Product/Attribute/Set/Main/Tree/Attribute.php`, `app/code/Magento/Catalog/view/adminhtml/web/js/product/weight-handler.js`, `app/code/Magento/Signifyd/Test/Unit/Controller/Webhooks/HandlerTest.php`, `app/code/Magento/Ui/view/base/web/js/lib/core/element/element.js`, and `dev/tests/functional/tests/app/Magento/Widget/Test/Constraint/AssertWidgetCmsPageLink.php`. *Fix submitted by Pratik Oza in pull request [16980](https://github.com/magento/magento2/pull/16980)*. + * Corrected formatting of the JavaScript code in the `app/code/Magento/Ui/view/base/templates/control/button/split.phtml` and `app/code/Magento/Ui/view/base/web/js/grid/controls/button/split.jstemplate` files. *Fix submitted by Yogesh Suhagiya in pull request [14967](https://github.com/magento/magento2/pull/14967)*. + * Removed redundant `@throws` hinting and unused import for `AdvancedPricingImportExport` module classes. *Fix submitted by Dmytro Cheshun in pull request [15872](https://github.com/magento/magento2/pull/15872)*. + * Added missing PHPDoc to methods throughout the code base. *Fix submitted by Leandro F. L. in pull request [16215](https://github.com/magento/magento2/pull/16215)*. + * Fixed mismatches in case between class and method name spellings. *Fix submitted by Leandro F. L. in pull request [16141](https://github.com/magento/magento2/pull/16141)*. + * Removed an unnecessary comma from the `translate` attribute in `app/code/Magento/Sales/etc/adminhtml/system.xml`. *Fix submitted by Dmytro Cheshun in pull request [15615](https://github.com/magento/magento2/pull/15615)*. ### CMS content + * Page layout issues that resulted from incorrect module sequence have been corrected. Previously, the `Magento_theme` module was loaded too late, which resulted in unexpected display issues. + * Corrected use statements and return values in `AggregationInterface`. *Fix submitted by Yaroslav Rogoza in pull request [14893](https://github.com/magento/magento2/pull/14893)*. ### Configurable products + * Customers can now successfully complete checkout when their order contains a configurable product with a configurable option. Previously, customers could not check out when there is a configurable product in the cart with a configurable option, which is now deleted, shopping cart could not be loaded. *Fix submitted by jonshipman in pull request [15468](https://github.com/magento/magento2/pull/15468)*. [GitHub-15467](https://github.com/magento/magento2/issues/15467) + * Magento now displays the manufacturer attribute on the Admin on the Catalog page for configurable products. Previously, Magento displayed these attributes on the simple products catalog page, but not on the configurable products catalog page. + * Configurable products are now sorted by only visible prices as expected. Previously, sorting a catalog by price resulted in sort results that included the prices of out-of-stock products and disabled child products. + * When two simple products of a configurable product have different prices, Magento now uses the lowest price as the default price on the product detail page. Previously, if one of the simple products had price=0, Magento did not use it as the default. *Fix submitted by Torrey Tsui in pull request [16540](https://github.com/magento/magento2/pull/16540)*. + * The missing check for a `false` value has been added to `ConfiguredRegularPrice`. Previously, when the parent method returned false, Magento threw this fatal error: `NOTICE: PHP message: PHP Fatal error: Uncaught TypeError: Argument 1 passed to Magento\Catalog\Pricing\Price\ConfiguredOptions::getItemOptionsValue() must be of the type float, boolean given, called in /app/vendor/magento/module-catalog/Pricing/Price/ConfiguredRegularPrice.php on line 74 and defined in /app/vendor/magento/module-catalog/Pricing/Price/ConfiguredOptions.php:24`. *Fix submitted by Tibor Kotosz in pull request [15129](https://github.com/magento/magento2/pull/15129)*. + * Fixed the DocBlock for `hasInvoices()`, `hasShipments()`, and `hasCreditmemos()` in `app/code/Magento/Sales/Model/Order.php`. *Fix submitted by Lyzun Oleksandr in pull request [16554](https://github.com/magento/magento2/pull/16554)*. + * Fixed type hints and docs for the Downloadable Samples block. *Fix submitted by Björn Kraus in pull request [16408](https://github.com/magento/magento2/pull/16408)*. ### Cookies + * Magento now responds to a customer accepting a cookie notice by simply hiding the notice. Previously, Magento reloaded the entire site when a user accepted the cookie notice. *Fix submitted by Torben Höhn in pull request [16890](https://github.com/magento/magento2/pull/16890)*. ### Customer account + * Magento no longer logs out a customer after a successful password change. + * Magento no longer displays the State/Province instead of the State field on U.S. customer address forms. + * Customer attributes are now correctly validated on the Admin Order form. Previously, Magento validated attributes\length after an order has been submitted, but not on the Admin Order form. + * Customers no longer lose their session when they switch stores on different domains. + * Non-U.S. and non-Canadian addresses that are displayed in the **Address Book summary** field now display the State/Province values as expected if that information was provided. + * The checkout page no longer displays custom address attributes when **Show on frontend** is set to **no**. + * Magento now displays the default value for a new Customer attribute that is created from the Admin. Previously, Magento set this value to **no** by default. + * Administrators can see all customers when the **Share Customer Accounts** value is set to Global. + * User login email validation no longer fails if the field contains a leading or trailing space on Internet Explorer 11.x. *Fix submitted by Piyush Dankhara in pull request [15365](https://github.com/magento/magento2/pull/15365)*. [GitHub-6058](https://github.com/magento/magento2/issues/6058) + * Customer accounts are now unlocked as expected after a password reset. *Fix submitted by Andrea Gaspardo in pull request [15255](https://github.com/magento/magento2/pull/15255)*. [GitHub-15534](https://github.com/magento/magento2/issues/15534) + * Magento no longer changes the format of Date of Birth information when this field is enabled on the Create New Customer Account page, and an existing customer tries to re-register. *Fix submitted by KaushikChavda in pull request [15272](https://github.com/magento/magento2/pull/15272)*. + * When saving a customer group, Magento now copies extension attributes to the new data model that is returned. Previously, this action was not completed, and Magento behaved unpredictably. *Fix submitted by Joseph Maxwell in pull request [16254](https://github.com/magento/magento2/pull/16254)*. + * The `customer.account.dashboard.info.extra` block has been moved to contact information from the newsletter section in `app/code/Magento/Customer/view/frontend/templates/account/dashboard/info.phtml`. *Fix submitted by JeroenVanLeusden in pull request [14923](https://github.com/magento/magento2/pull/14923)*. ### Directory + * You can now configure different Allowed Countries for default and store scopes. *Fix submitted by Oleksandr Kravchuk in pull request [16693](https://github.com/magento/magento2/pull/16693)*. ### dotmailer @@ -906,43 +1149,55 @@ Our community contributors have made many helpful, minor corrections to spelling * Unexpected errors during subscriber or customer creation no longer occur. + * A merchant can now successfully create a new user and displays the appropriate welcome message. Previously, Magento threw an error during the creation of a customer or subscriber, although the new user/subscriber was created. ### EAV + * Magento now displays the fixed product tax attribute label as expected according to the specified store view. + * Magento now correctly renders multiselect product attributes with a custom source model in `adminhtml`. Previously, the selected value was saved the first time in the `catalog_product_entity_varchar` table, and the attribute was added to the `eav_attribute` table, but the selected options were not highlighted against the attribute. ### Frameworks + * `@api` annotation has been added to the `magento/framework` component of the Filter Group and Sort Order classes. *Fix submitted by Ronak Patel in pull request [16845](https://github.com/magento/magento2/pull/16845)*. + * `app/code/Magento/Theme/etc/di.xml` now uses `Translate` instead of `TranslateInterface`. *Fix submitted by Wouter Samaey in pull request [17124](https://github.com/magento/magento2/pull/17124)*. + * Classes with methods that contain variadic arguments can be also used in proxy classes. *Fix submitted by Vishal Gelani in pull request [16080](https://github.com/magento/magento2/pull/16080)*. + * The annotation in `_toOptionArray - lib\internal\Magento\Framework\Data\SearchResultProcessor.php` has been corrected. *Fix submitted by Namrata in pull request [15892](https://github.com/magento/magento2/pull/15892)*. + * Scheduled XML sitemap generation now works as expected. Previously, you could schedule sitemap generation (**Admin** > **Store** > **Configuration** > **Catalog** > **XML sitemap**), but Magento would not generate the sitemap. *Fix submitted by James Halsall in pull request [14822](https://github.com/magento/magento2/pull/14822)*. [GitHub-5768](https://github.com/magento/magento2/issues/5768) + * In multi-site deployments, a customer requesting a password reset on a non-default store should receive the password reset email from the non-default, not the primary, store. Previously, this password reset email was sent from the default store. *Fix submitted by Rodrigo Mourão in pull request [14800](https://github.com/magento/magento2/pull/14800)*. [GitHub-5726](https://github.com/magento/magento2/issues/5726) + * The `trigger_recollect` quote attribute no longer causes a time out. *Fix submitted by Philipp Sander in pull request [14719](https://github.com/magento/magento2/pull/14719)*. [GitHub-9580](https://github.com/magento/magento2/issues/9580) + * `Framework\Math\Random` now uses PHP 7.x features, including `random_bytes` and `random_int`. + * The `catalog:image:resize` command execution time has been reduced by up to 90% in the release. However, this improvement necessitates these additional steps after upgrading your Magento instance to 2.2.6: * Remove `pub/media/catalog/product/cache`. (Removing this folder frees up space.) @@ -950,388 +1205,507 @@ Our community contributors have made many helpful, minor corrections to spelling * Run `bin/magento catalog:image:resize` to generate a new image cache. (This step is necessary because we’ve changed the path to cached images and must remove the previously cached images.) + * We've fixed a display error that occurred when both a Critical Admin Notification and Release Notification window were opened. + * Changes that were made to file permissions for `lib/internal/Magento/Framework/View/Asset/Merged.php` and its associated test that were made in an earlier release have been reverted. *Fix submitted by Ihor Sviziev in pull request [16937](https://github.com/magento/magento2/pull/16937)*. + * The constructor in `Magento\Webapi\Model\Soap\Fault.php` now assigns `$exception->getOriginator()` to `_soapFaultCode` instead of to the dynamical property `_soapCode`. *Fix submitted by Marcel Hauri in pull request [15515](https://github.com/magento/magento2/pull/15515)*. + * Corrected annotation in `_toOptionArray` in `lib/internal/Magento/Framework/Data/Collection/AbstractDb.php`. *Fix submitted by Sanjay Patel in pull request [15336](https://github.com/magento/magento2/pull/15336)*. + * The invoice table now displays the correct shipping and handling for a partial items invoice. *Fix submitted by Ankur Raiyani in pull request [14795](https://github.com/magento/magento2/pull/14795)*. + * The return values from the `usort` and `value_compare_func` function now matches the PHP documentation for these functions. *Fix submitted by luke-denton-aligent in pull request [14726](https://github.com/magento/magento2/pull/14726)*. + * MySQL adapter can now reconnect successfully when using a nonstandard port. Previously, Magento threw this error, `Port must be configured within host parameter`. *Fix submitted by Julien ANQUETIL in pull request [14753](https://github.com/magento/magento2/pull/14753)*. #### Application framework + * You can now manually add a parameter to `app/etc/env.php: user_admin_email`. When an administrator is created, Magento sends an email to default store's email and, if present, to the email address defined in `user_admin_email`. + * Magento now removes unneeded PDF files after generation. Previously, Magento saved a copy of every generated invoice PDF in `/var`. *Fix submitted by Yaroslav Rogoza in pull request [16401](https://github.com/magento/magento2/pull/16401)*. [GitHub-3535](https://github.com/magento/magento2/issues/3535), [GitHub-14517](https://github.com/magento/magento2/issues/14517) + * Logs now indicate when Magento is in maintenance mode, which will help the debugging process. *Fix submitted by Ethan Yehuda in pull request [16840](https://github.com/magento/magento2/pull/16840)*. #### JavaScript framework + * `lib/web/mage/dropdowns.js` no longer fails when autoclose is set to **true**. *Fix submitted by Brian LaBelle in pull request [15499](https://github.com/magento/magento2/pull/15499)*. [GitHub-15469](https://github.com/magento/magento2/issues/15469) + * You can now view an entire zoomed product image in Fotorama fullscreen from the FireFox browser. Previously, the image jumps and the user cannot view all portions of the image. [GitHub-7978](https://github.com/magento/magento2/issues/7978) #### Web API framework + * The `array_push` function has been added to the list of forbidden functions. *Fix submitted by Leandro F. L. in pull request [16144](https://github.com/magento/magento2/pull/16144)*. + * A generated admin API token no longer expires immediately. Previously, when you created a token for an Admin user and have set **Admin Token Lifetime (hours))** to empty, Magento denied access because the token immediately expired. *Fix submitted by Maikel Martens in pull request [15598](https://github.com/magento/magento2/pull/15598)*. [GitHub-15564](https://github.com/magento/magento2/issues/15564) + * The `GET /V1/returns?searchCriteria` endpoint retrieves `tracks` arrays as expected. + * The `GET /V1/returns/:id` endpoint retrieves `tracks` arrays as expected. + * `catalogProductAttributeRepository` now returns the `frontend_labels` value as expected. #### Cache framework + * Magento no longer throws an exception when deploying static content on a deployment where Redis is used for cache management. See "Redis and static-content deployment" in [Redis troubleshooting]({{ page.baseurl }}/cloud/trouble/redis-troubleshooting.html) for more information. [GitHub-9287](https://github.com/magento/magento2/issues/9287) + * When a layout is loaded from the cache, Magento now repopulates the list of applied layout handles to prevent any chance of a layout handle being reapplied later. *Fix submitted by Scott Buchanan in pull request [12314](https://github.com/magento/magento2/pull/12314)*. ### Dashboard + * The dashboard now displays the correct order amount on orders when deploying Magento on multiple storefronts with different currencies. *Fix submitted by Ankur Raiyani in pull request [15661](https://github.com/magento/magento2/pull/15661)*. [GitHub-15660](https://github.com/magento/magento2/issues/15660) ### Directory + * Magento now supports seven-digit Israeli postal code masks. *Fix submitted by Itay Raz in pull request [16250](https://github.com/magento/magento2/pull/16250)*. ### General + * Magento now uses the correct amounts when creating a credit memo for an order that was placed using store credit, a gift card, or reward points. + * Magento no longer sends duplicate delete requests as a result of an unstable Internet connection. Previously, unintentional mass deletion of products sometimes occurred as a result of an unstable Internet connection. + * You can now successfully save a product video for one store view in deployments that have several store views. Previously, when you saved a product video for one store view, Magento saved it for all store views, although customers could play the video on the original store only. + * Customer data is now fully loaded after restarting the browser during an unexpired user session. Previously, the `section_data_ids` section of the session cookie was not properly completed. [GitHub-14912](https://github.com/magento/magento2/issues/14912) + * We've fixed an issue with unoptimized SQL queries in customer segments. Previously, the customer segment was not saved, and MySQL crashed. + * When a customer creates a product review, the link to the product from the review in the customer's **My Account** > **My Product Review** is now SEO friendly. + * The My Invitations page now accurately displays the reward points amount in numbers. Previously, this page displayed the special character `%` instead of numbers. + * The Enterprise Reward refund logic no longer permits administrators to grant double refunds. + * We moved the `isAllowed` method from `AccessChangeQuoteControl` to a separate service to optimize the logic that supports using recurrent payments in combination with pre-ordered products. *Fix submitted by Jeroen Van Leusden in pull request [12566](https://github.com/magento/magento2/pull/12566)*. + * The attribute checking logic has been optimized by reducing redundant checks. *Fix submitted by Freek Vandeursen in pull request [11554](https://github.com/magento/magento2/pull/11554)*. + * Magento no longer validates customer address attribute value length when the minimum/maximum length fields are not displayed on the Admin. + * The dropdown menu is now positioned as expected under the link on the UI Component listing. *Fix submitted by Ankur Raiyani in pull request [15661](https://github.com/magento/magento2/pull/15661)*. [GitHub-15660](https://github.com/magento/magento2/issues/15660) + * The timestamp field now includes indexes, which reduces the chances of deadlocks that can occur while erasing old records. *Fix submitted by Carlos Lizaga in pull request [13328](https://github.com/magento/magento2/pull/13328)*. [GitHub-10346](https://github.com/magento/magento2/issues/10346) + * `setCateroryIds([])` has been corrected to `setCategoryIds([])` throughout the test suites. *Fix submitted by Neeta Kangiya in pull request [15621](https://github.com/magento/magento2/pull/15621)*. [GitHub-15590](https://github.com/magento/magento2/issues/15590) + * Menus with nested elements now align correctly. *Fix submitted by hitesh-wagento in pull request [15645](https://github.com/magento/magento2/pull/15645)*. [GitHub-7897](https://github.com/magento/magento2/issues/7897) + * An administrator can now successfully download a PDF or export data immediately after log in. Previously, an administrator could not download a PDF or export data successfully after log in, but was redirected to the Admin dashboard. *Fix submitted by Riccardo Tempesta in pull request [15539](https://github.com/magento/magento2/pull/15539)*. [GitHub-15510](https://github.com/magento/magento2/issues/15510) + * Merchants can now apply styling by changing LESS variables in the Luma theme as expected. *Fix submitted by hitesh-wagento in pull request [15734](https://github.com/magento/magento2/pull/15734)*. [GitHub-15608](https://github.com/magento/magento2/issues/15608) + * Added a service configuration setting—Send Adminhtml and Frontend as Separate Apps—to collect and send separate data for frontend and adminhtml applications for New Relic reporting. See [New Relic Reporting]( https://docs.magento.com/m2/ce/user_guide/reports/new-relic-reporting.html?Highlight=New%20Relic%20service). *Fix submitted by Max Chadwick in pull request [12935](https://github.com/magento/magento2/pull/12935)*. + * Table alias prefixes in field mappings for customer group filter and sorting processors that were previously missing have been restored. Previous to this restoration, Magento threw this error when a merchant opened **Admin** > **Customers** > **All Customers**: `SQL Error: ambiguous column 'customer_group_id' in 'All customers' page in admin when extension attribute table is joined`. *Fix submitted by Maksim Gopey in pull request [15826](https://github.com/magento/magento2/pull/15826)*. + * `.limiter` now has the same parent selectors as `.pages`, which prevents clashes between styles and layouts. Previously, `.limiter` float was too generic. *Fix submitted by hitesh-wagento in pull request [15878](https://github.com/magento/magento2/pull/15878)*. + * The default `FormElementDependenceController` configuration is now extended by custom configuration rather than overridden. *Fix submitted by Valerij Ivashchenko in pull request [16001](https://github.com/magento/magento2/pull/16001)*. + * `inline-block` issues with space and font-size in the Name form have been resolved. *Fix submitted by Daniel Ruf in pull request [16048](https://github.com/magento/magento2/pull/16048)*. + * Alignment and layout issues on home and category pages of the Hot Seller section have been resolved. *Fix submitted by Chirag Matholiya in pull request [15893](https://github.com/magento/magento2/pull/15893)*. [GitHub-15213](https://github.com/magento/magento2/issues/15213) + * Updated old font formats of the default fonts (`woff` and `woff2`). *Fix submitted by Daniel Ruf in pull request [15870](https://github.com/magento/magento2/pull/15870)*. [GitHub-15213](https://github.com/magento/magento2/issues/15213) + * We've corrected the return type of methods and typos in `CategoriesJson.php`, `Engine.php`, `UrlRewrite.php`, and `ObserverConfig.php`. *Fix submitted by Saurabh Parekh in pull request [15993](https://github.com/magento/magento2/pull/15993)*. + * `@escapeNotVerified` annotations were replaced in `name.phtml` and `qty.phtml`. *Fix submitted by Riccardo Tempesta in pull request [15532](https://github.com/magento/magento2/pull/15532)*. [GitHub-15501](https://github.com/magento/magento2/issues/15501) + * We've removed redundant function calls in `app/code/Magento/CurrencySymbol/view/adminhtml/templates/grid.phtml`. *Fix submitted by Saurabh Parekh in pull request [15346](https://github.com/magento/magento2/pull/15346)*. [GitHub-15355](https://github.com/magento/magento2/issues/15355) + * `magnifier.js` now works no matter which mode is set. (`magnifier.js` offers the option of setting mode to 'inside' for an in-frame zoom.) *Fix submitted by Kacper Chara in pull request [15382](https://github.com/magento/magento2/pull/15382)*. [GitHub-4977](https://github.com/magento/magento2/issues/4977) + * The Change Password warning message no longer appears twice. *Fix submitted by Sanjay Patel in pull request [15774](https://github.com/magento/magento2/pull/15774)*. [GitHub-14895](https://github.com/magento/magento2/issues/14895) + * You can now add the `NOINDEX,NOFOLLOW` meta tag to the admin scope to instruct Google and other friendly bots to refrain from adding the Admin URL to search results. *Fix submitted by Itay Raz in pull request [17163](https://github.com/magento/magento2/pull/17163)*. + * The Create Account and Password Forget forms now include the required notice for relevant fields. *Fix submitted by Daniel Ruf in pull request [16965](https://github.com/magento/magento2/pull/16965)*. + * Reworked the `addError`, `addSuccess` methods in several files. *Fix submitted by Tiago Sampaio in pull request [16921](https://github.com/magento/magento2/pull/16921)*. + * Minor improvements to `app/code/Magento/CatalogRule/Model/Rule/Job.php` and `app/code/Magento/GroupedProduct/Model/Product/Initialization/Helper/ProductLinks/Plugin/Grouped.php`. *Fix submitted by Vladymyr Hrivinskyi in pull request [16900](https://github.com/magento/magento2/pull/16900)*. + * Refactored `app/code/Magento/User/Controller/Adminhtml/` by removing the direct use of ObjectManager and included the dependencies using constructor dependency injection. *Fix submitted by AnshuMishra17 in pull request [16560](https://github.com/magento/magento2/pull/16560)*. + * `gallery.less` no longer imports `_responsive.less`. *Fix submitted by Karla Saaremäe in pull request [16579](https://github.com/magento/magento2/pull/16579)*. + * Added missing `width` property for the confirmation modal in `lib/web/css/source/components/_modals.less`. *Fix submitted by Vladymyr Hrivinskyi in pull request [16861](https://github.com/magento/magento2/pull/16861)*. + * Removed the redundant `font-size` attribute from the toolbar pager in `lib/web/css/source/lib/_utilities.less`. *Fix submitted by Karla Saaremäe in pull request [16716](https://github.com/magento/magento2/pull/16716)*. + * Updated the "Reporting security issues" section of `README.md` to recommend that users create a bugcrowd account. *Fix submitted by Tommy Quissens in pull request [16685](https://github.com/magento/magento2/pull/16685)*. + * The currency format that was previously broken for some locales now works as expected. Previously, broken currency formats resulted in an incorrect price amount on the product page. *Fix submitted by Vishal Gelani in pull request [15909](https://github.com/magento/magento2/pull/15909)*. [GitHub-11717](https://github.com/magento/magento2/issues/11717) + * Changed the **My Dashboard** string to **My Account** in multiple files. *Fix submitted by Daniel Ruf in pull request [16009](https://github.com/magento/magento2/pull/16009)*. + * Corrected the annotation to the `formatDateTime` function in `lib/internal/Magento/Framework/Stdlib/DateTime/TimezoneInterface.php` file. *Fix submitted by Sanjay Patel in pull request [15602](https://github.com/magento/magento2/pull/15602)*. + * The `clickableOverlay` option now works as expected. *Fix submitted by virtua-pmakowski in pull request [15172](https://github.com/magento/magento2/pull/15172)*. [GitHub-7399](https://github.com/magento/magento2/issues/7399) + * The Instant Purchase module now works as expected. Previously, the `get($type)` method in `/Magento/InstantPurchase/Model/ShippingMethodChoose/DeferredShippingMethodChooserPool.php` threw an exception without showing the shipping method $type as it was hardcoded as 'chooser'. *Fix submitted by Marcel Hauri in pull request [15258](https://github.com/magento/magento2/pull/15258)*. + * Template files now follow Magento standard coding format. *Fix submitted by Vishal Gelani in pull request [15398](https://github.com/magento/magento2/pull/15398)*. + * Corrected `viewModel` to `view_model` where needed in `\Magento\Backend\Block\Template`. *Fix submitted by Abhishek Jakhotiya in pull request [15067](https://github.com/magento/magento2/pull/15067)*. + * Non-well-formed numeric values that were encountered in `app/code/Magento/Directory/Model/Currency.php` have been resolved. *Fix submitted by Mateusz Lerczak in pull request [14833](https://github.com/magento/magento2/pull/14833)*. + * The `README` file for the `magento2` repository now has Maintainers and Contributors sections. *Fix submitted by Stanislav Idolov in pull request [14790](https://github.com/magento/magento2/pull/14790)*. + * The documentation for `AdapterInterface::update` has been improved. *Fix submitted by Navarr Barnier in pull request [14769](https://github.com/magento/magento2/pull/14769)*. + * The product video feature is now GDPR-compliant. ### Gift cards + * Magento now displays the **Credit Memo** link at the top of the page for orders with a total of 0 (zero). Previously, this link was missing, which prevented users from creating a credit memo for the order. + * You can now save gift cards without the price being changed on the Admin to an unacceptable format. Previously, Magento tried to save amounts in unacceptable formats (such as the inclusion of a comma in a four-digit price), which triggered an error. + * Magento no longer permits users to save a new gift card without first completing the required values. Previously, when creating a gift card, users could save the card without having designated an amount, but the card could not be purchased. Magento also created a `report.CRITICAL: Warning` error message in the `system.log`. + * Orders now retain gift message information on both item and order level. Previously, gift messages disappeared from an order when a customer logged into his account during checkout. + * Magento now maintains relationships between new gift card accounts when a customer purchases several gift cards in the same order. + * Magento now refunds only the exact amount used on a gift card if only the part of the gift card was used. Previously, when a customer used a gift card account code to partially pay for an order, and Magento subsequently created a credit memo for a portion of the order, the full amount of the gift card was refunded. + * Magento now generates the same number of gift card codes when the full order is invoiced as the customer selected when creating an order. Previously, for orders that included both physical products and multiple gift cards, the number of gift card codes generated on an order corresponded to the quantity of the previous physical line items that the user had added to the cart before adding gift cards. ### Gift message + * Orders now retain gift message information on both item and order level. Previously, gift messages disappeared from an order when a customer logged into his account during checkout. ### Google Analytics + * Google analytics pageview is no longer triggered twice. *Fix submitted by Torben Höhn in pull request [15765](https://github.com/magento/magento2/pull/15765)*. [GitHub-12221](https://github.com/magento/magento2/issues/12221) + * `Magento\GoogleAnalytics\Observer\SetGoogleAnalyticsOnOrderSuccessPageViewObserver` is now covered by unit tests. *Fix submitted by Yaroslav Rogoza in pull request [17137](https://github.com/magento/magento2/pull/17137)*. ### Google Tag Manager + * The `addToCart` event triggers on the Google Task Manager console only when an item is added to the cart. Previously, the event was triggered before the cart was updated. + * Google Analytics events are now triggered as expected. Specifically, the `addToCart` and `removeFromCart` events are not triggered until after a customer adds a product to the mini cart. + * Magento now accurately updates the mini cart when a customer removes a product while accessing a storefront using Internet Explorer 11.x. Previously, when a customer removed a product from the mini cart, Magento did not remove the product but instead threw this error, `(SCRIPT438: Object doesn't support property or method 'find'. File: sidebar.js, Line: 237, Column: 13 )`. + * Google Tag Manager product category data is now fully reported. Previously, the Google Tag Manager product category (Enhanced Ecommerce) data did not report all information. ### HTML + * Responsive table headers now work as expected. Previously, when no heading was present in the `data-th` attribute on a column for a responsive table in Magento, only a colon was present. *Fix submitted by Sean Templeton in pull request [16517](https://github.com/magento/magento2/pull/16517)*. + * Corrected HTML syntax in the `report.phtml` error template. *Fix submitted by abcpremium in pull request [15454](https://github.com/magento/magento2/pull/15454)*. ### Import/export + * Product import now updates the **Enable Qty Increments** field as expected. *Fix submitted by Sergey P in pull request [14379](https://github.com/magento/magento2/pull/14379)*. [GitHub-14351](https://github.com/magento/magento2/issues/14351) + * `Magento_ImportExport` now supports unicode characters in column names. Previously, column names such `vitamin_a_µg` were marked invalid. *Fix submitted by Timon de Groot in pull request [15197](https://github.com/magento/magento2/pull/15197)*. ### Infrastructure + * Magento now sends email when the status of a Return Merchandise Authorization (RMA) changes to Return Received, Approved, or Rejected. Previously, no email was sent to the customer who created the order. + * Return Merchandise Authorization (RMA) calls now return order items and comments as expected. + * The RMA status label now shows on the email that Magento sends to customers when the status of an RMA changes. + * Magento now deselects only the attributes you choose to deselect when you set the **Use Default Value** setting on a store view to **no** for certain attributes. Previously, when you deselected the **Use Default Value** setting on a store view for certain attributes, Magento unselected other attributes as well. + * Magento now deploys the translations in `js-translation.json` file when deploying static content. *Fix submitted by Sergey Dmitruk in pull request [4814](https://github.com/magento/magento2/pull/4814)*. + * Magento now updates the `Enable Qty Increments` field as expected during product import. *Fix submitted by Alexander Lukyanov in pull request [15144](https://github.com/magento/magento2/pull/15144)*. [GitHub-11354](https://github.com/magento/magento2/issues/11354) + * We've expanded the HTTP request class by adding the `isPostRequest` method. *Fix submitted by Pavel Usachev in pull request [12626](https://github.com/magento/magento2/pull/12626)*. + * You can now change only the primary button `font-weight` without changing regular button `font-weight` with LESS variables. *Fix submitted by Karla Saaremäe in pull request [16012](https://github.com/magento/magento2/pull/16012)*. [GitHub-15832](https://github.com/magento/magento2/issues/15832) + * We've added missing properties to the `Magento/Widget` component and removed a reference to a non-existent class in the associated tests. *Fix submitted by Marcel Hauri in pull request [15647](https://github.com/magento/magento2/pull/15647)*. + * We've improved the readability of `app/code/Magento/Backend/Block/Widget/Form/Element/Dependence.php`. *Fix submitted by Valerij Ivashchenko in pull request [16010](https://github.com/magento/magento2/pull/16010)*. + * Template syntax errors in `app/code/Magento/Theme/Block/Html/Breadcrumbs.php` have been corrected. *Fix submitted by Namrata in pull request [15339](https://github.com/magento/magento2/pull/15339)*. [GitHub-15345](https://github.com/magento/magento2/issues/15345) + * The calendar widget (`jQuery UI DatePicker`) now correctly displays more than one month. *Fix submitted by Burlacu Vasilii in pull request [16279](https://github.com/magento/magento2/pull/16279)*. [GitHub-7379](https://github.com/magento/magento2/issues/7379) + * An error with the template notation for `Magento_CatalogWidget` module has been fixed. *Fix submitted by Namrata in pull request [16530](https://github.com/magento/magento2/pull/16530)*. [GitHub-16529](https://github.com/magento/magento2/issues/16529) + * You can now use the `addTabAfter` method to add two or more tabs to the Admin (for example, the Order View page) in the expected order. Previously, Magento did not preserve the correct sort order for the new tabs. *Fix submitted by Tiago Sampaio in pull request [16175](https://github.com/magento/magento2/pull/16175)*. [GitHub-16174](https://github.com/magento/magento2/issues/16174) + * The headers of the User Agent Rules table now align as expected with the content of the table's rows. *Fix submitted by Justin in pull request [16704](https://github.com/magento/magento2/pull/16704)*. [GitHub-16703](https://github.com/magento/magento2/issues/16703) + * We've added `@navigation-level0-item__hover__color` missing variable for mobile and tablet view. *Fix submitted by hitesh-wagento in pull request [16732](https://github.com/magento/magento2/pull/16732)*. [GitHub-15848](https://github.com/magento/magento2/issues/15848) + * Store view home pages in multistore deployments no longer display breadcrumbs. Previously, the first store view in a multistore deployment looked fine, but the other store views included unnecessary breadcrumbs on the home page. *Fix submitted by Oleksandr Kravchuk in pull request [16732](https://github.com/magento/magento2/pull/16732)*. [GitHub-6504](https://github.com/magento/magento2/issues/6504) + * HTML minification now works as expected. *Fix submitted by Ronak Patel in pull request [16916](https://github.com/magento/magento2/pull/16916)*. [GitHub-5316](https://github.com/magento/magento2/issues/5316) + * The type of the `transport` event parameter has been changed to `DataObject`. This change reverts a change from type `DataObject` to `Array()` made in a previous release. *Fix submitted by gwharton in pull request [16599](https://github.com/magento/magento2/pull/16599)*. [GitHub-10210](https://github.com/magento/magento2/issues/10210) + * Transport variable can now be altered in the `email_invoice_set_template_vars_before` event. *Fix submitted by gwharton in pull request [15040](https://github.com/magento/magento2/pull/15040)*. [GitHub-10210](https://github.com/magento/magento2/issues/10210) + * Replaced deprecated methods in the `app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/ApplyRules.php`, `app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/Delete.php`, `app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/Edit.php`, `app/code/Magento/CatalogRule/Controller/Adminhtml/Promo/Catalog/Save.php`, and `app/code/Magento/CatalogRule/Plugin/Indexer/Product/Attribute.php`. *Fix submitted by Tiago Sampaio in pull request [17227](https://github.com/magento/magento2/pull/17227)*. + * Replaced deprecated methods in 44 files. *Fix submitted by Tiago Sampaio in pull request [17035](https://github.com/magento/magento2/pull/17035)*. + * The `template.js` has been updated to make the `jquery` variable consistently use `$`. Previously, JavaScript in the `template.js` sometimes used `jquery` and sometimes `$`, and Magento threw an error when running in Internet Explorer. *Fix submitted by Angelo Maragna in pull request [17129](https://github.com/magento/magento2/pull/17129)*. + * Corrected an undefined class property in the `app/code/Magento/Backend/Block/Media/Uploader.php getConfigJson()` method. *Fix submitted by Prince Patel in pull request [17099](https://github.com/magento/magento2/pull/17099)*. + * Corrected sticky footer in `page-main` container height on mobile devices. *Fix submitted by Denis Belevtsov in pull request [17006](https://github.com/magento/magento2/pull/17006)*. [GitHub-15118](https://github.com/magento/magento2/issues/15118) + * Corrected the return type of methods in `app/code/Magento/Catalog/Controller/Category/View.php`, `app/code/Magento/CatalogSearch/Model/Indexer/Fulltext/Action/DataProvider.php`, and `app/code/Magento/CatalogSearch/Model/ResourceModel/EngineInterface.php`. *Fix submitted by Pratik Oza in pull request [16988](https://github.com/magento/magento2/pull/16988)*. + * Style groups for mobile devices (`max-width`) are now specified in the correct order. *Fix submitted by Tejash Kumbhare in pull request [16959](https://github.com/magento/magento2/pull/16959)*. [GitHub-14476](https://github.com/magento/magento2/issues/14476) + * Corrected the namespace that is defined in `compare.phtml`. *Fix submitted by Ronak Patel in pull request [16978](https://github.com/magento/magento2/pull/16978)*. + * Edited verbose code in `app/code/Magento/Customer/Controller/Account/LoginPost.php`. *Fix submitted by Glenn Cheng in pull request [16928](https://github.com/magento/magento2/pull/16928)*. + * Fixed annotations in the following methods: `lib/internal/Magento/Framework/Acl/AclResource/Config/Converter/Dom.php`, `lib/internal/Magento/Framework/Acl/AclResource/Config/SchemaLocator.php`, and `lib/internal/Magento/Framework/Acl/Loader/ResourceLoader.php`. *Fix submitted by Tiago Sampaio in pull request [16899](https://github.com/magento/magento2/pull/16899)*. + * Removed or edited code comments in the following files: * `app/code/Magento/Backend/Block/Dashboard/Bar.php` @@ -1347,137 +1721,179 @@ Our community contributors have made many helpful, minor corrections to spelling * `app/code/Magento/Sales/view/adminhtml/templates/order/totals.phtml`. *Fix submitted by Pratik Oza in pull request [16891](https://github.com/magento/magento2/pull/16891)*. + * Improved product gallery block helper code (`app/code/Catalog/Block/Adminhtml/Product/Helper/Form/Gallery.php`). *Fix submitted by Valerij Ivashchenko in pull request [16889](https://github.com/magento/magento2/pull/16889)*. + * Removed duplicated string from `app/code/Magento/ProductVideo/i18n/en_US.csv`. *Fix submitted by Valerij Ivashchenko in pull request [16882](https://github.com/magento/magento2/pull/16882)*. + * Refactored code in `dev/tests/static/framework/Magento/Sniffs/NamingConventions/ReservedWordsSniff.php` so that an undefined index warning is no longer triggered when using uppercase reserved word *Fix submitted by Freek Vandeursen in pull request [16785](https://github.com/magento/magento2/pull/16785)*. + * Regex in `ControllerAclTest::getControllerPath()` has been changed to avoid classes that are under a namespace with a controller component (such as controller plugins) being interpreted as controllers. *Fix submitted by Freek Vandeursen in pull request [16707](https://github.com/magento/magento2/pull/16707)*. + * Knockout template files now include a `title` attribute in the `img` tag. *Fix submitted by Namrata in pull request [16691](https://github.com/magento/magento2/pull/16691)*. + * Added `title` attribute to links as needed for compatibility with w3c standards to these files: `app/code/Magento/Backend/view/adminhtml/templates/page/header.phtml`, `app/code/Magento/Backend/view/adminhtml/templates/widget/form/element/gallery.phtml`, `app/code/Magento/Theme/view/frontend/templates/html/bugreport.phtml`, `app/code/Magento/Theme/view/frontend/templates/html/header/logo.phtml`, and `app/code/Magento/Ui/view/base/web/templates/block-loader.html`. *Fix submitted by Namrata in pull request [16689](https://github.com/magento/magento2/pull/16689)*. + * Search icons are now defined by header icon variables. *Fix submitted by Karla Saaremäe in pull request [16559](https://github.com/magento/magento2/pull/16559)*. + * Module namespace is now defined before template path name. Previously, when we overrode any core block to any custom module, Magento threw an error because trying to find the template file in the custom module if the module namespace is not defined before the template path. *Fix submitted by Prince Patel in pull request [16576](https://github.com/magento/magento2/pull/16576)*. + * Corrected the comment for the `Magento_Setup` module `includeClasses` function. *Fix submitted by Namrata in pull request [16549](https://github.com/magento/magento2/pull/16549)*. + * The `module:status` command now clearly provides an easily parsed listing of all enabled and disabled modules. *Fix submitted by Jisse Reitsma in pull request [15543](https://github.com/magento/magento2/pull/15543)*. + * Fixed the `false` value for the `cache_lifetime` argument in `Magento/Swatches/view/frontend/layout/checkout_cart_configure_type_configurable.xml`. *Fix submitted by yuriyDne in pull request [16086](https://github.com/magento/magento2/pull/16086)*. + * CSRF tokens are now considered sensitive strings. *Fix submitted by Robert in pull request [13509](https://github.com/magento/magento2/pull/13509)*. + * Refactored JavaScript code in `popup.phtml` and `popup.js`. *Fix submitted by IvanPletnyov in pull request [16216](https://github.com/magento/magento2/pull/16216)*. + * Removed extraneous cursor property. *Fix submitted by Daniel Ruf in pull request [15305](https://github.com/magento/magento2/pull/15305)*. + * `app/code/Magento/Marketplace/view/adminhtml/templates/partners.phtml` now uses the stored value of the `getPartners` method instead of calling same method again. *Fix submitted by Saurabh Parekh in pull request [15517](https://github.com/magento/magento2/pull/15517)*. + * Added missing lowercase conversion on grouped product assignation. *Fix submitted by Juan Alonso in pull request [15312](https://github.com/magento/magento2/pull/15312)*. + * Removed code responsible for multiple add-to-cart initializations when Magento loads the product listing. *Fix submitted by Vova Yatsyuk in pull request [15409](https://github.com/magento/magento2/pull/15409)*. + * Refactored JavaScript code from `popup.phtml` to meet Magento coding standards. *Fix submitted by Rahul Kachhadiya in pull request [15341](https://github.com/magento/magento2/pull/15341)*. + * Removed redundant PHPdoc comment and deprecated private method `getSerializer` in `\Magento\Customer\Model\Customer\NotificationStorage` class. *Fix submitted by adrian-martinez-interactiv4 in pull request [15262](https://github.com/magento/magento2/pull/15262)*. + * CSS code is now automatically updated in the browser. Previously, users had to press **CTRL+F5** to see CSS changes. *Fix submitted by Alexander Lukyanov in pull request [15144](https://github.com/magento/magento2/pull/15144)*. [GitHub-11354](https://github.com/magento/magento2/issues/11354) + * Concrete type hints for product and category resources have been added to `app/code/Magento/Catalog/Model/Category.php` and `app/code/Magento/Catalog/Model/Product.php` to help with static analysis and IDE autocompletion. *Fix submitted by Yaroslav Rogoza in pull request [15136](https://github.com/magento/magento2/pull/15136)*. + * Replaced `rand` with `rand_int` in several modules. *Fix submitted by Daniel Ruf in pull request [15017](https://github.com/magento/magento2/pull/15017)*. + * Optimized `if-condition` in `/Magento/Catalog/Controller/Adminhtml/Product/Initialization/Helper/AttributeFilter.php`. *Fix submitted by Valerij Ivashchenko in pull request [15002](https://github.com/magento/magento2/pull/15002)*. + * We've upgraded to Node.js 8 from Node.js 6. *Fix submitted by Daniel Ruf in pull request [15018](https://github.com/magento/magento2/pull/15018)*. + * Replaced `template/path` with `Module_Name::template/path` in the block class to ensure extensibility of the class. Previously, if the source block classes referenced a template without specifying the module name, then block render failed with this error: `Invalid template file`. *Fix submitted by Abhishek Jakhotiya in pull request [14946](https://github.com/magento/magento2/pull/14946)*. + * Replaced the `\Magento\Backend\Helper\Data` parameter with `\Magento\Backend\Model\UrlInterface` to make them identical with the constructor. *Fix submitted by Abhishek Jakhotiya in pull request [14946](https://github.com/magento/magento2/pull/14946)*. + * The return type of `addToCartPostParams` in `app/code/Magento/Catalog/Block/Product/ListProduct.php` has been changed to array. *Fix submitted by Sean Templeton in pull request [14946](https://github.com/magento/magento2/pull/14946)*. + * Datepicker now correctly converts date formats in locales other than `en-US`. *Fix submitted by Tao Sasaki in pull request [14627](https://github.com/magento/magento2/pull/14627)*. + * `default_head_blocks.xml` now contains the `order` attribute for setting the load order of stylesheets. *Fix submitted by Tao Sasaki in pull request [14290](https://github.com/magento/magento2/pull/14290)*. + * Magento now displays validation messages on the advanced search form as expected if you submit the advanced search form without entries. [GitHub-8131](https://github.com/magento/magento2/issues/8131) + * `\Magento\Framework\Reflection\TypeProcessor` methods have been simplified. + * Magento no longer unsets the taxed shipping total information before returning the total tax. ### JavaScript + * Refactored the JavaScript code of the button split widget. *Fix submitted by amittiwari024 in pull request [15351](https://github.com/magento/magento2/pull/15351)*. [GitHub-15354](https://github.com/magento/magento2/issues/15354) ### Klarna + * Magento no longer throws multiple JavaScript errors when a customer selects Klarna from the Review & Payments page. ### Module Manager + * Module Manager module grid now works as expected. *Fix submitted by Alex Gusev in pull request [15211](https://github.com/magento/magento2/pull/15211)*. [GitHub-15192](https://github.com/magento/magento2/issues/15192) ### Newsletter + * Guest users can now sign up for newsletters for multiple stores. Previously, when a guest user signed up for a newsletter from multiple stores, Magento sent a subscription confirmation message, but did not successfully subscribe the user. + * Magento now correctly updates newsletter subscriptions when the customer is registered on two stores. Previously, when the customer tried to subscribe to the newsletter from a second store, Magento displayed this message, `You are (not) subscribed to "General Subscription"`. + * The newsletter subscription confirmation message does not display after a customer clicks the link that is included in the confirmation email. *Fix submitted by Kaushik Chavda in pull request [15247](https://github.com/magento/magento2/pull/15247)*. [GitHub-14747](https://github.com/magento/magento2/issues/14747) + * Magento now sends a confirmation request email to the customer when she unsubscribes to a newsletter. *Fix submitted by Lyzun Oleksandr in pull request [15464](https://github.com/magento/magento2/pull/15464)*. [GitHub-15218](https://github.com/magento/magento2/issues/15218) + * Removed the direct use of the object manager and loaded the dependency via constructor dependency injection in `app/code/Magento/Newsletter/Controller/Adminhtml/Subscriber/MassDelete.php` and `app/code/Magento/Newsletter/Controller/Adminhtml/Subscriber/MassUnsubscribe.php`. *Fix submitted by AnshuMishra17 in pull request [16851](https://github.com/magento/magento2/pull/16851)*. + * Newsletter registration now works the same when registered customers subscribe from My Account and or from the newsletter block. *Fix submitted by Lyzun Oleksandr in pull request [15479](https://github.com/magento/magento2/pull/15479)*. + * Removed the redundant return statement from `getJsTemplateName` function comment in the `Magento_Newsletter`'s block file. *Fix submitted by Namrata in pull request [16645](https://github.com/magento/magento2/pull/16645)*. ### Payment methods @@ -1485,87 +1901,113 @@ Our community contributors have made many helpful, minor corrections to spelling #### Braintree + * You can now cancel an order that was placed with Braintree when the Braintree authorization had expired. + * All invoices now have the merchant account ID set in the store configuration for the Braintree payment method. Previously, the default merchant account ID was sent to Braintree for any subsequent partial order invoices after the initial invoice is generated. + * Braintree configuration (`app/code/Magento/Braintree/etc/adminhtml/system.xml`) now contains `showInStore` attributes. *Fix submitted by Andreas Schrammel in pull request [16458](https://github.com/magento/magento2/pull/16458)*. + * Magento now retains the correct address information when a customer using Braintree's **Pay with PayPal** button to complete an order navigates back to the shipping step and changes the shipping address fields. *Fix submitted by Vova Yatsyuk in pull request [15133](https://github.com/magento/magento2/pull/15133)*. #### PayPal + * Customers can now continue creating an order after a PayFlow Pro payment has been declined. Previously, under these circumstances. the customer could not continue his purchase. + * Paypal Onboarding has been configured to work for merchants from countries other than the United States. + * Magento now accurately displays the status of PayPal orders. Previously, the status of PayPal orders was displayed only as **Processing**. + * Magento no longer sends duplicate order confirmation emails when a customer uses PayPal Express to complete an order. *Fix submitted by Rocket Web in pull request [14820](https://github.com/magento/magento2/pull/14820)*. + * Tax amount calculation for payments processed through PayPal now works as expected. Previously, Magento sent the wrong amount to PayPal when a discount was applied to an order. + * The `Allmethods config` source model now reports the full list of payment methods as expected. *Fix submitted by Manuel Schmid in pull request [15032](https://github.com/magento/magento2/pull/15032)*. [GitHub-13460](https://github.com/magento/magento2/issues/13460) + * You can now cancel an order placed through Cybersource when the fraud filters are triggered. + * Magento now emails customer order confirmations for orders that are placed through Worldpay. + * Magento now correctly applies free shipping to an order after the customer applied the free shipping code during checkout. + * Magento no longer sends Admin orders to Signifyd for review when Signifyd is disabled on the website on which the administrator is logged in. + * Magento now successfully creates shipping labels for a return merchandise authorization (RMA) when using FedEx Smart Post as the shipping option. Previously, Magento threw an error under these circumstances. + * Magento now sends email about payment failures to customers. Previously, Magento did not send a customer email, but instead logged an error in `support.log`, and displayed this message on the storefront, **Transaction has been declined. Please try again later**. + * Magento no longer throws an error when multiple payment methods are enabled. Previously, when a merchant tried to enable more than one payment method from the Admin, Magento displayed this error in the console, `Found elements with non-unique id billing-address-form`. *Fix submitted by Neeta Kangiya in pull request [15349](https://github.com/magento/magento2/pull/15349)*. [GitHub-15348](https://github.com/magento/magento2/issues/15348) + * Magento now sends order confirmation emails as expected for orders purchased with WorldPay. + * A type error in the payment void method of the Authorizenet module has been fixed. *Fix submitted by Oleh Kravets in pull request [16194](https://github.com/magento/magento2/pull/16194)*. [GitHub-16184](https://github.com/magento/magento2/issues/16184) ### Pagecache + * Full-page cache now works as expected in multistore deployments. Previously, when you opened the URL of a non-default store in a multistore deployment, full-page cache did not return the URL. ### Performance + * The catalog rule re-indexing operation has been optimized, and average re-indexing time (which depends on rule conditions) has improved by more than 80%. Previously, a full catalog rule re-index operation on a medium B2C store took more than 20 minutes. + * Merchants can now improve store performance by disabling Magento Report functionality if business function does not require this capability. A new configuration setting (**System Configuration**: **General** > **Reports** > **General Options**) allows merchants to disable Magento Reports, which is recommended practice if a merchant's business function does not require this capability. + * You can change store locale without the exporting and importing configuration process. While Magento is in Production and the `SCD_ON_DEMAND` is enabled, the Magento store and admin locale options are available. See [Change locales]({{ page.baseurl }}/cloud/live/sens-data-over.html#change-locales). + * The time required to load category or product pages for products that are configured with many attributes (more than 500) has been significantly reduced. Refactoring the logic for product attribute retrieval has resulted in a reduction of load time of almost 90% for certain scenarios. + * The time required to load a store’s home page has been reduced noticeably when the top menu contains many categories. (Load time is still affected by the number of categories and the structure of the top menu.) + * The speed of catalog price rule save operations has been improved by these changes: * elimination of unnecessary reindexing @@ -1573,156 +2015,199 @@ Our community contributors have made many helpful, minor corrections to spelling * improvement to the way that the `getMatchingProductIds` function fetches products, which has eliminated unnecessary checks of the data set. *Fix submitted by Andrey Zabara in pull request [14707](https://github.com/magento/magento2/pull/14707)*. + * The ID to SKU lookup process for tier prices has been optimized. Previously, with a large number of tier or group prices, each tier would separately make a database query to look up the associated SKU. *Fix submitted by Todd Christensen in pull request [14699](https://github.com/magento/magento2/pull/14699)*. ### Product video + * Magento now populates the YouTube video URL and Title fields with the same values as are populated on the default store view on multisite deployments. (These fields are global scope attributes and should be the same on all storefronts.) Previously, Magento left these fields blank in multisite deployments. ### Quote + * Magento now displays the correct product price for an order created from the Admin in multisite deployments. Previously, when an order was created from the Admin in a multisite deployment where products were assigned different prices per store view, Magento defaulted to the product price of the primary storeview if the order was edited or updated. *Fix submitted by Riccardo Tempesta in pull request [14904](https://github.com/magento/magento2/pull/14904)*. [GitHub-14869](https://github.com/magento/magento2/issues/14869) + * Magento now successfully saves the value of `REMOTE_IP` when a customer uses an IPV6 (Internet Protocol version 6) address. Previously, this value was only partially saved in the `sales_order` and `quote` tables. *Fix submitted by George Schiopu in pull request [14976](https://github.com/magento/magento2/pull/14976)*. [GitHub-10395](https://github.com/magento/magento2/issues/10395) + * Coupon codes now work for guest users through the web API as well as from the storefront. *Fix submitted by Marcin Dykas in pull request [15320](https://github.com/magento/magento2/pull/15320)*. [GitHub-14056](https://github.com/magento/magento2/issues/14056) + * Magento no longer runs an SQL query on every item in the database when a quote is empty, which has improved the performance of the checkout process. *Fix submitted by Sean Templeton in pull request [16675](https://github.com/magento/magento2/pull/16675)*. ### Reports + * The timezone has been removed from the date when Magento retrieves the current month from a UTC timestamp. *Fix submitted by Prince Patel in pull request [16584](https://github.com/magento/magento2/pull/16584)*. [GitHub-15940](https://github.com/magento/magento2/issues/15940) ### Review + * Removed the unused class declaration from controller's index action and the unused code in the comment block from the template file in `app/code/Magento/Review/view/frontend/templates/redirect.phtml` and `app/code/Magento/Version/Controller/Index/Index.php`. *Fix submitted by Yogesh Suhagiya in pull request [15173](https://github.com/magento/magento2/pull/15173)*. ### Rule + * A cart rule that uses a `subselection` condition now works as executed. Previously, cart rules with this condition automatically granted a discount. + * The retrieval of first array elements in the following files has been improved: `app/code/Magento/Rule/Model/Action/AbstractAction.php` and `app/code/Magento/Rule/Model/Condition/Combine.php`. *Fix submitted by Thomas Klein in pull request [16053](https://github.com/magento/magento2/pull/16053)*. [GitHub-15940](https://github.com/magento/magento2/issues/15940) + * The condition category chooser now handles multiple nested categories as expected. Previously, if a cart rule contained several nested categories, no categories appeared on the page, the page became unresponsive, and eventually crashed. *Fix submitted by Keith Bentrup in pull request [15265](https://github.com/magento/magento2/pull/15265)*. [GitHub-15121](https://github.com/magento/magento2/issues/15121) ### Sales + * Order status now remains in the Complete state after Magento refunds store credit on a partial credit memo. Previously, under these circumstances, Magento changed the status of the order to Closed. + * You can now create multiple credit memos in one session and save each successfully. Previously, Magento displayed this error when you tried to save a second credit memo after creating the first memo: `Could not save credit memo`. + * Magento now displays any errors that occur during order creation in the browser console. Previously, Magento displayed this message: `Uncaught ReferenceError: order is not defined during order creation` instead of a specific error message. + * The `POST /V1/shipment` endpoint processes `tracks` arrays as expected. + * Magento no longer reverts to the country associated with the default website when a customer edits the billing address for an order. Previously, if a customer edited the shipping address for an order, Magento would reset the billing address to the default address specified for the default website. + * Credit memo email template file incorrect object types have been corrected. Previously, when a merchant created a credit memo and checked the **Email** checkbox, Magento threw an error. *Fix submitted by Joseph Maxwell in pull request [16438](https://github.com/magento/magento2/pull/16438)*. + * Performance issues that resulted from disabling invoice emails have been resolved. + * The Invoices grid now reflects changes in invoice state as expected. *Fix submitted by JeroenVanLeusden in pull request [16286](https://github.com/magento/magento2/pull/16286)*. + * You can now set the `is_visible_on_front` parameter from the `addStatusHistoryComment` of the order mode. Previously, you could set the `is_visible_on_front` parameter from the Admin only. *Fix submitted by Mark Shust in pull request [15637](https://github.com/magento/magento2/pull/15637)*. + * Module name space is now declared before the template pathname in `Magento_Sales::order/info.phtml`. *Fix submitted by Ronak Patel in pull request [16206](https://github.com/magento/magento2/pull/16206)*. + * The `addFieldToFilter` has been added to `addressCollection` in `app/code/Magento/Sales/Setup/UpgradeData.php`, which optimizes the process of collecting addresses during upgrade. *Fix submitted by Dmytro Cheshun in pull request [15615](https://github.com/magento/magento2/pull/15615)*. + * Invoice prefixes now contain the correct store ID when Magento is deployed in a multistore environment. Previously, Magento always created the invoice number using the default store view ID. *Fix submitted by Sanjay Patel in pull request [15615](https://github.com/magento/magento2/pull/15615)*. [GitHub-14063](https://github.com/magento/magento2/issues/14063) + * The `GET /V1/orders/items/{id}` request now returns `parent_item`. *Fix submitted by Sanjay Patel in pull request [15615](https://github.com/magento/magento2/pull/15615)*. ### Sales rules + * Cart price rules with associated coupons are no longer affected by edits to scheduled updates. + * The `discount` label in the `app/code/Magento/SalesRule/view/frontend/web/js/view/summary/discount.js` file is now compatible with custom module discount. *Fix submitted by Rodrigo Santellan in pull request [16093](https://github.com/magento/magento2/pull/16093)*. ### Search + * Magento no longer throws an error when a customer uses quick search to search on a term that does not exist in the search database. Previously, Magento returned this error, `TypeError: this._getFirstVisibleElement(...).addClass is not a function`. *Fix submitted by Julien ANQUETIL in pull request [14839](https://github.com/magento/magento2/pull/14839)*. [GitHub-14274](https://github.com/magento/magento2/issues/14274) + * Customers can now use the **Enter** key to submit searches from a page header. Previously, when a customer used the **Enter** key to submit a search query, event handlers that were bound to the form submit (through jQuery) were fired twice. *Fix submitted by Amjad M in pull request [15340](https://github.com/magento/magento2/pull/15340)*. [GitHub-13793](https://github.com/magento/magento2/issues/13793) + * Swagger now handles `searchCriteria`-related requests as expected. *Fix submitted by Jakub in pull request [15040](https://github.com/magento/magento2/pull/15040)*. [GitHub-15322](https://github.com/magento/magento2/issues/15322) + * The Admin panel search now filters catalogs as expected. Previously, if a merchant tried to narrow a search when using the Search tool in the Admin panel, Magento displayed the full catalog view without narrowing down the list. *Fix submitted by Pavel in pull request [12735](https://github.com/magento/magento2/pull/12735)*. [GitHub-7861](https://github.com/magento/magento2/issues/7861) + * You can now use an asterix when searching on customer names. Previously, if you used an asterix in a search query, Magento displayed this message, `Something went wrong with processing the default view and we have restored the filter to its original state.` *Fix submitted by Riccardo Tempesta in pull request [14905](https://github.com/magento/magento2/pull/14905)*. [GitHub-14855](https://github.com/magento/magento2/issues/14855) + * Magento now displays validation messages as needed on advanced searches. Previously, Magento did not display a message even after a customer submitted the advanced search form with no entries. *Fix submitted by Ben Robie in pull request [16952](https://github.com/magento/magento2/pull/16952)*. [GitHub-8131](https://github.com/magento/magento2/issues/8131) + * Server load has been reduced for advanced searching. Previously, when a customer entered text in the search suggestion box, Magento immediately sent every character to the server. The auto-complete box now delays sending the request. *Fix submitted by Sean Templeton in pull request [16669](https://github.com/magento/magento2/pull/16669)*. + * You can now successfully clone the minisearch widget. *Fix submitted by Daniel Ruf in pull request [15485](https://github.com/magento/magento2/pull/15485)*. ### Shipping + * The shipping and estimated tax form now display country, city, and postcode fields as expected. *Fix submitted by [Alexander Kras'ko](https://github.com/0m3r) in pull request [16213](https://github.com/magento/magento2/pull/16213)*. [GitHub-8222](https://github.com/magento/magento2/issues/8222) + * A method with a misspelled name was deprecated and the new method with correct spelling added to `app/code/Magento/Multishipping/Block/Checkout/AbstractMultishipping.php`. *Fix submitted by Anna Völkl in pull request [15514](https://github.com/magento/magento2/pull/15514)*. ### Store + * Magento now adds the correct store code to product URLs in stores with more than one store view when **Stores** > **Settings** > **Configuration** > **General** > **Web** > **Add Store Code to Urls** is set to **yes**. *Fix submitted by Elias Kotlyar in pull request [15566](https://github.com/magento/magento2/pull/15566)*. [GitHub-15565](https://github.com/magento/magento2/issues/15565) + * Magento now displays store views as expected when you select **Stores** > **Terms and Conditions**. *Fix submitted by afirlejczyk in pull request [14546](https://github.com/magento/magento2/pull/14546)*. [GitHub-13944](https://github.com/magento/magento2/issues/13944) #### Elasticsearch + * Bundle products are now indexed as expected in Elasticsearch. + * Elasticsearch now correctly calculates the relevance of quick search results according to selected attribute search weights. #### Admin global search + * Admin global search preview now works as expected. Previously, this feature worked inconsistently, and search results differed depending on which area was being searched (for example, Products, Categories, or Customers). + * The Admin global search now returns results that match the keyword for all available pages, or if a user searches in specific sections, the search feature now returns only the results that matched the key words in those specific sections. Previously, the Admin global search did not return results that matched the specified keywords and did not restrict results to specified sections. + * Catalogs are now correctly filtered by the Admin search bar. Previously, if you attempted to use the Search tool in the Admin, and selected "XX in Products", Magento displayed the full catalog view without narrowing down the list. *Fix submitted by Pavel in pull request 12735*. [GitHub-12193](https://github.com/magento/magento2/issues/12193), [GitHub-7861](https://github.com/magento/magento2/issues/7861) ### Shipping @@ -1732,59 +2217,75 @@ You can find Magento Shipping-specific release notes in [Magento Shipping Releas + * The free shipping cart price rule now works as expected when **UPS shipping method** is enabled and **Free Shipping** is set to "For matching items only". + * The shipping progress dates displayed in tracking popup for FedEx shipping are now accurate. ### Sitemap + * Sitemaps generated by `cron` no longer display `/pub/` in image URLs when `docroot` is set to `/pub`. Previously, if the `docroot` was set to `pub` and `BASE MEDIA URL` was not set, the cron-generated sitemap generated incorrect image URLs. + * Magento now generates correct product URLs for sitemaps. Previously, when the **Use Categories Path for Product URLs** attribute was set to **no** in **Configuration** > **Catalog** > **Search Engine Optimization**, Magento generated the wrong product URL in the sitemap. + * Images in XML sitemap are no longer always linked to the primary store in a multistore deployment. *Fix submitted by Steven de Jong in pull request [15689](https://github.com/magento/magento2/pull/15689)*. [GitHub-15588](https://github.com/magento/magento2/issues/15588) + * Split sitemaps now use the index sitemap name as a prefix. Previously, when generating large sitemaps that result in a single index sitemap and several smaller split sitemap files, the split sitemap files did not use the same name prefix as the parent. *Fix submitted by James Halsall in pull request [14836](https://github.com/magento/magento2/pull/14836)*. ### Staging + * Banners remain assigned to a cart rule after a staging Update is applied. Previously, a banner was unassigned from the cart rule after a staging update was applied. + * Magento now rolls back updated changes to their pre-update state when a merchant deletes an active Scheduled Update. Previously, some products were removed from their assigned categories (and categories were removed from the Admin) when an active product update was deleted. + * You can now successfully re-order a configurable product. Previously, a schedule update for one configurable product affected other ordered configurable products. + * Magento no longer unexpectedly locks up CMS pages when a merchant changes a scheduler end date. Previously, when a merchant updated the end date for a CMS page after the current scheduler ended, Magento generated an error, and the merchant could no longer access any CMS page from the Admin. + * Merchants can now edit a schedule update as expected. Previously, updating schedule data removed the product from the Admin product list. + * Magento no longer deletes products from the Admin product list after a merchant deletes its active schedule update. This deletion only appeared after the scheduled update time. + * Magento no longer throws an error when a merchant edits a product from the Admin when reviews are disabled. *Fix submitted by Oleksandr Kravchuk in pull request [70](https://github.com/magento/magento2/pull/70)*. [GitHub-6264](https://github.com/magento/magento2/issues/6264) + * Scheduled updates to an existing group price or special price no longer remove the previously configured price. Previously, Magento removed the configured price or reverted the price to its original value after the scheduled update expired. ### Store + * The `getUrlInStore()` method no longer returns URLs that contain the store code, which has shortened the extremely long URLs it previously returned. *Fix submitted by Burlacu Vasilii in pull request [16468](https://github.com/magento/magento2/pull/16468)*. [GitHub-16273](https://github.com/magento/magento2/issues/16273) ### Swatches + * The process of switching attribute input type has been fixed, which resolves multiple issues that customers were experiencing when working with swatches, including: * inability to change attribute types from `swatch` to `dropdown` @@ -1796,196 +2297,255 @@ You can find Magento Shipping-specific release notes in [Magento Shipping Releas ### Tax + * Redundant product tax recalculation has been reduced during the loading of category pages, which has improved page loading. *Fix submitted by JeroenVanLeusden in pull request [15089](https://github.com/magento/magento2/pull/15089)*. [GitHub-14941](https://github.com/magento/magento2/issues/14941) + * JavaScript code in the `*.phtml` file of the Tax module has been refactored to meet Magento coding standards. *Fix submitted by Vishal Gelani in pull request [15343](https://github.com/magento/magento2/pull/15343)*. [GitHub-15352](https://github.com/magento/magento2/issues/15352) + * The `Invalid country code` error message that sometimes occurred during import of tax CSV files now includes the name of the country whose data is causing the error. Previously, the message did not identify which country's data caused the error. *Fix submitted by Adam Moss in pull request [16873](https://github.com/magento/magento2/pull/16873)*. ### Testing + * The `testGetIgnoresFirstSlash` method in `ObjectManagerTest` has been updated. *Fix submitted by Prince Patel in pull request [17098](https://github.com/magento/magento2/pull/17098)*. + * The `\Magento\Backup\Model\Db` model is now covered by unit tests. *Fix submitted by Yaroslav Rogoza in pull request [17063](https://github.com/magento/magento2/pull/17063)*. + * Corrected block name in the `Magento_Framework` test XML file. *Fix submitted by Namrata in pull request [16646](https://github.com/magento/magento2/pull/16646)*. + * Metadata titles in `lib/internal/Magento/Framework/View/Page/Config.php` are now covered by a unit test. *Fix submitted by Lorenzo Stramaccia in pull request [16333](https://github.com/magento/magento2/pull/16333)*. + * The `\Magento\Checkout\Model\Cart\CollectQuote` class is now covered by a unit test. *Fix submitted by Chitoraga Eduard in pull request [16271](https://github.com/magento/magento2/pull/16271)*. ### Theme + * Merchants can now successfully change the applied theme. Previously, Magento displayed an error when a merchant tried to save changes to the applied theme on **Content** > **Design** > **Configuration**. *Fix submitted by Daniel Ruf in pull request [15137](https://github.com/magento/magento2/pull/15137)*. [GitHub-13530](https://github.com/magento/magento2/issues/13530) + * Merchants can now successfully change the applied theme setting for a store view (**Content** > **Design** > **Configuration**). *Fix submitted by Daniel Ruf in pull request [15137](https://github.com/magento/magento2/pull/15137)*. [GitHub-14968](https://github.com/magento/magento2/issues/14968) + * Changing the `@tab-content__border` variable in Blank theme now works as expected. *Fix submitted by hitesh-wagento in pull request [15914](https://github.com/magento/magento2/pull/15914)*. [GitHub-14999](https://github.com/magento/magento2/issues/14999) ### Translation + * The `translation.json` file now contains translatable strings for the phrases "Store Credit" and "Gift Card". Previously, these strings were not translated for the shopping cart, one-page checkout, or order view in the customer account on the storefront. + * We've added client-side caching of `js-translation.js`. + * Removed the unused translation for `comment` tag from these files: `app/code/Magento/Analytics/etc/adminhtml/system.xml`, `app/code/Magento/Catalog/etc/adminhtml/system.xml`, `app/code/Magento/Swatches/etc/adminhtml/system.xml`, and `app/code/Magento/Ups/etc/adminhtml/system.xml`. *Fix submitted by Yaroslav Rogoza in pull request [15604](https://github.com/magento/magento2/pull/15604)*. + * Added language translation capability for `comment` tags in the `system.xml` file of the Signifyd module. *Fix submitted by Yogesh Suhagiya in pull request [15364](https://github.com/magento/magento2/pull/15364)*. [GitHub-15361](https://github.com/magento/magento2/issues/15361) + * All previously unsupported `translate` tags in the mini cart template are now supported. *Fix submitted by VitaliyBoyko in pull request [15782](https://github.com/magento/magento2/pull/15782)*. + * The string for `moreButtonText` in `app/code/Magento/Swatches/view/frontend/web/js/swatch-renderer.js` can now be translated. *Fix submitted by Karla Saaremäe in pull request [16190](https://github.com/magento/magento2/pull/16190)*. [GitHub-16079](https://github.com/magento/magento2/issues/16079) + * Added language translation capability to the Braintree module's template file. *Fix submitted by Namrata in pull request [16690](https://github.com/magento/magento2/pull/16690)*. + * Added mini cart checkout-related translations that were missing from `app/code/Magento/Checkout/i18n/en_US.csv`. *Fix submitted by JeroenVanLeusden in pull request [16553](https://github.com/magento/magento2/pull/16553)*. + * Added language translation capability for labels in the Braintree, Multishipping, and PayPal modules. *Fix submitted by Rahul Kachhadiya in pull request [15371](https://github.com/magento/magento2/pull/15371)*. + * Added language translation capability for message strings in `app/code/Magento/AdminNotification/Controller/Adminhtml/System/Message/ListAction.php` and `app/code/Magento/AdminNotification/i18n/en_US.csv`. *Fix submitted by Yogesh Suhagiya in pull request [15333](https://github.com/magento/magento2/pull/15333)*. ### UI + * The `clickableOverlay` option now works as expected, which improves the performance of modal popups. *Fix submitted by virtua-pmakowski in pull request [15172](https://github.com/magento/magento2/pull/15172)*. [GitHub-7399](https://github.com/magento/magento2/issues/7399) + * Customers can now place orders from grouped products where the quantity of subproducts is less than one. *Fix submitted by Valerij Ivashchenko in pull request [14752](https://github.com/magento/magento2/pull/14752)*. [GitHub-14692](https://github.com/magento/magento2/issues/14692) + * Footers now behave as expected when displaying Magento on a mobile device. *Fix submitted by Chirag Matholiya in pull request [15353](https://github.com/magento/magento2/pull/15353)*. [GitHub-15118](https://github.com/magento/magento2/issues/15118) + * The pagination of customer group prices in Advanced Pricing when viewed on the Admin now works as expected. *Fix submitted by Dmytro Cheshun in pull request [15614](https://github.com/magento/magento2/pull/15614)*. [GitHub-15210](https://github.com/magento/magento2/issues/15210) + * Magento now displays a caret icon as expected when a user hovers his mouse over a navigation category on a storefront. *Fix submitted by Tejash Kumbhare in pull request [16082](https://github.com/magento/magento2/pull/16082)*. [GitHub-15220](https://github.com/magento/magento2/issues/15220) + * Users can now press the **Esc** button on the delete-from-cart confirmation pop-up window without generating a `jQuery` UI error. Previously, when a customer added a product to the shopping cart, then pressed the trash icon to delete it, Magento displayed this confirmation pop-up window, but threw an error when the customer pressed the window's **Esc** button. *Fix submitted by [Alexander Kras'ko](https://github.com/0m3r) in pull request [16477](https://github.com/magento/magento2/pull/16477)*. [GitHub-14593](https://github.com/magento/magento2/issues/14593) + * The alignment **Title** and **Items** on the left bar has been corrected. *Fix submitted by Rafael Corrêa Gomes in pull request [16984](https://github.com/magento/magento2/pull/16984)*. + * The black color coding standard has been changed from `color: #000;` to `color: @color-black;`. *Fix submitted by Chirag Matholiya in pull request [17019](https://github.com/magento/magento2/pull/17019)*. + * The white color coding standard has been changed from `color: #fff;` to `color: @color-white;`. *Fix submitted by Chirag Matholiya in pull request [16903](https://github.com/magento/magento2/pull/16903)*. + * Minor issues with the dynamically defined ``$filter`` property and missing throws to PHPDocs for methods in the UI export converter classes have been corrected. *Fix submitted by Dmytro Cheshun in pull request [15694](https://github.com/magento/magento2/pull/15694)*. + * The `ClassMagento\Ui\Component\Control\ActionPool` constructor and `getConfiguration()` in the UI module are now invoked with the correct number of parameters. *Fix submitted by Marcel Hauri in pull request [15512](https://github.com/magento/magento2/pull/15512)*. + * Unneeded JavaScript was removed from `logout.phtml` and replaced with a new JavaScript component. *Fix submitted by Nimesh Patel in pull request [15301](https://github.com/magento/magento2/pull/15301)* + * Page wrapper CSS has been moved from media query to `.page-wrapper`. *Fix submitted by Vishal Gelani in pull request [15416](https://github.com/magento/magento2/pull/15416)*. + * The `font-size` variable has been updated and standardized. *Fix submitted by Vishal Gelani in pull request [15421](https://github.com/magento/magento2/pull/15421)*. + * Layout arguments now support for the `const` type. *Fix submitted by Igor Vitol in pull request [15058](https://github.com/magento/magento2/pull/15058)*. + * Button definitions have been moved to the new `buttons.js` file. *Fix submitted by Jisse Reitsma in pull request [15194](https://github.com/magento/magento2/pull/15194)*. + * Overlay issues with the mini cart have been resolved. Previously, if you logged in as a customer, then clicked on the mini cart icon and then the Account menu, the mini cart overlaid the Account menu. *Fix submitted by Arthur James in pull request [14963](https://github.com/magento/magento2/pull/14963)*. + * Magento now supports multiple `ui_components` with layout type `tabs` on a page. Previously, the second UI component failed to render, and Magento displayed this error, `Element with ID 'tabs_nav' already exists`. *Fix submitted by Freek Vandeursen in pull request [14742](https://github.com/magento/magento2/pull/14742)*. + * The order of style groups for mobile devices has been corrected. [GitHub-14476](https://github.com/magento/magento2/issues/14476) + * Dynamic data rows no longer fail due to a read operation after a delete condition. Previously, Magento threw an undefined JavaScript error. *Fix submitted by Chirag Matholiya in pull request [15840](https://github.com/magento/magento2/pull/15840)*. [GitHub-911](https://github.com/magento-engcom/msi/issues/911) ### URL rewrites + * Categories of the Main menu in the different store view are now updated when Varnish is enabled. + * URL key values are now derived from the default value set on the default store. Previously, Magento derived the product URL key value from the product name on storeview level. + * The Magento URL rewrite functionality now supports the use of special characters in category names. Previously, the category tree did not load if a category name contained a special character. *Fix submitted by Vinay Shah in pull request [13397](https://github.com/magento/magento2/pull/13397)*. [GitHub-13296](https://github.com/magento/magento2/issues/13296) + * An unnecessary parameter has been removed from `_addProductLinkBlock()`. *Fix submitted by Saurabh Parekh in pull request [15891](https://github.com/magento/magento2/pull/15891)*. + * Template files have been refactored to follow Magento coding standards. *Fix submitted by Nimesh Patel in pull request [15422](https://github.com/magento/magento2/pull/15422)*. [GitHub-15356](https://github.com/magento/magento2/issues/15356) + * Undefined mixin parameters are now defined and variable scope has been improved in `lib/web/css/source/lib/_icons.less`, `lib/web/css/source/lib/_pages.less`, and `lib/web/css/source/lib/_utilities.less`. *Fix submitted by Prince Patel in pull request [17097](https://github.com/magento/magento2/pull/17097)*. + * Magento now removes URL rewrites as expected after you delete a CMS page through the API or in the `crontab` area. *Fix submitted by Roman in pull request [14751](https://github.com/magento/magento2/pull/14751)*. + * Main menu categories in different store views are now updated as expected when Varnish is enabled. ### Visual Merchandiser + * Magento now maintains manual sort order and adds newly assigned products to the top of the products list. Previously, Magento reset the manual sort order and sorted products by ID. + * Saving a product no longer reverts the selected sort order for a category. Previously, after a merchant saved a product, Magento reverted the sort order that defined the display of products in that category from the defined sort order to an order defined by product ID. ### Vertex + * The Gross Amount and Tax Amount columns in the Transaction Details Report file now include price and tax for products as expected. ### Wishlist + * Incorrect return type hinting in DocBlocks has been corrected for several methods in the Wishlist module. *Fix submitted by Yaroslav Rogoza in pull request [15854](https://github.com/magento/magento2/pull/15854)*. + * Removed an unnecessary parameter from the `toHtml()` method in `Wishlist/view/frontend/templates/item/list.phtml`. *Fix submitted by Yaroslav Rogoza in pull request [16023](https://github.com/magento/magento2/pull/16023)*. + * Magento no longer thows errors when you log in using the wishlist URL. *Fix submitted by Oleksandr Kravchuk in pull request [16386](https://github.com/magento/magento2/pull/16386)*. + * Magento no longer removes a product from the wishlist when you update a wishlist item. *Fix submitted by Chitoraga Eduard in pull request [16372](https://github.com/magento/magento2/pull/16372)*. + * Magento now passes empty arrays (instead of null values) into the DataObject constructor. Previously, a null value was passed, which caused a fatal error. *Fix submitted by Abhishek Jakhotiya in pull request [16220](https://github.com/magento/magento2/pull/16220)*. + * The `\Magento\Wishlist\CustomerData\Wishlist::getImageData()` method DocBlock now correctly indicates that the method returns an array. *Fix submitted by Yaroslav Rogoza in pull request [15718](https://github.com/magento/magento2/pull/15718)*. + * Magento now displays the correct product image for the selected configurable product variant in the My Wishlist sidebar. Previously, Magento always displayed the image associated with the default configurable product in the My Wishlist sidebar. *Fix submitted by kishanpatadia in pull request [15477](https://github.com/magento/magento2/pull/15477)*. diff --git a/guides/v2.2/release-notes/ReleaseNotes2.2.7CE.md b/guides/v2.2/release-notes/ReleaseNotes2.2.7CE.md index 1267eee9fee..9c8d2312cfc 100644 --- a/guides/v2.2/release-notes/ReleaseNotes2.2.7CE.md +++ b/guides/v2.2/release-notes/ReleaseNotes2.2.7CE.md @@ -47,25 +47,31 @@ This release includes improvements to general usability of the core code plus en #### General improvements + * All relevant attributes are now populated in the Google Tag Manager when a customer adds a product to their shopping cart. Previously, grouped, bundle, and configurable product attributes were missing from the Google Tag Manager. #### Wishlist + * Customers can now choose which wishlist to add a product to when adding products to the wishlist from the shopping cart. + * Products disabled in the Admin no longer appear in storefront wishlists. Previously, disabled products still appeared in the storefront wishlist, although when a customer clicked on a disabled product, Magento correctly returned “page not found”. + * Magento now displays a success message when a customer successfully updates a wishlist. + * Magento now displays the correct options when you click on **View Details** for a product with configurable options. Previously, Magento displayed the image for the parent product. [GitHub-8168](https://github.com/magento/magento2/issues/8168) ### Shipping + * The Magento UPS module has been updated to support new UPS API endpoints. ### Magento Functional Test Framework (MFTF) @@ -77,12 +83,15 @@ This release includes improvements to general usability of the core code plus en Highlights of community contributions include these fixes: + * The email server no longer throws an exception when a customer places an order using a PayPal payment method. Previously, when a customer checked out using PayPal, Magento placed the order, but the email server threw an exception. Thanks to community member [Jason Woods](https://github.com/driskell)! + * You can now use REST to add a configurable product to a shopping cart without creating a duplicate product entry. Thanks to community member [zamboten](https://github.com/zamboten)! [GitHub-15028](https://github.com/magento/magento2/issues/15028) + * The price range displayed for bundle products now shows only valid prices. Previously, Magento displayed special prices that had expired, even though the price in the customization and summary area was correct. Thanks to community member [Riccardo Tempesta](https://github.com/phoenix128)! [GitHub-15457](https://github.com/magento/magento2/issues/15457) ## Fixes @@ -92,531 +101,681 @@ In addition to security enhancements, this release contains the following functi ### Installation, setup, and deployment + * Magento backup functionality is no longer enabled by default, and the code has been deprecated. See [Back up and roll back the file system, media, and database]({{ page.baseurl }}/install-gde/install/cli/install-cli-backup.html) for more information on backup strategies. + * Customer attribute management issues that merchants experienced after upgrading to Magento 2.2.6 have been resolved. Previously, after upgrading their stores to Magento 2.2.6, merchants could not create and save a new multiselect or dropdown customer custom attribute, and existing customer attributes no longer appeared for editing within the customer's account on the storefront. + * Fixed an issue with the shared configuration settings in `app/etc/config.php` that caused `recursion detected` errors during deployment. + * You can now enable logs as expected (through the use of **Stores** > **Settings** > **Configuration** > **Advanced** > **Developer** > **Debug** > **Log to file**) when switching from production mode to developer mode. *Fix submitted by [Jay Ghosh](https://github.com/jayankaghosh) in pull request [15335](https://github.com/magento/magento2/pull/15335)*. [GitHub-13480](https://github.com/magento/magento2/issues/13480) + * You can now filter the customer grid without inadvertently triggering a next-page Ajax call. Previously, when you created an order from the Orders page and tried to filter the customer list, Magento did not filter the list, and displayed the next page of customer entries. *Fix submitted by [Ronak Patel](https://github.com/ronak2ram) in pull request [17870](https://github.com/magento/magento2/pull/17870)*. [GitHub-17789](https://github.com/magento/magento2/issues/17789) + * The `bin/magento` command now works as expected when Magento is not installed. Previously, Magento displayed this error, `Command line user does not have read and write permissions on generated directory. Please address this issue before using Magento command line.` + * Magento no longer throws an error when loading configuration data while running the `setup:di:compile` command. Previously, Magento threw an error when loading configuration data before Magento was installed because no store-specific or website-specific configuration data was available. (Store and website data is available only after Magento is installed.) *Fix submitted by [Marcel](https://github.com/mimarcel) in pull request [13649](https://github.com/magento/magento2/pull/13649)*. + * You can now set a custom `frontend_model` value in `system.xml` if the name of the module you're using contains an underscore. *Fix submitted by [Ben Tideswell](https://github.com/bentideswell) in pull request [14397](https://github.com/magento/magento2/pull/14397)*. + * Performance of the `setup:upgrade` step of the update process has been improved for installations containing many orders (greater than 100,000). *Fix submitted by [Aurélien Lavorel](https://github.com/AurelienLavorel) in pull request [16570](https://github.com/magento/magento2/pull/16570)*. + * You can now complete `setup:install` for installations running an authenticated Redis instance for cache configuration. Previously, Magento did not read the Redis cache options in `env.php` as expected, although the Redis session password configuration worked as expected. *Fix submitted by [Guillaume Giordana](https://github.com/guillaumegiordana) in pull request [17078](https://github.com/magento/magento2/pull/17078)*. + * You can now replace the transaction trace driver for the Profiler (`app/bootstrap.php`). For example, with this change you could replace the default profiler with the OpenTracing API, which can then use its own exporters to express the code to the CNCF Jaeger project. This in turn supports a more granular view of application transactions. *Fix submitted by [Andrew Howden](https://github.com/andrewhowdencom) in pull request [15171](https://github.com/magento/magento2/pull/15171)*. ### Bundle products + * Magento now sorts bundle summaries according to the criteria set in the Admin. + * The price range displayed for bundle products now shows only valid prices. Previously, Magento displayed special prices that had expired, even though the price in the customization and summary area was correct. *Fix submitted by [Riccardo Tempesta](https://github.com/phoenix128) in pull request [15535](https://github.com/magento/magento2/pull/15535)*. [GitHub-15457](https://github.com/magento/magento2/issues/15457) ### CAPTCHA + * CAPTCHA code has been refactored to eliminate unnecessary multiple conditions. *Fix submitted by [Pratik Oza](https://github.com/mage2pratik) in pull request [17203](https://github.com/magento/magento2/pull/17203)*. ### Cart and checkout + * Customers can no longer place orders for out-of-stock products. + * Magento no longer displays an undefined string on the Order Summary page. *Fix submitted by [Vishal Gelani](https://github.com/gelanivishal) in pull request [17526](https://github.com/magento/magento2/pull/17526)*. [GitHub-17492](https://github.com/magento/magento2/issues/17492) + * Magento now displays the wishlist icon on the shopping cart page on mobile devices. Previously, Magento cut off the wishlist icon on this page when viewed on a mobile device. *Fix submitted by [Hitesh](https://github.com/hitesh-wagento) in pull request [17877](https://github.com/magento/magento2/pull/17877)*. [GitHub-17851](https://github.com/magento/magento2/issues/17851) + * Magento no longer unchecks **My billing and shipping address are the same** checkbox when a customer uses an offline custom payment method for an order. Previously, when a customer used an offline custom payment method for an order, Magento unchecked this checkbox on the payment step if the shipping address was updated. *Fix submitted by [Eduard Chitoraga](https://github.com/eduard13) in pull request [17593](https://github.com/magento/magento2/pull/17593)*. [GitHub-14819](https://github.com/magento/magento2/issues/14819) + * You can now see category changes on the storefront as expected after the changes have been saved. Previously, Magento did not display changes to product categories on the storefront until reindexing occurred even if **update on schedule** was set and the cache had been cleaned. + * Magento now populates the **Default Billing** address field with the shipping address when a customer selects **Save in address book** during checkout. Previously, Magento saved the address, but did not populate the default billing address field as expected. + * Third-party modules can now perform actions after `totals` calculation. (Modules can perform additional actions by adding `.done`, `.fail`, or `.always` tasks to the request promise by creating a JavaScript mixin for the totals processor.) *Fix submitted by [Navarr Barnier](https://github.com/navarr) in pull request [17127](https://github.com/magento/magento2/pull/17127)*. + * Magento no longer adds an empty method to the cart summary. Previously, when the method html was empty, an empty list item resulted, which subsequently resulted in an extra margin of 20px because of default styling. *Fix submitted by [Arnoud Beekman](https://github.com/arnoudhgz) in pull request [17189](https://github.com/magento/magento2/pull/17189)*. + * The sidebars for the wishlist on the catalog, my account, and checkout pages now render special characters correctly. Previously, the browser displayed `™` instead of rendered special characters on these pages. *Fix submitted by [deepjoshi94](https://github.com/deepjoshi94) in pull request [17070](https://github.com/magento/magento2/pull/17070)*. + * The `disabled attribute` has been removed from the region list. *Fix submitted by [Daniel Ruf](https://github.com/DanielRuf) in pull request [16955](https://github.com/magento/magento2/pull/16955)*. + * The Admin checkout agreement controllers have been refactored to remove the use of `ObjectManager`. *Fix submitted by [AnshuMishra17](https://github.com/AnshuMishra17) in pull request [16505](https://github.com/magento/magento2/pull/16505)*. ### Catalog + * Magento now displays the product name under the product image on the product page. + * Magento now alerts you to an error when a merchant tries to save a product without completed required fields. + * A previous fix for a gallery template issue that was inadvertently reverted has been restored. *Fix submitted by [gwharton](https://github.com/gwharton) in pull request [16594](https://github.com/magento/magento2/pull/16594)*. [GitHub-15009](https://github.com/magento/magento2/issues/15009) + * Parent theme image height settings (specified in `view.xml`) no longer override the height settings assigned to individual images. *Fix submitted by [Tommy Quissens](https://github.com/quisse) in pull request [14537](https://github.com/magento/magento2/pull/14537)*. [GitHub-12250](https://github.com/magento/magento2/issues/12250) + * Magento now maintains product image roles as expected after upgrade. Previously, image roles randomly disappeared from product pages after upgrade. *Fix submitted by [Sam Butler Thompson](https://github.com/Scarraban) in pull request [15606](https://github.com/magento/magento2/pull/15606)*. [GitHub-10687](https://github.com/magento/magento2/issues/10687) + * You can now save attributes for a configurable product after a validation error occurs. Previously, when you added a new product with an image, if a validation error occurred during the product save, Magento removed the images from the **Images and Videos** section. If you subsequently fixed the validation conflict and attempted to save the product again, Magento threw a descriptive error. *Fix submitted by [Oleksandr Kravchuk](https://github.com/swnsma) in pull request [16597](https://github.com/magento/magento2/pull/16597)*. [GitHub-7372](https://github.com/magento/magento2/issues/7372), [GitHub-13177](https://github.com/magento/magento2/issues/13177) + * You can now add a product with a price of zero (0) to a wishlist. *Fix submitted by [sv3n](https://github.com/sreichel) in pull request [17395](https://github.com/magento/magento2/pull/17395)*. [GitHub-16479](https://github.com/magento/magento2/issues/16479) + * You can now save a title for a product from the **Product** > **Customizable Options** page. *Fix submitted by [Madhumala Krishnan](https://github.com/Madhumalak) in pull request [15357](https://github.com/magento/magento2/pull/15357)*. [GitHub-6305](https://github.com/magento/magento2/issues/6305) + * You can now add a custom fieldset to the Admin category editor without changing the position of the General section (that is, the section that contains the **Enable category**, **Include in Menu**, and **Category Name** fields). Previously, Magento moved the General section to the last position of the form. *Fix submitted by [Burlacu Vasilii](https://github.com/vasilii-b) in pull request [17540](https://github.com/magento/magento2/pull/17540)*. [GitHub-15041](https://github.com/magento/magento2/issues/15041) + * The Catalog Products List widget can now display products on the storefront that have specific attributes applied to the default Global scope. + * Magento now displays a descriptive error message when a customer tries to order a product in increments that are not allowed. + * Magento now applies tier prices as expected after a customer logs into their shopping cart. [GitHub-14255](https://github.com/magento/magento2/issues/14255) + * Magento no longer switches from table to list view on the product page when you add a product from the wishlist to the shopping cart. -* Customers can now add a product to their shopping cart when their session has expired. Previously, Magento did not add the -product, and hung indefinitely while trying to add the product. + +* Customers can now add a product to their shopping cart when their session has expired. Previously, Magento did not add the product, and hung indefinitely while trying to add the product. + * A merchant can now successfully create and save configurable products from the Admin in a multisite deployment. Previously, when a merchant created a configurable product with customizable options, Magento set its `has_options` and `required_options`  (in the `catalog_product_entity` table) to 0, and the merchant needed to click **Save** again to correctly add the product. + * The `PUT rest/all/V1/categories/:categoryId` endpoint now requires the `name` field. + * Special price expressions now work as expected. Previously, `catalog_product_price` did not generate correct price data. *Fix submitted by Dmitry Chukhnov in pull request [16510](https://github.com/magento/magento2/pull/16510)*. ### Catalog rule + * `date` can now be used as a condition for Catalog Price rules. *Fix submitted by [Glenn Cheng](https://github.com/GlennCheng) in pull request [16855](https://github.com/magento/magento2/pull/16855)*. ### Clean up and minor refactoring + * Problems with the responsive layout `app/design/frontend/Magento/luma/Magento_Theme/web/css/source/_module.less` have been resolved. *Fix submitted by [Pratik Oza](https://github.com/mage2pratik) in pull request [17217](https://github.com/magento/magento2/pull/17217)*. + * The `text-align` for the `` element of the Subtotal column in the creditmemo email has been corrected. *Fix submitted by [Tomash Khamlai](https://github.com/TomashKhamlai) in pull request [17153](https://github.com/magento/magento2/pull/17153)*. + * The invalid `knockoutjs` data binding in Braintree PayPal has been fixed. *Fix submitted by [Tiago Sampaio](https://github.com/tiagosampaio) in pull request [17236](https://github.com/magento/magento2/pull/17236)*. + * The overall readability of Shipping Methods sorting has been improved by replacing sort callbacks. *Fix submitted by [Lukasz Bajsarowicz](https://github.com/lbajsarowicz) in pull request [16788](https://github.com/magento/magento2/pull/16788)*. + * Files in `/lib` have been cleaned up. *Fix submitted by [Pratik Oza](https://github.com/mage2pratik) in pull request [17103](https://github.com/magento/magento2/pull/17103)*. + * Unused IDs in `app/code/Magento/Checkout/view/frontend/web/template/billing-address/form.html` and `app/code/Magento/Checkout/Test/Mftf/Section/CheckoutPaymentSection.xml` have been removed. *Fix submitted by [Daniel Ruf](https://github.com/DanielRuf) in pull request [17291](https://github.com/magento/magento2/pull/17291)*. + * Removed unnecessary translation of HTML tags in `app/code/Magento/Catalog/Block/Adminhtml/Form/Renderer/Config/YearRange.php` and `app/code/Magento/Catalog/i18n/en_US.csv`. *Fix submitted by [Yogesh Suhagiya](https://github.com/Yogeshks) in pull request [17291](https://github.com/magento/magento2/pull/17291)*. + * Minor CSS issues in `lib/internal/Magento/Framework/View/Test/Unit/Url/_files/sourceImport.css` have been fixed. *Fix submitted by [Arnoud Beekman](https://github.com/arnoudhgz) in pull request [17365](https://github.com/magento/magento2/pull/17365)*. + * Duplicate code in `app/code/Magento/Ui/view/base/web/js/dynamic-rows/dynamic-rows.js` has been removed. *Fix submitted by [Arnoud Beekman](https://github.com/arnoudhgz) in pull request [17505](https://github.com/magento/magento2/pull/17505)*. + * The code generator for Proxy is no longer missing `returnType` in the method information definition. *Fix submitted by [adrian-martinez-interactiv4](https://github.com/adrian-martinez-interactiv4) in pull request [17552](https://github.com/magento/magento2/pull/17552)*. + * The `