
## v20.0.16 - unreleased

## v20.0.15 - 2022-08-02

Version bump to prepare for next release by @fballiano in #2088
Replaced a lot of Magento logos with OpenMage ones by @fballiano in #1599
Remove end class comment by @luigifab in #2092
Trim trailing whitespace by @luigifab in #2093
Issue #268: sales_order_create_sidebar_wishlist breaks if wishlist module is disabled by @fballiano in #2059
Better messages for product alerts by @fballiano in #1930
Clean review_entity_summary when reviews are deleted by @fballiano in #1103
Fixed admin tabs order not working properly. by @kiatng in #1360
Fix admin menu z-index when debug template paths is enabled by @elidrissidev in #1819
Change default sort in CMS Pages/Blocks/Widgets grids by @ADDISON74 in #1922
Small improvements in Manage Attributes grid by @ADDISON74 in #1944
Merge 20.0.14 to 20.0 branch by @fballiano in #2135
Added database ID to EAV options table by @fballiano in #2060
Clean up empty directories created when file requested does not exist in remote storage. by @colinmollenhour in #1338
Add a word-break to list items to keep the layout intact by @loekvangool in #1321
fix download custom option backend by @empiricompany in #1827
Fix Varien_File_Uploader ignored errors with try catch by @luigifab in #1277
User-configurable cron expression for regular cache flushing #2086 by @LukasCesal in #2087
Fixed infinite loop of popup alerts in backend attribute set page by @kiatng in #1672
Added option not to use timezone in rendering datetime in backend grid. by @kiatng in #1997
Upgrade GitHub action/checkout to v3 by @fballiano in #2141
Fix admin menu z-index for popup message by @luigifab in #2142
Fix undefined array key when an image depend on another field by @luigifab in #2133
Fix supplied resource is not a valid stream resource for Varien_Io_File by @eneiasramos in #2040
Raise phpstan level to 1 and fix basic issues by @tmotyl in #2055
fix wrong tier price percentage rounding by @empiricompany in #2089
Replaced travis badge with workflow badges by @fballiano in #2067
Update References to Documentation/Magento Website - Issue #988 by @fballiano in #2069
Create a global config cache rather than a config cache per store by @rvelhote in #1066
Rise Phpstan level 2, fix some issues by @tmotyl in #2146
Backend mask title has padding also when not having an icon by @fballiano in #2145
Fix config menu css from Isse #1219 by @aterjung in #1224
Fix protect code changing on order save by @justinbeaty in #1422
Introducing polyfill for is_countable() by @fballiano in #2163
Ensure there are no emails without recipient in email queue by @lemundo-team in #1109
Fix Core Bug: To make "01/01/1970" a valid birthday by @1Shiroyuuki1 in #1851
Fix issues with isCurrentlySecure detection and Offloader Header config. by @colinmollenhour in #1462
PHP 8 fix null provided to count() in tax calculation class by @iamniels in #2162
Better error handling for issues during bulk attribute update by @woutersamaey in #1434
Allow to cancel orders like registerCancellation by @luigifab in #1804
Revert "Fix wrong payment info template paths" by @fballiano in #2179
Fix Failed IPN changing to Payment Received incorrectly by @fballiano in #2183
Reverted commit 2ae8c05 by @fballiano in #2182
Revert "creditmemo bundle inventory calculation error" by @fballiano in #2186
Sourcemap link removed since this file is not minified by @fballiano in #2187
Remove suppression operator from translate method to support PHP 8 by @iamniels in #2161
[PHP 8] Fix TypeError when calling round() with a string argument by @elidrissidev in #2193
Backend - Change the default sort column in Export page by @ADDISON74 in #2170
Fix warnings on undefined user agent by @Caprico85 in #2032
Fix PHP 8 Fatal error: Uncaught ValueError: imagecolorsforindex() in Varien_Image_Adapter_Gd2 by @iamniels in #2197
Do not calculate catalogrules when there are none by @tmotyl in #1119
replacing apc with apcu functions. by @f1-outsourcing in #1951
Add robots.txt.sample by @simbus82 in #1024
Changed timestamp definition to fix issue #1166 by @fballiano in #2189
Cast params receiving int to string by @holozaen in #2144
Set log level from config by @elidrissidev in #1727
Expected PayPal (Express) field not found in NVP Response: AMT by @luigifab in #1520
(BC) Remove js index file by @luigifab in #1622
Fix display of Insert widget and Insert variable by @luigifab in #1848
Fix region API list response - Update Api.php --> bug by @kyansi in #792
Fixed issue #2001, EAV datetime attribute can't save time. by @kiatng in #2003
Wrap max log level retrieval from config in a try catch by @elidrissidev in #2203
Fix to allow for always reorder by @seansan in #504
Remove frontend_type tag for text by @luigifab in #2148
Reduce needless saves by avoiding setting _hasDataChanges flag by @colinmollenhour in #2066
Pass delimiter char to preg_quote by @MarcinNowakMacopedia in #2047
Phpstan errors in pr1325 by @kiatng in #2207
Avoids multiplying all price adjustments by the number of websites by @azambon in #1303
Use latest media editor plugin (989c4b5 from 2015030) for tinymce v3.5 by @theroch in #1123
Some more room for the category menu by @loekvangool in #1314
PHP 8: Fix cannot remove category on admin product edit categories tab by @iamniels in #2205
Config cache for system.xml loader: Speed improvement by @lamskoy in #1916
Remove strict typing for Mage_Catalog_Model_Product->setStockItem met… by @colinmollenhour in #2208
Avoid session invalidation when changing session lifetime. by @colinmollenhour in #546
Modernize setCategoryIds() by @loekvangool in #1308
Replace Magento word with OpenMage in root files by @ADDISON74 in #2215
Remove backslash character in translations files by @ADDISON74 in #2219
Fix ACL resource name typo in Api2 roles page by @elidrissidev in #2222
Missing bottom borders in Orders page with Gift Messages allowed by @ADDISON74 in #2220
Backend > Orders grid - More space for columns by @ADDISON74 in #2217
Fixed issue #2196, throws error if an email is already a newsletter s… by @kiatng in #2214
Widen some dynamic admin input fields by @loekvangool in #1315
Admin's password validation during Api's role/user removing process by @przemyslaw-p in #1045
Fix multiple "PHPDoc tag @param has invalid value" phpstan errors by @tmotyl in #2227
Fix for "non well formed numeric value" by @fballiano in #2225
Fixed warning a non-numeric value encountered in /Mage/Catalog/Model/Resource/Product/Option.php by @kiatng in #2228
Added support for sending subscribe confirm email by @fballiano in #2195
Allow setting optional product attributes to null in REST API by @elidrissidev in #2230
Fixed issue #2212 SQLSTATE[42S22]: Column not found: 1054 Unknown col… by @kiatng in #2221
Drop LTS csv files by @luigifab in #1621
Remove the word section by @luigifab in #2147
Fix Missing Mage_Api_Model_Server_V2_Handler in SOAP v2 WSDL. by @SRaromicon in #392
Throw exception when trying to modifying address that does not belong to logged in user by @fballiano in #2231
Grid - iterate only columns with filters by @Sekiphp in #1642
Fix Mage_Shell_Indexer wrong class name by @fballiano in #2234
Backend > Manage Products grid - More space for columns by @ADDISON74 in #2218
Make oldFields mapping hardcoded to speed up system by @tmotyl in #921
Made sitemap more flexible by @sreichel in #1854
Update Mage_Eav_Model_Entity_Collection_Abstract::joinTable() by @cebe in #1814
Add "Times used" indicator field to promo rule quote grid by @spinsch in #1853
bugfix: fix adminhtml translation in config.xml for importexport module by @eneiasramos in #2244
Replace deprecated global now() calls with Varien_Date::now() by @Sdfendor in #2250
Fix the calculation of bundle saleable status by @aredridel in #2178
Revert "Some more room for the category menu" by @ADDISON74 in #2254
prevent customer review view from loading foreign reviews by @aterjung in #1970
Fix for "reset filter" breaking grid sorting by @fballiano in #2252
Flush Magento Cache - button and message changes by @ADDISON74 in #2261
Can upload xlsx file by @sdecalom in #2266
Backend grid heads - Remove colons after To, From and In words by @ADDISON74 in #2267
Merge v19 to v20 by @fballiano in #2206
Fixed documentation link for "store scope" in store switcher (backend) by @fballiano in #2256
Fix Varien_Io_File ignored errors with error control operator by @luigifab in #1269
Fix store id filter in catalogProductList SOAP method by @elidrissidev in #2243
Small changes in .htaccess file /media directory by @ADDISON74 in #2280
Removed lib/flex by @fballiano in #2271
All .gitignore files in one place by @ADDISON74 in #2269
Create/Update .htaccess file in skin and media directories by @ADDISON74 in #2289
Add magento-composer-installer to allowed plugins by @elidrissidev in #2296
Delete .htaccess.sample by @ADDISON74 in #2293
Update php.ini.sample by @ADDISON74 in #2292
Fix editing special price in product mass attribute update by @fballiano in #2287
Added required PHP modules to composer.json by @fballiano in #2064
Update robots.txt.sample by @ADDISON74 in #2307
Include exception message when generating error report by @elidrissidev in #2311
add some ReturnTypeWillChange annotations to Varien_object by @Flyingmana in #2301
Fix xml validation problems by @fballiano in #2242
Create .htaccess file in js directory (OM-20 only) by @ADDISON74 in #2305
Fix argument must contain at least one element by @luigifab in #2091
Order add comment functionality in REST API by @elidrissidev in #2315
XML validation workflow by @fballiano in #2314
add basic unitTest for xml validation by @Flyingmana in #2304
Fix "Variable might not be defined" PHPStan error by @elidrissidev in #2316
Addendum to PR 2087 by @ADDISON74 in #2308
Allow to rename api.php by @luigifab in #2132
Removed module Mage_PageCache by @fballiano in #2258
Fix phpdoc for saveAttribute() by @Caprico85 in #2320
Small changes in root files by @ADDISON74 in #2324
Add a message calling for an end to the Russian invasion of Ukraine by @luigifab in #2074
Mage Factory Methods: Direct "_registry" Access Without Method Call by @Sdfendor in #2319
Fixes a notice by @azambon in #2318
Add vendor folder to gitignore by @elidrissidev in #2334
Fix for modphp8 by @fballiano in #2329
Fix for modphp8 by @fballiano in #2328
Update Flat.php to correct bug #2337 by @matteorossi-thespacesm in #2338
Fix #815 - add getAttributeRawText function by @justinbeaty in #2312
gitignore: added VScode, PhpStorm files and ddev config.yaml by @sreichel in #2343
Removed docker-dde sample by @sreichel in #2346
Removed dead code by @sreichel in #2339
Cosmetic fix in Mage_Sales_Model_Order_Payment by @fballiano in #2350


