* Normalize render method names
* Refactor get_query_params to allow key filtering
* Scaffold the search results view
* Add missing unslash
* First pass at functional search
* Fix memory leak and recursive highlighting
* Fix various search string edge cases
* Move match highlighting to format_match method
* Tweak match line formatting
* Rename ListTable to FileListTable
* Switch search results view to a list table
* Add notice about max files for search
* Remove unused function
* Only use monospace font on the matched line part of search results
* Add notice about search result limit
* Fix font in table header
* phpcs cleanup
* Remove unnecessary search form action
* Add caching to search results
* Add unit test for search method
* Caching improvements
* phpcs cleanup
* Add unit test for close_stream
* Remove unneeded linting exception
* Add changelog file
* Remove unnecessary usage of get_class()
* Make sure file stream gets closed when we break the loop early
* Make the returned results an even 200 when hitting the limit
* When the user selects a grouped product type, we show an additional Products in this group section in the General tab.
* When the user selects a grouped product type, we hide the Pricing and Shipping tabs.
* When empty, the grouped products card has an empty state with an illustration
* When the user clicks Add products, we show a modal
* When the user clicks the search field, we immediately display the list of all existing products. It is sorted alphabetically. Clicking an item closes the search and adds the product to the list.
* Add remove button to the product list
* When the user clicks Add, we close the modal and display the list of added products in the product form
* Clicking the product name will open it in the editing view in a new tab
* Clicking the arrow button will open the product's page in a new tab
* Prevent adding already added products
* If the name or SKU extends beyond this width, we truncate the text
* Add changelog files
* Fix linter errors