remove extra question mark
[civicrm-core.git] / release-notes / 5.47.0.md
index 064557aa3c2825cc8ec06e2c018b9137617c67f2..0b8a55f5821cb8068f5e67e535ba065fc6c403b4 100644 (file)
 # CiviCRM 5.47.0
 
-Released March 2, 2022;
+Released March 4, 2022
 
+- **[Synopsis](#synopsis)**
 - **[Features](#features)**
 - **[Bugs resolved](#bugs)**
 - **[Miscellany](#misc)**
 - **[Credits](#credits)**
+- **[Feedback](#feedback)**
 
-## <a name="features"></a>Features
+## <a name="synopsis"></a>Synopsis
 
-## <a name="bugs"></a>Bugs resolved
+| *Does this version...?*                                         |         |
+|:--------------------------------------------------------------- |:-------:|
+| 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?     |   no    |
+| **Introduce features?**                                         | **yes** |
+| **Fix bugs?**                                                   | **yes** |
+
+## <a name="features"></a>Features
 
 ### Core CiviCRM
 
-- **Follow up fix on #22685 financial acl move to extension ([22499](https://github.com/civicrm/civicrm-core/pull/22499))**
+- **Add created_date & modified_date to civicrm_relationship
+  ([22480](https://github.com/civicrm/civicrm-core/pull/22480))**
 
-- **Contributor key: Add Ian Wilson ([22781](https://github.com/civicrm/civicrm-core/pull/22781))**
+  Adds created_date & modified_date to the civicrm_relationship table.
 
-- **dev/core#3066 - Check CiviPledge is enabled before disconnecting pledge payments ([22779](https://github.com/civicrm/civicrm-core/pull/22779))**
+- **Add option to display money tokens without formatting
+  ([22548](https://github.com/civicrm/civicrm-core/pull/22548))**
 
-- **dev/core#3063 APIv3 - Fix numeric option matching  ([22740](https://github.com/civicrm/civicrm-core/pull/22740))**
+  Adds an option to display money tokens without formatting.
 
-- **Fix ContributionRecur.payment_processor_id pseudoconstant ([22750](https://github.com/civicrm/civicrm-core/pull/22750))**
+- **SearchKit - Improve field/operator/value selection UI
+  ([22604](https://github.com/civicrm/civicrm-core/pull/22604))**
 
-- **enforce required fields on Contact.duplicatecheck ([22741](https://github.com/civicrm/civicrm-core/pull/22741))**
+  Improves the SearchKit UI for selecting field/operator/value conditions.
+  Affects various parts of the UI, like css conditions, link conditions,
+  where/on/having clauses, etc.
 
-- **dev/core#3056 - Crash with search builder if civigrant not enabled and have admin rights ([22714](https://github.com/civicrm/civicrm-core/pull/22714))**
+- **SearchKit - Support operators in conditional css rules
+  ([22552](https://github.com/civicrm/civicrm-core/pull/22552))**
 
-- **dev/core#3059 Regression fix - be tolerant with smarty money ([22727](https://github.com/civicrm/civicrm-core/pull/22727))**
+  Allows operators other than = in SearchKit conditional style rules.
 
-- **(dev/core#3055) Fix dedupe check to not require elevated permissions ([22733](https://github.com/civicrm/civicrm-core/pull/22733))**
+- **SearchKit - Allow Smarty in field rewrite
+  ([22592](https://github.com/civicrm/civicrm-core/pull/22592))**
 
-- **APIv4 SortableEntity - Fix sorting custom fields with option groups ([22716](https://github.com/civicrm/civicrm-core/pull/22716))**
+  Gives the ability to use Smarty syntax in the "rewrite" of SearchKit displays.
 
-- **dev/core#3057 - Fix missing civigrant ([22717](https://github.com/civicrm/civicrm-core/pull/22717))**
+- **SearchKit: Relationship Description unavailable
+  ([dev/core#3019](https://lab.civicrm.org/dev/core/-/issues/3019):
+  [22606](https://github.com/civicrm/civicrm-core/pull/22606))**
 
-- **authx - Add configuration screen ([22058](https://github.com/civicrm/civicrm-core/pull/22058))**
+  Exposes relationship description, created/modified_date & permissions fields
+  in SearchKit.
 
-- **REF - Switch to using new `CRM_Core_Component::isEnabled()` ([22687](https://github.com/civicrm/civicrm-core/pull/22687))**
+- **SearchKit - add/remove tags action for all taggable entities
+  ([21865](https://github.com/civicrm/civicrm-core/pull/21865))**
 
-- **Improve field accessibility in legacycustomsearches ([22710](https://github.com/civicrm/civicrm-core/pull/22710))**
+  Adds a new angular-based action to SearchKit for bulk adding/removing tags
+  from contacts, cases, activities, etc.
 
-- **Don't throw PHP notice when rendering dedupefind template. ([22709](https://github.com/civicrm/civicrm-core/pull/22709))**
+- **SearchKit - Support conditional links
+  ([22557](https://github.com/civicrm/civicrm-core/pull/22557))**
 
-- **(dev/core#2077) Make 'civicrm/ajax/rest' interoperable with 'extern/rest.php' parameters ([19727](https://github.com/civicrm/civicrm-core/pull/19727))**
+  Adds an advanced feature to conditionally show/hide links in a
+  links/buttons/menu column, based on user permissions or row values.
 
-- **Enotice fixes with datepicker ([22705](https://github.com/civicrm/civicrm-core/pull/22705))**
+- **SearchKit - Update operator labels
+  ([22554](https://github.com/civicrm/civicrm-core/pull/22554))**
 
-- **Enotice fix with priceset template ([22708](https://github.com/civicrm/civicrm-core/pull/22708))**
+  Updates SearchKit labels to hopefully better describe ReGex.
 
-- **Remove unused invalidProfiles variable, and simplify template. ([22704](https://github.com/civicrm/civicrm-core/pull/22704))**
+- **SearchKit - Enable joins for custom fields and option groups
+  ([22355](https://github.com/civicrm/civicrm-core/pull/22355))**
 
-- **Enotic fixes ([22697](https://github.com/civicrm/civicrm-core/pull/22697))**
+  Enables SearchKit to join custom groups to custom fields, and option groups to
+  option values.
 
-- **5.46.0 - Run some autocleaning on release notes ([22700](https://github.com/civicrm/civicrm-core/pull/22700))**
+- **APIv4 - Add SubscriptionHistory entity
+  ([22435](https://github.com/civicrm/civicrm-core/pull/22435))**
 
-- **Bump follow-redirects from 1.11.0 to 1.14.7 ([22696](https://github.com/civicrm/civicrm-core/pull/22696))**
+  Adds a SubscriptionHistory entity to APIv4.
 
-- **Bump engine.io from 4.1.1 to 4.1.2 ([22695](https://github.com/civicrm/civicrm-core/pull/22695))**
+- **APIv4 - Make Permission 'group' discoverable in API Explorer
+  ([22559](https://github.com/civicrm/civicrm-core/pull/22559))**
 
-- **Bump ansi-regex from 5.0.0 to 5.0.1 ([22693](https://github.com/civicrm/civicrm-core/pull/22693))**
+  Makes `group` options for the `Permission` API discoverable.
 
-- **Bump log4js from 6.3.0 to 6.4.1 ([22694](https://github.com/civicrm/civicrm-core/pull/22694))**
+- **Improve field accessibility in legacycustomsearches
+  ([22710](https://github.com/civicrm/civicrm-core/pull/22710))**
 
-- **[REF] Switch OptionGroup BAO to use new centralized logic to make name from title ([22654](https://github.com/civicrm/civicrm-core/pull/22654))**
+  Improves accessibility of legacy custom searches.
 
-- **Update composer.json for composer 2.2 allow-plugins ([22692](https://github.com/civicrm/civicrm-core/pull/22692))**
+- **Expose a REST end-point through standard routing (Work Towards
+  [dev/core#2077](https://lab.civicrm.org/dev/core/-/issues/2077):
+  [19727](https://github.com/civicrm/civicrm-core/pull/19727) and
+  [22058](https://github.com/civicrm/civicrm-core/pull/22058))**
 
-- **Fix typo preventing uninstalling ckeditor4 ([22691](https://github.com/civicrm/civicrm-core/pull/22691))**
+  Makes 'civicrm/ajax/rest' interoperable with 'extern/rest.php' parameters and
+  adds an AuthX configuration screen.
 
-- **Move permission access handling for civicrm/admin/financial/financialType?reset=1 to extension ([22685](https://github.com/civicrm/civicrm-core/pull/22685))**
+- **Define more usable queue DX for multithreaded background work (Work Towards
+  [dev/core#1304](https://lab.civicrm.org/dev/core/-/issues/1304):
+  [22324](https://github.com/civicrm/civicrm-core/pull/22324) and
+  [22657](https://github.com/civicrm/civicrm-core/pull/22657))**
 
-- **CustomGroup - Ensure 'name' is always unique ([22675](https://github.com/civicrm/civicrm-core/pull/22675))**
+  Adds a high-level queue tracking table and updates the programmatic APIs to
+  make it easier to work with persistent queues.
 
-- **[REF] - Cleanup Contact BAO variables ([22609](https://github.com/civicrm/civicrm-core/pull/22609))**
+- **Civi::pipe - Add support for background worker-processes with JSON pipes
+  ([22262](https://github.com/civicrm/civicrm-core/pull/22262))**
 
-- **(REF) Queues - Expand docblocks. Extract SQL trait. ([22681](https://github.com/civicrm/civicrm-core/pull/22681))**
+  Add an entry-point for external scripts to send multiple API calls to a
+  CiviCRM worker-process - while only bootstrapping one time.
 
-- **Queues - Add support for using persistent queues ([22657](https://github.com/civicrm/civicrm-core/pull/22657))**
+- **Expose email on hold as filter for reports (Work towards
+  [dev/core#3012](https://lab.civicrm.org/dev/core/-/issues/3012):
+  [22368](https://github.com/civicrm/civicrm-core/pull/22368) and
+  [22572](https://github.com/civicrm/civicrm-core/pull/22572))**
 
-- **[REF] APIv4 - Rename trait 'SoftDelete' to 'SoftDeleteEntity' ([22662](https://github.com/civicrm/civicrm-core/pull/22662))**
+  Exposes email on hold as filter on contribution reports.
 
-- **dev/translation#38 Fix multilingual triggers for when fields default to an empty string ([22647](https://github.com/civicrm/civicrm-core/pull/22647))**
+- **Extensions - Add dependency status check
+  ([22464](https://github.com/civicrm/civicrm-core/pull/22464))**
 
-- **dev/core#2866 Generate text version of message at send time if not present ([22632](https://github.com/civicrm/civicrm-core/pull/22632))**
+  Adds a system status check to ensure extension dependencies are met, and warn
+  the admin of missing dependencies.
 
-- **5.46 ([22676](https://github.com/civicrm/civicrm-core/pull/22676))**
+- **Add metadata so Activity Created Date is available in Form Builder
+  ([22320](https://github.com/civicrm/civicrm-core/pull/22320))**
 
-- **dev/core#2989 - validate campaign id for contribution import ([22235](https://github.com/civicrm/civicrm-core/pull/22235))**
+  Makes the Activity Created date available in Form Builder.
 
-- **Ensure all api3 functions have documented types ([22674](https://github.com/civicrm/civicrm-core/pull/22674))**
+- **Move permission access handling for
+  civicrm/admin/financial/financialType?reset=1 to extension
+  ([22685](https://github.com/civicrm/civicrm-core/pull/22685) and
+  [22499](https://github.com/civicrm/civicrm-core/pull/22499))**
 
-- **Fix spelling mistake in function name, addMembershipToRealtedContacts should be addMembershipToRelatedContacts ([22673](https://github.com/civicrm/civicrm-core/pull/22673))**
+  Moves permission access handling for
+  civicrm/admin/financial/financialType?reset=1 to extension.
 
-- **Manage Contribution page, the link to "Online Contribution (Test-drive)" is an admin-only URL to register in the backend, should be a frontend URL ([22672](https://github.com/civicrm/civicrm-core/pull/22672))**
+- **Add setting "format_locale"
+  ([dev/core#3095](https://lab.civicrm.org/dev/core/-/issues/3095):
+  [22885](https://github.com/civicrm/civicrm-core/pull/22885))**
 
-- **[REF] APIv4 - Deprecate and stop using PreSaveSubscriber ([22648](https://github.com/civicrm/civicrm-core/pull/22648))**
+  Adds a new setting, "Formatting Locale", which specifies that dates and
+  numbers should formatted according to designated localization rules.
+  This setting may be useful for a locale (eg `en_NZ`) whose language closely
+  resembles another (eg `en_US`) but which has a different currency.
 
-- **Avoid PHP notices on activity form ([22666](https://github.com/civicrm/civicrm-core/pull/22666))**
+### CiviContribute
 
-- **5.46 ([22671](https://github.com/civicrm/civicrm-core/pull/22671))**
+- **Why are unique labels for price fields required?
+  ([dev/event#66](https://lab.civicrm.org/dev/event/-/issues/66):
+  [22508](https://github.com/civicrm/civicrm-core/pull/22508))**
 
-- **dev/core#2122 - Manage event online registration page doesn't determine timezone correctly ([22619](https://github.com/civicrm/civicrm-core/pull/22619))**
+  Makes it so duplicate price field labels are allowed.
 
-- **add `contact_id` to email params in `emailLetter` function ([22538](https://github.com/civicrm/civicrm-core/pull/22538))**
+- **Use tokens in offline contribution receipt (new installs)
+  ([22560](https://github.com/civicrm/civicrm-core/pull/22560))**
 
-- **APIv4 - Use empty string instead of 'null' to pass null values to the db ([22587](https://github.com/civicrm/civicrm-core/pull/22587))**
+  Use tokens instead of Smarty Variables in the offline contribution receipt
+  template for new installs.
 
-- **dev/core#2866 add pre-upgrade warning ([22634](https://github.com/civicrm/civicrm-core/pull/22634))**
+### CiviEvent
 
-- **5.46 ([22652](https://github.com/civicrm/civicrm-core/pull/22652))**
+- **Event Registration: allow default Price Set values from the URL
+  ([22313](https://github.com/civicrm/civicrm-core/pull/22313))**
 
-- **CiviCRM Event, the link to "On-line Registration (Test Drive)" is an admin-only URL to register in the backend, should be a frontend URL ([22669](https://github.com/civicrm/civicrm-core/pull/22669))**
+  Makes it so one can set the default price field on event registration forms
+  using URL parameters.
 
-- **[REF] Tidy up group.tpl ([22668](https://github.com/civicrm/civicrm-core/pull/22668))**
+- **Account for time zone on event registration pages
+  ([dev/core#2122](https://lab.civicrm.org/dev/core/-/issues/2122):
+  [22620](https://github.com/civicrm/civicrm-core/pull/22620),
+  [22622](https://github.com/civicrm/civicrm-core/pull/22622),
+  [20476](https://github.com/civicrm/civicrm-core/pull/20476),
+  [22619](https://github.com/civicrm/civicrm-core/pull/22619),
+  [22645](https://github.com/civicrm/civicrm-core/pull/22645) and
+  [22644](https://github.com/civicrm/civicrm-core/pull/22644))**
 
-- **SearchKit - Fix selecting operators and values in clauses ([22653](https://github.com/civicrm/civicrm-core/pull/22653))**
+  Adds timezone support for events.
 
-- **Set default values to avoid notices when rendering (event templates screen) ([22663](https://github.com/civicrm/civicrm-core/pull/22663))**
+- **updating misleading labels on buttons to confirmation pages
+  ([dev/core#1613](dev/core#1613):
+  [20251](https://github.com/civicrm/civicrm-core/pull/20251))**
 
-- **Fix smarty notices in membership dashboard ([22660](https://github.com/civicrm/civicrm-core/pull/22660))**
+  Changes the event registration button text based on if there are additional
+  participants.
 
-- **Avoid PHP notice on 'Manage Contribution Pages' screen ([22661](https://github.com/civicrm/civicrm-core/pull/22661))**
+### CiviGrant
 
-- **Another set of PHPdoc corrections ([22658](https://github.com/civicrm/civicrm-core/pull/22658))**
+- **CiviGrant - Use SearchKit for contact summary tab
+  ([22467](https://github.com/civicrm/civicrm-core/pull/22467))**
 
-- **Correctly document types for class consts ([22659](https://github.com/civicrm/civicrm-core/pull/22659))**
+  switches the Grants tab on the contact summary page to use a SearchKit Display.
+  It looks nearly identical before and after, but is now easily customizable via
+  the SearchKit & Form-Builder GUI.
 
-- **SearchKit - Improve editable UX by not allowing required fields to be left blank ([22358](https://github.com/civicrm/civicrm-core/pull/22358))**
+- **Migrate CiviGrant component to an extension
+  ([22064](https://github.com/civicrm/civicrm-core/pull/22064))**
 
-- **APIv4 - Correctly return date-only custom field values without the time ([22649](https://github.com/civicrm/civicrm-core/pull/22649))**
+  Moves the CiviGrant component to an extension.
 
-- **Resolve docblock inaccuracy in CRM_Contribute_Form_Task_TaskTrait ([22646](https://github.com/civicrm/civicrm-core/pull/22646))**
+### CiviMail
 
-- **dev/core#2122 - Add an event timezone for sample data ([22645](https://github.com/civicrm/civicrm-core/pull/22645))**
+- **Start phasing out 'preferred_mail_format' (Work towards
+  [dev/core#2866](https://lab.civicrm.org/dev/core/-/issues/2866):
+  [22634](https://github.com/civicrm/civicrm-core/pull/22634) and
+  [22632](https://github.com/civicrm/civicrm-core/pull/22632))**
 
-- **dev/core#2122 - Fix "add" version for event timezone dao field ([22644](https://github.com/civicrm/civicrm-core/pull/22644))**
+  Generates text version of message at send time if one is not present.
 
-- **5.46 ([22639](https://github.com/civicrm/civicrm-core/pull/22639))**
+### WordPress Integration
 
-- **Extensions - Revise prose for status check ([22638](https://github.com/civicrm/civicrm-core/pull/22638))**
+- **wp-cli/civicrm.php - Add 'civicrm pipe' subcommand
+  ([270](https://github.com/civicrm/civicrm-wordpress/pull/270))**
 
-- **Fix inaccuracy in docblock for method calculateBaseScheduleDate ([22631](https://github.com/civicrm/civicrm-core/pull/22631))**
+  Adds support for subcommand `wp civicrm pipe`.
 
-- **Resolve inaccuracies in CRM_Core_BAO_File::attachmentInfo docblock ([22629](https://github.com/civicrm/civicrm-core/pull/22629))**
+## <a name="bugs"></a>Bugs resolved
 
-- **Tidy up functions related to printing. ([22601](https://github.com/civicrm/civicrm-core/pull/22601))**
+### Core CiviCRM
 
-- **Do not pass in tablename ([22625](https://github.com/civicrm/civicrm-core/pull/22625))**
+- **Only format Smarty aliases as money if specified
+  ([22547](https://github.com/civicrm/civicrm-core/pull/22547))**
 
-- **Remove deprecated language construct ([22627](https://github.com/civicrm/civicrm-core/pull/22627))**
+- **Avoid PHP notices on activity form
+  ([22666](https://github.com/civicrm/civicrm-core/pull/22666))**
 
-- **Remove isset from online contribution receipt ([22615](https://github.com/civicrm/civicrm-core/pull/22615))**
+- **Fix typo preventing uninstalling ckeditor4
+  ([22691](https://github.com/civicrm/civicrm-core/pull/22691))**
 
-- **More phpcbs code cleanups ([22551](https://github.com/civicrm/civicrm-core/pull/22551))**
+- **Fix return values for APIv3 Job.delete
+  ([22561](https://github.com/civicrm/civicrm-core/pull/22561))**
 
-- **SearchKit - Expose relationship description, created/modified_date & permissions ([22606](https://github.com/civicrm/civicrm-core/pull/22606))**
+- **enforce required fields on Contact.duplicatecheck
+  ([22741](https://github.com/civicrm/civicrm-core/pull/22741))**
 
-- **dev/core#2122 - Fix version specified in message template upgrade ([22620](https://github.com/civicrm/civicrm-core/pull/22620))**
+- **APIv4 SortableEntity - Fix sorting custom fields with option groups
+  ([22716](https://github.com/civicrm/civicrm-core/pull/22716))**
 
-- **SearchKit - Allow smarty in field rewrite ([22592](https://github.com/civicrm/civicrm-core/pull/22592))**
+- **APIv4 - Correctly return date-only custom field values without the time
+  ([22649](https://github.com/civicrm/civicrm-core/pull/22649))**
 
-- **dev/core#2122 - prevent E_NOTICEs and blank dates being converted to current datetime ([22622](https://github.com/civicrm/civicrm-core/pull/22622))**
+- **APIv4 - Use empty string instead of 'null' to pass null values to the db
+  ([22587](https://github.com/civicrm/civicrm-core/pull/22587))**
 
-- **[REF] CustomField Admin - Decouple page code from form code ([22519](https://github.com/civicrm/civicrm-core/pull/22519))**
+- **APIv4 - Fix incorrect placement of decodeRows in loop
+  ([22413](https://github.com/civicrm/civicrm-core/pull/22413))**
 
-- **dev/core#2122 Add timezone support for events ([20476](https://github.com/civicrm/civicrm-core/pull/20476))**
+- **SearchKit: In-place edit for custom dropdown field - can't blank it out
+  ([dev/report#92](https://lab.civicrm.org/dev/report/-/issues/92):
+  [22358](https://github.com/civicrm/civicrm-core/pull/22358))**
 
-- **Fix batch summary to use the api ([22618](https://github.com/civicrm/civicrm-core/pull/22618))**
+- **Minor SearchKit UI filtering annoyance
+  ([dev/core#3032](https://lab.civicrm.org/dev/core/-/issues/3032):
+  [22505](https://github.com/civicrm/civicrm-core/pull/22505))**
 
-- **Split View Relationship tpl ito own file ([22617](https://github.com/civicrm/civicrm-core/pull/22617))**
+- **SearchKit - Fix selecting operators and values in clauses
+  ([22653](https://github.com/civicrm/civicrm-core/pull/22653))**
 
-- **Add option to display money tokens without formatting ([22548](https://github.com/civicrm/civicrm-core/pull/22548))**
+- **SearchKit - Refresh contents after saving a popup when in a block/tab
+  ([22809](https://github.com/civicrm/civicrm-core/pull/22809))**
 
-- **Only format smarty aliases as money if specified ([22547](https://github.com/civicrm/civicrm-core/pull/22547))**
+- **Don't throw PHP notice when rendering dedupefind template.
+  ([22709](https://github.com/civicrm/civicrm-core/pull/22709))**
 
-- **Fix smarty notices in footer files ([22613](https://github.com/civicrm/civicrm-core/pull/22613))**
+- **Enotice fixes with datepicker
+  ([22705](https://github.com/civicrm/civicrm-core/pull/22705))**
 
-- **Remove use of .font-size11pt and .font-size12pt ([22314](https://github.com/civicrm/civicrm-core/pull/22314))**
+- **Enotice fix with priceset template
+  ([22708](https://github.com/civicrm/civicrm-core/pull/22708))**
 
-- **report cleanup - no functional change ([22611](https://github.com/civicrm/civicrm-core/pull/22611))**
+- **Enotice fixes
+  ([22697](https://github.com/civicrm/civicrm-core/pull/22697))**
 
-- **Issue #899: don't show PCPs where the events or contribution pages are disabled or past the end date ([20845](https://github.com/civicrm/civicrm-core/pull/20845))**
+- **Enotice fix
+  ([22436](https://github.com/civicrm/civicrm-core/pull/22436))**
 
-- **dev/core#1613 Change event registration button text based on if there are additional participants ([20251](https://github.com/civicrm/civicrm-core/pull/20251))**
+- **Enotice fixes
+  ([22471](https://github.com/civicrm/civicrm-core/pull/22471))**
 
-- **SearchKit - Improve field/operator/value selection UI ([22604](https://github.com/civicrm/civicrm-core/pull/22604))**
+- **CustomGroup - Ensure 'name' is always unique
+  ([22675](https://github.com/civicrm/civicrm-core/pull/22675))**
 
-- **Contact BAO - Deprecate unused function ([22610](https://github.com/civicrm/civicrm-core/pull/22610))**
+- **Another set of PHPdoc corrections
+  ([22658](https://github.com/civicrm/civicrm-core/pull/22658))**
 
-- **Don't pass redundent empty strings when instantiating CRM_Core_ShowHideBlocks ([22605](https://github.com/civicrm/civicrm-core/pull/22605))**
+- **Fix batch summary to use the api
+  ([22618](https://github.com/civicrm/civicrm-core/pull/22618))**
 
-- **Fix Grant::retrieve to meet full phpcs standard ([22558](https://github.com/civicrm/civicrm-core/pull/22558))**
+- **Fix Smarty notices in footer files
+  ([22613](https://github.com/civicrm/civicrm-core/pull/22613))**
 
-- **Make phpType definitions in generated DAO objects more accurate. ([22607](https://github.com/civicrm/civicrm-core/pull/22607))**
+- **Remove use of .font-size11pt and .font-size12pt
+  ([22314](https://github.com/civicrm/civicrm-core/pull/22314))**
 
-- **CiviCase - Denote `created_date` as readonly ([22608](https://github.com/civicrm/civicrm-core/pull/22608))**
+- **Don't pass redundent empty strings when instantiating
+  CRM_Core_ShowHideBlocks
+  ([22605](https://github.com/civicrm/civicrm-core/pull/22605))**
 
-- **[REF] SearchKit docblock cleanup ([22603](https://github.com/civicrm/civicrm-core/pull/22603))**
+- **Fix call to log method warn (should be warning)
+  ([22602](https://github.com/civicrm/civicrm-core/pull/22602))**
 
-- **SearchKit - Support operators in conditional css rules ([22552](https://github.com/civicrm/civicrm-core/pull/22552))**
+- **tpl notices and docblocks
+  ([22449](https://github.com/civicrm/civicrm-core/pull/22449))**
 
-- **Fix call to log method warn (should be warning) ([22602](https://github.com/civicrm/civicrm-core/pull/22602))**
+- **Ensure assigned Smarty array has empty keys (not no keys)
+  ([22379](https://github.com/civicrm/civicrm-core/pull/22379))**
 
-- **(NFC) Correct type hints for bad null default values ([22600](https://github.com/civicrm/civicrm-core/pull/22600))**
+- **Stop calling hook twice
+  ([22404](https://github.com/civicrm/civicrm-core/pull/22404))**
 
-- **5.46 ([22599](https://github.com/civicrm/civicrm-core/pull/22599))**
+- **Activity Details field on batch update via profile has wrong fieldname
+  ([22568](https://github.com/civicrm/civicrm-core/pull/22568))**
 
-- **tpl notices and docblocks ([22449](https://github.com/civicrm/civicrm-core/pull/22449))**
+- **Re-fix enotice on searchType to work with default modifiers
+  ([22466](https://github.com/civicrm/civicrm-core/pull/22466))**
 
-- **(dev/core#3012) Expose email on hold as filter for contribution report ([22368](https://github.com/civicrm/civicrm-core/pull/22368))**
+- **Unable to add new custom field set or new fields (to existing field set)
+  after enabling multilingual setting.
+  ([dev/translation#38](https://lab.civicrm.org/dev/translation/-/issues/38):
+  [22647](https://github.com/civicrm/civicrm-core/pull/22647))**
 
-- **[REF] SearchKit - Function extraction ([22598](https://github.com/civicrm/civicrm-core/pull/22598))**
+- **System.check permissions changed in Civi 5.46
+  ([dev/core#3055](https://lab.civicrm.org/dev/core/-/issues/3055):
+  [22733](https://github.com/civicrm/civicrm-core/pull/22733))**
 
-- **Use tokens in offline contribution receipt (new installs) ([22560](https://github.com/civicrm/civicrm-core/pull/22560))**
+  Fixes the dedupe check to not require elevated permissions.
 
-- **Remove unreachable code ([22594](https://github.com/civicrm/civicrm-core/pull/22594))**
+- **Search Builder crashes if you have admin access and CiviGrant is not enabled
+  ([dev/core#3056](https://lab.civicrm.org/dev/core/-/issues/3056):
+  [22714](https://github.com/civicrm/civicrm-core/pull/22714))**
 
-- **Pass remove-by-reference ([22593](https://github.com/civicrm/civicrm-core/pull/22593))**
+- **CiviGrant info.xml update missing from 5.47 and
+  CRM_Utils_VersioncheckTest::testGetSiteStats should have been failing for a
+  while ([dev/core#3057](https://lab.civicrm.org/dev/core/-/issues/3057):
+  [22717](https://github.com/civicrm/civicrm-core/pull/22717))**
 
-- **SearchKit - Support conditional links ([22557](https://github.com/civicrm/civicrm-core/pull/22557))**
+- **Regression - fatal error when viewing custom fields with money > 1000
+  ([dev/core#3059](https://lab.civicrm.org/dev/core/-/issues/3059):
+  [22727](https://github.com/civicrm/civicrm-core/pull/22727))**
 
-- **(dev/core#1304) Queue - Add high-level tracking table ([22324](https://github.com/civicrm/civicrm-core/pull/22324))**
+- **Fix broken function reference
+  ([22474](https://github.com/civicrm/civicrm-core/pull/22474))**
 
-- **Add consistency between checkTemplateFileExists functions, ([22586](https://github.com/civicrm/civicrm-core/pull/22586))**
+- **Use rolling window for translating 2-digit years into 4-digit years
+  ([22581](https://github.com/civicrm/civicrm-core/pull/22581))**
 
-- **Duplicate function from deprecated utils onto calling classes & remove ([22481](https://github.com/civicrm/civicrm-core/pull/22481))**
+  Fixes outdated hard-coded import logic: translates 2-digit years to 4 using
+  rolling -95yr to +5yr window
 
-- **Remove useless function ([22585](https://github.com/civicrm/civicrm-core/pull/22585))**
+- **Rationalise relationship validation
+  ([22491](https://github.com/civicrm/civicrm-core/pull/22491))**
 
-- **CRM_Core_Component (et al) - Deprecate unused functions ([22566](https://github.com/civicrm/civicrm-core/pull/22566))**
+- **Stop calling confusing function that doesn't do much .....
+  ([22468](https://github.com/civicrm/civicrm-core/pull/22468))**
 
-- **5.46 to master ([22591](https://github.com/civicrm/civicrm-core/pull/22591))**
+- **Navigation - Make required fields NOT NULL
+  ([22430](https://github.com/civicrm/civicrm-core/pull/22430))**
 
-- **Remove param default ([22590](https://github.com/civicrm/civicrm-core/pull/22590))**
+- **Fight back against copy & paste gone wild
+  ([22417](https://github.com/civicrm/civicrm-core/pull/22417))**
 
-- **(dev/core#3012) Expose more options for email on hold as filter for l… ([22572](https://github.com/civicrm/civicrm-core/pull/22572))**
+### CiviCampaign
 
-- **APIv4 - Make Permission 'group' discoverable in API Explorer ([22559](https://github.com/civicrm/civicrm-core/pull/22559))**
+- **'CiviCampaign: access CiviCampaign' permission missing
+  ([dev/core#983](https://lab.civicrm.org/dev/core/-/issues/983):
+  [22459](https://github.com/civicrm/civicrm-core/pull/22459))**
 
-- **SearchKit - Update operator labels ([22554](https://github.com/civicrm/civicrm-core/pull/22554))**
+### CiviCase
 
-- **Use rolling window for translating 2-digit years into 4-digit years ([22581](https://github.com/civicrm/civicrm-core/pull/22581))**
+- **CiviCase - Denote `created_date` as readonly
+  ([22608](https://github.com/civicrm/civicrm-core/pull/22608))**
 
-- **dev/event#66: allow duplicate price field labels ([22508](https://github.com/civicrm/civicrm-core/pull/22508))**
+- **Remove category from case activity template
+  ([22530](https://github.com/civicrm/civicrm-core/pull/22530))**
 
-- **DAO - Centralize logic to derive unique name from label ([22570](https://github.com/civicrm/civicrm-core/pull/22570))**
+  Remove category from case activity template to fix e-notices.
 
-- **Simplify apiv4 conformance test ([22579](https://github.com/civicrm/civicrm-core/pull/22579))**
+### CiviContribute
 
-- **Add billingStateProvince and standardized property names ([21583](https://github.com/civicrm/civicrm-core/pull/21583))**
+- **Fix ContributionRecur.payment_processor_id pseudoconstant
+  ([22750](https://github.com/civicrm/civicrm-core/pull/22750))**
 
-- **Fix return values for API3 Job.delete ([22561](https://github.com/civicrm/civicrm-core/pull/22561))**
+- **Manage Contribution page, the link to "Online Contribution (Test-drive)" is
+  an admin-only URL to register in the backend, should be a frontend URL
+  ([22672](https://github.com/civicrm/civicrm-core/pull/22672))**
 
-- **5.46 ([22582](https://github.com/civicrm/civicrm-core/pull/22582))**
+- **Avoid PHP notice on 'Manage Contribution Pages' screen
+  ([22661](https://github.com/civicrm/civicrm-core/pull/22661))**
 
-- **SearchKit - add/remove tags action for all taggable entities ([21865](https://github.com/civicrm/civicrm-core/pull/21865))**
+- **PCP is still active after contribution page is disabled.
+  ([dev/core#899](https://lab.civicrm.org/dev/core/-/issues/899):
+  [20845](https://github.com/civicrm/civicrm-core/pull/20845))**
 
-- **Remove method getWordReplacement. ([22577](https://github.com/civicrm/civicrm-core/pull/22577))**
+- **don't allow multiple currencies in a batch
+  ([20884](https://github.com/civicrm/civicrm-core/pull/20884))**
 
-- **[REF] Upgrade JQuery UI to 1.13.0 ([22576](https://github.com/civicrm/civicrm-core/pull/22576))**
+- **Foreign constraint violation on APIv3 contribution create if
+  financial_type_id is numeric
+  ([dev/core#3063](https://lab.civicrm.org/dev/core/-/issues/3063):
+  [22740](https://github.com/civicrm/civicrm-core/pull/22740))**
 
-- **(NFC) Minor phpdoc fixes to CRM_Mailing_Event_BAO_Unsubscribe::send_unsub_response ([22574](https://github.com/civicrm/civicrm-core/pull/22574))**
+- **Error cancelling a contribution if CiviPledge is disabled
+  ([dev/core#3066](https://lab.civicrm.org/dev/core/-/issues/3066):
+  [22779](https://github.com/civicrm/civicrm-core/pull/22779))**
 
-- **Add created_date & modified_date to civicrm_relationship ([22480](https://github.com/civicrm/civicrm-core/pull/22480))**
+- **Import of contribution fails when invalid campaign ID is provided
+  ([dev/core#2989](https://lab.civicrm.org/dev/core/-/issues/2989):
+  [22235](https://github.com/civicrm/civicrm-core/pull/22235))**
 
-- **(NFC) Minor amends to getGroupByFromSelectColumns ([22575](https://github.com/civicrm/civicrm-core/pull/22575))**
+- **Simplify getting contact_id from recurring contribution when generating
+  subscription URLs
+  ([22448](https://github.com/civicrm/civicrm-core/pull/22448))**
 
-- **(NFC) Correctly document CRM_Utils_Hook::pre to allow null ID ([22562](https://github.com/civicrm/civicrm-core/pull/22562))**
+- **Fix Fatal Error on contribution tab and user dashboard when recurring
+  payment generated using extension get disabled
+  ([22264](https://github.com/civicrm/civicrm-core/pull/22264))**
 
-- **[REF] Components - Use extracted function ([22573](https://github.com/civicrm/civicrm-core/pull/22573))**
+### CiviEvent
 
-- **dev/core#2757 test to demonstrate contact delete actions were not called for v4 api ([22458](https://github.com/civicrm/civicrm-core/pull/22458))**
+- **CiviCRM Event, the link to "On-line Registration (Test Drive)" is an
+  admin-only URL to register in the backend, should be a frontend URL
+  ([22669](https://github.com/civicrm/civicrm-core/pull/22669))**
 
-- **(NFC) CiviReport, etal - More phpdoc fixes ([22565](https://github.com/civicrm/civicrm-core/pull/22565))**
+- **Set default values to avoid notices when rendering (event templates screen)
+  ([22663](https://github.com/civicrm/civicrm-core/pull/22663))**
 
-- **[REF] SearchKit - Simplify import/export popup code ([22507](https://github.com/civicrm/civicrm-core/pull/22507))**
+### CiviGrant
 
-- **Activity Details field on batch update via profile has wrong fieldname ([22568](https://github.com/civicrm/civicrm-core/pull/22568))**
+- **Fix Grant::retrieve to meet full phpcs standard
+  ([22558](https://github.com/civicrm/civicrm-core/pull/22558))**
 
-- **Remove duplicate file ([22569](https://github.com/civicrm/civicrm-core/pull/22569))**
+- **CiviGrant - Fix installation of dependencies during upgrade
+  ([22881](https://github.com/civicrm/civicrm-core/pull/22881))**
 
-- **(NFC) Update PHPDoc for alterDeferredRevenueItems ([22563](https://github.com/civicrm/civicrm-core/pull/22563))**
+- **CiviGrant - Menu appears twice
+  ([dev/core#3087](https://lab.civicrm.org/dev/core/-/issues/3087):
+  [22855](https://github.com/civicrm/civicrm-core/pull/22855))**
 
-- **(REF) Extract function `CRM_Core_Component::isEnabled()` ([22567](https://github.com/civicrm/civicrm-core/pull/22567))**
+- **CiviGrant - Don't return grant fields as contact fields
+  ([dev/core#3069](https://lab.civicrm.org/dev/core/-/issues/3069):
+  [22851](https://github.com/civicrm/civicrm-core/pull/22851))**
 
-- **(NFC) Comment fixes Stricter phpcs ([22555](https://github.com/civicrm/civicrm-core/pull/22555))**
+- **CiviGrant - Declare API permissions
+  ([22791](https://github.com/civicrm/civicrm-core/pull/22791))**
 
-- **(NFC) Remaining css phpcs fixes ([22553](https://github.com/civicrm/civicrm-core/pull/22553))**
+### CiviMail
 
-- **Follow up fn removal ([22556](https://github.com/civicrm/civicrm-core/pull/22556))**
+- **Editing a mailing triggers two autosaves instead of one
+  ([dev/core#2587](https://lab.civicrm.org/dev/core/-/issues/2587):
+  [20561](https://github.com/civicrm/civicrm-core/pull/20561))**
 
-- **Remove obsolete scripts ([22549](https://github.com/civicrm/civicrm-core/pull/22549))**
+- **MailingEventQueue - Use consistent CamelCaseName. Prevent conflicts.
+  ([22343](https://github.com/civicrm/civicrm-core/pull/22343))**
 
-- **[REF] SavedSearch - Deprecate/remove redundant/unused functions ([22542](https://github.com/civicrm/civicrm-core/pull/22542))**
+- **add `contact_id` to email params in `emailLetter` function
+  ([22538](https://github.com/civicrm/civicrm-core/pull/22538))**
 
-- **Re-fix enotice on searchType to work with default modifiers ([22466](https://github.com/civicrm/civicrm-core/pull/22466))**
+- **Fix syntax error in CRM_Mailing_Event_BAO_Reply
+  ([22453](https://github.com/civicrm/civicrm-core/pull/22453))**
 
-- **Remove obsolete postIPN script ([22550](https://github.com/civicrm/civicrm-core/pull/22550))**
+- **Smarty notice fix on Email help
+  ([22470](https://github.com/civicrm/civicrm-core/pull/22470))**
 
-- **PHPCS standards on css.... ([22529](https://github.com/civicrm/civicrm-core/pull/22529))**
+- **CiviMail - Fix undeclared Javascript variables ([22879](https://github.com/civicrm/civicrm-core/pull/22879))**
 
-- **(REF) Remove constructors that do nothing ([22544](https://github.com/civicrm/civicrm-core/pull/22544))**
+### CiviMember
 
-- **Remove unused variable ([22545](https://github.com/civicrm/civicrm-core/pull/22545))**
+- **Fix spelling mistake in function name, addMembershipToRealtedContacts should
+  be addMembershipToRelatedContacts
+  ([22673](https://github.com/civicrm/civicrm-core/pull/22673))**
 
-- **Remove some old scripts ([22534](https://github.com/civicrm/civicrm-core/pull/22534))**
+- **Fix Smarty notices in membership dashboard
+  ([22660](https://github.com/civicrm/civicrm-core/pull/22660))**
 
-- **Refactor buildPremiumPreviewBlock function to make intended usage clearer ([22541](https://github.com/civicrm/civicrm-core/pull/22541))**
+- **Don't default membership type create to inactive
+  ([22498](https://github.com/civicrm/civicrm-core/pull/22498))**
 
-- **5.46 to master ([22540](https://github.com/civicrm/civicrm-core/pull/22540))**
+### WordPress Integration
 
-- **More comments & style fixes ([22533](https://github.com/civicrm/civicrm-core/pull/22533))**
+- **404 Error when I use the APIv4 with WordPress Multisite -> because no "do
+  not delete" post was generated for the subsite
+  ([dev/wordpress#59](https://lab.civicrm.org/dev/wordpress/-/issues/59):
+  [271](https://github.com/civicrm/civicrm-wordpress/pull/271))**
 
-- **Smarty notice fix on Email help ([22470](https://github.com/civicrm/civicrm-core/pull/22470))**
+## <a name="misc"></a>Miscellany
 
-- **Re-run regen ([22536](https://github.com/civicrm/civicrm-core/pull/22536))**
+- **Move permission checks from Query & BAO to financialacl extension
+  ([22495](https://github.com/civicrm/civicrm-core/pull/22495))**
 
-- **Fixes to spaces from phpcs ([22535](https://github.com/civicrm/civicrm-core/pull/22535))**
+- **Add billingStateProvince and standardized property names
+  ([21583](https://github.com/civicrm/civicrm-core/pull/21583))**
 
-- **[NFC] Update test example template and regenerate examples ([22531](https://github.com/civicrm/civicrm-core/pull/22531))**
+- **Extensions - Revise prose for status check
+  ([22638](https://github.com/civicrm/civicrm-core/pull/22638))**
 
-- **Remove category from case activity template ([22530](https://github.com/civicrm/civicrm-core/pull/22530))**
+- **Add type to phpdoc comment for report statistic function
+  ([22514](https://github.com/civicrm/civicrm-core/pull/22514))**
 
-- **Run stricter phpcs on Civi dir ([22527](https://github.com/civicrm/civicrm-core/pull/22527))**
+- **Update phpdoc references to $self to include type
+  ([22513](https://github.com/civicrm/civicrm-core/pull/22513))**
 
-- **Run 'full drupal strictness' standard over api/v3/examples ([22528](https://github.com/civicrm/civicrm-core/pull/22528))**
+- **Improve method phpdoc for CRM_Utils_System
+  ([22492](https://github.com/civicrm/civicrm-core/pull/22492))**
 
-- **Remove empty check ([22444](https://github.com/civicrm/civicrm-core/pull/22444))**
+- **Run 'full Drupal strictness' standard over api/v3/examples
+  ([22528](https://github.com/civicrm/civicrm-core/pull/22528))**
 
-- **Move deprecated function back to the only class that calls it ([22517](https://github.com/civicrm/civicrm-core/pull/22517))**
+- **Run stricter phpcs on Civi dir
+  ([22527](https://github.com/civicrm/civicrm-core/pull/22527))**
 
-- **Fix php comments ([22526](https://github.com/civicrm/civicrm-core/pull/22526))**
+- **Fixes to spaces from phpcs
+  ([22535](https://github.com/civicrm/civicrm-core/pull/22535))**
 
-- **Add unit test on updateGreeting & remove deprecated fn call ([22482](https://github.com/civicrm/civicrm-core/pull/22482))**
+- **Various phpdoc fixes
+  ([22509](https://github.com/civicrm/civicrm-core/pull/22509))**
 
-- **[REF] - Use CRM_Contact_BAO_ContactType::basicTypes()  ([22520](https://github.com/civicrm/civicrm-core/pull/22520))**
+- **Clarify contents of ids for further fixes
+  ([22402](https://github.com/civicrm/civicrm-core/pull/22402))**
 
-- **[NFC] Fixes to the type definitions for contactType methods ([22524](https://github.com/civicrm/civicrm-core/pull/22524))**
+- **Replace all isset checks on line.tax_rate
+  ([22421](https://github.com/civicrm/civicrm-core/pull/22421))**
 
-- **[Ref] Remove unused _colours property ([22525](https://github.com/civicrm/civicrm-core/pull/22525))**
+- **Move function to the class that 'owns' it
+  ([22472](https://github.com/civicrm/civicrm-core/pull/22472))**
 
-- **Another set of PHPDoc fixes ([22522](https://github.com/civicrm/civicrm-core/pull/22522))**
+- **PHPCS standards on css....
+  ([22529](https://github.com/civicrm/civicrm-core/pull/22529))**
 
-- **Fix more phpdoc comments in member links functions ([22521](https://github.com/civicrm/civicrm-core/pull/22521))**
+- **More comments & style fixes
+  ([22533](https://github.com/civicrm/civicrm-core/pull/22533))**
 
-- **Remove unreachable, nonsensical code ([22518](https://github.com/civicrm/civicrm-core/pull/22518))**
+- **Re-run regen
+  ([22536](https://github.com/civicrm/civicrm-core/pull/22536))**
 
-- **Fix php comments ([22515](https://github.com/civicrm/civicrm-core/pull/22515))**
+- **Add consistency between checkTemplateFileExists functions,
+  ([22586](https://github.com/civicrm/civicrm-core/pull/22586))**
 
-- **Unit tests for 22429 and apply same treatment to other money format functions ([22442](https://github.com/civicrm/civicrm-core/pull/22442))**
+- **Increase GroupContact:create deprecation
+  ([22416](https://github.com/civicrm/civicrm-core/pull/22416))**
 
-- **Test cleanup - remove direct calls to BAO_Membership::add ([22497](https://github.com/civicrm/civicrm-core/pull/22497))**
+- **APIv4 - Docblock updates, mark BAO::create functions deprecated
+  ([22415](https://github.com/civicrm/civicrm-core/pull/22415))**
 
-- **Merge function back into parent function ([22516](https://github.com/civicrm/civicrm-core/pull/22516))**
+- **DAO - Centralize logic to derive unique name from label
+  ([22570](https://github.com/civicrm/civicrm-core/pull/22570))**
 
-- **Add type to phpdoc comment for report statistic function ([22514](https://github.com/civicrm/civicrm-core/pull/22514))**
+- **Pass remove-by-reference
+  ([22593](https://github.com/civicrm/civicrm-core/pull/22593))**
 
-- **Update phpdoc references to $self to include type ([22513](https://github.com/civicrm/civicrm-core/pull/22513))**
+- **Mark function as private
+  ([22457](https://github.com/civicrm/civicrm-core/pull/22457))**
 
-- **[test] - Add test coverage for adjusting custom group weights ([22512](https://github.com/civicrm/civicrm-core/pull/22512))**
+- **Stop returning unused parameters
+  ([22410](https://github.com/civicrm/civicrm-core/pull/22410))**
 
-- **Enotice fixes ([22471](https://github.com/civicrm/civicrm-core/pull/22471))**
+- **Duplicate function from deprecated utils onto calling classes & remove
+  ([22481](https://github.com/civicrm/civicrm-core/pull/22481))**
 
-- **Select2 - Fix auto-expanding collapsible optgroups for multi-selects ([22505](https://github.com/civicrm/civicrm-core/pull/22505))**
+- **Fix phpdoc types for $_query in CRM_Core_Selector_Base subclasses
+  ([22424](https://github.com/civicrm/civicrm-core/pull/22424))**
 
-- **(REF) CRM_Core_Resources - Limit visibility of `getEntityRefMetadata` ([22511](https://github.com/civicrm/civicrm-core/pull/22511))**
+- **Correctly document types for class consts
+  ([22659](https://github.com/civicrm/civicrm-core/pull/22659))**
 
-- **Various phpdoc fixes ([22509](https://github.com/civicrm/civicrm-core/pull/22509))**
+- **Make phpType definitions in generated DAO objects more accurate.
+  ([22607](https://github.com/civicrm/civicrm-core/pull/22607))**
 
-- **(REF) ContactUtils - Rename local variables ([22510](https://github.com/civicrm/civicrm-core/pull/22510))**
+- **Ensure all APIv3 functions have documented types
+  ([22674](https://github.com/civicrm/civicrm-core/pull/22674))**
 
-- **[REF] CoreResources - Simplify disabled component check ([22506](https://github.com/civicrm/civicrm-core/pull/22506))**
+- **CRM_Core_Component (et al) - Deprecate unused functions
+  ([22566](https://github.com/civicrm/civicrm-core/pull/22566))**
 
-- **Move permission checks from Query & BAO to financialacl extension ([22495](https://github.com/civicrm/civicrm-core/pull/22495))**
+- **Move deprecated function back to the only class that calls it
+  ([22517](https://github.com/civicrm/civicrm-core/pull/22517))**
 
-- **Rationalise relationship validation ([22491](https://github.com/civicrm/civicrm-core/pull/22491))**
+- **Fix PHP comments
+  ([22526](https://github.com/civicrm/civicrm-core/pull/22526))**
 
-- **(NFC) Civi::pipe - Swap various quotes ([22503](https://github.com/civicrm/civicrm-core/pull/22503))**
+- **A whole bunch of phpdoc fixes
+  ([22454](https://github.com/civicrm/civicrm-core/pull/22454))**
 
-- **NFC: Clean up description for alterDisplayName hook ([22501](https://github.com/civicrm/civicrm-core/pull/22501))**
+- **Another set of PHPDoc fixes
+  ([22522](https://github.com/civicrm/civicrm-core/pull/22522))**
 
-- **Civi::pipe - Add support for background worker-processes with JSON pipes ([22262](https://github.com/civicrm/civicrm-core/pull/22262))**
+- **Fix more phpdoc comments in member links functions
+  ([22521](https://github.com/civicrm/civicrm-core/pull/22521))**
 
-- **Port test form earlier PR ([22502](https://github.com/civicrm/civicrm-core/pull/22502))**
+- **Fix PHP comments
+  ([22515](https://github.com/civicrm/civicrm-core/pull/22515))**
 
-- **MailingEventQueue - Use consistent CamelCaseName. Prevent conflicts. ([22343](https://github.com/civicrm/civicrm-core/pull/22343))**
+- **Merge function back into parent function
+  ([22516](https://github.com/civicrm/civicrm-core/pull/22516))**
 
-- **SearchKit - Enable joins for custom fields and option groups ([22355](https://github.com/civicrm/civicrm-core/pull/22355))**
+- **Simplify variables pass in & out of function
+  ([22439](https://github.com/civicrm/civicrm-core/pull/22439))**
 
-- **5.46 ([22496](https://github.com/civicrm/civicrm-core/pull/22496))**
+- **Clean up input and outputs
+  ([22440](https://github.com/civicrm/civicrm-core/pull/22440))**
 
-- **Remove support for deprecated key ([22443](https://github.com/civicrm/civicrm-core/pull/22443))**
+- **Tidy CRM_Report_Page_Options code
+  ([22432](https://github.com/civicrm/civicrm-core/pull/22432))**
 
-- **Fully remove contactAB function ([22485](https://github.com/civicrm/civicrm-core/pull/22485))**
+- **Refactor buildPremiumPreviewBlock function to make intended usage clearer
+  ([22541](https://github.com/civicrm/civicrm-core/pull/22541))**
 
-- **Don't default membership type create to inactive ([22498](https://github.com/civicrm/civicrm-core/pull/22498))**
+- **Fix class references in phpdoc comments
+  ([22434](https://github.com/civicrm/civicrm-core/pull/22434))**
 
-- **Extensions - Add dependency status check ([22464](https://github.com/civicrm/civicrm-core/pull/22464))**
+- **Contact BAO - Deprecate unused function
+  ([22610](https://github.com/civicrm/civicrm-core/pull/22610))**
 
-- **Remove handling for impossible array ([22494](https://github.com/civicrm/civicrm-core/pull/22494))**
+- **report cleanup - no functional change
+  ([22611](https://github.com/civicrm/civicrm-core/pull/22611))**
 
-- **[REF] Improve APIv4 save functions ([22403](https://github.com/civicrm/civicrm-core/pull/22403))**
+- **Split View Relationship tpl ito own file
+  ([22617](https://github.com/civicrm/civicrm-core/pull/22617))**
 
-- **CiviGrant - Use SearchKit for contact summary tab ([22467](https://github.com/civicrm/civicrm-core/pull/22467))**
+- **Fix inaccuracy in docblock for method calculateBaseScheduleDate
+  ([22631](https://github.com/civicrm/civicrm-core/pull/22631))**
 
-- **Improve method phpdoc for CRM_Utils_System ([22492](https://github.com/civicrm/civicrm-core/pull/22492))**
+- **Resolve inaccuracies in CRM_Core_BAO_File::attachmentInfo docblock
+  ([22629](https://github.com/civicrm/civicrm-core/pull/22629))**
 
-- **Remove always-true-if ([22486](https://github.com/civicrm/civicrm-core/pull/22486))**
+- **Tidy up functions related to printing.
+  ([22601](https://github.com/civicrm/civicrm-core/pull/22601))**
 
-- **Stop calling confusing function that doesn't do much ..... ([22468](https://github.com/civicrm/civicrm-core/pull/22468))**
+- **Do not pass in tablename
+  ([22625](https://github.com/civicrm/civicrm-core/pull/22625))**
 
-- **5.46 to master ([22484](https://github.com/civicrm/civicrm-core/pull/22484))**
+- **More phpcbs code cleanups
+  ([22551](https://github.com/civicrm/civicrm-core/pull/22551))**
 
-- **Remove seemingly unreachable help text ([22469](https://github.com/civicrm/civicrm-core/pull/22469))**
+- **Resolve docblock inaccuracy in CRM_Contribute_Form_Task_TaskTrait
+  ([22646](https://github.com/civicrm/civicrm-core/pull/22646))**
 
-- **Move function to the class that 'owns' it ([22472](https://github.com/civicrm/civicrm-core/pull/22472))**
+- **Contributor key: Add Ian Wilson
+  ([22781](https://github.com/civicrm/civicrm-core/pull/22781))**
 
-- **Fix broken function reference ([22474](https://github.com/civicrm/civicrm-core/pull/22474))**
+- **Bump follow-redirects from 1.11.0 to 1.14.7
+  ([22696](https://github.com/civicrm/civicrm-core/pull/22696))**
 
-- **Remove broken script ([22473](https://github.com/civicrm/civicrm-core/pull/22473))**
+- **Bump engine.io from 4.1.1 to 4.1.2
+  ([22695](https://github.com/civicrm/civicrm-core/pull/22695))**
 
-- **dev/core#983 Fix Access CiviCampaign permissions (instead of admin) ([22459](https://github.com/civicrm/civicrm-core/pull/22459))**
+- **Bump ansi-regex from 5.0.0 to 5.0.1
+  ([22693](https://github.com/civicrm/civicrm-core/pull/22693))**
 
-- **Simplify getting contact_id from recurring contribution when generating subscription URLs ([22448](https://github.com/civicrm/civicrm-core/pull/22448))**
+- **Bump log4js from 6.3.0 to 6.4.1
+  ([22694](https://github.com/civicrm/civicrm-core/pull/22694))**
 
-- **Remove & deprecate silly function ([22456](https://github.com/civicrm/civicrm-core/pull/22456))**
+- **Update composer.json for composer 2.2 allow-plugins
+  ([22692](https://github.com/civicrm/civicrm-core/pull/22692))**
 
-- **Migrate CiviGrant component to an extension ([22064](https://github.com/civicrm/civicrm-core/pull/22064))**
+- **Follow up fn removal
+  ([22556](https://github.com/civicrm/civicrm-core/pull/22556))**
 
-- **Fix Fatal Error on contribution tab and user dashboard when recurring payment generated using extension get disabled ([22264](https://github.com/civicrm/civicrm-core/pull/22264))**
+- **Fully remove contactAB function
+  ([22485](https://github.com/civicrm/civicrm-core/pull/22485))**
 
-- **Remove unused variable ([22462](https://github.com/civicrm/civicrm-core/pull/22462))**
+- **Remove support for deprecated key
+  ([22443](https://github.com/civicrm/civicrm-core/pull/22443))**
 
-- **Remove IF that only loops through one value ([22455](https://github.com/civicrm/civicrm-core/pull/22455))**
+- **Remove duplicate file
+  ([22569](https://github.com/civicrm/civicrm-core/pull/22569))**
 
-- **Replace all isset checks on line.tax_rate ([22421](https://github.com/civicrm/civicrm-core/pull/22421))**
+- **Remove obsolete scripts
+  ([22549](https://github.com/civicrm/civicrm-core/pull/22549))**
 
-- **Fix syntax error in CRM_Mailing_Event_BAO_Reply ([22453](https://github.com/civicrm/civicrm-core/pull/22453))**
+- **Remove method getWordReplacement.
+  ([22577](https://github.com/civicrm/civicrm-core/pull/22577))**
 
-- **Event Registration: allow default Price Set values from the URL ([22313](https://github.com/civicrm/civicrm-core/pull/22313))**
+- **Remove unused variable
+  ([22545](https://github.com/civicrm/civicrm-core/pull/22545))**
 
-- **Mark function as private ([22457](https://github.com/civicrm/civicrm-core/pull/22457))**
+- **Remove some old scripts
+  ([22534](https://github.com/civicrm/civicrm-core/pull/22534))**
 
-- **5.46 ([22460](https://github.com/civicrm/civicrm-core/pull/22460))**
+- **Remove handling for impossible array
+  ([22494](https://github.com/civicrm/civicrm-core/pull/22494))**
 
-- **A whole bunch of phpdoc fixes ([22454](https://github.com/civicrm/civicrm-core/pull/22454))**
+- **Remove obsolete postIPN script
+  ([22550](https://github.com/civicrm/civicrm-core/pull/22550))**
 
-- **Simplify variables pass in & out of function ([22439](https://github.com/civicrm/civicrm-core/pull/22439))**
+- **Remove / deprecate case param handling
+  ([22420](https://github.com/civicrm/civicrm-core/pull/22420))**
 
-- **Remove if & foreach that no longer do anything ([22447](https://github.com/civicrm/civicrm-core/pull/22447))**
+- **Remove useless function
+  ([22585](https://github.com/civicrm/civicrm-core/pull/22585))**
 
-- **Remove call to php 4 function ([22446](https://github.com/civicrm/civicrm-core/pull/22446))**
+- **Remove param default
+  ([22590](https://github.com/civicrm/civicrm-core/pull/22590))**
 
-- **Clean up input and outputs ([22440](https://github.com/civicrm/civicrm-core/pull/22440))**
+- **Remove htmlFile validation rule, as it can't possibly work.
+  ([22425](https://github.com/civicrm/civicrm-core/pull/22425))**
 
-- **5.46 ([22441](https://github.com/civicrm/civicrm-core/pull/22441))**
+- **Remove broken script
+  ([22473](https://github.com/civicrm/civicrm-core/pull/22473))**
 
-- **APIv4 - Add SubscriptionHistory entity ([22435](https://github.com/civicrm/civicrm-core/pull/22435))**
+- **Remove unreachable else
+  ([22406](https://github.com/civicrm/civicrm-core/pull/22406))**
 
-- **Enotice fix ([22436](https://github.com/civicrm/civicrm-core/pull/22436))**
+- **Remove & deprecate silly function
+  ([22456](https://github.com/civicrm/civicrm-core/pull/22456))**
 
-- **5.46 ([22428](https://github.com/civicrm/civicrm-core/pull/22428))**
+- **Remove always-true-if
+  ([22486](https://github.com/civicrm/civicrm-core/pull/22486))**
 
-- **don't allow multiple currencies in a batch ([20884](https://github.com/civicrm/civicrm-core/pull/20884))**
+- **Remove seemingly unreachable help text
+  ([22469](https://github.com/civicrm/civicrm-core/pull/22469))**
 
-- **[REF] Rename variable to be meaningful ([22431](https://github.com/civicrm/civicrm-core/pull/22431))**
+- **Remove unused variable
+  ([22462](https://github.com/civicrm/civicrm-core/pull/22462))**
 
-- **Navigation - Make required fields NOT NULL ([22430](https://github.com/civicrm/civicrm-core/pull/22430))**
+- **Remove IF that only loops through one value
+  ([22455](https://github.com/civicrm/civicrm-core/pull/22455))**
 
-- **[REF] Tidy up formatting in gotv.tpl, remove extra </div> ([22433](https://github.com/civicrm/civicrm-core/pull/22433))**
+- **Remove if & foreach that no longer do anything
+  ([22447](https://github.com/civicrm/civicrm-core/pull/22447))**
 
-- **Tidy CRM_Report_Page_Options code ([22432](https://github.com/civicrm/civicrm-core/pull/22432))**
+- **Remove call to PHP 4 function
+  ([22446](https://github.com/civicrm/civicrm-core/pull/22446))**
 
-- **Fix class references in phpdoc comments ([22434](https://github.com/civicrm/civicrm-core/pull/22434))**
+- **Remove empty check
+  ([22444](https://github.com/civicrm/civicrm-core/pull/22444))**
 
-- **[REF] Stop returning unused variables ([22401](https://github.com/civicrm/civicrm-core/pull/22401))**
+- **Remove unreachable, nonsensical code
+  ([22518](https://github.com/civicrm/civicrm-core/pull/22518))**
 
-- **[REF] Centralize BAO handling of custom data ([22426](https://github.com/civicrm/civicrm-core/pull/22426))**
+- **Remove deprecated code
+  ([22411](https://github.com/civicrm/civicrm-core/pull/22411))**
 
-- **Remove / deprecate case param handling ([22420](https://github.com/civicrm/civicrm-core/pull/22420))**
+- **Remove check for contact_check as it is always an array here
+  ([22407](https://github.com/civicrm/civicrm-core/pull/22407))**
 
-- **Remove htmlFile validation rule, as it can't possibly work. ([22425](https://github.com/civicrm/civicrm-core/pull/22425))**
+- **Remove unreachable code
+  ([22594](https://github.com/civicrm/civicrm-core/pull/22594))**
 
-- **Fight back against copy & paste gone wild ([22417](https://github.com/civicrm/civicrm-core/pull/22417))**
+- **Remove unnecessary pass-by-ref
+  ([22397](https://github.com/civicrm/civicrm-core/pull/22397))**
 
-- **Fix phpdoc types for $_query in CRM_Core_Selector_Base subclasses ([22424](https://github.com/civicrm/civicrm-core/pull/22424))**
+- **Remove always-true IF
+  ([22399](https://github.com/civicrm/civicrm-core/pull/22399))**
 
-- **[NFC] Tidy up phpdoc in CRM_Utils_QueryFormatter ([22423](https://github.com/civicrm/civicrm-core/pull/22423))**
+- **Remove deprecated language construct
+  ([22627](https://github.com/civicrm/civicrm-core/pull/22627))**
 
-- **Increase GroupContact:create deprecation ([22416](https://github.com/civicrm/civicrm-core/pull/22416))**
+- **Remove isset from online contribution receipt
+  ([22615](https://github.com/civicrm/civicrm-core/pull/22615))**
 
-- **Stop returning unused parameters ([22410](https://github.com/civicrm/civicrm-core/pull/22410))**
+- **Remove unused invalidProfiles variable, and simplify template.
+  ([22704](https://github.com/civicrm/civicrm-core/pull/22704))**
 
-- **APIv4 - Docblock updates, mark BAO::create functions deprecated ([22415](https://github.com/civicrm/civicrm-core/pull/22415))**
+- **(REF) Switch to using new `CRM_Core_Component::isEnabled()`
+  ([22687](https://github.com/civicrm/civicrm-core/pull/22687))**
 
-- **APIv4 - Fix test ([22414](https://github.com/civicrm/civicrm-core/pull/22414))**
+- **(REF) Remove unused variable
+  ([22398](https://github.com/civicrm/civicrm-core/pull/22398))**
 
-- **APIv4 - Fix incorrect placement of decodeRows in loop ([22413](https://github.com/civicrm/civicrm-core/pull/22413))**
+- **(REF) Tidy up group.tpl
+  ([22668](https://github.com/civicrm/civicrm-core/pull/22668))**
 
-- **Remove unreachable else ([22406](https://github.com/civicrm/civicrm-core/pull/22406))**
+- **(REF) Switch OptionGroup BAO to use new centralized logic to make name from
+  title ([22654](https://github.com/civicrm/civicrm-core/pull/22654))**
 
-- **[REF] Remove handling for no organization being passed ([22395](https://github.com/civicrm/civicrm-core/pull/22395))**
+- **(REF) Rename variable to be meaningful
+  ([22431](https://github.com/civicrm/civicrm-core/pull/22431))**
 
-- **Remove deprecated code ([22411](https://github.com/civicrm/civicrm-core/pull/22411))**
+- **(REF) Improve APIv4 save functions
+  ([22403](https://github.com/civicrm/civicrm-core/pull/22403))**
 
-- **NFC - Fix typo in docblock ([22409](https://github.com/civicrm/civicrm-core/pull/22409))**
+- **(REF) CRM_Core_Resources - Limit visibility of `getEntityRefMetadata`
+  ([22511](https://github.com/civicrm/civicrm-core/pull/22511))**
 
-- **Remove check for contact_check as it is always an array here ([22407](https://github.com/civicrm/civicrm-core/pull/22407))**
+- **(REF) ContactUtils - Rename local variables
+  ([22510](https://github.com/civicrm/civicrm-core/pull/22510))**
 
-- **dev/core#2587 Ignore modified_date when checking for changes during mailing auto-save ([20561](https://github.com/civicrm/civicrm-core/pull/20561))**
+- **(REF) CoreResources - Simplify disabled component check
+  ([22506](https://github.com/civicrm/civicrm-core/pull/22506))**
 
-- **Fix testMultipleMembershipsContribution to use order api ([22274](https://github.com/civicrm/civicrm-core/pull/22274))**
+- **(REF) Remove constructors that do nothing
+  ([22544](https://github.com/civicrm/civicrm-core/pull/22544))**
 
-- **Stop calling hook twice ([22404](https://github.com/civicrm/civicrm-core/pull/22404))**
+- **(REF) Extract function `CRM_Core_Component::isEnabled()`
+  ([22567](https://github.com/civicrm/civicrm-core/pull/22567))**
 
-- **Remove always-true IF ([22399](https://github.com/civicrm/civicrm-core/pull/22399))**
+- **(REF) SearchKit docblock cleanup
+  ([22603](https://github.com/civicrm/civicrm-core/pull/22603))**
 
-- **[REF] Remove unused variable ([22398](https://github.com/civicrm/civicrm-core/pull/22398))**
+- **(REF) SearchKit - Function extraction
+  ([22598](https://github.com/civicrm/civicrm-core/pull/22598))**
 
-- **Remove unnecessary pass-by-ref ([22397](https://github.com/civicrm/civicrm-core/pull/22397))**
+- **(REF) SearchKit - Simplify import/export popup code
+  ([22507](https://github.com/civicrm/civicrm-core/pull/22507))**
 
-- **Add metadata so Activity Created Date is available in Form Builder ([22320](https://github.com/civicrm/civicrm-core/pull/22320))**
+- **(REF) Upgrade jQuery UI to 1.13.0
+  ([22576](https://github.com/civicrm/civicrm-core/pull/22576))**
 
-- **Ensure assigned smarty array has empty keys (not no keys) ([22379](https://github.com/civicrm/civicrm-core/pull/22379))**
+- **(REF) Components - Use extracted function
+  ([22573](https://github.com/civicrm/civicrm-core/pull/22573))**
 
-- **Clarify contents of ids for further fixes ([22402](https://github.com/civicrm/civicrm-core/pull/22402))**
+- **(REF) SavedSearch - Deprecate/remove redundant/unused functions
+  ([22542](https://github.com/civicrm/civicrm-core/pull/22542))**
 
-- **wp-cli/civicrm.php - Add 'civicrm pipe' subcommand ([270](https://github.com/civicrm/civicrm-wordpress/pull/270))**
+- **(REF) Use CRM_Contact_BAO_ContactType::basicTypes()
+  ([22520](https://github.com/civicrm/civicrm-core/pull/22520))**
 
-- **Streamline and enhance the plugin load procedure (rebased) ([271](https://github.com/civicrm/civicrm-wordpress/pull/271))**
+- **(REF) Remove unused _colours property
+  ([22525](https://github.com/civicrm/civicrm-core/pull/22525))**
 
-- **Merge 5.46 to master ([339](https://github.com/civicrm/civicrm-packages/pull/339))**
+- **(REF) Tidy up formatting in gotv.tpl, remove extra </div>
+  ([22433](https://github.com/civicrm/civicrm-core/pull/22433))**
 
-## <a name="misc"></a>Miscellany
+- **(REF) Stop returning unused variables
+  ([22401](https://github.com/civicrm/civicrm-core/pull/22401))**
+
+- **(REF) Centralize BAO handling of custom data
+  ([22426](https://github.com/civicrm/civicrm-core/pull/22426))**
+
+- **(REF) Remove handling for no organization being passed
+  ([22395](https://github.com/civicrm/civicrm-core/pull/22395))**
+
+- **(REF) APIv4 - Rename trait 'SoftDelete' to 'SoftDeleteEntity'
+  ([22662](https://github.com/civicrm/civicrm-core/pull/22662))**
+
+- **(REF) Cleanup Contact BAO variables
+  ([22609](https://github.com/civicrm/civicrm-core/pull/22609))**
+
+- **(REF) Queues - Expand docblocks. Extract SQL trait.
+  ([22681](https://github.com/civicrm/civicrm-core/pull/22681))**
+
+- **(REF) APIv4 - Deprecate and stop using PreSaveSubscriber
+  ([22648](https://github.com/civicrm/civicrm-core/pull/22648))**
+
+- **(REF) CustomField Admin - Decouple page code from form code
+  ([22519](https://github.com/civicrm/civicrm-core/pull/22519))**
+
+- **(NFC) Fix typo in docblock
+  ([22409](https://github.com/civicrm/civicrm-core/pull/22409))**
+
+- **(NFC) Tidy up phpdoc in CRM_Utils_QueryFormatter
+  ([22423](https://github.com/civicrm/civicrm-core/pull/22423))**
+
+- **(NFC) Update test example template and regenerate examples
+  ([22531](https://github.com/civicrm/civicrm-core/pull/22531))**
+
+- **(NFC) Correct type hints for bad null default values
+  ([22600](https://github.com/civicrm/civicrm-core/pull/22600))**
+
+- **(NFC) Minor phpdoc fixes to
+  CRM_Mailing_Event_BAO_Unsubscribe::send_unsub_response
+  ([22574](https://github.com/civicrm/civicrm-core/pull/22574))**
+
+- **(NFC) CiviReport, etal - More phpdoc fixes
+  ([22565](https://github.com/civicrm/civicrm-core/pull/22565))**
+
+- **(NFC) Minor amends to getGroupByFromSelectColumns
+  ([22575](https://github.com/civicrm/civicrm-core/pull/22575))**
+
+- **(NFC) Correctly document CRM_Utils_Hook::pre to allow null ID
+  ([22562](https://github.com/civicrm/civicrm-core/pull/22562))**
+
+- **(NFC) Update PHPDoc for alterDeferredRevenueItems
+  ([22563](https://github.com/civicrm/civicrm-core/pull/22563))**
+
+- **(NFC) Comment fixes Stricter phpcs
+  ([22555](https://github.com/civicrm/civicrm-core/pull/22555))**
+
+- **(NFC) Remaining css phpcs fixes
+  ([22553](https://github.com/civicrm/civicrm-core/pull/22553))**
+
+- **(NFC) Fixes to the type definitions for contactType methods
+  ([22524](https://github.com/civicrm/civicrm-core/pull/22524))**
+
+- **(NFC) Civi::pipe - Swap various quotes
+  ([22503](https://github.com/civicrm/civicrm-core/pull/22503))**
+
+- **NFC: Clean up description for alterDisplayName hook
+  ([22501](https://github.com/civicrm/civicrm-core/pull/22501))**
+
+- **(NFC) Membership Tests - Update assertions to match behavior circa leap-day
+  ([22871](https://github.com/civicrm/civicrm-core/pull/22871))**
+
+- **(NFC) Update Contribution Recur DAO following regen
+  ([22858](https://github.com/civicrm/civicrm-core/pull/22858))**
+
+- **(NFC) RestTest - Skip testNotCMSUser_q when it's not supported
+  ([22817](https://github.com/civicrm/civicrm-core/pull/22817))**
+
+- **APIv4 - Fix test
+  ([22414](https://github.com/civicrm/civicrm-core/pull/22414))**
+
+- **Test cleanup - remove direct calls to BAO_Membership::add
+  ([22497](https://github.com/civicrm/civicrm-core/pull/22497))**
+
+- **Unit tests for 22429 and apply same treatment to other money format
+  functions ([22442](https://github.com/civicrm/civicrm-core/pull/22442))**
+
+- **Simplify APIv4 conformance test
+  ([22579](https://github.com/civicrm/civicrm-core/pull/22579))**
+
+- **Add unit test on updateGreeting & remove deprecated fn call
+  ([22482](https://github.com/civicrm/civicrm-core/pull/22482))**
+
+- **[test] - Add test coverage for adjusting custom group weights
+  ([22512](https://github.com/civicrm/civicrm-core/pull/22512))**
+
+- **Fix testMultipleMembershipsContribution to use order api
+  ([22274](https://github.com/civicrm/civicrm-core/pull/22274))**
+
+- **Port test form earlier PR
+  ([22502](https://github.com/civicrm/civicrm-core/pull/22502))**
+
+- **Test for APIv4 contact delete bug
+  ([dev/core#2757](https://lab.civicrm.org/dev/core/-/issues/2757):
+  [22458](https://github.com/civicrm/civicrm-core/pull/22458))**
 
 ## <a name="credits"></a>Credits
 
 This release was developed by the following code authors:
 
-AGH Strategies - Andie Hunt; Agileware - Francis Whittle, Justin Freeman; BrightMinded Ltd - Bradley Taylor; Christian Wach; CiviCoop - Klaas Eikelboom; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy; Dave D; dependabot[bot]; Freeform Solutions - Herb van den Dool; Jens Schuppe; JMA Consulting - Seamus Lee; Joinery - Allen Shaw; Lemniscus - Noah Miller; Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire; PERORA SRL - Samuele Masetto; Registered Nurses' Association of Ontario - Ian Wilson; Romain Thouvenin; Skvare - Sunil Pawar; Third Sector Design - Kurund Jalmi; Wikimedia Foundation - Eileen McNaughton
+AGH Strategies - Andie Hunt; Agileware - Francis Whittle, Justin Freeman;
+BrightMinded Ltd - Bradley Taylor; Christian Wach; CiviCoop - Klaas Eikelboom;
+CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; Coop SymbioTIC -
+Mathieu Lutfy; Dave D; Freeform Solutions - Herb van den Dool; Jens Schuppe; JMA
+Consulting - Seamus Lee; Joinery - Allen Shaw; Lemniscus - Noah Miller;
+Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire;
+PERORA SRL - Samuele Masetto; Registered Nurses' Association of Ontario - Ian
+Wilson; Romain Thouvenin; Skvare - Sunil Pawar; Third Sector Design - Kurund
+Jalmi; Wikimedia Foundation - Eileen McNaughton
 
 Most authors also reviewed code for this release; in addition, the following
 reviewers contributed their comments:
 
-Agileware - Francis Whittle, Justin Freeman; Andy Burns; Artful Robot - Rich Lott; Betty Dolfing; Blackfly Solutions - Alan Dixon; BrightMinded Ltd - Bradley Taylor; Circle Interactive - Pradeep Nayak; civibot[bot]; CiviCoop - Jaap Jansma, Klaas Eikelboom; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy, Shane Bill; Dave D; Freeform Solutions - Herb van den Dool; Fuzion - Luke Stewart; in2part; Jens Schuppe; JMA Consulting - Joe Murray, Monish Deb, Seamus Lee; Joinery - Allen Shaw; Korlon - Stuart Gaston; Lemniscus - Noah Miller; Megaphone Technology Consulting - Jon Goldberg; Mikey O'Toole; MJW Consulting - Matthew Wire; pboling; PERORA SRL - Samuele Masetto; Skvare - Sunil Pawar; Tadpole Collective - Kevin Cristiano; Third Sector Design - Kurund Jalmi; Wikimedia Foundation - Eileen McNaughton; Wildsight - Lars Sanders-Green
\ No newline at end of file
+Andy Burns; Artful Robot - Rich Lott; Betty Dolfing; Blackfly Solutions - Alan
+Dixon; Circle Interactive - Pradeep Nayak; CiviCoop - Jaap Jansma; Coop
+SymbioTIC - Shane Bill; Fuzion - Luke Stewart; in2part; JMA Consulting - Joe
+Murray, Monish Deb; Korlon - Stuart Gaston; Mikey O'Toole; Peter Boling; Tadpole
+Collective - Kevin Cristiano; Wildsight - Lars Sanders-Green