## v20.0.14 - 2022-05-18

Add field info to exception when thrown in saving System Configuration. by @kiatng in #1784
Fix Tax Rule name update by @elidrissidev in #1728
Fixed method addExpressionFieldToSelect to use Zend_Db_Expr by @midlan in #1259
enable programmatic creation of reviews for specific users by @luigifab in #1803
API fix option labels for store view by @woutersamaey in #1828
Fix newsletter subcriber loading by customer by @mmenozzi in #1779
Fix file delete of customer attribute by @kiatng in #927
Trim trailing whitespace by @luigifab in #1834 and #1846
Updated .gitignore by @midlan in #1859
Add gitpod online IDE config by @Flyingmana in #1836
Add phpstan configuration, dependencies and github action by @Flyingmana in #1875
Add Mage_Index helpers declaration to config.xml by @elidrissidev in #1878
API: _getLocation - removed unused argument; fix phpdoc by @Sekiphp in #1867
Grid page size: replaced similar lines to foreach by @Sekiphp in #1856
Fix exception handling on Observer call when class not found by @spinsch in #1861
Fixes catalog pricerules with dates in conditions, closes #433 by @sreichel in #1159
Zend_Locale_Format::isNumber throws notice for float values by @fballiano in #1758
Update PayPal currencies and countries by @luigifab in #1805
Aggregate most viewed products report daily via a Cron job by @elidrissidev in #1829
extend php Syntax check to php 8.1 by @Flyingmana in #1883
Fix incompatible declaration error by @holozaen in #1890
Zend registry - removed method offset exists (using parental) by @Sekiphp in #1873
[PHP 8.1] Fix deprecation notice in mcryptcompat lib by @Sdfendor in #1891
Bugfix #1885 - Add to cart only accepts 1 item by @gdemarsico in #1896
Array to string conversion when adding reviews from backend by @fballiano in #1769
Update phpdoc in Collection.php by @rubanooo in #1816
Fix syntax in lib/Zend/Locale/Data/es_419.xml by @elidrissidev in #1901
make fulltext search separator (OR/AND) configurable from backend by @sreichel in #1852
Revert of Mage_Adminhtml_Block_Widget_Grid::_exportIterateCollection by @midlan in #1914
demo.html is an unnecessary file by @ADDISON74 in #1926
Revert #1355 for transactional email by @luigifab in #1898
Sort ascending CMS Block list in Categories by @ADDISON74 in #1925
[PHP 8.0] Refactor legacy usage of implode in Mage_Api2 by @elidrissidev in #1938
Initialize Api2 Fields validator's required fields array by @elidrissidev in #1936
No alt tag value in Recently Viewed Products side block by @ADDISON74 in #1920
Dashboard - Top 5 Search Terms link issue by @ADDISON74 in #1917
Removed unused var $_odd in templates. by @kiatng in #1964
Documentation fix on README file about composer require by @nimasan in #1954
Fix typo in Zend/Date.php by @eltociear in #1979
[PHP 8.0] Check if track progressdetail is an array before calling count by @elidrissidev in #1982
[PHP 8.1] Fix cookie deletion behavior by @Sdfendor in #1984
updateAttributeSet() accepting array or string by @Sekiphp in #1535
Fix typo in code comment by @dotancohen in #1988
Fix #1924 non-existing field by @woutersamaey in #1941
Added optgroup feature for massaction items (grids) by @Sekiphp in #1913
PHPDoc fix for Mage_Core_Model_Config by @Sdfendor in #1802
Missing middlename for salesOrderAddressEntity in SOAP APIs by @fballiano in #1977
Attribute note adminhtml show translate by @boesbo in #1710
Removed global polyfill function for PHP versions below 7.0 by @Sdfendor in #1990
fix typo in _applyCustomOption() to correctly calculate min/max price by @jouriy in #1500
Fix typo: Replace 'Retrive' with 'Retrieve' globally by @tmewes in #1995
Add formkey validation to Newsletter subscribe action (theme BC-break) by @elidrissidev in #1866
Added ability to add target attribute for adminhtml menu items by @Sekiphp in #1985
Add docblock to app\code\core\Mage\Adminhtml\Block\Widget\Grid\Column… by @kiatng in #1987
[PHP 8.1] Fix passing null to trim() by @elidrissidev in #2002
Replaced remaining deprecated urlEscape calls. by @Sdfendor in #2008
Update phpstan version by @tmotyl in #2015
Replaced isAvailable() with isSalable() so events are considered by @woutersamaey in #1630
Use mb_substr to split the postcode by @luigifab in #1357
Fix count(): Parameter must be an array or an object that implements Countable by @Sekiphp in #1960
Fix getting default min_sale_qty when trying to mass-update product attributes by @elidrissidev in #1850
Add polyfill for PHP8 native string functions by @tmotyl in #2014
Improve getScheme on Zend_Controller_Request_Http by @mmenozzi in #1872
Fix @method declarations in Mage_Catalog_Model_Resource_Eav_Attribute by @Caprico85 in #2031
Deprecated global function "now" because it's equivalent to Varien_Date::now() by @Sdfendor in #1991
Fixed the unused parameter in assignProduct by @rubanooo in #2011
Remove white space for config values for #1852 by @luigifab in #2020
password_new.html - typo in vars by @m-overlund in #2039
add unit Tests and send coverage results to SonarCloud by @Flyingmana in #2041
Use vanillaJS instead of prototype in Wishlist add to cart column by @MarcinNowakMacopedia in #2051
do not mark github job as failes through sonar failure by @Flyingmana in #2053
Analyze most of the source code with phpstan. Provide baseline. by @tmotyl in #2035
Update PHPdoc and remove useless var by @bastienlm in #2056
Add unit tests for security helper validateAgainstBlockMethodBlacklist and provide composer.lock by @tmotyl in #2058
Fix widget edition in WYSIWYG by @FredericMartinez in #1605
Use vanillaJS instead of encodeURI in wishlist add to cart by @MarcinNowakMacopedia in #2052
Fixed bug on incorrect category store_id when set with store code in … by @kiatng in #1601
Remove notification survey block by @kkrieger85 in #1267
Fixed grid filter reset by @spinsch in #821
Documentation of some changes by @luigifab in #1831
Fix: Integrity constraint violation: Duplicate key by @tim-breitenstein-it in #1331
Align label with value by @AlterWeb in #1230
Remove backend current date from backend's header by @fballiano in #2063
Lazy load contributors images by @luigifab in #2070
Do not save customer addresses when there are no changes by @luigifab in #1579
Removed getQty() from Mage_Wishlist_IndexController by @fballiano in #2072
Add title for old googlecheckout payment method by @luigifab in #2076
Default sortby should be read from core_config_data by @fballiano in #2062
Prevent Zend_Date from checking locale for know date codes by @MarcinNowakMacopedia in #2050
Update admin login pages by @luigifab in #1618
Do not render action or massaction column in totals row in adminhtml grid by @theroch in #1530
Fix instructions update for bank transfer orders by @luigifab in #2075
Add missing attributes to salesOrderInvoiceInfo SOAP method by @elidrissidev in #1999


