Merge pull request #23039 from eileenmcnaughton/inv2
[civicrm-core.git] / release-notes / 5.39.0.md
index 22a3ee7f4090fbdf9307bd28ca725e1d9308871e..37bd8898366bad3cfff51cd12feb15e7839c8525 100644 (file)
@@ -13,603 +13,1061 @@ Released July 7, 2021
 
 | *Does this version...?*                                         |         |
 |:--------------------------------------------------------------- |:-------:|
-| Fix security vulnerabilities?                                   |         |
-| Change the database schema?                                     |         |
-| Alter the API?                                                  |         |
-| Require attention to configuration options?                     |         |
-| Fix problems installing or upgrading to a previous version?     |         |
-| Introduce features?                                             |         |
-| Fix bugs?                                                       |         |
+| Fix security vulnerabilities?                                   |   no    |
+| **Change the database schema?**                                 | **yes** |
+| **Alter the API?**                                              | **yes** |
+| Require attention to configuration options?                     |   no    |
+| **Fix problems installing or upgrading to a previous version?** | **yes** |
+| **Introduce features?**                                         | **yes** |
+| **Fix bugs?**                                                   | **yes** |
 
 ## <a name="features"></a>Features
 
 ### Core CiviCRM
 
-- **crm- Missing Summary ([20419](https://github.com/civicrm/civicrm-core/pull/20419))**
+- **Separate the default language for contacts from the site language (Work Towards
+  [dev/core#2584](https://lab.civicrm.org/dev/core/-/issues/2584):
+  [20214](https://github.com/civicrm/civicrm-core/pull/20214))**
 
-## <a name="bugs"></a>Bugs resolved
+  Improves user experience for multilingual sites by separating the
+  CiviCRM contacts default language setting from the site default language.
 
-### Core CiviCRM
+- **Canonize API for storing translated data (Work Towards
+  [dev/translation#67](https://lab.civicrm.org/dev/translation/-/issues/67):
+  [20478](https://github.com/civicrm/civicrm-core/pull/20478))**
 
-- **APIv4 - Make LineItem, EntityFinancialTrxn and FinancialTrxn read-only ([20609](https://github.com/civicrm/civicrm-core/pull/20609))**
+  Defines a "Translation" table (`civicrm_translation`), to represent a single
+  translated string (e.g. a translated message-title or a translated
+  event-description).
 
-- **Fix unreleased api change to more logical variant ([20611](https://github.com/civicrm/civicrm-core/pull/20611))**
+- **Allow for the default number of search results to be configurable
+  ([dev/core#2187](https://lab.civicrm.org/dev/core/-/issues/2187):
+  [20336](https://github.com/civicrm/civicrm-core/pull/20336 and
+  [18969](https://github.com/civicrm/civicrm-core/pull/18969))**
 
-- **dev/core#2649 - Make 5.39 upgrade more robust ([20580](https://github.com/civicrm/civicrm-core/pull/20580))**
+  Creates a setting to define the number of search results to be returned.
 
-- **Update civicrm_generated (5.39 version) ([20571](https://github.com/civicrm/civicrm-core/pull/20571))**
+- **Give the custom CSS file a 'name' to make it easier to manipulate in
+  hook_civicrm_alterBundle()
+  ([20278](https://github.com/civicrm/civicrm-core/pull/20278))**
 
-- **[NFC] Fix phpunit9 deprecation issues on using assertType instead of … ([20567](https://github.com/civicrm/civicrm-core/pull/20567))**
+  Gives the resource bundles custom CSS file a useful 'name' to make it easier
+  to manipulate in the alterBundle hook.
 
-- **Fix Financial item test to validate Financials ([20532](https://github.com/civicrm/civicrm-core/pull/20532))**
+- **OAuth: initial support for per-contact OAuth tokens
+  ([20189](https://github.com/civicrm/civicrm-core/pull/20189))**
 
-- **Mark DetailTest as having invalid financials ([20552](https://github.com/civicrm/civicrm-core/pull/20552))**
+  Adds a system for managing OAuthContactTokens -- tokens linked to a
+  contact_id.
 
-- **Introduce civi.api4.authorizeRecord and civi.api4.validate ([20533](https://github.com/civicrm/civicrm-core/pull/20533))**
+- **BAOs, Tests, etal - Support `HookInterface` and `EventSubscriberInterface`
+  for auto-registration
+  ([20427](https://github.com/civicrm/civicrm-core/pull/20427))**
 
-- **dev/core#2646 juice up the error a little ([20564](https://github.com/civicrm/civicrm-core/pull/20564))**
+  Expands the functionality for declaring event-listeners in different classes,
+  making it easier to participate in Symfony events.
 
-- **Fix for dev/membership#37 ([20493](https://github.com/civicrm/civicrm-core/pull/20493))**
+- **The version numbers for core-extensions should match core-proper.
+  ([dev/release#17](https://lab.civicrm.org/dev/release/-/issues/17):
+  [20303](https://github.com/civicrm/civicrm-core/pull/20303) and
+  [20302](https://github.com/civicrm/civicrm-core/pull/20302))**
 
-- **REF - Cleanup array key checking to use array_key_exists ([20563](https://github.com/civicrm/civicrm-core/pull/20563))**
+  Ensures that CiviCRM core extension version numbers are updated to match the
+  core release they are included in and denotes development stage of extensions
+  using icons.
 
-- **[REF] CRM_Contact_Task - Use short array syntax ([20562](https://github.com/civicrm/civicrm-core/pull/20562))**
+- **Enable/Disable Extension Receives API Error (Work Towards
+  [dev/core#2646](https://lab.civicrm.org/dev/core/-/issues/2646):
+  [20564](https://github.com/civicrm/civicrm-core/pull/20564))**
 
-- **dev/core#2479 Adjust generic copy for localizable fields ([20059](https://github.com/civicrm/civicrm-core/pull/20059))**
+  Improves the error messages when disabling or enabling an extension causes an
+  API Error.
 
-- **APIv4 - Make the @searchable flag explicit for OptionList type entities. ([20560](https://github.com/civicrm/civicrm-core/pull/20560))**
+- **Regen.sh/setup.sh would be nice if the output for civicrm_generated.mysql
+  had long lines broken up
+  ([dev/core#1549](https://lab.civicrm.org/dev/core/-/issues/1549):
+  [20513](https://github.com/civicrm/civicrm-core/pull/20513))**
 
-- **[php8-compat] Partial Fix of hook tests for php8 ([20545](https://github.com/civicrm/civicrm-core/pull/20545))**
+  Improves display of civicrm_generated.mysql output so its easier to read.
 
-- **Fix the populateTempTable to be more direct ([20548](https://github.com/civicrm/civicrm-core/pull/20548))**
+- **Use new crm-angular-js instead of ng-app to bootstrap AngularJS
+  ([20419](https://github.com/civicrm/civicrm-core/pull/20419))**
 
-- **[php8-compact] Add in guards into various templates to fix hook tests… ([20542](https://github.com/civicrm/civicrm-core/pull/20542))**
+  Updates the method used to bootstrap Angular for internal consistency and so
+  that multiple angular apps can be used on the same page.
 
-- **[php8-compact] Fix Report tests failing on php8 ([20549](https://github.com/civicrm/civicrm-core/pull/20549))**
+- **APIv4 - Save custom fields in bulk
+  ([20269](https://github.com/civicrm/civicrm-core/pull/20269))**
 
-- **[php8-compat] Upgrade TCPDF version to support php8 ([20540](https://github.com/civicrm/civicrm-core/pull/20540))**
+  Makes it so custom fields can be saved in bulk thru APIv4.
 
-- **SearchKit - allow searches based on relationships ([20558](https://github.com/civicrm/civicrm-core/pull/20558))**
+- **Add APIv4 Batch.create spec
+  ([20501](https://github.com/civicrm/civicrm-core/pull/20501))**
 
-- **dev/core#2486 - Add WordReplacement APIv4 entity ([20559](https://github.com/civicrm/civicrm-core/pull/20559))**
+  Adds a spec for APIv4 Batch.create.
 
-- **(REF) dev/core#1744 - Simplify Afform event naming ([20555](https://github.com/civicrm/civicrm-core/pull/20555))**
+- **APIv4 - Make the @searchable flag explicit for OptionList type entities.
+  ([20560](https://github.com/civicrm/civicrm-core/pull/20560))**
 
-- **Fix v3 api payment test to validate on postAssert ([20530](https://github.com/civicrm/civicrm-core/pull/20530))**
+  Improves code for categorizing entities for SearchKit, making searchability
+  easier to grok and less magical/mysterious.
 
-- **Sort trigger data before processing ([20541](https://github.com/civicrm/civicrm-core/pull/20541))**
+- **Apiv4 entity parity (Work Towards
+  [dev/core#2486](https://lab.civicrm.org/dev/core/-/issues/2486):
+  [20559](https://github.com/civicrm/civicrm-core/pull/20559),
+  [20499](https://github.com/civicrm/civicrm-core/pull/20499),
+  [20464](https://github.com/civicrm/civicrm-core/pull/20464),
+  [20609](https://github.com/civicrm/civicrm-core/pull/20609),
+  [20433](https://github.com/civicrm/civicrm-core/pull/20433) and
+  [20474](https://github.com/civicrm/civicrm-core/pull/20474))**
 
-- **[php8-compat] Fix Include/Exclude Group Custom Search Tests by better… ([20539](https://github.com/civicrm/civicrm-core/pull/20539))**
+  Works towards APIv4 parity with APIv3 by adding the following entities to
+  APIv4: WordReplacement, FinancialItem and ACLEntityRole.
 
-- **SearchKit - Fix link target selection ([20537](https://github.com/civicrm/civicrm-core/pull/20537))**
+- **Introduce civi.api4.authorizeRecord and civi.api4.validate
+  ([20533](https://github.com/civicrm/civicrm-core/pull/20533))**
 
-- **[php8-compat] Fix Resources Test issue due to undefined array key add… ([20538](https://github.com/civicrm/civicrm-core/pull/20538))**
+  Refactors APIv4 code so that events use more consistent style (ie
+  civi.api4.{$TASK} with alias civi.api4.{$TASK}::{$ENTITY}).
 
-- **Switch table mapping to square bracket array syntax. ([20535](https://github.com/civicrm/civicrm-core/pull/20535))**
+- **APIv4 Entity.get refactor to be more efficient
+  ([20470](https://github.com/civicrm/civicrm-core/pull/20470))**
 
-- **Dedupe DAO is out of date ([20534](https://github.com/civicrm/civicrm-core/pull/20534))**
+  Makes APIv4 Entity.get more efficient.
 
-- **[php8-compat][REF] Fix Date unit tests in php8 by passing in 00 inste… ([20525](https://github.com/civicrm/civicrm-core/pull/20525))**
+- **APIv4 - Return id_field as part of Entity.get
+  ([20457](https://github.com/civicrm/civicrm-core/pull/20457))**
 
-- **dev/report#67 Fix standalone export classes ([20528](https://github.com/civicrm/civicrm-core/pull/20528))**
+  Improves APIv4 metadata so it returns the name of the unique identifier field
+  for each entity (usually but not always named "id").
 
-- **[php8-compact][REF] Fix another couple of places where by there are r… ([20526](https://github.com/civicrm/civicrm-core/pull/20526))**
+- **Add DedupeRule, DedupeRuleGroup and DedupeException API4 entity
+  ([20466](https://github.com/civicrm/civicrm-core/pull/20466))**
 
-- **[php8-compact][REF] Fix api_v3_PaymentTokenTest to work on php8 ([20527](https://github.com/civicrm/civicrm-core/pull/20527))**
+  Adds the following entities to APIv4: DedupeRule, DedupeRuleGroup and
+  DedupeException.
 
-- **[php8-compat][REF] Fix Case and Custom data tests by adding guards in… ([20524](https://github.com/civicrm/civicrm-core/pull/20524))**
+- **Use PHPUnit8 in main test suites
+  ([20370](https://github.com/civicrm/civicrm-core/pull/20370))**
 
-- **Fix for tax rates being mangled on contribution update ([20357](https://github.com/civicrm/civicrm-core/pull/20357))**
+  Makes phpunit8 the default test runner for PHP versions greater than 7.2 for
+  the core test suites.
 
-- **Use line items to look up memberships ([20495](https://github.com/civicrm/civicrm-core/pull/20495))**
+- **Link styling with default greenwich theme is not linklike on search kit
+ screen ([dev/core#2403](https://lab.civicrm.org/dev/core/-/issues/2403):
+ [20341](https://github.com/civicrm/civicrm-core/pull/20341))**
 
-- **Test fix up for AdditionalPaymentTest ([20521](https://github.com/civicrm/civicrm-core/pull/20521))**
+  Improves the SearchKit user interface by making links blue so that they are
+  easier to find.
 
-- **SearchKit - Add API filter for contacts in groups and smart groups ([20507](https://github.com/civicrm/civicrm-core/pull/20507))**
+- **Afform - Improve Gui, prefill & submit APIs
+ ([20383](https://github.com/civicrm/civicrm-core/pull/20383))**
 
-- **[php8-compat] Fix api_v3_PaymentTest failures by putting in more guar… ([20520](https://github.com/civicrm/civicrm-core/pull/20520))**
+  Standardizes prefill & submit APIs to use the same logic for validating
+  contacts. Displays correct form URL in the Afform GUI depending on is_frontend
+  setting. Shows warning about url arguments to prevent unintentional
+  permissions escalation.
 
-- **dev/core#2486 - Use read-only permissions for FinancialItem API ([20499](https://github.com/civicrm/civicrm-core/pull/20499))**
+- **Afform Gui - Add support for entityRef fields
+ ([20216](https://github.com/civicrm/civicrm-core/pull/20216))**
 
-- **dev/core#1549 - Malleate civicrm_generated so that long lines are split ([20513](https://github.com/civicrm/civicrm-core/pull/20513))**
+  Adds a widget to Afform for EntityRef to autocomplete contacts & other
+  entities, allows the autocomplete field to be changed to Number (for entering
+  ID) or Select (for choosing another entity on a form).
 
-- **[php8-compat][REF] Fix some more test failures in php8 ([20516](https://github.com/civicrm/civicrm-core/pull/20516))**
+- **Afform Entity Reference Submit
+ ([20305](https://github.com/civicrm/civicrm-core/pull/20305))**
 
-- **[php8-compat][REF] Fix api_v3_contributionpagetest on php8 ([20518](https://github.com/civicrm/civicrm-core/pull/20518))**
+  Improves Afform Submit handling to handle entity reference fields that
+  reference other form elements.
 
-- **[php8-compat][REF] Fix more php8 test failures caused by template issues ([20517](https://github.com/civicrm/civicrm-core/pull/20517))**
+- **SearchKit - allow searches based on relationships
+  ([20558](https://github.com/civicrm/civicrm-core/pull/20558))**
 
-- **[php8-compat] Update smarty templates and some php files to get the a… ([20512](https://github.com/civicrm/civicrm-core/pull/20512))**
+  Allows SearchKit searches based on relationships.
 
-- **[php8-compat] Fix some more examples of where required parameters are… ([20515](https://github.com/civicrm/civicrm-core/pull/20515))**
+- **SearchKit - Add API filter for contacts in groups and smart groups
+  ([20507](https://github.com/civicrm/civicrm-core/pull/20507))**
 
-- **Allow legacy warnings to be fully suppressed in PropertyBag ([20331](https://github.com/civicrm/civicrm-core/pull/20331))**
+  Adds a filter-style field to search for contacts in (or not in) one or more
+  groups.
 
-- **[php8-compat] Fix php beautifier notice by conditionally assinging dy… ([20509](https://github.com/civicrm/civicrm-core/pull/20509))**
+- **SearchKit - Update `hook_civicrm_searchKitTasks` signature
+  ([20467](https://github.com/civicrm/civicrm-core/pull/20467))**
 
-- **[php8-compat] Fix issue in APIv3 Where by because product has a colum… ([20508](https://github.com/civicrm/civicrm-core/pull/20508))**
+  Updates the hook_civicrm_searchKitTasks signature to include checkPermissions
+  and userId.
 
-- **[php8-compat] Fix issue with returning bool from uasort by using the … ([20502](https://github.com/civicrm/civicrm-core/pull/20502))**
+- **SearchKit - Add static groups and organize main entity selector
+  ([20434](https://github.com/civicrm/civicrm-core/pull/20434))**
 
-- **[php8-compat][NFC] Fix using ZipArchive::open on an empty file ([20500](https://github.com/civicrm/civicrm-core/pull/20500))**
+  Adds static (non-smart) groups to SearchKit, and organizes main entity
+  selector to be less cluttered, with primary entities up top and the rest
+  within a collapsible optgroup.
 
-- **ACLEntityRole BAO tidy fixes ([20504](https://github.com/civicrm/civicrm-core/pull/20504))**
+- **SearchKit and Afform UI improvements
+  ([20348](https://github.com/civicrm/civicrm-core/pull/20348))**
 
-- **[php8-compat] fix Upgrade call back issues by making functions static… ([20503](https://github.com/civicrm/civicrm-core/pull/20503))**
+  Cleans up the admin UI for SearchKit and Afform, adds click-to-sort table
+  headers and fixes a bug where SavedSearch modified_date were not being saved.
 
-- **[REF] Fix Authx tests on Druapl 8/9 by ensuring that we only return a… ([20498](https://github.com/civicrm/civicrm-core/pull/20498))**
+- **SearchKit - Rename crmSearchActions module to crmSearchTasks & add hook
+  ([20307](https://github.com/civicrm/civicrm-core/pull/20307))**
 
-- **APIv4 - Delete undocumented deprecated activityType lookup ([20506](https://github.com/civicrm/civicrm-core/pull/20506))**
+  Adds hook_civicrm_searchKitTasks() to make it easy for other extensions to add
+  tasks specific to SearchKit. Also renames the module for consistency.
 
-- **Add APIv4 Batch.create spec ([20501](https://github.com/civicrm/civicrm-core/pull/20501))**
+- **[php8-compat] Upgrade PHPWord Package to support php8
+  ([20449](https://github.com/civicrm/civicrm-core/pull/20449))**
 
-- **[php8-compat][NFC] Fix issue where by we are tryiing to access array keys … ([20496](https://github.com/civicrm/civicrm-core/pull/20496))**
+  Work towards making CiviCRM php8 compatible, specifically by upgrading PHPWord
+  Package.
 
-- **[REF][php8-compat] Fix more instances of where there is a required pa… ([20497](https://github.com/civicrm/civicrm-core/pull/20497))**
+- **[php8-compat] Upgrade TCPDF version to support php8
+  ([20540](https://github.com/civicrm/civicrm-core/pull/20540))**
 
-- **Clarify types on `hook_custom` and `hook_customPre` ([20488](https://github.com/civicrm/civicrm-core/pull/20488))**
+  Work Towards making CiviCRM php8 compatible specifically by upgrading TCPDF.
 
-- **dev/core#2636 - Authx - Undefined function in drupal 9  ([20479](https://github.com/civicrm/civicrm-core/pull/20479))**
+- **Consider joining the GitHub Sponsors program
+  ([community/sustainability#20](https://lab.civicrm.org/community/sustainability/-/issues/20):
+  [248](https://github.com/civicrm/civicrm-wordpress/pull/248) and
+  [62](https://github.com/civicrm/civicrm-joomla/pull/62))**
 
-- **Prevent adding duplicate dashlet if present with same name and label ([20375](https://github.com/civicrm/civicrm-core/pull/20375))**
+  Adds a sponsor link as apart of the GitHub Sponsors program.
 
-- **APIv4 Entity.get refactor to be more efficient ([20470](https://github.com/civicrm/civicrm-core/pull/20470))**
+- **Change the help text for Message Templates and Scheduled Reminders to
+  include link to CiviCRM Token Documentation page
+  ([20259](https://github.com/civicrm/civicrm-core/pull/20259))**
 
-- **Cleanup references to old dedupe class names ([20492](https://github.com/civicrm/civicrm-core/pull/20492))**
+  Improves user experience by linking to CiviCRM Token documentation from the
+  Message Templates and Scheduled Reminders forms.
 
-- **dev/core#2486 Add ACLEntityRole APIv4 Entity ([20474](https://github.com/civicrm/civicrm-core/pull/20474))**
+- **authx - Accept API keys by default
+  ([20081](https://github.com/civicrm/civicrm-core/pull/20081))**
 
-- **Add DedupeRule, DedupeRuleGroup and DedupeException API4 entity ([20466](https://github.com/civicrm/civicrm-core/pull/20466))**
+  Relaxes the default settings so that it is easier to use authx
+  as a replacement for extern/rest.php (which uses the api_key for
+  authentication).
 
-- **[php8-compat] Fix undefined property on Array Cache class in wordpres… ([20491](https://github.com/civicrm/civicrm-core/pull/20491))**
+### CiviCase
 
-- **[REF][php8-compat] Further fixes where there is a required paramater … ([20490](https://github.com/civicrm/civicrm-core/pull/20490))**
+- **Add defaults for APIv4 Case create
+  ([20306](https://github.com/civicrm/civicrm-core/pull/20306))**
 
-- **dev/translation#67 - Define "Translation" table. Add during installation/upgrade. ([20478](https://github.com/civicrm/civicrm-core/pull/20478))**
+  Adds the following defaults for APIv4 Case.create:
+  - default Case Creator = current user
+  - default Case Start Date = now
 
-- **APIv4 - Cleanup getFields, add @internal flag for non-public field attributes ([20489](https://github.com/civicrm/civicrm-core/pull/20489))**
+### CiviContribute
 
-- **Remove some unused variables ([20487](https://github.com/civicrm/civicrm-core/pull/20487))**
+- **Improve Sample data by ensuring all Credit Card Contributions have a
+  transaction id and that they are shown to be linked to the test payment
+  processor ([20312](https://github.com/civicrm/civicrm-core/pull/20312))**
 
-- **[php8-compat][REF] Fix php8 error on undefined constant CIVICRM_DISAB… ([20485](https://github.com/civicrm/civicrm-core/pull/20485))**
+  Improves CiviContribute sample date.
 
-- **5.38 ([20486](https://github.com/civicrm/civicrm-core/pull/20486))**
+## <a name="bugs"></a>Bugs resolved
 
-- **[php8-compat][NFC] Ensure that the 2nd parameter of hash_equals is a … ([20483](https://github.com/civicrm/civicrm-core/pull/20483))**
+### Core CiviCRM
 
-- **Afform - Fix custom field handling and add tests ([20480](https://github.com/civicrm/civicrm-core/pull/20480))**
+- **"You do not have permission to access this page" when exporting participants
+  in Search Kit
+  ([dev/report#67](https://lab.civicrm.org/dev/report/-/issues/67):
+  [20528](https://github.com/civicrm/civicrm-core/pull/20528))**
 
-- **Extract code that populates temp table for an individual group ([20458](https://github.com/civicrm/civicrm-core/pull/20458))**
+  Fixes an 'access denied' error on standalone SearchKit export forms, caused by
+  renaming the PHP classes.
 
-- **APIv4 - Fix getFields to respect default_value from getFields ([20481](https://github.com/civicrm/civicrm-core/pull/20481))**
+- **500 error saving Search Kit Smart Group sorted on aggregated field
+  ([dev/report#68](https://lab.civicrm.org/dev/report/-/issues/68):
+  [20610](https://github.com/civicrm/civicrm-core/pull/20610))**
 
-- **Remove pass-by-ref as param not altered ([20475](https://github.com/civicrm/civicrm-core/pull/20475))**
+- **Fatal error reported when photo cannot be found
+  ([dev/core#2369](https://lab.civicrm.org/dev/core/-/issues/2369):
+  [20447](https://github.com/civicrm/civicrm-core/pull/20447))**
 
-- **[php8-compat][phpunit8][NFC] Fix PHPUnit Warnings and fix a php error on f… ([20477](https://github.com/civicrm/civicrm-core/pull/20477))**
+- **Loss of translation when copying (cloning) entities (multilingual)
+  ([dev/core#2479](https://lab.civicrm.org/dev/core/-/issues/2479):
+  [20059](https://github.com/civicrm/civicrm-core/pull/20059))**
 
-- **[php8-compat] Fix deprecation error where by required function parame… ([20473](https://github.com/civicrm/civicrm-core/pull/20473))**
+- **Fatal error while upgrading smart-group data
+  ([dev/core#2659](https://lab.civicrm.org/dev/core/-/issues/2659):
+  [20756](https://github.com/civicrm/civicrm-core/pull/20756/))**
 
-- **5.38 ([20469](https://github.com/civicrm/civicrm-core/pull/20469))**
+- **CRM_Utils_File::isAbsolute does not respect PHP stream wrappers (Work
+  Towards [dev/core#2590](https://lab.civicrm.org/dev/core/-/issues/2590):
+  [20270](https://github.com/civicrm/civicrm-core/pull/20270))**
 
-- **Bump DOMPDF to `~1.0.0` ([20465](https://github.com/civicrm/civicrm-core/pull/20465))**
+  Removes unused function.
 
-- **SearchKit - Update `hook_civicrm_searchKitTasks` signature ([20467](https://github.com/civicrm/civicrm-core/pull/20467))**
+- **Installer doesn't check MySQL version properly
+  ([dev/core#2602](https://lab.civicrm.org/dev/core/-/issues/2602):
+  [20255](https://github.com/civicrm/civicrm-core/pull/20255))**
 
-- **[Ref] [tests only] replace direct calls to enable logging with calls to the setting ([20460](https://github.com/civicrm/civicrm-core/pull/20460))**
+- **Useradd task gives a deprecation notice for the password confirmation field
+  ([dev/core#2613](https://lab.civicrm.org/dev/core/-/issues/2613):
+  [20347](https://github.com/civicrm/civicrm-core/pull/20347))**
 
-- **  [Ref] Remove function parameter only used from test ([20459](https://github.com/civicrm/civicrm-core/pull/20459))**
+- **APIv4 - Delete undocumented deprecated activityType lookup
+  ([20506](https://github.com/civicrm/civicrm-core/pull/20506))**
 
-- **APIv4 - Return id_field as part of Entity.get ([20457](https://github.com/civicrm/civicrm-core/pull/20457))**
+  Deletes an undocumented APIv4 quirk that's been giving deprecated warnings for
+  over a year.
 
-- **dev/core#2486 Add pseudoconstant callback for LineItem and Financial item entity ([20464](https://github.com/civicrm/civicrm-core/pull/20464))**
+- **APIv4 - Fix getFields to respect default_value from getFields
+  ([20481](https://github.com/civicrm/civicrm-core/pull/20481))**
 
-- **Don't pass doPayment by reference in Contribution.transact API ([20463](https://github.com/civicrm/civicrm-core/pull/20463))**
+- **AfformGui - Fix tabs when cms theme adds extra margin
+  ([20431](https://github.com/civicrm/civicrm-core/pull/20431))**
 
-- **dev/core#2486 Add in FinancialItem APIv4 Entity ([20433](https://github.com/civicrm/civicrm-core/pull/20433))**
+- **Afform GUI - Fix tab breakage in Shoreditch theme
+  ([20416](https://github.com/civicrm/civicrm-core/pull/20416))**
 
-- **[Ref] remove never-passed param ([20456](https://github.com/civicrm/civicrm-core/pull/20456))**
+- **Afform drag n drop fixes
+  ([20281](https://github.com/civicrm/civicrm-core/pull/20281) and
+  [20263](https://github.com/civicrm/civicrm-core/pull/20263))**
 
-- **Make functions protected ([20455](https://github.com/civicrm/civicrm-core/pull/20455))**
+- **Afform - Fix custom field handling and add tests
+  ([20480](https://github.com/civicrm/civicrm-core/pull/20480))**
 
-- **Mark test class as having invalid financials ([20448](https://github.com/civicrm/civicrm-core/pull/20448))**
+- **Afform - hide disabled contact types & entities from disabled
+  components/extensions
+  ([20283](https://github.com/civicrm/civicrm-core/pull/20283))**
 
-- **SearchKit - Organize ON clause field selectors with joined entity first ([20454](https://github.com/civicrm/civicrm-core/pull/20454))**
+  Cleans up and improves Afform's internal entity lookup so it won't show
+  disabled entities.
 
-- **BAOs, Tests, etal - Support `HookInterface` and `EventSubscriberInterface` for auto-registration ([20427](https://github.com/civicrm/civicrm-core/pull/20427))**
+- **SearchKit - Fix link target selection
+  ([20537](https://github.com/civicrm/civicrm-core/pull/20537))**
 
-- **AfformGui - Fix tabs when cms theme adds extra margin ([20431](https://github.com/civicrm/civicrm-core/pull/20431))**
+- **SearchKit - Fix menu permission
+  ([20349](https://github.com/civicrm/civicrm-core/pull/20349))**
 
-- **[REF] APIv4 refactoring to support calculated fields ([20440](https://github.com/civicrm/civicrm-core/pull/20440))**
+- **SearchKit - Organize ON clause field selectors with joined entity first
+  ([20454](https://github.com/civicrm/civicrm-core/pull/20454))**
 
-- **SearchKit - Add static groups and organize main entity selector ([20434](https://github.com/civicrm/civicrm-core/pull/20434))**
+- **[php8-compat] Fix some more examples of where required parameters are after
+  optional parameters in function declaration
+  ([20515](https://github.com/civicrm/civicrm-core/pull/20515))**
 
-- **dev/core#2369 - Change missing image fatal error to 404 ([20447](https://github.com/civicrm/civicrm-core/pull/20447))**
+- **[php8-compat] Fix PHP Beautifier notice by conditionally assigning dynamic
+  foreign key to the template
+  ([20509](https://github.com/civicrm/civicrm-core/pull/20509))**
 
-- **[REF] Set receipt_date after sending, (from batch) not in anticipation ([20395](https://github.com/civicrm/civicrm-core/pull/20395))**
+- **[php8-compat] Fix issue in APIv3 Where by because product has a column
+  called options the testCreateSingleValueAlter triggers a cannot access offset
+  of type string on string in php8
+  ([20508](https://github.com/civicrm/civicrm-core/pull/20508))**
 
-- **dev/core#2593 Fix failure to complete contributions when membership deleted ([20424](https://github.com/civicrm/civicrm-core/pull/20424))**
+- **[php8-compat] Fix issue with returning bool from uasort by using the
+  spaceship operator
+  ([20502](https://github.com/civicrm/civicrm-core/pull/20502))**
 
-- **[php8-compat] Upgrade PHPWord Package to support php8 ([20449](https://github.com/civicrm/civicrm-core/pull/20449))**
+- **[php8-compat] Fix Upgrade call back issues by making functions static and
+  also fixing an issue with an array key not existing when checking obsolete
+  extensions ([20503](https://github.com/civicrm/civicrm-core/pull/20503))**
 
-- **[NFC] Superficial code cleanup ([20446](https://github.com/civicrm/civicrm-core/pull/20446))**
+- **Update PHPUnit for PHPUnit8 config to ensure we don't cache test results
+  ([645](https://github.com/civicrm/civicrm-drupal/pull/645),
+  [140](https://github.com/civicrm/civicrm-backdrop/pull/140) and
+  [249](https://github.com/civicrm/civicrm-wordpress/pull/249))**
 
-- **financial#173: Show 'Pay Now' on user dashboard for partially paid contributions ([20376](https://github.com/civicrm/civicrm-core/pull/20376))**
+- **[php8-compat] Fix calling method_exist with paremeter that is bool not an
+  object in php8 ([323](https:
 
-- **[php8-compat] [REF] Fix a couple of functions triggering deprecation notices in php… ([20442](https://github.com/civicrm/civicrm-core/pull/20442))**
+- **[php8-compat] Fix calling method_exist with paremeter that is bool not an
+  object in php8 ([20443](https://github.com/civicrm/civicrm-core/pull/20443))**
 
-- **[php8-compat] Fix Warning Notices when running schema generation ([20445](https://github.com/civicrm/civicrm-core/pull/20445))**
+- **[php8-compat] Fix deprecation error where by required function parameter
+  follows an optional function parameter
+  ([20473](https://github.com/civicrm/civicrm-core/pull/20473))**
 
-- **[php8-compat] Update Various Symfony components to latest version in … ([20444](https://github.com/civicrm/civicrm-core/pull/20444))**
+- **[php8-compat] Fix Warning Notices when running schema generation
+  ([20445](https://github.com/civicrm/civicrm-core/pull/20445))**
 
-- **OAuth: initial support for per-contact OAuth tokens ([20189](https://github.com/civicrm/civicrm-core/pull/20189))**
+- **[php8-compat] Update Various Symfony components to latest version in the
+  3.4.x series to fix deprecation notice around libxml entity disable
+  ([20444](https://github.com/civicrm/civicrm-core/pull/20444))**
 
-- **Fix profile test teardown ([20439](https://github.com/civicrm/civicrm-core/pull/20439))**
+- **Fix the populateTempTable to be more direct
+  ([20548](https://github.com/civicrm/civicrm-core/pull/20548))**
 
-- **[php8-compat] Fix calling method_exist with paremeter that is bool not an object in… ([20443](https://github.com/civicrm/civicrm-core/pull/20443))**
+- **Sort trigger data before processing
+  ([20541](https://github.com/civicrm/civicrm-core/pull/20541))**
 
-- **[php8-compat] [REF] Fix call to function CRM_Utils_String::createRandom by ensuring that … ([20441](https://github.com/civicrm/civicrm-core/pull/20441))**
+- **Allow legacy warnings to be fully suppressed in PropertyBag
+  ([20331](https://github.com/civicrm/civicrm-core/pull/20331))**
 
-- **[REF] Extract code to transfer groups from temp table to cache ([20435](https://github.com/civicrm/civicrm-core/pull/20435))**
+- **Prevent adding duplicate dashlet if present with same name and label
+  ([20375](https://github.com/civicrm/civicrm-core/pull/20375))**
 
-- **Fix separate payment membership test to create valid financial transa… ([20436](https://github.com/civicrm/civicrm-core/pull/20436))**
+- **Ensure contacts without a name are updated when primary email changes
+  ([20403](https://github.com/civicrm/civicrm-core/pull/20403))**
 
-- **Ensure contacts without a name are updated when primary email changes ([20403](https://github.com/civicrm/civicrm-core/pull/20403))**
+- **fix arguments sent to hook_civicrm_check
+  ([20400](https://github.com/civicrm/civicrm-core/pull/20400))**
 
-- **Afform GUI - Fix tab breakage in Shoreditch theme ([20416](https://github.com/civicrm/civicrm-core/pull/20416))**
+- **Fix Distmaker building by ensuring we are rsyncing from the right folder
+  ([20353](https://github.com/civicrm/civicrm-core/pull/20353))**
 
-- **Fix internal group contact cache functions to be protected ([20385](https://github.com/civicrm/civicrm-core/pull/20385))**
+- **Fix mandatory keys check fail for value of float 0.0 in a required key in an
+  entity ([20342](https://github.com/civicrm/civicrm-core/pull/20342))**
 
-- **[REF] minor extraction - getInfoUrl ([20421](https://github.com/civicrm/civicrm-core/pull/20421))**
+- **Fix extraneous white space in generated SQL
+  ([20340](https://github.com/civicrm/civicrm-core/pull/20340))**
 
-- **5.38 ([20430](https://github.com/civicrm/civicrm-core/pull/20430))**
+- **Fix case sensitive parameter for call to getCustomFieldTokens
+  ([20333](https://github.com/civicrm/civicrm-core/pull/20333))**
 
-- **[REF] Fix issue where by mailing urls were always stuck in the origin… ([20102](https://github.com/civicrm/civicrm-core/pull/20102))**
+- **Fix CKEditor5 link editing in modal dialog
+  ([20285](https://github.com/civicrm/civicrm-core/pull/20285))**
 
-- **dev/mailing#95 Only track <a> urls in Flexmailer for HTML emails ([20129](https://github.com/civicrm/civicrm-core/pull/20129))**
+- **Correct copy-paste error in CustomField schema
+  ([20329](https://github.com/civicrm/civicrm-core/pull/20329))**
 
-- **Test - fix contributionTest to validate contributions ([20415](https://github.com/civicrm/civicrm-core/pull/20415))**
+- **Explicitly throw an error/status bounce on Edit/New if no types.
+  ([19840](https://github.com/civicrm/civicrm-core/pull/19840))**
 
-- **dev/core#2593 Fully remove loadRelatedObjects from PaypalExpress ([20422](https://github.com/civicrm/civicrm-core/pull/20422))**
+- **Core_DAO - Fire links_callback for all entities
+  ([20332](https://github.com/civicrm/civicrm-core/pull/20332))**
 
-- **Test fixes ([20426](https://github.com/civicrm/civicrm-core/pull/20426))**
+- **Get county fields populated via api call
+  ([20309](https://github.com/civicrm/civicrm-core/pull/20309))**
 
-- **[REF] Paypal pro - remove call to load contact record ([20423](https://github.com/civicrm/civicrm-core/pull/20423))**
+  Ensure that county fields are properly populated when calling the
+  Profile.getfields api.
 
-- **[REF] Stop passing unneed params to the recur function ([20412](https://github.com/civicrm/civicrm-core/pull/20412))**
+- **Activate user when no activation is required
+  ([20229](https://github.com/civicrm/civicrm-core/pull/20229))**
 
-- **Remove unused functions from payJunction ([20417](https://github.com/civicrm/civicrm-core/pull/20417))**
+  Ensures that any user created on a site that does not require admin approval
+  is considered active.
 
-- **Remove unused variable on dummy processor ([20418](https://github.com/civicrm/civicrm-core/pull/20418))**
+- **Switch to non deprecated buildPermissionClause() for contact detail report
+  ([20314](https://github.com/civicrm/civicrm-core/pull/20314))**
 
-- **Add defaults for APIv4 Case create ([20306](https://github.com/civicrm/civicrm-core/pull/20306))**
+- **Switch to non deprecated buildPermissionClause() for contact summary report
+  ([20287](https://github.com/civicrm/civicrm-core/pull/20287))**
 
-- **Revised fix for menu/UI issues for Joomla 4.0 ([20401](https://github.com/civicrm/civicrm-core/pull/20401))**
+- **Freeze readonly fields
+  ([20204](https://github.com/civicrm/civicrm-core/pull/20204))**
 
-- **Describe logic behind placement of `invalidateRouteCache` ([20414](https://github.com/civicrm/civicrm-core/pull/20414))**
+- **CiviCRM Scheduled Reminders, Subject field missing Token selector - users
+  must copy Token from Body field to Subject
+  ([20260](https://github.com/civicrm/civicrm-core/pull/20260))**
 
-- **[REF] replace isFirst parameter ([20411](https://github.com/civicrm/civicrm-core/pull/20411))**
+- **Fix delete customgroup using API4 so it removes data table
+  ([20265](https://github.com/civicrm/civicrm-core/pull/20265))**
 
-- **[REF] Remove now-unused params ([20410](https://github.com/civicrm/civicrm-core/pull/20410))**
+- **hook_managed - Do not try to disable managed entities if is_active is not
+  available to api3.create
+  ([20144](https://github.com/civicrm/civicrm-core/pull/20144))**
 
-- **[REF] Paypal ipn - cleanup references to completion ([20407](https://github.com/civicrm/civicrm-core/pull/20407))**
+- **DB/DataObject: use mb_strtolower because in turkish, INSERT becomes Insert
+  ([324](https://github.com/civicrm/civicrm-packages/pull/324))**
 
-- **[NFC] Cleanup in test class ([20402](https://github.com/civicrm/civicrm-core/pull/20402))**
+### CiviCase
 
-- **[REF] Replace deprecated code call ([20409](https://github.com/civicrm/civicrm-core/pull/20409))**
+- **APIv4 - CiviCase API: Fix opening a case with current user as creator
+  ([20238](https://github.com/civicrm/civicrm-core/pull/20238))**
 
-- **Remove remains of md5 check from authorizenet ([20406](https://github.com/civicrm/civicrm-core/pull/20406))**
+- **My Cases dashlet no longer working (javascript network error - blank
+  dashlet) ([dev/core#2606](https://lab.civicrm.org/dev/core/-/issues/2606):
+  [20275](https://github.com/civicrm/civicrm-core/pull/20275))**
 
-- **Update eventcart test to only test payment form ([20405](https://github.com/civicrm/civicrm-core/pull/20405))**
+## CiviContribute
 
-- **Fix contribution page pledge tests to create valid contributions ([20404](https://github.com/civicrm/civicrm-core/pull/20404))**
+- **PayPal fails to create contribution following duplicate merge when
+  membership record has been deleted
+  ([dev/core#2593](https://lab.civicrm.org/dev/core/-/issues/2593):
+  [20422](https://github.com/civicrm/civicrm-core/pull/20422),
+  [20424](https://github.com/civicrm/civicrm-core/pull/20424),
+  [20246](https://github.com/civicrm/civicrm-core/pull/20246) and
+  [20300](https://github.com/civicrm/civicrm-core/pull/20300))**
 
-- **[REF] Cleanup validation in PaypalProIPN single function ([20360](https://github.com/civicrm/civicrm-core/pull/20360))**
+- **"Pay Now" button on user dashboard is only for Pending, not Partially Paid
+  contributions
+  ([dev/financial#173](https://lab.civicrm.org/dev/financial/-/issues/173):
+  [20376](https://github.com/civicrm/civicrm-core/pull/20376))**
 
-- **[REF] Minor simplification ([20393](https://github.com/civicrm/civicrm-core/pull/20393))**
+  Ensures the 'Pay Now' buttons on the user dashboard are displayed for
+  partially paid contributions.
 
-- **Tax fixes in unit test ([20390](https://github.com/civicrm/civicrm-core/pull/20390))**
+- **Do not error on view contribution recur if not displaying contributions
+  ([20209](https://github.com/civicrm/civicrm-core/pull/20209))**
 
-- **fix arguments sent to hook_civicrm_check ([20400](https://github.com/civicrm/civicrm-core/pull/20400))**
+- **Fix for tax rates being mangled on contribution update
+  ([20357](https://github.com/civicrm/civicrm-core/pull/20357))**
 
-- **Afform - Improve Gui, prefill & submit APIs ([20383](https://github.com/civicrm/civicrm-core/pull/20383))**
+- **Add call to validateAllContributions & fix getTotalAmount
+  ([20391](https://github.com/civicrm/civicrm-core/pull/20391))**
 
-- **Add call to validateAllContributions & fix getTotalAmount ([20391](https://github.com/civicrm/civicrm-core/pull/20391))**
+- **Add warning when url_site is not specified for paypal (it won't work if not
+  set) ([20082](https://github.com/civicrm/civicrm-core/pull/20082))**
 
-- **Remove legacy references to partial_amount_to_pay ([20358](https://github.com/civicrm/civicrm-core/pull/20358))**
+- **Typo when retrieving help_pre textarea attributes for price field
+  ([20276](https://github.com/civicrm/civicrm-core/pull/20276))**
 
-- **[NFC] {test} code cleanup in test class ([20389](https://github.com/civicrm/civicrm-core/pull/20389))**
+- **Fix old-ish regression on paypal standard self-service cancel links
+  ([20210](https://github.com/civicrm/civicrm-core/pull/20210))**
 
-- **[NFC] Minor cleanup ([20387](https://github.com/civicrm/civicrm-core/pull/20387))**
+- **Don't pass doPayment by reference in Contribution.transact API
+  ([20463](https://github.com/civicrm/civicrm-core/pull/20463))**
 
-- **[NFC] Minor code cleanup ([20386](https://github.com/civicrm/civicrm-core/pull/20386))**
+- **If paymentprocessor still uses doTransferCheckout/doDirectPayment trigger
+  deprecated function warning
+  ([20384](https://github.com/civicrm/civicrm-core/pull/20384))**
 
-- **Use PHPUnit8 in main test suites ([20370](https://github.com/civicrm/civicrm-core/pull/20370))**
+- **Convert payJunction to doPayment
+  ([20326](https://github.com/civicrm/civicrm-core/pull/20326))**
 
-- **If paymentprocessor still uses doTransferCheckout/doDirectPayment trigger deprecated function warning ([20384](https://github.com/civicrm/civicrm-core/pull/20384))**
+- **Convert FirstData to doPayment
+  ([20325](https://github.com/civicrm/civicrm-core/pull/20325))**
 
-- **[NFC] Fix PHPUnit8 Deprecation Warnings in api_v3 and Civi Test Suites ([20380](https://github.com/civicrm/civicrm-core/pull/20380))**
+- **Convert elavon to doPayment
+  ([20324](https://github.com/civicrm/civicrm-core/pull/20324))**
 
-- **[REF] extract function to get locks ([20373](https://github.com/civicrm/civicrm-core/pull/20373))**
+- **Convert Realex to doPayment
+  ([20327](https://github.com/civicrm/civicrm-core/pull/20327))**
 
-- **[NFC] [Test] Big cleanup in test class ([20374](https://github.com/civicrm/civicrm-core/pull/20374))**
+- **Convert payflowpro to doPayment
+  ([20328](https://github.com/civicrm/civicrm-core/pull/20328))**
 
-- **[NFC] Fix PHPUnit8 Deprecation warnings in the api_v4 Test Suite ([20381](https://github.com/civicrm/civicrm-core/pull/20381))**
+- **Convert eway to doPayment
+  ([20323](https://github.com/civicrm/civicrm-core/pull/20323))**
 
-- **[NFC] Fix PHPUnit8 Warning notices in E2E And in some API unit tests ([20379](https://github.com/civicrm/civicrm-core/pull/20379))**
+- **Convert AuthorizeNet to doPayment()
+  ([20322](https://github.com/civicrm/civicrm-core/pull/20322))**
 
-- **[REF] Remove unused variable ([20378](https://github.com/civicrm/civicrm-core/pull/20378))**
+- **Sample payment processor types are misaligned in the sample data
+  ([dev/core#2614](https://lab.civicrm.org/dev/core/-/issues/2614):
+  [20311](https://github.com/civicrm/civicrm-core/pull/20311))**
 
-- **[NFC] Fix PHPUnit8 deprecation warnings in the CRM_AllTests suite ([20377](https://github.com/civicrm/civicrm-core/pull/20377))**
+### CiviMail
 
-- **Afform Entity Reference Submit ([20305](https://github.com/civicrm/civicrm-core/pull/20305))**
+- **<link> URLs are tracked and shouldn't be
+  ([dev/mail#95](https://lab.civicrm.org/dev/mail/-/issues/95):
+  [20129](https://github.com/civicrm/civicrm-core/pull/20129))**
 
-- **[NFC] Further cleanup in test class ([20372](https://github.com/civicrm/civicrm-core/pull/20372))**
+  Ensures link tracking is applied only to URLs inside <a> tags.
 
-- **[NFC] Add in more voids to unit tests to support PHPUnit8 ([20369](https://github.com/civicrm/civicrm-core/pull/20369))**
+### CiviMember
 
-- **[NFC] [Test] Preliminary cleanup in test class ([20371](https://github.com/civicrm/civicrm-core/pull/20371))**
+- **Creating a relationship fails when a related membership has a contact
+  reference custom field.
+  ([dev/membership#37](https://lab.civicrm.org/dev/membership/-/issues/37):
+  [20493](https://github.com/civicrm/civicrm-core/pull/20493))**
 
-- **Fix Distmaker building by ensuring we are rsyncing from the right folder ([20353](https://github.com/civicrm/civicrm-core/pull/20353))**
+- **Use line items to look up memberships
+  ([20495](https://github.com/civicrm/civicrm-core/pull/20495))**
 
-- **[Test] Add test cover for contribution tokens in pdf letter ([20217](https://github.com/civicrm/civicrm-core/pull/20217))**
+- **Use order api when creating a recurring membership from the Membership
+  ([20077](https://github.com/civicrm/civicrm-core/pull/20077))**
 
-- **[REF] Slightly more logical order of code ([20368](https://github.com/civicrm/civicrm-core/pull/20368))**
+### Drupal Integration
 
-- **Deprecate function CRM_Core_BAO_CustomField::bulkSave ([20367](https://github.com/civicrm/civicrm-core/pull/20367))**
+- **AuthX extension: user_load() deprecated in Drupal 8.x.
+  ([dev/core#2636](https://lab.civicrm.org/dev/core/-/issues/2636):
+  [20479](https://github.com/civicrm/civicrm-core/pull/20479))**
 
-- **[REF] Useradd contact task - Use OO instead of hardcoding "if Wordpress" ([20366](https://github.com/civicrm/civicrm-core/pull/20366))**
+- **drush install - Bump up entropy for autogenerated creds. Add signing key.
+  ([128](https://github.com/civicrm/civicrm-backdrop/pull/128))**
 
-- **Superficial tidy up in test class ([20359](https://github.com/civicrm/civicrm-core/pull/20359))**
+### WordPress Integration
 
-- **Cleanup - declare return types, remove unused var ([20363](https://github.com/civicrm/civicrm-core/pull/20363))**
+- **[php8-compat] Fix undefined property on Array Cache class in wordpress on
+  PHP8 ([20491](https://github.com/civicrm/civicrm-core/pull/20491))**
 
-- **[REF] Cleanup on import rows error ([20196](https://github.com/civicrm/civicrm-core/pull/20196))**
+- **Remove Base Page content filter once it has been used
+  ([dev/wordpress#91](https://lab.civicrm.org/dev/wordpress/-/issues/91):
+  [240](https://github.com/civicrm/civicrm-wordpress/pull/240))**
 
-- **Update bulkSave test to use the api ([20362](https://github.com/civicrm/civicrm-core/pull/20362))**
+  Fixes a bug where CiviCRM content would repeat itself in certain page
+  configurations.
 
-- **SearchKit - Fix menu permission ([20349](https://github.com/civicrm/civicrm-core/pull/20349))**
+## <a name="misc"></a>Miscellany
 
-- **[NFC] Add in voids to various setUpBeforeClass and tearDownAfterClass… ([20365](https://github.com/civicrm/civicrm-core/pull/20365))**
+- **Add file_exists check on loading services xml
+  ([20620](https://github.com/civicrm/civicrm-core/pull/20620))**
 
-- **SearchKit and Afform UI improvements ([20348](https://github.com/civicrm/civicrm-core/pull/20348))**
+- **APIv4 - Cleanup getFields, add @internal flag for non-public field
+  attributes ([20489](https://github.com/civicrm/civicrm-core/pull/20489))**
 
-- **Unit test for #20342 ([20361](https://github.com/civicrm/civicrm-core/pull/20361))**
+- **Extract code that populates temp table for an individual group
+  ([20458](https://github.com/civicrm/civicrm-core/pull/20458))**
 
-- **[REF] Extract function to build temporary table of members of group from Report_Form ([20297](https://github.com/civicrm/civicrm-core/pull/20297))**
+- **Cleanup - declare return types, remove unused var
+  ([20363](https://github.com/civicrm/civicrm-core/pull/20363))**
 
-- **Fix mandatory keys check fail for value of float 0.0 in a required key in an entity ([20342](https://github.com/civicrm/civicrm-core/pull/20342))**
+- **Bump lodash from 4.17.19 to 4.17.21
+  ([20247](https://github.com/civicrm/civicrm-core/pull/20247))**
 
-- **[REF] Extract getContributionObject ([20355](https://github.com/civicrm/civicrm-core/pull/20355))**
+- **Bump DOMPDF to `~1.0.0`
+  ([20465](https://github.com/civicrm/civicrm-core/pull/20465))**
 
-- **[NFC] Update PHPUnit config to not cache results in phpunit8 and add … ([20356](https://github.com/civicrm/civicrm-core/pull/20356))**
+- **Make functions protected
+  ([20455](https://github.com/civicrm/civicrm-core/pull/20455))**
 
-- **[REF] Remove now-unused parameter ([20354](https://github.com/civicrm/civicrm-core/pull/20354))**
+- **Deprecate function CRM_Core_BAO_CustomField::bulkSave
+  ([20367](https://github.com/civicrm/civicrm-core/pull/20367))**
 
-- **Add test for mixed Order data ([20241](https://github.com/civicrm/civicrm-core/pull/20241))**
+- **Cleanup tracking on group.load
+  ([20310](https://github.com/civicrm/civicrm-core/pull/20310))**
 
-- **[REF] Add getter for contributionID ([20318](https://github.com/civicrm/civicrm-core/pull/20318))**
+- **Describe logic behind placement of `invalidateRouteCache`
+  ([20414](https://github.com/civicrm/civicrm-core/pull/20414))**
 
-- **[REF] Make previous unshared function protected & Remove hard-coded params ([20345](https://github.com/civicrm/civicrm-core/pull/20345))**
+- **Fix internal group contact cache functions to be protected
+  ([20385](https://github.com/civicrm/civicrm-core/pull/20385))**
 
-- **Fix form params for testEventPaymentForms ([20330](https://github.com/civicrm/civicrm-core/pull/20330))**
+- **Clarify types on `hook_custom` and `hook_customPre`
+  ([20488](https://github.com/civicrm/civicrm-core/pull/20488))**
 
-- **[NFC] Add in unit tests of credit card validation rules ([20352](https://github.com/civicrm/civicrm-core/pull/20352))**
+- **Cleanup references to old dedupe class names
+  ([20492](https://github.com/civicrm/civicrm-core/pull/20492))**
 
-- **[REF] Update Pear Validate Finance CreditCard to use latest tagged re… ([20351](https://github.com/civicrm/civicrm-core/pull/20351))**
+- **Switch l10n.js from ajax callback to assetBuilder
+  ([20121](https://github.com/civicrm/civicrm-core/pull/20121))**
 
-- **Fix extraneous white space in generated sql ([20340](https://github.com/civicrm/civicrm-core/pull/20340))**
+- **ACLEntityRole BAO tidy fixes
+  ([20504](https://github.com/civicrm/civicrm-core/pull/20504))**
 
-- **Give the custom css file a 'name' to make it easier to manipulate in hook_civicrm_alterBundle() ([20278](https://github.com/civicrm/civicrm-core/pull/20278))**
+- **Dedupe DAO is out of date
+  ([20534](https://github.com/civicrm/civicrm-core/pull/20534))**
 
-- **[REF] Make previously unshared function protected ([20346](https://github.com/civicrm/civicrm-core/pull/20346))**
+- **Switch table mapping to square bracket array syntax.
+  ([20535](https://github.com/civicrm/civicrm-core/pull/20535))**
 
-- **Remove extraneous debug ([20319](https://github.com/civicrm/civicrm-core/pull/20319))**
+- **Update civicrm_generated (5.39 version)
+  ([20571](https://github.com/civicrm/civicrm-core/pull/20571))**
 
-- **dev/core#2613 - Replace deprecated function in useradd task ([20347](https://github.com/civicrm/civicrm-core/pull/20347))**
+- **[REF] Cannot edit CiviCRM Joomla permissions (access control) in 5.37.0
+  (Clean up for [dev/core#2601](https://lab.civicrm.org/dev/core/-/issues/2601):
+  [20271](https://github.com/civicrm/civicrm-core/pull/20271))**
 
-- **[REF] Remove unused parameters ([20301](https://github.com/civicrm/civicrm-core/pull/20301))**
+- **Revised fix for menu/UI issues for Joomla 4.0
+  ([20401](https://github.com/civicrm/civicrm-core/pull/20401))**
 
-- **5.38 ([20344](https://github.com/civicrm/civicrm-core/pull/20344))**
+- **[php8-compat] Fix Include/Exclude Group Custom Search Tests by better
+  handling empty arrays on exclusions in the custom search
+  ([20539](https://github.com/civicrm/civicrm-core/pull/20539))**
 
-- **SearchKit - Rename crmSearchActions module to crmSearchTasks & add hook ([20307](https://github.com/civicrm/civicrm-core/pull/20307))**
+- **[php8-compat] Fix Resources Test issue due to undefined array key add
+  CacheCode ([20538](https://github.com/civicrm/civicrm-core/pull/20538))**
 
-- **[NFC] Remove timecop function references from Cache Tiered Test ([20343](https://github.com/civicrm/civicrm-core/pull/20343))**
+- **[php8-compat] Fix api_v3_PaymentTest failures by putting in more guards into
+  message templates
+  ([20520](https://github.com/civicrm/civicrm-core/pull/20520))**
 
-- **dev/core#2403 - Change Greenwich link color from gray to blue ([20341](https://github.com/civicrm/civicrm-core/pull/20341))**
+- **[php8-compat] Update smarty templates and some PHP files to get the
+  api_v3_contribution testclass to pass on php8
+  ([20512](https://github.com/civicrm/civicrm-core/pull/20512))**
 
-- **[REF] Cleanup BAO_ActionSchedule::getlist() signature ([20239](https://github.com/civicrm/civicrm-core/pull/20239))**
+- **[php8-compact] Add in guards into various templates to fix hook tests in
+  php8 ([20542](https://github.com/civicrm/civicrm-core/pull/20542))**
 
-- **SearchKit - Use default_pager_size setting ([20336](https://github.com/civicrm/civicrm-core/pull/20336))**
+- **[php8-compact] Fix Report tests failing on php8
+  ([20549](https://github.com/civicrm/civicrm-core/pull/20549))**
 
-- **(REF) Regen CRM/Core/DAO/CustomField.php ([20337](https://github.com/civicrm/civicrm-core/pull/20337))**
+- **[php8-compat] Partial Fix of hook tests for php8
+  ([20545](https://github.com/civicrm/civicrm-core/pull/20545))**
 
-- **Fix case sensitive parameter for call to getCustomFieldTokens ([20333](https://github.com/civicrm/civicrm-core/pull/20333))**
+- **[php8-compat] [REF] Fix a couple of functions triggering deprecation notices
+  in php 8.0 where by an optional parameter is before required parameters in the
+  function signature
+  ([20442](https://github.com/civicrm/civicrm-core/pull/20442))**
 
-- **Core_DAO - fire links_callback for all entities ([20332](https://github.com/civicrm/civicrm-core/pull/20332))**
+- **[php8-compat] [REF] Fix call to function CRM_Utils_String::createRandom by
+  ensuring that the length is the first parameter not 2nd
+  ([20441](https://github.com/civicrm/civicrm-core/pull/20441))**
 
-- **Fix CKEditor5 link editing in modal dialog ([20285](https://github.com/civicrm/civicrm-core/pull/20285))**
+- **[php8-compat][NFC] Ensure that the 2nd parameter of hash_equals is a string
+  in authx ([20483](https://github.com/civicrm/civicrm-core/pull/20483))**
 
-- **Fix old-ish regression on paypal standard self-service cancel links ([20210](https://github.com/civicrm/civicrm-core/pull/20210))**
+- **[php8-compat][NFC] Fix using ZipArchive::open on an empty file
+  ([20500](https://github.com/civicrm/civicrm-core/pull/20500))**
 
-- **[Ref] remove redundant call to clearGroupContactCache ([20243](https://github.com/civicrm/civicrm-core/pull/20243))**
+- **[php8-compat][NFC] Fix issue where by we are tryiing to access array keys
+  that haven't been created yet
+  ([20496](https://github.com/civicrm/civicrm-core/pull/20496))**
 
-- **Convert payJunction to doPayment ([20326](https://github.com/civicrm/civicrm-core/pull/20326))**
+- **[REF][php8-compat] Fix more instances of where there is a required parameter
+  for a function after an optional one and fix an issue where by a NULL function
+  property is treated as not exisiting in php8
+  ([20497](https://github.com/civicrm/civicrm-core/pull/20497))**
 
-- **Convert FirstData to doPayment ([20325](https://github.com/civicrm/civicrm-core/pull/20325))**
+- **[REF][php8-compat] Further fixes where there is a required paramater after
+  an optional paramater
+  ([20490](https://github.com/civicrm/civicrm-core/pull/20490))**
 
-- **Convert elavon to doPayment ([20324](https://github.com/civicrm/civicrm-core/pull/20324))**
+- **[php8-compat][REF] Fix some more test failures in php8
+  ([20516](https://github.com/civicrm/civicrm-core/pull/20516))**
 
-- **Convert Realex to doPayment ([20327](https://github.com/civicrm/civicrm-core/pull/20327))**
+- **[php8-compat][REF] Fix api_v3_contributionpagetest on php8
+  ([20518](https://github.com/civicrm/civicrm-core/pull/20518))**
 
-- **Convert payflowpro to doPayment ([20328](https://github.com/civicrm/civicrm-core/pull/20328))**
+- **[php8-compat][REF] Fix more php8 test failures caused by template issues
+  ([20517](https://github.com/civicrm/civicrm-core/pull/20517))**
 
-- **Convert eway to doPayment ([20323](https://github.com/civicrm/civicrm-core/pull/20323))**
+- **[php8-compat][REF] Fix php8 error on undefined constant
+  CIVICRM_DISABLE_DEFAULT_MENU
+  ([20485](https://github.com/civicrm/civicrm-core/pull/20485))**
 
-- **Correct copy-paste error in CustomField schema ([20329](https://github.com/civicrm/civicrm-core/pull/20329))**
+- **[php8-compat][REF] Fix Date unit tests in php8 by passing in 00 instead of
+  null for hours,minutes and seconds
+  ([20525](https://github.com/civicrm/civicrm-core/pull/20525))**
 
-- **Convert AuthorizeNet to doPayment() ([20322](https://github.com/civicrm/civicrm-core/pull/20322))**
+- **[php8-compact][REF] Fix another couple of places where by there are required
+  variables in php function declaration after optional ones
+  ([20526](https://github.com/civicrm/civicrm-core/pull/20526))**
 
-- **get county fields populated via api call ([20309](https://github.com/civicrm/civicrm-core/pull/20309))**
+- **[php8-compact][REF] Fix api_v3_PaymentTokenTest to work on php8
+  ([20527](https://github.com/civicrm/civicrm-core/pull/20527))**
 
-- **dev/release#17 - Synchronize version#s for core and core-extensions ([20303](https://github.com/civicrm/civicrm-core/pull/20303))**
+- **[php8-compat][REF] Fix Case and Custom data tests by adding guards in to
+  templates ([20524](https://github.com/civicrm/civicrm-core/pull/20524))**
 
-- **APIv4 - Save custom fields in bulk ([20269](https://github.com/civicrm/civicrm-core/pull/20269))**
+- **[php8-compat][phpunit8][NFC] Fix PHPUnit Warnings and fix a php error on
+  function declaration syntax in core extension tests
+  ([20477](https://github.com/civicrm/civicrm-core/pull/20477))**
 
-- **[REF] Make use of recently added default pager size setting in Reports ([20273](https://github.com/civicrm/civicrm-core/pull/20273))**
+- **Remove extraneous debug
+  ([20319](https://github.com/civicrm/civicrm-core/pull/20319))**
 
-- **[REF] Duplicate & deprecate processMembership ([20313](https://github.com/civicrm/civicrm-core/pull/20313))**
+- **Remove legacy references to partial_amount_to_pay
+  ([20358](https://github.com/civicrm/civicrm-core/pull/20358))**
 
-- **Add unit test for #20144 ([20320](https://github.com/civicrm/civicrm-core/pull/20320))**
+- **Remove remains of md5 check from authorizenet
+  ([20406](https://github.com/civicrm/civicrm-core/pull/20406))**
 
-- **Explicitly throw an error/status bounce on Edit/New if no types. ([19840](https://github.com/civicrm/civicrm-core/pull/19840))**
+- **Remove deprecation of order-must-be-pending
+  ([20205](https://github.com/civicrm/civicrm-core/pull/20205))**
 
-- **[REF] Switch to using getContributionRecurID function, remove now unused param ([20316](https://github.com/civicrm/civicrm-core/pull/20316))**
+- **Remove some unused variables
+  ([20487](https://github.com/civicrm/civicrm-core/pull/20487))**
 
-- **Afform drag n drop fixes ([20281](https://github.com/civicrm/civicrm-core/pull/20281))**
+- **Remove never-passed parameter from now unshared function
+  ([20304](https://github.com/civicrm/civicrm-core/pull/20304))**
 
-- **[REF] Fully remove ids variable from paypal std ([20317](https://github.com/civicrm/civicrm-core/pull/20317))**
+- **Remove defunct default return property
+  ([20139](https://github.com/civicrm/civicrm-core/pull/20139))**
 
-- **(dev/release#17) Extension UI - Show developmental icon for alpha/beta-stage extensions ([20302](https://github.com/civicrm/civicrm-core/pull/20302))**
+- **Remove now-unused ids parameter from signature
+  ([20299](https://github.com/civicrm/civicrm-core/pull/20299))**
 
-- **Cleanup tracking on group.load ([20310](https://github.com/civicrm/civicrm-core/pull/20310))**
+- **Remove unused functions from payJunction
+  ([20417](https://github.com/civicrm/civicrm-core/pull/20417))**
 
-- **authx - Accept API keys by default ([20081](https://github.com/civicrm/civicrm-core/pull/20081))**
+- **Remove unused variable on dummy processor
+  ([20418](https://github.com/civicrm/civicrm-core/pull/20418))**
 
-- **Activate user when no activation is required ([20229](https://github.com/civicrm/civicrm-core/pull/20229))**
+- **Remove pass-by-ref as param not altered
+  ([20475](https://github.com/civicrm/civicrm-core/pull/20475))**
 
-- **Separates the default language for contacts from the site language ([20214](https://github.com/civicrm/civicrm-core/pull/20214))**
+- **[REF] (Code style) To const, or not const - that is the event
+  ([dev/core#1744](https://lab.civicrm.org/dev/core/-/issues/1744):
+  [20555](https://github.com/civicrm/civicrm-core/pull/20555))**
 
-- **Switch to non deprecated buildPermissionClause() for contact detail report ([20314](https://github.com/civicrm/civicrm-core/pull/20314))**
+- **[REF] Extract function to get locks
+  ([20373](https://github.com/civicrm/civicrm-core/pull/20373))**
 
-- **Do not error on view contribution recur if not displaying contributions ([20209](https://github.com/civicrm/civicrm-core/pull/20209))**
+- **[REF] Remove unused variable
+  ([20378](https://github.com/civicrm/civicrm-core/pull/20378))**
 
-- **dev/core#2593 stop calling loadRelatedObjects / fix for bug ([20300](https://github.com/civicrm/civicrm-core/pull/20300))**
+- **[REF] Slightly more logical order of code
+  ([20368](https://github.com/civicrm/civicrm-core/pull/20368))**
 
-- **[REF] Provide standardised methods to get recurring contribution id & object ([20294](https://github.com/civicrm/civicrm-core/pull/20294))**
+- **[REF] Extract code to transfer groups from temp table to cache
+  ([20435](https://github.com/civicrm/civicrm-core/pull/20435))**
 
-- **[REF] Reverse if statement ([20211](https://github.com/civicrm/civicrm-core/pull/20211))**
+- **[REF] Remove never-passed param
+  ([20456](https://github.com/civicrm/civicrm-core/pull/20456))**
 
-- **Remove deprecation of order-must-be-pending ([20205](https://github.com/civicrm/civicrm-core/pull/20205))**
+- **[REF] APIv4 refactoring to support calculated fields
+  ([20440](https://github.com/civicrm/civicrm-core/pull/20440))**
 
-- **Improve Sample data by ensuring all Credit Card Contributions have a … ([20312](https://github.com/civicrm/civicrm-core/pull/20312))**
+- **[REF] Set receipt_date after sending, (from batch) not in anticipation
+  ([20395](https://github.com/civicrm/civicrm-core/pull/20395))**
 
-- **Remove never-passed parameter from now unshared function ([20304](https://github.com/civicrm/civicrm-core/pull/20304))**
+- **[REF] Minor extraction - getInfoUrl
+  ([20421](https://github.com/civicrm/civicrm-core/pull/20421))**
 
-- **dev/core#2614 - Sample payment processor is the wrong id in the generated sample data for demos ([20311](https://github.com/civicrm/civicrm-core/pull/20311))**
+- **[REF] Fix issue where by mailing urls were always stuck in the original
+  language not the overriden language in a multilingual site
+  ([20102](https://github.com/civicrm/civicrm-core/pull/20102))**
 
-- **Add warning when url_site is not specified for paypal (it won't work if not set) ([20082](https://github.com/civicrm/civicrm-core/pull/20082))**
+- **[REF] Paypal pro - remove call to load contact record
+  ([20423](https://github.com/civicrm/civicrm-core/pull/20423))**
 
-- **Remove defunct default return property ([20139](https://github.com/civicrm/civicrm-core/pull/20139))**
+- **[REF] Stop passing unneed params to the recur function
+  ([20412](https://github.com/civicrm/civicrm-core/pull/20412))**
 
-- **Afform Gui - Add support for entityRef fields ([20216](https://github.com/civicrm/civicrm-core/pull/20216))**
+- **[REF] Replace isFirst parameter
+  ([20411](https://github.com/civicrm/civicrm-core/pull/20411))**
 
-- **Remove now-unused ids parameter from signature ([20299](https://github.com/civicrm/civicrm-core/pull/20299))**
+- **[REF] Remove now-unused params
+  ([20410](https://github.com/civicrm/civicrm-core/pull/20410))**
 
-- **[REF] Use function to getContributionRecurID ([20293](https://github.com/civicrm/civicrm-core/pull/20293))**
+- **[REF] Paypal IPN - Cleanup references to completion
+  ([20407](https://github.com/civicrm/civicrm-core/pull/20407))**
 
-- **[REF] Duplicate processMembership preliminary to cleanup ([20295](https://github.com/civicrm/civicrm-core/pull/20295))**
+- **[REF] Replace deprecated code call
+  ([20409](https://github.com/civicrm/civicrm-core/pull/20409))**
 
-- **Switch to non deprecated buildPermissionClause() for contact summary report ([20287](https://github.com/civicrm/civicrm-core/pull/20287))**
+- **[REF] Cleanup validation in PaypalProIPN single function
+  ([20360](https://github.com/civicrm/civicrm-core/pull/20360))**
 
-- **[NFC/TEST] - Add unit test enforcing automatic chaining for financial type/account creation via api ([20288](https://github.com/civicrm/civicrm-core/pull/20288))**
+- **[REF] Minor simplification
+  ([20393](https://github.com/civicrm/civicrm-core/pull/20393))**
 
-- **5.38 ([20290](https://github.com/civicrm/civicrm-core/pull/20290))**
+- **[REF] Useradd contact task - Use OO instead of hardcoding "if Wordpress"
+  ([20366](https://github.com/civicrm/civicrm-core/pull/20366))**
 
-- **dev/core#2593 [REF] Fix function signature to actually-used variables ([20246](https://github.com/civicrm/civicrm-core/pull/20246))**
+- **[REF] Cleanup on import rows error
+  ([20196](https://github.com/civicrm/civicrm-core/pull/20196))**
 
-- **Use order api when creating a recurring membership from the Membershi… ([20077](https://github.com/civicrm/civicrm-core/pull/20077))**
+- **[REF] Extract function to build temporary table of members of group from
+  Report_Form ([20297](https://github.com/civicrm/civicrm-core/pull/20297))**
 
-- **Change the help text for Message Templates and Scheduled Reminders to include link to CiviCRM Token Documentation page ([20259](https://github.com/civicrm/civicrm-core/pull/20259))**
+- **[REF] Remove now-unused parameter
+  ([20354](https://github.com/civicrm/civicrm-core/pull/20354))**
 
-- **5.38 ([20284](https://github.com/civicrm/civicrm-core/pull/20284))**
+- **[REF] Extract getContributionObject
+  ([20355](https://github.com/civicrm/civicrm-core/pull/20355))**
 
-- **Afform - hide disabled contact types & entities from disabled components/extensions ([20283](https://github.com/civicrm/civicrm-core/pull/20283))**
+- **[REF] Add getter for contributionID
+  ([20318](https://github.com/civicrm/civicrm-core/pull/20318))**
 
-- **5.38 ([20280](https://github.com/civicrm/civicrm-core/pull/20280))**
+- **[REF] Make previous unshared function protected & Remove hard-coded params
+  ([20345](https://github.com/civicrm/civicrm-core/pull/20345))**
 
-- **Typo when retrieving help_pre textarea attributes for price field ([20276](https://github.com/civicrm/civicrm-core/pull/20276))**
+- **[REF] Update Pear Validate Finance CreditCard to use latest tagged release
+  that now includes the improved mastercard 2bin regex
+  ([20351](https://github.com/civicrm/civicrm-core/pull/20351))**
 
-- **[REF] Move ACLPermission Trait into Civi Folder so that it can be acc… ([20208](https://github.com/civicrm/civicrm-core/pull/20208))**
+- **[REF] Make previously unshared function protected
+  ([20346](https://github.com/civicrm/civicrm-core/pull/20346))**
 
-- **dev/core#2606 - Typo in rowCount variable in pager ([20275](https://github.com/civicrm/civicrm-core/pull/20275))**
+- **[REF] Remove unused parameters
+  ([20301](https://github.com/civicrm/civicrm-core/pull/20301))**
 
-- **dev/core#2590 - Remove unused function CRM_Utils_File::relativeDirectory ([20270](https://github.com/civicrm/civicrm-core/pull/20270))**
+- **[REF] Cleanup BAO_ActionSchedule::getlist() signature
+  ([20239](https://github.com/civicrm/civicrm-core/pull/20239))**
 
-- **Afform - Drag & drop fixes ([20263](https://github.com/civicrm/civicrm-core/pull/20263))**
+- **(REF) Regen CRM/Core/DAO/CustomField.php
+  ([20337](https://github.com/civicrm/civicrm-core/pull/20337))**
 
-- **(REF) dev/core#2601 - Cleanup stale parameter ([20271](https://github.com/civicrm/civicrm-core/pull/20271))**
+- **[REF] Remove redundant call to clearGroupContactCache
+  ([20243](https://github.com/civicrm/civicrm-core/pull/20243))**
 
-- **[NFC] Test - Improve tearDown cleanup of domain contacts ([20258](https://github.com/civicrm/civicrm-core/pull/20258))**
+- **[REF] [tests only] Replace direct calls to enable logging with calls to the
+  setting ([20460](https://github.com/civicrm/civicrm-core/pull/20460))**
 
-- **dev/core#2187 Allow sites to customise the default number of rows ret… ([18969](https://github.com/civicrm/civicrm-core/pull/18969))**
+- **[REF] Remove function parameter only used from test
+  ([20459](https://github.com/civicrm/civicrm-core/pull/20459))**
 
-- **Freeze readonly fields ([20204](https://github.com/civicrm/civicrm-core/pull/20204))**
+- **[REF] Extract code determining list of groups requiring a refresh
+  ([20242](https://github.com/civicrm/civicrm-core/pull/20242))**
 
-- **CiviCRM Scheduled Reminders, Subject field missing Token selector - users must copy Token from Body field to Subject ([20260](https://github.com/civicrm/civicrm-core/pull/20260))**
+- **REF - Cleanup array key checking to use array_key_exists
+  ([20563](https://github.com/civicrm/civicrm-core/pull/20563))**
 
-- **Fix delete customgroup using API4 so it removes data table ([20265](https://github.com/civicrm/civicrm-core/pull/20265))**
+- **[REF] CRM_Contact_Task - Use short array syntax
+  ([20562](https://github.com/civicrm/civicrm-core/pull/20562))**
 
-- **5.38 ([20266](https://github.com/civicrm/civicrm-core/pull/20266))**
+- **[REF] Fix Authx tests on Druapl 8/9 by ensuring that we only return an id
+  for the user id if it is greater than 0
+  ([20498](https://github.com/civicrm/civicrm-core/pull/20498))**
 
-- **fix missing parent tearDown ([20261](https://github.com/civicrm/civicrm-core/pull/20261))**
+- **[REF] Move ACLPermission Trait into Civi Folder so that it can be accessed
+  by Extensions ([20208](https://github.com/civicrm/civicrm-core/pull/20208))**
 
-- **Fix missing parent tearDown ([20262](https://github.com/civicrm/civicrm-core/pull/20262))**
+- **[REF] Use function to getContributionRecurID
+  ([20293](https://github.com/civicrm/civicrm-core/pull/20293))**
 
-- **[NFC] Test - fix to use v3 api on postAsserts ([20257](https://github.com/civicrm/civicrm-core/pull/20257))**
+- **[REF] Duplicate processMembership preliminary to cleanup
+  ([20295](https://github.com/civicrm/civicrm-core/pull/20295))**
 
-- **[REF] Extract code determining list of groups requiring a refresh ([20242](https://github.com/civicrm/civicrm-core/pull/20242))**
+- **[REF] Switch to using getContributionRecurID function, remove now unused
+  param ([20316](https://github.com/civicrm/civicrm-core/pull/20316))**
 
-- **[Test] Improve cleanup of domain contacts ([20253](https://github.com/civicrm/civicrm-core/pull/20253))**
+- **[REF] Fully remove ids variable from paypal std
+  ([20317](https://github.com/civicrm/civicrm-core/pull/20317))**
 
-- **dev/core#2602 - Installer doesn't check mysql version properly ([20255](https://github.com/civicrm/civicrm-core/pull/20255))**
+- **[REF] Make use of recently added default pager size setting in Reports
+  ([20273](https://github.com/civicrm/civicrm-core/pull/20273))**
 
-- **Switch l10n.js from ajax callback to assetBuilder ([20121](https://github.com/civicrm/civicrm-core/pull/20121))**
+- **[REF] Duplicate & deprecate processMembership
+  ([20313](https://github.com/civicrm/civicrm-core/pull/20313))**
 
-- **Test fix - assertion fails when run with other tests (sometimes) ([20250](https://github.com/civicrm/civicrm-core/pull/20250))**
+- **[REF] Provide standardised methods to get recurring contribution id & object
+  ([20294](https://github.com/civicrm/civicrm-core/pull/20294))**
 
-- **Improve cleanup on contact test ([20248](https://github.com/civicrm/civicrm-core/pull/20248))**
+- **[REF] Reverse if statement
+  ([20211](https://github.com/civicrm/civicrm-core/pull/20211))**
 
-- **APIv4 - CiviCase API: Fix openening a case with current user as creator ([20238](https://github.com/civicrm/civicrm-core/pull/20238))**
+- **Mark test class as having invalid financials
+  ([20448](https://github.com/civicrm/civicrm-core/pull/20448))**
 
-- **Bump lodash from 4.17.19 to 4.17.21 ([20247](https://github.com/civicrm/civicrm-core/pull/20247))**
+- **Update eventcart test to only test payment form
+  ([20405](https://github.com/civicrm/civicrm-core/pull/20405))**
 
-- **hook_managed - do not try to disable managed entities if is_active is not available to api3.create ([20144](https://github.com/civicrm/civicrm-core/pull/20144))**
+- **Fix profile test teardown
+  ([20439](https://github.com/civicrm/civicrm-core/pull/20439))**
 
-- **Update PHPUnit for PHPUnit8 config to ensure we don't cache test results ([645](https://github.com/civicrm/civicrm-drupal/pull/645))**
+- **Fix separate payment membership test to create valid financial transactions
+  ([20436](https://github.com/civicrm/civicrm-core/pull/20436))**
 
-- **Remove Base Page content filter once it has been used ([240](https://github.com/civicrm/civicrm-wordpress/pull/240))**
+- **fix missing parent tearDown
+  ([20261](https://github.com/civicrm/civicrm-core/pull/20261) and
+  [20262](https://github.com/civicrm/civicrm-core/pull/20262))**
 
-- **Add FUNDING.yml to display a SPONSOR link that directs to c.o ([248](https://github.com/civicrm/civicrm-wordpress/pull/248))**
+- **Fix v3 api payment test to validate on postAssert
+  ([20530](https://github.com/civicrm/civicrm-core/pull/20530))**
 
-- **Update PHPUnit for PHPUnit8 config to ensure we don't cache test results ([249](https://github.com/civicrm/civicrm-wordpress/pull/249))**
+- **Fix Financial item test to validate Financials
+  ([20532](https://github.com/civicrm/civicrm-core/pull/20532))**
 
-- **Add FUNDING.yml to display a SPONSOR link that directs to c.o ([62](https://github.com/civicrm/civicrm-joomla/pull/62))**
+- **Mark DetailTest as having invalid financials
+  ([20552](https://github.com/civicrm/civicrm-core/pull/20552))**
 
-- **Update PHPUnit for PHPUnit8 config to ensure we don't cache test results ([140](https://github.com/civicrm/civicrm-backdrop/pull/140))**
+- **Fix form params for testEventPaymentForms
+  ([20330](https://github.com/civicrm/civicrm-core/pull/20330))**
 
-- **1.x 5.38 ([139](https://github.com/civicrm/civicrm-backdrop/pull/139))**
+- **Update bulkSave test to use the api
+  ([20362](https://github.com/civicrm/civicrm-core/pull/20362))**
 
-- **drush install - Bump up entropy for autogenerated creds. Add signing key. ([128](https://github.com/civicrm/civicrm-backdrop/pull/128))**
+- **Fix contribution page pledge tests to create valid contributions
+  ([20404](https://github.com/civicrm/civicrm-core/pull/20404))**
 
-- **DB/DataObject: use mb_strtolower because in turkish, INSERT becomes Insert ([324](https://github.com/civicrm/civicrm-packages/pull/324))**
+- **Improve cleanup on contact test
+  ([20248](https://github.com/civicrm/civicrm-core/pull/20248))**
 
-- **[php8-compat] Fix calling method_exist with paremeter that is bool not an object in… ([323](https://github.com/civicrm/civicrm-packages/pull/323))**
+- **Test fix up for AdditionalPaymentTest
+  ([20521](https://github.com/civicrm/civicrm-core/pull/20521))**
 
-## <a name="misc"></a>Miscellany
+- **Test fix - assertion fails when run with other tests (sometimes)
+  ([20250](https://github.com/civicrm/civicrm-core/pull/20250))**
+
+- **[Test] Improve cleanup of domain contacts
+  ([20253](https://github.com/civicrm/civicrm-core/pull/20253))**
+
+- **Test - fix contributionTest to validate contributions
+  ([20415](https://github.com/civicrm/civicrm-core/pull/20415))**
+
+- **Test fixes ([20426](https://github.com/civicrm/civicrm-core/pull/20426))**
+
+- **Tax fixes in unit test
+  ([20390](https://github.com/civicrm/civicrm-core/pull/20390))**
+
+- **[Test] Add test cover for contribution tokens in pdf letter
+  ([20217](https://github.com/civicrm/civicrm-core/pull/20217))**
+
+- **Unit test for #20342
+  ([20361](https://github.com/civicrm/civicrm-core/pull/20361))**
+
+- **Add test for mixed Order data
+  ([20241](https://github.com/civicrm/civicrm-core/pull/20241))**
+
+- **Add unit test for #20144
+  ([20320](https://github.com/civicrm/civicrm-core/pull/20320))**
+
+- **Superficial tidy up in test class
+  ([20359](https://github.com/civicrm/civicrm-core/pull/20359))**
+
+- **[NFC] Remove timecop function references from Cache Tiered Test
+  ([20343](https://github.com/civicrm/civicrm-core/pull/20343))**
+
+- **[NFC] Superficial code cleanup
+  ([20446](https://github.com/civicrm/civicrm-core/pull/20446))**
+
+- **[NFC] Cleanup in test class
+  ([20402](https://github.com/civicrm/civicrm-core/pull/20402))**
+
+- **[NFC] {test} code cleanup in test class
+  ([20389](https://github.com/civicrm/civicrm-core/pull/20389))**
+
+- **[NFC] Minor cleanup
+  ([20387](https://github.com/civicrm/civicrm-core/pull/20387))**
+
+- **[NFC] Minor code cleanup
+  ([20386](https://github.com/civicrm/civicrm-core/pull/20386))**
+
+- **[NFC] Fix PHPUnit8 Deprecation Warnings in api_v3 and Civi Test Suites
+  ([20380](https://github.com/civicrm/civicrm-core/pull/20380))**
+
+- **[NFC] [Test] Big cleanup in test class
+  ([20374](https://github.com/civicrm/civicrm-core/pull/20374))**
+
+- **[NFC] Fix PHPUnit8 Deprecation warnings in the api_v4 Test Suite
+  ([20381](https://github.com/civicrm/civicrm-core/pull/20381))**
+
+- **[NFC] Fix PHPUnit8 Warning notices in E2E And in some API unit tests
+  ([20379](https://github.com/civicrm/civicrm-core/pull/20379))**
+
+- **[NFC] Fix PHPUnit8 deprecation warnings in the CRM_AllTests suite
+  ([20377](https://github.com/civicrm/civicrm-core/pull/20377))**
+
+- **[NFC] Further cleanup in test class
+  ([20372](https://github.com/civicrm/civicrm-core/pull/20372))**
+
+- **[NFC] Add in more voids to unit tests to support PHPUnit8
+  ([20369](https://github.com/civicrm/civicrm-core/pull/20369))**
+
+- **[NFC] [Test] Preliminary cleanup in test class
+  ([20371](https://github.com/civicrm/civicrm-core/pull/20371))**
+
+- **[NFC] Add in voids to various setUpBeforeClass and tearDownAfterClass
+  functions ([20365](https://github.com/civicrm/civicrm-core/pull/20365))**
+
+- **[NFC] Update PHPUnit config to not cache results in phpunit8 and add more
+  voids into PayflowProTest
+  ([20356](https://github.com/civicrm/civicrm-core/pull/20356))**
+
+- **[NFC] Add in unit tests of credit card validation rules
+  ([20352](https://github.com/civicrm/civicrm-core/pull/20352))**
+
+- **[NFC/TEST] - Add unit test enforcing automatic chaining for financial
+  type/account creation via api
+  ([20288](https://github.com/civicrm/civicrm-core/pull/20288))**
+
+- **[NFC] Test - Improve tearDown cleanup of domain contacts
+  ([20258](https://github.com/civicrm/civicrm-core/pull/20258))**
+
+- **[NFC] Test - fix to use v3 api on postAsserts
+  ([20257](https://github.com/civicrm/civicrm-core/pull/20257))**
+
+- **[NFC] Fix phpunit9 deprecation issues on using assertType instead of more
+  explicit assertIsArray or AssertIsInt
+  ([20567](https://github.com/civicrm/civicrm-core/pull/20567))**
 
 ## <a name="credits"></a>Credits
 
 This release was developed by the following code authors:
 
-AGH Strategies - Alice Frumin, Andrew Hunt; Agileware - Justin Freeman; bugfolder; Christian Wach; Circle Interactive - Pradeep Nayak; CiviCoop - Jaap Jansma; CiviCRM - Coleman Watts, Tim Otten; CompuCorp - Ahed Eid; Coop SymbioTIC - Mathieu Lutfy, Samuel Vanhove; Dave D; dependabot[bot]; invalid-email-address; iXiam - Vangelis Pantazis; JMA Consulting - Monish Deb, Seamus Lee; Lemniscus - Noah Miller; Megaphone Technology Consulting - Jon Goldberg; MJCO - Mikey O'Toole; MJW Consulting - Matthew Wire; Nicol Wistreich; Progressive Technology Project - Jamie McClelland; Richard van Oosterhout; Squiffle Consulting - Aidan Saunders; Wikimedia Foundation - Eileen McNaughton; Wildsight - Lars Sanders-Green
+AGH Strategies - Alice Frumin, Andie Hunt; Agileware - Justin Freeman;
+Christian Wach; Circle Interactive - Pradeep Nayak; CiviCoop - Jaap Jansma;
+CiviCRM - Coleman Watts, Tim Otten; CompuCorp - Ahed Eid; Coop SymbioTIC -
+Mathieu Lutfy, Samuel Vanhove; Dave D; iXiam - Vangelis Pantazis; JMA
+Consulting - Monish Deb, Seamus Lee; Lemniscus - Noah Miller; Megaphone
+Technology Consulting - Jon Goldberg; MJCO - Mikey O'Toole; MJW Consulting -
+Matthew Wire; Nicol Wistreich; Progressive Technology Project - Jamie
+McClelland; Richard van Oosterhout; Robert J. Lang; Squiffle Consulting - Aidan
+Saunders; Wikimedia Foundation - Eileen McNaughton; Wildsight - Lars
+Sanders-Green
 
 Most authors also reviewed code for this release; in addition, the following
 reviewers contributed their comments:
 
-Agileware - Justin Freeman; Artful Robot - Rich Lott; bugfolder; Business & Code - Alain Benbassat; Christian Wach; Circle Interactive - Pradeep Nayak; civibot[bot]; civicrm-builder; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Nicolas Ganivet, Yashodha Chaku; CompuCorp - Jamie Novick; Coop SymbioTIC - Mathieu Lutfy, Samuel Vanhove; Dave D; Freeform Solutions - Herb van den Dool; Fuzion - Jitendra Purohit; iXiam - Vangelis Pantazis; JMA Consulting - Joe Murray, Monish Deb, Seamus Lee; Lemniscus - Noah Miller; Megaphone Technology Consulting - Jon Goldberg; MJCO - Mikey O'Toole; MJW Consulting - Matthew Wire; Progressive Technology Project - Jamie McClelland; Richard van Oosterhout; Semper IT - Karin Gerritsen; Squiffle Consulting - Aidan Saunders; SYSTOPIA Organisationsberatung - Björn Endres; Tadpole Collective - Kevin Cristiano; Wikimedia Foundation - Eileen McNaughton; Wildsight - Lars Sanders-Green
+Agileware - Justin Freeman;  Business & Code - Alain Benbassat;  CiviDesk -
+Nicolas Ganivet, Yashodha Chaku;  CompuCorp - Jamie Novick;  Coop SymbioTIC -
+Mathieu Lutfy, Samuel Vanhove;  Dave D;  Freeform Solutions - Herb van den Dool;
+Fuzion - Jitendra Purohit;  Semper IT - Karin Gerritsen;  SYSTOPIA
+Organisationsberatung - Björn Endres; Tadpole Collective - Kevin Cristiano
+
 
 ## <a name="feedback"></a>Feedback
 
-These release notes are edited by Alice Frumin and Andrew Hunt.  If you'd like
+These release notes are edited by Alice Frumin and Andie Hunt.  If you'd like
 to provide feedback on them, please log in to https://chat.civicrm.org/civicrm
 and contact `@agh1`.