# CiviCRM 5.53.0

Released September 7, 2022

- **[Synopsis](#synopsis)**
- **[Features](#features)**
- **[Bugs resolved](#bugs)**
- **[Miscellany](#misc)**
- **[Credits](#credits)**
- **[Feedback](#feedback)**

## <a name="synopsis"></a>Synopsis

| *Does this version...?*                                         |         |
|:--------------------------------------------------------------- |:-------:|
| Fix security vulnerabilities?                                   |   no    |
| **Change the database schema?**                                 | **yes** |
| **Alter the API?**                                              | **yes** |
| **Require attention to configuration options?**                 | **yes** |
| **Fix problems installing or upgrading to a previous version?** | **yes** |
| **Introduce features?**                                         | **yes** |
| **Fix bugs?**                                                   | **yes** |


## <a name="features"></a>Features

### Core CiviCRM

- **Make Recent Items available providers an option group so extensions can  
  extend it ([dev/core#3783](https://lab.civicrm.org/dev/core/-/issues/3783):
  [24164](https://github.com/civicrm/civicrm-core/pull/24164))**

  Makes it so extension developers can extend the Recent Items content.

- **Allow custom fields to have custom fields
  ([23995](https://github.com/civicrm/civicrm-core/pull/23995))**

  Makes it so custom fields can have custom fields.

- **CiviCRM Standalone: base classes
  ([22227](https://github.com/civicrm/civicrm-core/pull/22227))**

  Work towards a standalone CiviCRM (no CMS needed).

- **SearchKit: HTML fields display
  ([dev/core#3723](https://lab.civicrm.org/dev/core/-/issues/3723):
  [24023](https://github.com/civicrm/civicrm-core/pull/24023))**

  Allows HTML in SearchKit fields.

- **APIv4 Contact.get - include email, phone, address?
  ([dev/core#3659](https://lab.civicrm.org/dev/core/-/issues/3659):
  [23972](https://github.com/civicrm/civicrm-core/pull/23972))**

  Makes it easier to search and display contact primary email, phone, and IM
  without using any joins in SearchKit.

- **Add (pixels) to available label & pdf layout units
  ([24136](https://github.com/civicrm/civicrm-core/pull/24136))**

  Makes `px` (pixels) an available layout unit for labels and pdfs.

- **Metadata - Add label field for SavedSearch
  ([24162](https://github.com/civicrm/civicrm-core/pull/24162))**

  Adds a label field to the metadata for the SavedSearch entity.

- **Make civi 2 nanoseconds faster
  ([24169](https://github.com/civicrm/civicrm-core/pull/24169))**

  Performance improvement.

- **Importer - Increase size of queue batches
  ([24151](https://github.com/civicrm/civicrm-core/pull/24151))**

  Performance improvement.

- **Afform - provide easy way to add navigation menu from the form
  ([24013](https://github.com/civicrm/civicrm-core/pull/24013))**

  Allows administrators to create a navigation menu entry while editing an
  Afform.

- **Afform - Allow groups and tags and age to be filters
 ([23974](https://github.com/civicrm/civicrm-core/pull/23974))**

  Ensures Contact filter fields (groups, tags, age) are available as Afform
  search filters.

- **Afform - Post-submit redirect tokens
 ([24016](https://github.com/civicrm/civicrm-core/pull/24016))**

  Supports tokens in the redirect url, so that e.g. after creating a new contact
  you can be redirected to that contacts' summary page.

- **define format at one place
  ([24049](https://github.com/civicrm/civicrm-core/pull/24049))**

  Moves pdf format array to one place so that it can be altered using hooks.

- **Set target="_blank" on external footer links
 ([23875](https://github.com/civicrm/civicrm-core/pull/23875))**

  Adds rel="external" and target="_blank" attributes to external links in the
  footer.

- **Status Check - Report the overall status (accurately)
 ([24027](https://github.com/civicrm/civicrm-core/pull/24027))**

  Improves the Status reported in the footer.

- **Upgrade task to handle %A date format specifier change
  ([24077](https://github.com/civicrm/civicrm-core/pull/24077))**

  Adds a post upgrade message about the change to teh date token %A output.

### CiviCase

- **Case custom field with clickable contact reference
  ([24072](https://github.com/civicrm/civicrm-core/pull/24072))**

  Makes Case contact reference custom fields clickable.

- **Improvements to Case Detail report
  ([dev/core#3768](https://lab.civicrm.org/dev/core/-/issues/3768):
  [24120](https://github.com/civicrm/civicrm-core/pull/24120),
  [24155](https://github.com/civicrm/civicrm-core/pull/24155) and
  [24109](https://github.com/civicrm/civicrm-core/pull/24109))**

  Improves the Case Detail report by adding an option to include city as a
  column and adding a filter for 'Activity type of the last activity'

### CiviContribute

- **Add `paid_amount `, `balance_amount`, `tax_exclusive_amount` available to
  apiv4 ([24118](https://github.com/civicrm/civicrm-core/pull/24118))**

  Improves APIv4 by adding `paid_amount `, `balance_amount` and
  `tax_exclusive_amount`.

- **Get offline contribution-receipt fully working with preview screen (Work
  Towards [dev/core#3694](https://lab.civicrm.org/dev/core/-/issues/3694):
  [23870](https://github.com/civicrm/civicrm-core/pull/23870))**

  Improves user experience of the offline contribution receipt preview.

## <a name="bugs"></a>Bugs resolved

### Core CiviCRM

- **CiviCRM Reports, setting the Report option "Available for Dashboard?" will
  now add the Report to all users Dashboards, which is new and undesirable
  behaviour ([dev/core#3799](https://lab.civicrm.org/dev/core/-/issues/3799):
  [24238](https://github.com/civicrm/civicrm-core/pull/24238))**

- **Export fails for contact reference of type multi-select
  ([dev/core#3751](https://lab.civicrm.org/dev/core/-/issues/3751):
  [24047](https://github.com/civicrm/civicrm-core/pull/24047))**

- **Some file upload fields not uploading
  ([dev/core#3736](https://lab.civicrm.org/dev/core/-/issues/3736):
  [24004](https://github.com/civicrm/civicrm-core/pull/24004))**

  Fixes uploading files on the message template form.

- **Errors with multiple-contact reference field handling
  ([dev/core#3712](https://lab.civicrm.org/dev/core/-/issues/3712):
  [23932](https://github.com/civicrm/civicrm-core/pull/23932))**

- **Upgrader - Apply extension updates after core updates
  ([dev/core#3490](https://lab.civicrm.org/dev/core/-/issues/3490):
  [24030](https://github.com/civicrm/civicrm-core/pull/24030))**

- **E-notice fix on Is delete record  
  ([24157](https://github.com/civicrm/civicrm-core/pull/24157))**

- **APIv4 - Fix resolving pseudoconstants for less-permissioned users
  ([24203](https://github.com/civicrm/civicrm-core/pull/24203))**

- **Fix regression causing custom groups to reset to 'Contact' when updated
  ([24220](https://github.com/civicrm/civicrm-core/pull/24220))**

- **Fix ActionLog BAO to not overwrite existing data
  ([24035](https://github.com/civicrm/civicrm-core/pull/24035))**

- **Call static function statically
  ([24114](https://github.com/civicrm/civicrm-core/pull/24114))**

- **Remove extraneous closing tags
  ([24108](https://github.com/civicrm/civicrm-core/pull/24108))**

- **Fix regex on windows
  ([24094](https://github.com/civicrm/civicrm-core/pull/24094))**

- **Fix Angular datepicker to keep up with $digest cycle
  ([24079](https://github.com/civicrm/civicrm-core/pull/24079))**

- **Fix grep in guzzle mock patch
  ([24096](https://github.com/civicrm/civicrm-core/pull/24096))**

- **Update cweagans/composer-patches to 1.7.2 to fix delete-and-reinstall
  problem ([24015](https://github.com/civicrm/civicrm-core/pull/24015))**

- **SearchKit - Fix editable when displaying an icon
  ([24255](https://github.com/civicrm/civicrm-core/pull/24255))**

- **SearchKit - Fix adding deep joins
  ([23993](https://github.com/civicrm/civicrm-core/pull/23993))**

  Fixes a UI bug that was preventing joins past a depth of 2 to be added.

- **SearchKit - Fix viewing search display for anonymous user
  ([24180](https://github.com/civicrm/civicrm-core/pull/24180))**

- **Cannot uninstall Searchkit (dmaster)
  ([dev/core#3179](https://lab.civicrm.org/dev/core/-/issues/3179#note_77504):
  [23895](https://github.com/civicrm/civicrm-core/pull/23895))**

- **Update zetacomponents/mail to 1.9.3 so can remove patches
  ([24198](https://github.com/civicrm/civicrm-core/pull/24198))**

- **zetacomponents/mail - Ensure latest mail patches are included
  ([24233](https://github.com/civicrm/civicrm-core/pull/24233))**

- **CrmUi - Fix crmSelect2 to work with ngOptions
  ([24224](https://github.com/civicrm/civicrm-core/pull/24224))**

- **CrmUi - Fix tabSetOptions variable
  ([24204](https://github.com/civicrm/civicrm-core/pull/24204))**

- **composer.json - Declare requirement for `composer-runtime-api`
  ([24202](https://github.com/civicrm/civicrm-core/pull/24202))**

- **Api4 Explorer - Use metadata for field suffixes instead of guessing
  ([24168](https://github.com/civicrm/civicrm-core/pull/24168))**

- **API - Consistently save custom data for v3 & v4
  ([24036](https://github.com/civicrm/civicrm-core/pull/24036))**

- **APIv4 - Allow values to start with a dollar sign in chaining
  ([24052](https://github.com/civicrm/civicrm-core/pull/24052))**

- **APIv4 - Fix mishandling of boolean custom values
  ([23970](https://github.com/civicrm/civicrm-core/pull/23970))**

- **APIv4 export action: find DAO by ID instead of just calling the constructor
  and setting the ID  
  ([24089](https://github.com/civicrm/civicrm-core/pull/24089))**

- **Afform - Require Authx
  ([23767](https://github.com/civicrm/civicrm-core/pull/23767))**

  Makes Authx a dependency for Afform.

- **Form Builder: Load contact summary blocks on Print Summary page
  ([dev/core#3743](https://lab.civicrm.org/dev/core/-/issues/3743):
  [24024](https://github.com/civicrm/civicrm-core/pull/24024))**

- **Afform - show icon on button only if icon is selected
  ([24073](https://github.com/civicrm/civicrm-core/pull/24073))**

- **Afform - Update correct existing email,phone,address & prevent deletion of
  others ([24172](https://github.com/civicrm/civicrm-core/pull/24172))**

- **Afform - Fix js error when checking to refresh menuBar
  ([24163](https://github.com/civicrm/civicrm-core/pull/24163))**

- **Afform - Switch to APIv4 for managed afform_type option group
  ([23896](https://github.com/civicrm/civicrm-core/pull/23896))**

  Updates managed entity code, with handling to prevent errors in weird upgrade
  scenarios.

- **Afform - Add "clear" button to non-required radios
  ([23413](https://github.com/civicrm/civicrm-core/pull/23413))**

- **afform: breadcrumbs present when flagged for frontend
  ([dev/core#3741](https://lab.civicrm.org/dev/core/-/issues/3741):
  [24022](https://github.com/civicrm/civicrm-core/pull/24022))**

- **remove start/end date as mandatory in Demographics report
  ([24048](https://github.com/civicrm/civicrm-core/pull/24048))**

- **Poly-fill-me-up
  ([23954](https://github.com/civicrm/civicrm-core/pull/23954))**

  Adds polyfill for PHP 7.4, 8.0, 8.1, and 8.2.

### CiviCase

- **Use fontawesome icon helper for activity/Page/AJAX
  ([24021](https://github.com/civicrm/civicrm-core/pull/24021))**

  Fixes a missing delete icon on case roles on some themes.

### CiviContribute

- **Fix line item 'title' determination
  ([24142](https://github.com/civicrm/civicrm-core/pull/24142))**

- **Fix and followups for invoice receipt message template
  ([24111](https://github.com/civicrm/civicrm-core/pull/24111) and
  [24101](https://github.com/civicrm/civicrm-core/pull/24101))**

  Removes extraneous closing tags from the invoice receipt message template and
  adds an upgrade warning regarding the change.

- **5.51 regression - Contribution import - external id/contact id matches to
  wrong records
  ([dev/core#3784](https://lab.civicrm.org/dev/core/-/issues/3784):
  [24166](https://github.com/civicrm/civicrm-core/pull/24166))**

- **Scheduled Job, Process Pledges reports an error when executed - Scheduled
  Job Failure: Finished execution of Process Pledges with result: Failure,
  Error message: invalid criteria for IN
  ([dev/core#3749](https://lab.civicrm.org/dev/core/-/issues/3749):
  [24059](https://github.com/civicrm/civicrm-core/pull/24059))**

- **remove pledge status as mandatory in Pledge report
  ([24028](https://github.com/civicrm/civicrm-core/pull/24028))**

- **Fix 'Pledge Made Date' display to show date and not time
  ([24031](https://github.com/civicrm/civicrm-core/pull/24031))**

- **E_NOTICEs from CRM_Contribute_Task::permissionedTaskTitles() - undefined /
  null array errors
  ([dev/core#3737](https://lab.civicrm.org/dev/core/-/issues/3737):
  [24010](https://github.com/civicrm/civicrm-core/pull/24010))**

- **Error thrown when 'remove'ing from CiviContribute Batch
  ([dev/core#3050](https://lab.civicrm.org/dev/core/-/issues/3050):
  [24025](https://github.com/civicrm/civicrm-core/pull/24025))**

- **Stop adding 'In Progress' and 'Overdue' statuses to
  civicrm_contribution.contribution_status_id option group (Work Towards
  [dev/financial#201](https://lab.civicrm.org/dev/financial/-/issues/201):
  [24050](https://github.com/civicrm/civicrm-core/pull/24050) and
  [24051](https://github.com/civicrm/civicrm-core/pull/24051))**

  Fixes PaypalPro IPN to refer to correct option group and fixes pledge payment
  to not refer to Contribution status.

- **Avoid sending blank invoices
  ([24065](https://github.com/civicrm/civicrm-core/pull/24065))**

### CiviEvent

- **CiviCRM 5.51, Import Participants when matching by External / Contact ID
  always matches to Contacts with ID < 10
  ([dev/core#3786](https://lab.civicrm.org/dev/core/-/issues/3786):
  [24153](https://github.com/civicrm/civicrm-core/pull/24153))**

### CiviMember

- **Notice: Undefined offset: 18 in CRM_Member_Form_Task_Batch->buildQuickForm()
  ([dev/core#3772](https://lab.civicrm.org/dev/core/-/issues/3772):
  [24124](https://github.com/civicrm/civicrm-core/pull/24124))**

### Drupal Integration

- **Error: Trying to access array offset on value of type null in
  Drupal\civicrm\Plugin\Block\CivicrmBlock->build
  ([dev/drupal#181](https://lab.civicrm.org/dev/drupal/-/issues/181):
  [75](https://github.com/civicrm/civicrm-drupal-8/pull/75))**

  Fixes an error when a user without proper permissions tries to view the Recent
  Items block.

- **Drupal 10 requires Guzzle 7
  ([dev/drupal#171](https://lab.civicrm.org/dev/drupal/-/issues/171):
  [22918](https://github.com/civicrm/civicrm-core/pull/22918))**

  Allows guzzle 7 for drupal 10.

- **Lower minimum polyfill version since conflicts with drupal/core-recommended
  ([24017](https://github.com/civicrm/civicrm-core/pull/24017))**

### WordPress Integration

- **Downgrade Symfony Service Contracts to 2.2.0 to fix php fatal error in
  wordpress ([24171](https://github.com/civicrm/civicrm-core/pull/24171))**

- **fix broken url for wordpress in example code
  ([24084](https://github.com/civicrm/civicrm-core/pull/24084))**

## <a name="misc"></a>Miscellany

- **Log a bit more deprecation info
  ([24064](https://github.com/civicrm/civicrm-core/pull/24064))**

- **Skip warning about event-online message template during upgrade
  ([24141](https://github.com/civicrm/civicrm-core/pull/24141))**

- **APIv4 - Improve pseudoconstant support in getFields
  ([24099](https://github.com/civicrm/civicrm-core/pull/24099))**

- **Replace all calls to deprecated method
  CRM_Core_PseudoConstant::activityType()
  ([dev/core#3692](https://lab.civicrm.org/dev/core/-/issues/3692):
  [23981](https://github.com/civicrm/civicrm-core/pull/23981),
  [23982](https://github.com/civicrm/civicrm-core/pull/23982) and
  [23979](https://github.com/civicrm/civicrm-core/pull/23979))**

- **[REF] Move reCAPTCHA to core extension
  (Work Towards [dev/core#2571](https://lab.civicrm.org/dev/core/-/issues/2571):
  [20588](https://github.com/civicrm/civicrm-core/pull/20588))**

- **Regenerate sql
  ([24119](https://github.com/civicrm/civicrm-core/pull/24119))**

- **composer.json - Update scssphp and related libraries (for PHP 8.1)
  ([24044](https://github.com/civicrm/civicrm-core/pull/24044))**

- **net_smtp upgrade to 1.10.0
  ([23998](https://github.com/civicrm/civicrm-core/pull/23998))**

- **Add whitespace to exception message
  ([24057](https://github.com/civicrm/civicrm-core/pull/24057))**

- **Update contributor-key.yml
  ([24078](https://github.com/civicrm/civicrm-core/pull/24078))**

- **Make unshared function private, remove unused return
  ([24105](https://github.com/civicrm/civicrm-core/pull/24105))**

- **Move hook_civicrm_translateFields from message_admin to core
  ([24063](https://github.com/civicrm/civicrm-core/pull/24063))**

- **Minor test cleanup
  ([24071](https://github.com/civicrm/civicrm-core/pull/24071))**

- **Whitespace cleanup  in invoice template
  ([24113](https://github.com/civicrm/civicrm-core/pull/24113))**

- **Fix test to not use Contribution option group for ContributionRecur status
  ([24135](https://github.com/civicrm/civicrm-core/pull/24135))**

- **composer.lock hash out of date
  ([24011](https://github.com/civicrm/civicrm-core/pull/24011))**

- **add classes to the contribution view page
  ([24012](https://github.com/civicrm/civicrm-core/pull/24012))**

- **removed import contacts access argument for summary path
  ([24206](https://github.com/civicrm/civicrm-core/pull/24206))**

- **Remove `loadAll` parameter from loadRelatedObjects
  ([24140](https://github.com/civicrm/civicrm-core/pull/24140))**

- **Remove some fixmes from message tpls
  ([24107](https://github.com/civicrm/civicrm-core/pull/24107))**

- **Remove extra space, offline receipt
  ([24106](https://github.com/civicrm/civicrm-core/pull/24106))**

- **Remove call to `loadRelatedObjects` from `completetransaction`
  ([24087](https://github.com/civicrm/civicrm-core/pull/24087))**

- **Remove legacy `apiquery` call from `isContactInGroup`
  ([24062](https://github.com/civicrm/civicrm-core/pull/24062))**

- **Remove deprecated call to `loadRelatedObjects`
  ([24088](https://github.com/civicrm/civicrm-core/pull/24088))**

- **Remove unused variable
  ([24128](https://github.com/civicrm/civicrm-core/pull/24128))**

- **Remove reference to CiviAuction
  ([24187](https://github.com/civicrm/civicrm-core/pull/24187))**

- **[REF] Fix Test fails on import by ensuring that Month Abbreviations are
  formatted based on the first of each month
  ([24100](https://github.com/civicrm/civicrm-core/pull/24100))**

- **[REF] OAuth - Move some API code to the BAO for better reusability
  ([23725](https://github.com/civicrm/civicrm-core/pull/23725))**

- **[REF] Convert Elavon Payment Processor to use Guzzle and ensure that we are
  using POST requests not GET requests to Elavon end point
  ([24131](https://github.com/civicrm/civicrm-core/pull/24131))**

- **[REF] Upgrade DOMPDF to 2.x branch
  ([23946](https://github.com/civicrm/civicrm-core/pull/23946))**

- **[REF][PHP8.1] Batch 4 of fixing issues found in unit tests where passing
  NULL values triggers deprecations
  ([24018](https://github.com/civicrm/civicrm-core/pull/24018))**

- **[REF][PHP8.1] Upgrade oauth2-client,zetacomponents/base,htmlpurfier packages
  to versions that support php8.1
  ([23984](https://github.com/civicrm/civicrm-core/pull/23984))**

- **[php 8.1 compat] Avoid passing null to explode()
  ([24177](https://github.com/civicrm/civicrm-core/pull/24177))**

- **[php 8.1 compat] Avoid passing null to strlen
  ([24178](https://github.com/civicrm/civicrm-core/pull/24178))**

- **[php 8.1 compat] Avoid CRM_Utils_System::url null for $query param
  ([24176](https://github.com/civicrm/civicrm-core/pull/24176))**

- **[REF][PHP8.1] Fix a couple of deprecations in php8.1 by specifying that
  return type may change in BaseParamQuery and by ensuring that we don't pass
  null into function_exists in I18n class
  ([23851](https://github.com/civicrm/civicrm-core/pull/23851))**

- **[REF] Additional PHP8.1 fix for passing in NULL value to strlen
  ([349](https://github.com/civicrm/civicrm-packages/pull/349))**

- **[REF][PHP8.1] A third batch of fixes where passing in NULL values causes
  deprecation notices in php8.1
  ([23999](https://github.com/civicrm/civicrm-core/pull/23999))**

- **Fix test. Don't hide errors. (Followup to 23999)
  ([24007](https://github.com/civicrm/civicrm-core/pull/24007))**

- **[REF][PHP8.1] Replace usage of the date_format modifer with crmDate to
  resolve issues with strftime
  ([24008](https://github.com/civicrm/civicrm-core/pull/24008))**

- **[REF][PHP8.1][INTL] Remove dependency on strftime function by using ts to
  generate day full names and abbreviations and month abbreviations
  ([24032](https://github.com/civicrm/civicrm-core/pull/24032))**

- **[REF][PHP8.1] Apply patches from upstream to ensure league/csv can work on
  php8.1 ([24046](https://github.com/civicrm/civicrm-core/pull/24046))**

- **[php 8.1 compat] Avoid CRM_Utils_System::url null for $query param
  ([24192](https://github.com/civicrm/civicrm-core/pull/24192))**

- **[REF][PHP8.1] Update phpoffice/phpword and tecnickcom/tcpdf  packages for
  php8.1 compatability
  ([24045](https://github.com/civicrm/civicrm-core/pull/24045))**

- **[REF][PHP8.1] Another batch of fixes for passing in NULL values into
  functions that expect string|array parameters
  ([24082](https://github.com/civicrm/civicrm-core/pull/24082))**

- **[NFC][PHP8.1] Ensure that Trait function is only accessed by classes that
  use the trait ([24081](https://github.com/civicrm/civicrm-core/pull/24081))**

- **[REF][PHP8.1] Permit single quotes within html attributes
  ([24083](https://github.com/civicrm/civicrm-core/pull/24083))**

- **[REF][PHP8.1] Do not set auto_detect_line_endings to true on php versions
  8.1 and later as it is deprecated
  ([24092](https://github.com/civicrm/civicrm-core/pull/24092))**

- **[REF][PHP8.1] Apply patch in PHPWord to fix passing in null value into
  strlen in validating locale
  ([24093](https://github.com/civicrm/civicrm-core/pull/24093))**

- **[REF][PHP8.1] Apply PR patch to fix issue in php8.1 where mysqli error
  reporting changed
  ([23996](https://github.com/civicrm/civicrm-core/pull/23996))**

- **[REF][PHP8.1] Fix some further places where passing in NULL is deprecated in
  php8.1 ([348](https://github.com/civicrm/civicrm-packages/pull/348))**

- **[REF][PHP8.1] Fix issues where passing in NULL values causes deprecations in
  php8.1 ([346](https://github.com/civicrm/civicrm-packages/pull/346))**

- **[REF][PHP8.1] Fix return type hint deprecations in php8.1 in the IDS
  ([347](https://github.com/civicrm/civicrm-packages/pull/347))**

- **[REF][PHP8.1] Fix Return type hints and passing in NULL values causing
  deprecation notices in php8.1 in Property Bag
  ([24000](https://github.com/civicrm/civicrm-core/pull/24000))**

- **[REF][PHP8.1] Fix issues in core extensions where passing in NULL values is
  no longer supported
  ([23997](https://github.com/civicrm/civicrm-core/pull/23997))**

- **[NFC] Convert Payment Processor ID field to payment processor in event
  create in tests
  ([24256](https://github.com/civicrm/civicrm-core/pull/24256))**

- **(NFC) Add common `@group` for import-related tests
  ([24150](https://github.com/civicrm/civicrm-core/pull/24150))**

- **NFC - remove unused variables, minor tidy up
  ([24139](https://github.com/civicrm/civicrm-core/pull/24139))**

- **[NFC] Resolve phpunit warning about using assertContains on strings
  ([24091](https://github.com/civicrm/civicrm-core/pull/24091))**

- **(NFC) HookStyleListener - Comments
  ([24055](https://github.com/civicrm/civicrm-core/pull/24055))**

- **(NFC) CRM_Core_Permission - More docblocks
  ([24043](https://github.com/civicrm/civicrm-core/pull/24043))**

- **[NFC] Add in convertDeprecationsToExceptions='true' to core extension's
  phpunit.xml.dist files
  ([23986](https://github.com/civicrm/civicrm-core/pull/23986))**

- **[NFC] Convert Deprecations in tests to exceptions
  ([23985](https://github.com/civicrm/civicrm-core/pull/23985))**

- **[NFC] fix composer.lock hash
  ([23978](https://github.com/civicrm/civicrm-core/pull/23978))**

- **[NFC] dompdf patch whitespace fix
  ([23977](https://github.com/civicrm/civicrm-core/pull/23977))**

## <a name="credits"></a>Credits

This release was developed by the following code authors:

AGH Strategies - Andie Hunt; Agileware - Justin Freeman; Alexy Mikhailichenko;
Circle Interactive - Pradeep Nayak; CiviCRM - Coleman Watts, Tim Otten;
CiviDesk - Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy;
CSES (Chelmsford Science and Engineering Society) - Adam Wood; Dave D;
Freeform Solutions - Herb van den Dool; Jens Schuppe;
JMA Consulting - Seamus Lee; Joinery - Allen Shaw; KAM z.s. - Vít Maňásek;
Lemniscus - Noah Miller; Megaphone Technology Consulting - Jon Goldberg;
MJW Consulting - Matthew Wire; Robert J. Lang;
Tadpole Collective - Kevin Cristiano; Third Sector Design - Kurund Jalmi,
Michael McAndrew; Wikimedia Foundation - Eileen McNaughton

Most authors also reviewed code for this release; in addition, the following
reviewers contributed their comments:

Agileware - Francis Whittle; Andy Burns; Artful Robot - Rich Lott;
avall-llovera; Betty Dolfing; Circle Interactive - Pradeep Nayak;
CiviCoop - Jaap Jansma; Francesc Bassas i Bullich; JMA Consulting - Monish Deb;
Levi.k; Mikey O'Toole; Savion Lee; Squiffle Consulting - Aidan Saunders

## <a name="feedback"></a>Feedback

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`.