## v20.0.13 - 2021-08-26

2 security updates

CVE-2021-32758 - GHSA-26rr-v2j2-25fh - Layout XML Arbitrary Code Fix
CVE-2021-32759 - GHSA-xm9f-vxmx-4m58 - Data Flow Sanitation Issue Fix

more updates:

#1735 Fixed origData is empty in a quote
#1667 Removed orphan directory and code of compiler and downloder.
#1355 Removed unused variable
#1525 Fixed incorrect datetime in block.

and merged changes from v19.4.15

## v20.0.12 - 2021-06-25

fix version in getOpenMageVersionInfo()

## v20.0.11 - 2021-06-25

#1567 Fixed incorrect regex in Varien_Object _underscore()
#1544 Prevent backend_type from being changed automatically on attribute save without the admin realizing
#1555 Performance improvement for catalog product images
#1600 Remove "default" themes from 20.x
#1610 Reinstate getters and setters for $_pageHelpUrl which some third party modules still use
#1532 add Possibility to disable global search in backend
#1513 Add redis as a valid option for global/session_save (and activate Cm_RedisSession module by default)
#1499 Set proper HTTP response code on error
#1623 steamClose dosent void this->_streamHandler in php8
#1073 (BC) Removed IE compatibility
#1523 don't redirect to "downloader" (which doesn't exists)


