* Security fix: Prevent an XSS attack by a malicious contributor.
* Minor fix: 'Hide Relevanssi on edit pages' didn't affect the block editor sidebar visibility. It does now.
* New feature: New filter hook `relevanssi_forbidden_post_types` filters the list of post types excluded from Relevanssi indexing.
* New feature: New filter hook `relevanssi_forbidden_taxonomies` filters the list of taxonomies excluded from Relevanssi indexing.
* New feature: New filter hook `relevanssi_show_password_protected` controls whether password protected posts are shown in the search results.
* New feature: The Relevanssi metabox has new CSS classes and added HTML tags to allow better styling and to make it easier to hide sections of the metabox.
* New feature: Relevanssi settings tabs have more CSS ids to help hide individual settings.
* New feature: Support for `post_mime_type` query parameter.
* Changed behaviour: The `pre_relevanssi_related` and `post_relevanssi_related` action hooks get the post ID as a parameter, as it's not always available otherwise.
* Changed behaviour: Password protected posts are excluded from the search results by default to protect their contents.
* Minor fix: Click-tracking front end JS code now uses `wp_print_inline_script_tag()`.
* Minor fix: Related posts template CSS now uses `wp_add_inline_style()`.
* Minor fix: An array `_rt` tag won't cause a fatal error anymore.
* Minor fix: The Relevanssi network options blog list is reduced to 50 blogs to avoid crashes.
* Minor fix: The settings tab query parameter was renamed to avoid collisions with other plugins.
* Minor fix: The `post_id` parameter in the `[relevanssi_related_posts]` shortcode didn't work.
* Minor fix: In rare cases, the search results would not be in relevance order if the throttle wasn't used.
* Security fix: Prevent CSV injection attack in log export.
* Security fix: Restrict access to doc count updates.
* Minor fix: Product variations check the parent product for access restrictions, to avoid situations where variations of a draft product appear in the results.
* Minor fix: Improved TablePress compatibility.
* Minor fix: Added error handling to the Ninja Table compatibility code.
* Security fix: Relevanssi had a vulnerability where anyone could access the search logs and click logs. The log export is now protected.
* Minor fix: Relevanssi had problems with Polylang when a post or term didn't have language specified. Now Relevanssi handles those situations better.
* Minor fix: Post date throttling had a MySQL error that made it replace JOINs instead of concatenating.
* Minor fix: The log database table now has an index on session_id, as not having that index can slow down the search a lot.
* New feature: New filter hook `relevanssi_searchform_dropdown_args` filters the arguments for `wp_dropdown_categories()` in search forms.
* Changed behaviour: Search form shortcode taxonomy dropdowns are now sorted alphabetically and not by term ID.
* Minor fix: Caught a bug in excerpt-building with empty words.
* Minor fix: It's now possible to set both `post__in` and `post__not_in` and likewise for `parent__in` and `parent__not_in`.
* Minor fix: The `post_status` is no longer available as a query parameter.
* Security fix: Relevanssi had a vulnerability for SQL injections. Exploiting the vulnerability does require WP admin access. This vulnerability is now fixed.
* Security fix: Relevanssi had a vulnerability for error log injections. Exploiting this vulnerability requires file upload access to the site. This vulnerability is now fixed.
* New feature: New filter hook 'relevanssi_get_attachment_posts_query_final' filters the final SQL query for attachment post fetching.
* Changed behaviour: Relevanssi now skips attachments with 'Server did not respond' errors when reading attachments. This should help with problems coming from attachments that are too big read.
* Minor fix: Improved server timeout error handling for attachment reading.
* Minor fix: Relevanssi didn't strip tags from custom field specific excerpts, and could show zero-hit excerpts for the content.
* Minor fix: Multisite search failed when the search term resolved to nothing in the tokenizer.
* Minor fix: Fixes broken WP CLI progress bars.
* Minor fix: Meta query boolean to array conversion.
* Minor fix: For indexing, stemmer is always in OR mode so that both stemmed word and the original word is indexed.
* New feature: The debugging tab now shows the status of the 'relevanssi_words' option.
* Changed behaviour: The 'relevanssi_index_content' and 'relevanssi_index_titles' filter hooks now get the post object as a second parameter.
* Minor fix: Stop Relevanssi from blocking the feed searches.
* Minor fix: Remove warning from missing blog_id parameter.
* Minor fix: Improve exact match boosts with accented letters.
* Minor fix: Entering synonyms in Polylang all languages mode was possible; it shouldn't be.
* Minor fix: Relevanssi is now blocked in the reusable content block search.
* New feature: Relevanssi can now create custom field specific excerpts that come from one custom field only and know which field that is.
* New feature: You can see the list of indexed custom field names in the indexing and excerpt settings.
* New feature: New filter hook `relevanssi_excerpt_specific_custom_field_content` filters the excerpt custom field content if `relevanssi_excerpt_specific_fields` is enabled.
* Changed behaviour: The `relevanssi_get_custom_field_content()` function now returns an array instead of string. If `relevanssi_excerpt_specific_fields` is off, the previous string return value is returned as a single-item array with the string in index 0. If the setting is on, the array keys are the field names.
* Changed behaviour: The `relevanssi_get_child_pdf_content()` function now returns an array.
* Minor fix: The "none" value in category dropdowns from the searchform shortcode is changed from -1 to 0.
* Minor fix: The stopword population during the multisite installation used the wrong database table, leading to failed population.
* Minor fix: Multisite installation is moved from `wp_insert_site` (priority 10) to `wp_initialize_site` (priority 200) in order to avoid trouble.
* Minor fix: Wildcard search now works in whole word matching, not only in partial matching.
* Minor fix: The Gutenberg sidebar translations didn't show up. Now you should be able to see the sidebar in the right language.