and merged changes from v19.4.14

## v20.0.10 - 2021-04-20

New Release, because v20.0.9 was tagged wrong

## v20.0.9 - 2021-04-20

2 security updates

CVE-2021-21426 - GHSA-m496-x567-f98c - Fixing a bug in Zend Framework's Stream HTTP Wrapper
CVE-2021-21427 - GHSA-fvrf-9428-527m - Security Update for SQLi for Magento 2 (a backport of CVE-2021-3007 of laminas-http)

more updates:

#1536 Remove the documentation Hint "(?)" functionality

and merged changes from v19.4.13


## v20.0.8 - 2021-04-06

#1477 Remove invalid branch alias to make the branch importable on packagist.org
#1252 Directory currency - performance optimalization
#1325 Move orig data to abstract model (according to Magento 2.x)
#1502 Remove Deprecated _afterSaveCommit from Mage_Core_Model_Abstract

and merged changes from v19.4.12

## v20.0.7 - 2021-02-14

#1149 add logging to lockfile related Exceptions
merged changes from v19.4.11

## v20.0.6 - 2021-01-19

merged changes from v19.4.10

## v20.0.5 - 2020-12-29

merged changes from v19.4.9


## v20.0.4 - 2020-10-20

merged changes from v19.4.8
including
CVE-2020-15244 RCE via PHP Object injection via SOAP Requests


## v20.0.3 - 2020-09-15

merged changes from v19.4.7


## v20.0.2 - 2020-08-18

merged changes from v19.4.6
including
CVE-2020-15151 Observable Timing Discrepancy - Improve validation of secret keys (#1138)

## v20.0.1 - 2020-07-07

merged changes from v19.4.5

## v20.0.0 - 2020-06-28

Identical to v19.4.4

