[NFC] First Pass at 5.42 release notes
[civicrm-core.git] / release-notes / 5.42.0.md
index e682d6114c281207ecdd4016abb7f23ea672cc99..c2c3eb6f318488c815ee73fd6ced72c418b21583 100644 (file)
 # CiviCRM 5.42.0
 
-Released October 6, 2021;
+Released October 6, 2021
 
+- **[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?                     |   no    |
+| Fix problems installing or upgrading to a previous version?     |   no    |
+| **Introduce features?**                                         | **yes** |
+| **Fix bugs?**                                                   | **yes** |
 
 ## <a name="features"></a>Features
 
 ### Core CiviCRM
 
-- **CRM- Missing Summary ([58](https://github.com/civicrm/civicrm-joomla/pull/58))**
+- **Edit Contact: Hide email signatures for contacts that do not have a user/CMS
+  account
+  ([dev/user-interface#38](https://lab.civicrm.org/dev/user-interface/-/issues/38):
+  [21103](https://github.com/civicrm/civicrm-core/pull/21103))**
 
-## <a name="bugs"></a>Bugs resolved
+  Improves the user interface by hiding the email signature section for contacts
+  for whom it is not relevant.
 
-### Core CiviCRM
+- **Option to rename the file before downloading
+  ([dev/core#2121](https://lab.civicrm.org/dev/core/-/issues/2121):
+  [21006](https://github.com/civicrm/civicrm-core/pull/21006))**
+
+  Gives the user the option to change the PDF file name on the "Print/Merge
+  Document" screen.
+
+- **Add Settings, Disable, Delete buttons to group contacts listing page
+  (Work Towards [dev/core#2546](https://lab.civicrm.org/dev/core/-/issues/2546):
+  [20135](https://github.com/civicrm/civicrm-core/pull/20135))**
 
-- **SearchKit - Fix aggregated joins ([21411](https://github.com/civicrm/civicrm-core/pull/21411))**
+  Adds a "Edit Group Settings" button that pops up the group settings edit
+  overlay to the smog group page.
 
-- **SearchKit - Add download CSV action ([21328](https://github.com/civicrm/civicrm-core/pull/21328))**
+- **On logging detail report show the words not the numbers
+  ([dev/core#2691](https://lab.civicrm.org/dev/core/-/issues/2691):
+  [20907](https://github.com/civicrm/civicrm-core/pull/20907))**
 
-- **TokenProcessor - Allow defining Smarty variables which are populated via token ([21336](https://github.com/civicrm/civicrm-core/pull/21336))**
+  Improves logging by displaying more context.
 
-- **[Ref] Deprecate Core_Error handling ([21279](https://github.com/civicrm/civicrm-core/pull/21279))**
+- **Tokens - contributions - could we show them all?
+  (Work Towards [dev/core#2745](https://lab.civicrm.org/dev/core/-/issues/2745):
+  [21134](https://github.com/civicrm/civicrm-core/pull/21134))**
 
-- **Afform - Fix button appearance and block form during submission ([21287](https://github.com/civicrm/civicrm-core/pull/21287))**
+  Ensures support for the Contribution Token "contributionId".
 
-- **[NFC] Fix E-notice in Afform unit tests ([21345](https://github.com/civicrm/civicrm-core/pull/21345))**
+- **Allow dedupe by websites
+  ([dev/core#2770](https://lab.civicrm.org/dev/core/-/issues/2770):
+  [21168](https://github.com/civicrm/civicrm-core/pull/21168))**
 
-- **[REF] Fix Page Hook test on php8 by putting in guard into customDataB… ([21344](https://github.com/civicrm/civicrm-core/pull/21344))**
+  Makes it so one can dedupe based on websites.
 
-- **SearchKit - Add links to admin table and refresh after popups ([21343](https://github.com/civicrm/civicrm-core/pull/21343))**
+- **APIv4 pseudoconstant improvements
+  ([21184](https://github.com/civicrm/civicrm-core/pull/21184))**
 
-- **Tidies Joomla 4 integration (menu, padding) after final release ([21342](https://github.com/civicrm/civicrm-core/pull/21342))**
+  Makes SearchKit handle large option lists more efficiently, and adds APIv4
+  field metadata about available suffixes.
 
-- **Simplify ContributionView form. Always display "lineitems" ([21285](https://github.com/civicrm/civicrm-core/pull/21285))**
+- **APIv4 - Add File entity
+  ([21158](https://github.com/civicrm/civicrm-core/pull/21158))**
 
-- **[NFC] Cleanup boilerplate code in extension upgrader classes ([21340](https://github.com/civicrm/civicrm-core/pull/21340))**
+  Adds the entity "File" to APIv4.
 
-- **dev/core#2806 Fix accidental exposure of v4 tokens ([21337](https://github.com/civicrm/civicrm-core/pull/21337))**
+- **SearchKit - Add placeholder to token select
+  ([21172](https://github.com/civicrm/civicrm-core/pull/21172))**
 
-- **[NFC/Unit test] Update flaky test CRM_Utils_TokenConsistencyTest::testCaseTokenConsistency ([21341](https://github.com/civicrm/civicrm-core/pull/21341))**
+  Adds placeholder text to the token select dropdown in SearchKit.
 
-- **[REF] dev/core#2790 deprecate preProcessSingle ([21334](https://github.com/civicrm/civicrm-core/pull/21334))**
+- **Searchkit - Add grid display layout
+  ([dev/core#2776](https://lab.civicrm.org/dev/core/-/issues/2776):
+  [21194](https://github.com/civicrm/civicrm-core/pull/21194))**
 
-- **Afform - Optimize Get by checking type ([21316](https://github.com/civicrm/civicrm-core/pull/21316))**
+  Adds support to display SearchKit results in a grid format.
 
-- **Fixes unusable modals in Joomla 4 ([21286](https://github.com/civicrm/civicrm-core/pull/21286))**
+- **SearchKit - Merge admin results table with searchDisplay code
+  ([21069](https://github.com/civicrm/civicrm-core/pull/21069))**
 
-- **SearchKit - Use a search display to display searches ([21270](https://github.com/civicrm/civicrm-core/pull/21270))**
+  Improves and streamlines the SearchKit Angular code to reconcile two
+  different ways of fetching, formatting & displaying results. This reduces code
+  duplication, while adding a few features from the admin table to all search
+  display tables.
 
-- **SearchKit - Fix pager count and add 'None Found' text in empty tables ([21333](https://github.com/civicrm/civicrm-core/pull/21333))**
+- **SearchKit - Add download CSV action
+  ([21328](https://github.com/civicrm/civicrm-core/pull/21328))**
 
-- **[REF] dev/core#2790 move preProcess static to the trait ([21331](https://github.com/civicrm/civicrm-core/pull/21331))**
+  Adds an option to SearchKit to download a CSV.
 
-- **[REF] dev/core#2790 Deprecate CRM/Member/Form/Task/PDFLetterCommon ([21305](https://github.com/civicrm/civicrm-core/pull/21305))**
+- **SearchKit - Add links to admin table and refresh after popups
+  ([21343](https://github.com/civicrm/civicrm-core/pull/21343))**
 
-- **5.41 to master ([21332](https://github.com/civicrm/civicrm-core/pull/21332))**
+  Adds quick-action links to the SearchKit admin results table.
 
-- **[REF] dev/core#2790 Pre process cleanup on pdf tasks ([21310](https://github.com/civicrm/civicrm-core/pull/21310))**
+- **SearchKit - Use a search display to display searches
+  ([21270](https://github.com/civicrm/civicrm-core/pull/21270))**
 
-- **[REF] dev/core#2790 towards pdf task trait ([21276](https://github.com/civicrm/civicrm-core/pull/21276))**
+  Simplifies code by using a SearchKit display to display searches.
 
-- **Afform - selectable location type for address, email, etc ([21254](https://github.com/civicrm/civicrm-core/pull/21254))**
+- **Include random as an option when sorting displays
+  ([dev/report#75](https://lab.civicrm.org/dev/report/-/issues/75):
+  [21177](https://github.com/civicrm/civicrm-core/pull/21177))**
 
-- ** dev/core#2732 SearchKit - Move field formatting from client-side to server-side  ([21320](https://github.com/civicrm/civicrm-core/pull/21320))**
+  Adds a sort option of random to SearchKit.
 
-- **Fix support link just added in oauth-client extension info.xml ([21256](https://github.com/civicrm/civicrm-core/pull/21256))**
+- **Searchkit: Add image field handler
+  ([dev/core#2781](https://lab.civicrm.org/dev/core/-/issues/2781):
+  [21300](https://github.com/civicrm/civicrm-core/pull/21300))**
 
-- **Remove extraneous buildQuickForm ([21325](https://github.com/civicrm/civicrm-core/pull/21325))**
+  Makes it possible to show images in SearchKit displays.
 
-- **[NFC] Fix UpdateSubscriptionTest on php8 by creating a Payment Processor ([21324](https://github.com/civicrm/civicrm-core/pull/21324))**
+- **SearchKit - Allow tokens in menu button text
+  ([21217](https://github.com/civicrm/civicrm-core/pull/21217))**
 
-- **[REF] dev/core#2790 move buildForm to pdfTrait ([21297](https://github.com/civicrm/civicrm-core/pull/21297))**
+  Makes it so users can include tokens in SearchKit menu button text.
 
-- **5.41 to master ([21323](https://github.com/civicrm/civicrm-core/pull/21323))**
+- **TokenProcessor - Allow defining Smarty variables which are populated via
+  token ([21336](https://github.com/civicrm/civicrm-core/pull/21336))**
 
-- **SearchKit - Allow random sorting (Fixes dev/report#75) ([21177](https://github.com/civicrm/civicrm-core/pull/21177))**
+  Allows more interoperability between Smarty expressions and tokens.
 
-- **[REF] Fix undefined smarty vars in Advanced Search ([21321](https://github.com/civicrm/civicrm-core/pull/21321))**
+- **Token Parser - Allow tokens with multiple dots (eg
+  {contribution.contribution_recur_id.amount})
+  ([21076](https://github.com/civicrm/civicrm-core/pull/21076))**
 
-- **better target multivalue checkbox and multiselect import validation ([21317](https://github.com/civicrm/civicrm-core/pull/21317))**
+  Adjusts the naming/parsing rules for Civi-style tokens so that tokens may
+  include dots and colons.
 
-- **Move financial acl setting to the extension ([21120](https://github.com/civicrm/civicrm-core/pull/21120))**
+- **Afform - support file uploads
+  ([21150](https://github.com/civicrm/civicrm-core/pull/21150))**
 
-- **Fix Searchkit "Add" columns button UI ([21315](https://github.com/civicrm/civicrm-core/pull/21315))**
+  Supports file fields as part of Afform.
 
-- **[NFC] Fix undefined array key when running CRM unit test suite in php8 ([21314](https://github.com/civicrm/civicrm-core/pull/21314))**
+- **Not possible to set the location type (address, mail, telephone) to a
+  specific value
+  ([dev/core#2703](https://lab.civicrm.org/dev/core/-/issues/2703):
+  [21254](https://github.com/civicrm/civicrm-core/pull/21254))**
 
-- **[REF] Improve Custom data insert performance when using the copyCusto… ([21313](https://github.com/civicrm/civicrm-core/pull/21313))**
+  Makes it possible in Afform to select a single location type for an address,
+  email, phone etc. block instead of having the field on the form.
 
-- **SavedSearch - Add pseudoconstant for api_entity field ([21312](https://github.com/civicrm/civicrm-core/pull/21312))**
+- **Afform - Store submissions in a new database table
+  ([21105](https://github.com/civicrm/civicrm-core/pull/21105))**
 
-- **dev/core#2682 Entity batch declare option group for pseudoconstant ([21241](https://github.com/civicrm/civicrm-core/pull/21241))**
+  Adds a Afform setting "log submissions", when checked, Afform submissions are
+  stored in the database.
 
-- **Use getter to get subscription id ([21309](https://github.com/civicrm/civicrm-core/pull/21309))**
+- **Move financial acl setting to the extension
+  ([21120](https://github.com/civicrm/civicrm-core/pull/21120))**
 
-- **[REF] Copy preProcessFromAddress back into the pdf function ([21306](https://github.com/civicrm/civicrm-core/pull/21306))**
+  Moves financial ACL settings to the financial ACL extension.
 
-- **Add test to UpdateSubscription form ([21282](https://github.com/civicrm/civicrm-core/pull/21282))**
+- **SavedSearch - Add pseudoconstant for api_entity field
+  ([21312](https://github.com/civicrm/civicrm-core/pull/21312))**
 
-- **Fix deprecated API4 Join on Email in dynamic profile ([21308](https://github.com/civicrm/civicrm-core/pull/21308))**
+  Adds a pseudoconstant to facilitate display in the UI of what a search is for,
+  e.g. ->addSelect('api_entity:label') would return "Contacts" for a search of
+  Contacts.
 
-- **Do not add tracking to internal anchor URLs ([20115](https://github.com/civicrm/civicrm-core/pull/20115))**
+- **Change the default PDF file name from "CiviLetter.pdf" to use the Activity
+  Subject, if available
+  ([21220](https://github.com/civicrm/civicrm-core/pull/21220))**
 
-- **dev/core#2546 Add settings button to group page ([20135](https://github.com/civicrm/civicrm-core/pull/20135))**
+  Improves PDF file naming to be more specific.
 
-- **5.41 ([21307](https://github.com/civicrm/civicrm-core/pull/21307))**
+- **Change PDF file name from "civicrmContributionReceipt.pdf" to use the
+  standard "receipt.pdf" file name
+  ([21221](https://github.com/civicrm/civicrm-core/pull/21221))**
 
-- **5.41 ([21303](https://github.com/civicrm/civicrm-core/pull/21303))**
+  Improves PDF file naming.
 
-- **[NFC] Fix APIv4 Conformance tests on php8 ([21302](https://github.com/civicrm/civicrm-core/pull/21302))**
+- **Scheduled Reminders UI - Show more activity tokens in admin GUI
+  ([21091](https://github.com/civicrm/civicrm-core/pull/21091))**
 
-- **[Ref] intial testing on case tokens, make knownTokens optional ([21289](https://github.com/civicrm/civicrm-core/pull/21289))**
+  Adds more Activity Tokens to the Scheduled Reminders UI.
 
-- **SearchKit - Image field handler implementation ([21300](https://github.com/civicrm/civicrm-core/pull/21300))**
+### CiviContribute
 
-- **[REF] Remove duplicate IF ([21298](https://github.com/civicrm/civicrm-core/pull/21298))**
+- **Logging improvements for "Failed to update contribution in database"
+  ([21243](https://github.com/civicrm/civicrm-core/pull/21243))**
 
-- **Fix for new prefetch key ([21292](https://github.com/civicrm/civicrm-core/pull/21292))**
+  Improves logging when contribution fails.
 
-- **[REF] Minor extraction ([21296](https://github.com/civicrm/civicrm-core/pull/21296))**
+- **Add recurring contributions to contribution reports
+  (Work Towards [dev/report#63](https://lab.civicrm.org/dev/report/-/issues/63):
+  [20168](https://github.com/civicrm/civicrm-core/pull/20168))**
 
-- **[REF] Remove unreachable code ([21294](https://github.com/civicrm/civicrm-core/pull/21294))**
+  Adds "Contribution Recurring" as a filter, column and group by to the
+  Contribution Summary Report.
 
-- **[Ref] Minor extraction ([21293](https://github.com/civicrm/civicrm-core/pull/21293))**
+### CiviMail
 
-- **[REF] dev/core#2790 Initial creation of pdf trait ([21290](https://github.com/civicrm/civicrm-core/pull/21290))**
+- **System Workflow Messages - Improve localization experience (Work Towards
+  [dev/mail#83](https://lab.civicrm.org/dev/mail/-/issues/83):
+  [21139](https://github.com/civicrm/civicrm-core/pull/21139))**
 
-- **(dev/translation#70) Multilingual - Fix loading multiple translations within same page-view (OptionValues, ContactTypes) ([21268](https://github.com/civicrm/civicrm-core/pull/21268))**
+  Introduces a class contracts for system workflow messages which will enable
+  richer APIs and UIs.
 
-- **Change the default PDF file name from "CiviLetter.pdf" to use the Activity Subject, if available ([21220](https://github.com/civicrm/civicrm-core/pull/21220))**
+### CiviMember
 
-- **(dev/mail#83) Workflow Messages - Introduce class contracts ([21139](https://github.com/civicrm/civicrm-core/pull/21139))**
+- **Membership api for v4
+  ([dev/core#2634](https://lab.civicrm.org/dev/core/-/issues/2634):
+  [21106](https://github.com/civicrm/civicrm-core/pull/21106))**
 
-- **5.41 ([21281](https://github.com/civicrm/civicrm-core/pull/21281))**
+  Adds the Membership entity to APIv4.
 
-- **5.41 ([21280](https://github.com/civicrm/civicrm-core/pull/21280))**
+- **Fix code to use Order api to create Memberships in core forms
+  (Work Towards [dev/core#2717](https://lab.civicrm.org/dev/core/-/issues/2717):
+  [20936](https://github.com/civicrm/civicrm-core/pull/20936),
+  [21126](https://github.com/civicrm/civicrm-core/pull/21126) and
+  [20935](https://github.com/civicrm/civicrm-core/pull/20935))**
 
-- **Afform - support file uploads ([21150](https://github.com/civicrm/civicrm-core/pull/21150))**
+  Work towards using the Order API to create Memberships in core forms.
 
-- **dev/core#2789 - Filename is not non-english-friendly in print/merge document ([21259](https://github.com/civicrm/civicrm-core/pull/21259))**
+### Joomla Integration
 
-- **REF Don't check if id is set in ContributionView form - it's required ([21274](https://github.com/civicrm/civicrm-core/pull/21274))**
+- **CiviCRM-Joomla should accept web-service calls
+  ([58](https://github.com/civicrm/civicrm-joomla/pull/58))**
 
-- **[REF] Remove meaningless if ([21273](https://github.com/civicrm/civicrm-core/pull/21273))**
+  Ensures that on a stock configuration of CiviCRM-Joomla, it is possible to
+  create a page-route for accepting web-service calls.
 
-- **dev/core#2717  - further cleanup ([21126](https://github.com/civicrm/civicrm-core/pull/21126))**
+## <a name="bugs"></a>Bugs resolved
+
+### Core CiviCRM
 
-- **Remove deprecated isDevelopment() function ([21269](https://github.com/civicrm/civicrm-core/pull/21269))**
+- **Multi-lingual: Contact Type label is cached regardless of language
+  ([dev/translation#70](https://lab.civicrm.org/dev/translation/-/issues/70):
+  [21268](https://github.com/civicrm/civicrm-core/pull/21268))**
 
-- **Change PDF file name from "civicrmContributionReceipt.pdf" to use the standard "receipt.pdf" file name ([21221](https://github.com/civicrm/civicrm-core/pull/21221))**
+  Fixes loading multiple translations within same page-view (OptionValues,
+  ContactTypes).
 
-- **5.41 ([21266](https://github.com/civicrm/civicrm-core/pull/21266))**
+- **APIv4 - entityBatch linkage
+  ([dev/core#2682](https://lab.civicrm.org/dev/core/-/issues/2682):
+  [21241](https://github.com/civicrm/civicrm-core/pull/21241))**
 
-- **Do not enable custom activity search on new installs ([21260](https://github.com/civicrm/civicrm-core/pull/21260))**
+  Work Towards APIv4 entity parity. Ensures that the values for entity_table are
+  discoverable.
 
-- **5.41 to master ([21264](https://github.com/civicrm/civicrm-core/pull/21264))**
+- **Consider replacing fopen() call in CRM_Utils_File::isIncludable with
+  stream_resolve_include_path()
+  ([dev/core#2730](https://lab.civicrm.org/dev/core/-/issues/2730):
+  [21060](https://github.com/civicrm/civicrm-core/pull/21060))**
 
-- **Logging improvements for "Failed to update contribution in database" ([21243](https://github.com/civicrm/civicrm-core/pull/21243))**
+  Replaces fopen call in CRM_Utils_File::isIncludable with one that doesn't need
+  error-supression to avoid problems in php8.
 
-- **5.41 ([21258](https://github.com/civicrm/civicrm-core/pull/21258))**
+- **SearchKit: have a quick Export task
+  (Work Towards [dev/core#2732](https://lab.civicrm.org/dev/core/-/issues/2732):
+  [21320](https://github.com/civicrm/civicrm-core/pull/21320))**
 
-- **dev/core#2717 Simplify batch membership renewal ([20935](https://github.com/civicrm/civicrm-core/pull/20935))**
+  Refactoring work towards making it possible to have a direct export feature in
+  SearchKit.
 
-- **dev/core#2634 Add v4 Membership api, access it via order ([21106](https://github.com/civicrm/civicrm-core/pull/21106))**
+- **Expose Contribution token processor
+  ([dev/core#2747](https://lab.civicrm.org/dev/core/-/issues/2747):
+  [21046](https://github.com/civicrm/civicrm-core/pull/21046) and
+  [21057](https://github.com/civicrm/civicrm-core/pull/21057))**
 
-- **Template fixes - notices, syntax ([21257](https://github.com/civicrm/civicrm-core/pull/21257))**
+  Reconciles contribution legacy tokens and scheduled reminders tokens.
 
-- **Fix invalid parameter giving E_WARNING ([21255](https://github.com/civicrm/civicrm-core/pull/21255))**
+- **CRM_Core_BAO_CustomField::getChangeSerialize always returns a change
+  ([dev/core#2762](https://lab.civicrm.org/dev/core/-/issues/2762):
+  [21160](https://github.com/civicrm/civicrm-core/pull/21160))**
 
-- **Provided standard links in ext/oauth-client/info.xml, fixed typo ([21252](https://github.com/civicrm/civicrm-core/pull/21252))**
+- **Caching issue on apiv4 + install
+  ([dev/core#2763](https://lab.civicrm.org/dev/core/-/issues/2763):
+  [21166](https://github.com/civicrm/civicrm-core/pull/21166))**
 
-- **[Ref] Copy emailcommon function back to email trait ([21251](https://github.com/civicrm/civicrm-core/pull/21251))**
+- **CiviCRM email validation failing incorrectly
+  ([dev/core#2769](https://lab.civicrm.org/dev/core/-/issues/2769):
+  [329](https://github.com/civicrm/civicrm-packages/pull/329) and
+  [21169](https://github.com/civicrm/civicrm-core/pull/21169))**
 
-- **[REF] Update a few references to invoicing ([21101](https://github.com/civicrm/civicrm-core/pull/21101))**
+- **Sort by date column on multirecord field listing section on profile edit
+  mode doesn't work
+  ([dev/core#2774](https://lab.civicrm.org/dev/core/-/issues/2774):
+  [21191](https://github.com/civicrm/civicrm-core/pull/21191))**
 
-- **SearchKit - Allow tokens in menu button text ([21217](https://github.com/civicrm/civicrm-core/pull/21217))**
+- **Error when using search in 'Find and Merge Duplicate Contacts' page
+  ([dev/core#2778](https://lab.civicrm.org/dev/core/-/issues/2778):
+  [21223](https://github.com/civicrm/civicrm-core/pull/21223))**
 
-- ** dev/core#2745 - Contribution Tokens - Support 'contributionId' ([21134](https://github.com/civicrm/civicrm-core/pull/21134))**
+- **Print/merge document has awkward filename if activity subject uses
+  non-english letters
+  ([dev/core#2789](https://lab.civicrm.org/dev/core/-/issues/2789):
+  [21259](https://github.com/civicrm/civicrm-core/pull/21259))**
 
-- **dev/core#2121 Ability to change pdf filename before downloading ([21006](https://github.com/civicrm/civicrm-core/pull/21006))**
+- **Contribution custom field tokens are duplicated in the dropdown
+  ([dev/core#2806](https://lab.civicrm.org/dev/core/-/issues/2806):
+  [21337](https://github.com/civicrm/civicrm-core/pull/21337))**
 
-- **5.41 to master ([21246](https://github.com/civicrm/civicrm-core/pull/21246))**
+- **[regression] Search forms with entities that include File custom fields
+  don't render in Afform Admin screen
+  ([dev/core#2751](https://lab.civicrm.org/dev/core/-/issues/2751):
+  [21084](https://github.com/civicrm/civicrm-core/pull/21084))**
 
-- **[NFC] - Replace deprecated function in AngularLoaderTest ([21244](https://github.com/civicrm/civicrm-core/pull/21244))**
+- **APIv4 - Throw exception instead of munging illegal join aliases
+  ([21072](https://github.com/civicrm/civicrm-core/pull/21072))**
 
-- **CiviCRM Mailing, function unsub_from_mailing has spelling error, "experiement" impacts A/B Mailing unsubscribes ([21245](https://github.com/civicrm/civicrm-core/pull/21245))**
+  Improves APIv4 validation of explicit join aliases.
 
-- **dev/core#2769 use php email validation not hacked & bad quickform function ([21169](https://github.com/civicrm/civicrm-core/pull/21169))**
+- **Fix deprecated API4 Join on Email in dynamic profile
+  ([21308](https://github.com/civicrm/civicrm-core/pull/21308))**
 
-- **(Smart Group) is being constantly added while editing the smart group title from 'Manage Group' page ([20898](https://github.com/civicrm/civicrm-core/pull/20898))**
+- **Search Kit doesn't display related contact custom fields
+  ([dev/report#73](https://lab.civicrm.org/dev/report/-/issues/73):
+  [21071](https://github.com/civicrm/civicrm-core/pull/21071))**
 
-- **5.41 to master ([21240](https://github.com/civicrm/civicrm-core/pull/21240))**
+- **SearchKit - Misc bulk action bug fixes
+  ([21159](https://github.com/civicrm/civicrm-core/pull/21159))**
 
-- **Afform - Store submissions in a new database table ([21105](https://github.com/civicrm/civicrm-core/pull/21105))**
+- **SearchKit - Fix aggregated joins
+  ([21411](https://github.com/civicrm/civicrm-core/pull/21411))**
 
-- **5.41 ([21231](https://github.com/civicrm/civicrm-core/pull/21231))**
+- **SearchKit - Fix pager count and add 'None Found' text in empty tables
+  ([21333](https://github.com/civicrm/civicrm-core/pull/21333))**
 
-- **Add date metadata for email.on_hold, reset_date ([21233](https://github.com/civicrm/civicrm-core/pull/21233))**
+- **Fix Searchkit "Add" columns button UI
+  ([21315](https://github.com/civicrm/civicrm-core/pull/21315))**
 
-- **Afform - fix contact source field & field defaults ([21228](https://github.com/civicrm/civicrm-core/pull/21228))**
+- **Afform - Fix button appearance and block form during submission
+  ([21287](https://github.com/civicrm/civicrm-core/pull/21287))**
 
-- **Afform - Rename blocks and joins for clarity ([21218](https://github.com/civicrm/civicrm-core/pull/21218))**
+- **Afform - fix contact source field & field defaults
+  ([21228](https://github.com/civicrm/civicrm-core/pull/21228))**
 
-- **[REF] APIv4 Notes - Ensure child notes are deleted with parent, and hooks are called ([21208](https://github.com/civicrm/civicrm-core/pull/21208))**
+- **Fix support link just added in oauth-client extension info.xml
+  ([21256](https://github.com/civicrm/civicrm-core/pull/21256))**
 
-- **[REF] Remove unused/unneeded variables from Note View page ([21226](https://github.com/civicrm/civicrm-core/pull/21226))**
+- **better target multivalue checkbox and multiselect import validation
+  ([21317](https://github.com/civicrm/civicrm-core/pull/21317))**
 
-- **EntityBatch - Deprecate del() function (dev/core#2757) ([21213](https://github.com/civicrm/civicrm-core/pull/21213))**
+- **Do not add tracking to internal anchor URLs
+  ([20115](https://github.com/civicrm/civicrm-core/pull/20115))**
 
-- **Fixes dev/core#2778 - Fatal error on dedupe screen ([21223](https://github.com/civicrm/civicrm-core/pull/21223))**
+- **Fix for new prefetch key
+  ([21292](https://github.com/civicrm/civicrm-core/pull/21292))**
 
-- **Improve test for CRM_Utils_Recent ([21222](https://github.com/civicrm/civicrm-core/pull/21222))**
+- **Do not enable custom activity search on new installs
+  ([21260](https://github.com/civicrm/civicrm-core/pull/21260))**
 
-- **Alternate to 20131 - Avoid crash during import for blank lines in a one-column csv file ([21216](https://github.com/civicrm/civicrm-core/pull/21216))**
+- **Add date metadata for email.on_hold, reset_date
+  ([21233](https://github.com/civicrm/civicrm-core/pull/21233))**
 
-- **[REF] CRM_Utils_Recent - Use hook listener to delete items ([21204](https://github.com/civicrm/civicrm-core/pull/21204))**
+- **Add no-prefetch campaign pseudoconstants
+  ([21185](https://github.com/civicrm/civicrm-core/pull/21185))**
 
-- **Extract ACL contact cache clearing part out ([21219](https://github.com/civicrm/civicrm-core/pull/21219))**
+- **Replace extension key with label during install/upgrade/disable/uninstall
+  ([21094](https://github.com/civicrm/civicrm-core/pull/21094))**
 
-- **dev/core#2774 : Sort by date column on multirecord field listing section on profile edit mode doesn't work ([21191](https://github.com/civicrm/civicrm-core/pull/21191))**
+- **ActionSchedule - Pass real batches into TokenProcessor. Simplify
+  CRM_Activity_Tokens.
+  ([21088](https://github.com/civicrm/civicrm-core/pull/21088))**
 
-- **[REF] dev/core#2757 Move acl delete logic to an event listener ([21201](https://github.com/civicrm/civicrm-core/pull/21201))**
+- **MessageTemplate::sendTemplate() - Accept `array $messageTemplate` and `array
+  $tokenContext` ([21073](https://github.com/civicrm/civicrm-core/pull/21073))**
 
-- **[NFC] CRM_Utils_SystemTest - Call to Uri->withPath() using deprecated format ([21215](https://github.com/civicrm/civicrm-core/pull/21215))**
+- **Alternate to 20131 - Avoid crash during import for blank lines in a
+  one-column csv file
+  ([21216](https://github.com/civicrm/civicrm-core/pull/21216))**
 
-- **[NFC] CRM_Extension_Manager_ModuleUpgTest - use ?? instead of error-suppression operator ([21214](https://github.com/civicrm/civicrm-core/pull/21214))**
+- **CRM_Queue_Service - Use ?? instead of error-supression operator
+  ([21207](https://github.com/civicrm/civicrm-core/pull/21207))**
 
-- **[REF] Deprecate unnecessary del() functions ([21200](https://github.com/civicrm/civicrm-core/pull/21200))**
+- **Respect http_timeout core setting for Guzzle HTTP requests
+  ([21096](https://github.com/civicrm/civicrm-core/pull/21096))**
 
-- **Remove unused, duplicate functions getEntitiesByTag ([21209](https://github.com/civicrm/civicrm-core/pull/21209))**
+- **Smarty notice - Explicitly set hideRelativeLabel var on Find Cases form
+  ([21070](https://github.com/civicrm/civicrm-core/pull/21070))**
 
-- **[NFC] CRM_Extension_Manager_ModuleTest - use ?? instead of error-suppression operator ([21206](https://github.com/civicrm/civicrm-core/pull/21206))**
+- **(Smart Group) is being constantly added while editing the smart group title
+  from 'Manage Group' page
+  ([20898](https://github.com/civicrm/civicrm-core/pull/20898))**
 
-- **CRM_Queue_Service - Use ?? instead of error-supression operator ([21207](https://github.com/civicrm/civicrm-core/pull/21207))**
+- **Enotice fixes in tpl
+  ([21170](https://github.com/civicrm/civicrm-core/pull/21170))**
 
-- **5.41 to master (conflicts resolved) ([21203](https://github.com/civicrm/civicrm-core/pull/21203))**
+- **Template fixes - notices, syntax
+  ([21257](https://github.com/civicrm/civicrm-core/pull/21257))**
 
-- **APIv4 pseudoconstant improvements ([21184](https://github.com/civicrm/civicrm-core/pull/21184))**
+- **Fix invalid parameter giving E_WARNING
+  ([21255](https://github.com/civicrm/civicrm-core/pull/21255))**
 
-- **REF Switch to CRM_Core_Form::setTitle() instead of CRM_Utils_System::setTitle() part 1 ([21193](https://github.com/civicrm/civicrm-core/pull/21193))**
+- **Fix search display access for non-admin users
+  ([21082](https://github.com/civicrm/civicrm-core/pull/21082))**
 
-- **add grid layout support for searchkit ([21194](https://github.com/civicrm/civicrm-core/pull/21194))**
+- **Use convenience function for one-off token evaluations to avoid too-long
+  filenames and possible privacy issues
+  ([21140](https://github.com/civicrm/civicrm-core/pull/21140))**
 
-- **5.41 ([21190](https://github.com/civicrm/civicrm-core/pull/21190))**
+- **Replace deprecated calls to `renderMessageTemplate()`
+  ([21121](https://github.com/civicrm/civicrm-core/pull/21121))**
 
-- **Add no-prefetch campaign pseudoconstants ([21185](https://github.com/civicrm/civicrm-core/pull/21185))**
+- **Scheduled Reminders - Pass locale through to TokenProcessor
+  ([21085](https://github.com/civicrm/civicrm-core/pull/21085))**
 
-- **SearchKit - Misc bulk action bug fixes ([21159](https://github.com/civicrm/civicrm-core/pull/21159))**
+### CiviCampaign
 
-- **Remove deprecated function ([21179](https://github.com/civicrm/civicrm-core/pull/21179))**
+- **Fix caching on campaign pseudoconstant
+  ([21083](https://github.com/civicrm/civicrm-core/pull/21083))**
 
-- **Log details of mailing error and don't display details to end user ([21173](https://github.com/civicrm/civicrm-core/pull/21173))**
+### CiviContribute
 
-- **closes core#2770: Dedupe by website ([21168](https://github.com/civicrm/civicrm-core/pull/21168))**
+- **Fix the check to see if the financialAclExtension is installed
+  ([21077](https://github.com/civicrm/civicrm-core/pull/21077))**
 
-- **dev/core#2762 Fix custom field edit form to set serialization correctly ([21160](https://github.com/civicrm/civicrm-core/pull/21160))**
+- **Simplify ContributionView form. Always display "lineitems"
+  ([21285](https://github.com/civicrm/civicrm-core/pull/21285))**
 
-- **dev/core#2758 - Fix contribution activity campaign propagation ...more ([21171](https://github.com/civicrm/civicrm-core/pull/21171))**
+### CiviMail
 
-- **SearchKit - Add placeholder to token select ([21172](https://github.com/civicrm/civicrm-core/pull/21172))**
+- **CiviCRM Mailing, function unsub_from_mailing has spelling error,
+  "experiement" impacts A/B Mailing unsubscribes
+  ([21245](https://github.com/civicrm/civicrm-core/pull/21245))**
 
-- **Update MembershipType.duration and MembershipStatus.name to be required ([21119](https://github.com/civicrm/civicrm-core/pull/21119))**
+- **In an email, a token from an extension in a subject will inhibits the same
+  token group in the email body
+  ([dev/core#2673](https://lab.civicrm.org/dev/core/-/issues/2673):
+  [21080](https://github.com/civicrm/civicrm-core/pull/21080))**
 
-- **Enotice fixes in tpl ([21170](https://github.com/civicrm/civicrm-core/pull/21170))**
+- **Log details of mailing error and don't display details to end user
+  ([21173](https://github.com/civicrm/civicrm-core/pull/21173))**
 
-- **APIv4 - Support multiple implicit joins to the same table ([21071](https://github.com/civicrm/civicrm-core/pull/21071))**
+### CiviMember
 
-- **dev/core#2763 cache clearing fix ([21166](https://github.com/civicrm/civicrm-core/pull/21166))**
+- **Fix Membership.create in BAO to respect passed in status_id
+  ([20976](https://github.com/civicrm/civicrm-core/pull/20976))**
 
-- **Fix search display access for non-admin users ([21082](https://github.com/civicrm/civicrm-core/pull/21082))**
+- **Membership Dashboard - Fatal Error starting with 5.41.beta1
+  ([dev/core#2758](https://lab.civicrm.org/dev/core/-/issues/2758):
+  [21171](https://github.com/civicrm/civicrm-core/pull/21171) and
+  [21167](https://github.com/civicrm/civicrm-core/pull/21167))**
 
-- **dev/core#2758 - Fix contribution activity campaign propagation ([21167](https://github.com/civicrm/civicrm-core/pull/21167))**
+- **Update MembershipType.duration and MembershipStatus.name to be required
+  ([21119](https://github.com/civicrm/civicrm-core/pull/21119))**
 
-- **[Ref] remove unused variable ([21161](https://github.com/civicrm/civicrm-core/pull/21161))**
+### Drupal Integration
 
-- **[REF] SearchKit - Refactor search task code to share a trait ([21156](https://github.com/civicrm/civicrm-core/pull/21156))**
+- **Syntax errors when loading sample data
+  ([dev/drupal#161](https://lab.civicrm.org/dev/drupal/-/issues/161):
+  [648](https://github.com/civicrm/civicrm-drupal/pull/648))**
 
-- **5.41 ([21164](https://github.com/civicrm/civicrm-core/pull/21164))**
+  Removes drush sample data install option that doesn't work.
 
-- **APIv4 - Add File entity ([21158](https://github.com/civicrm/civicrm-core/pull/21158))**
+- **Replace Drupal 9 user function, function getUsername is no more valid
+  ([328](https://github.com/civicrm/civicrm-packages/pull/328))**
 
-- **[NFC] Update CRM_Core_RegionTest so it doesn't need the error-suppression operator ([21155](https://github.com/civicrm/civicrm-core/pull/21155))**
+### Joomla Integration
 
-- **5.41 ([21154](https://github.com/civicrm/civicrm-core/pull/21154))**
+- **Fixes unusable modals in Joomla 4
+  ([21286](https://github.com/civicrm/civicrm-core/pull/21286))**
 
-- **5.41 ([21148](https://github.com/civicrm/civicrm-core/pull/21148))**
+- **Tidies Joomla 4 integration (menu, padding) after final release
+  ([21342](https://github.com/civicrm/civicrm-core/pull/21342))**
 
-- **[NFC] Update testCaseActivityCopyTemplate to provide variable that would usually be present ([21146](https://github.com/civicrm/civicrm-core/pull/21146))**
+## <a name="misc"></a>Miscellany
 
-- **Use convenience function for one-off token evaluations to avoid too-long filenames and possible privacy issues ([21140](https://github.com/civicrm/civicrm-core/pull/21140))**
+- **MessageTemplate - Add renderTemplate(). Deprecate renderMessageTemplate().
+  ([21115](https://github.com/civicrm/civicrm-core/pull/21115))**
 
-- **[Ref] Move id fetching to the classes ([21075](https://github.com/civicrm/civicrm-core/pull/21075))**
+- **Provided standard links in ext/oauth-client/info.xml, fixed typo
+  ([21252](https://github.com/civicrm/civicrm-core/pull/21252))**
 
-- **dev/search#63 Add recurring contributions to contribution reports ([20168](https://github.com/civicrm/civicrm-core/pull/20168))**
+- **Use getter to get subscription id
+  ([21309](https://github.com/civicrm/civicrm-core/pull/21309))**
 
-- **5.41 ([21138](https://github.com/civicrm/civicrm-core/pull/21138))**
+- **Extract ACL contact cache clearing part out
+  ([21219](https://github.com/civicrm/civicrm-core/pull/21219))**
 
-- **(REF) ReflectionUtils - Add findStandardProperties() and findMethodHelpers() ([21114](https://github.com/civicrm/civicrm-core/pull/21114))**
+- **Update quickform original
+  ([330](https://github.com/civicrm/civicrm-packages/pull/330))**
 
-- **5.41 ([21129](https://github.com/civicrm/civicrm-core/pull/21129))**
+- **Afform - Rename blocks and joins for clarity
+  ([21218](https://github.com/civicrm/civicrm-core/pull/21218))**
 
-- **dev/core#2691 - On logging detail civireport show words instead of numbers (part 2) ([20907](https://github.com/civicrm/civicrm-core/pull/20907))**
+- **Afform - Optimize Get by checking type
+  ([21316](https://github.com/civicrm/civicrm-core/pull/21316))**
 
-- **NFC - Fix docblock in CRM_Core_Transaction ([21125](https://github.com/civicrm/civicrm-core/pull/21125))**
+- **[REF] Cleanup pdf classes to use a trait like we do for email classes
+  ([dev/core#2790](https://lab.civicrm.org/dev/core/-/issues/2790):
+  [21334](https://github.com/civicrm/civicrm-core/pull/21334),
+  [21305](https://github.com/civicrm/civicrm-core/pull/21305),
+  [21310](https://github.com/civicrm/civicrm-core/pull/21310),
+  [21276](https://github.com/civicrm/civicrm-core/pull/21276),
+  [21297](https://github.com/civicrm/civicrm-core/pull/21297),
+  [21331](https://github.com/civicrm/civicrm-core/pull/21331) and
+  [21290](https://github.com/civicrm/civicrm-core/pull/21290))**
 
-- **5.41 to master  ([21127](https://github.com/civicrm/civicrm-core/pull/21127))**
+- **Upgrade angular-file-uploader to v2.6.1
+  ([21081](https://github.com/civicrm/civicrm-core/pull/21081))**
 
-- **[NFC] {Test} Minor cleanup ([21116](https://github.com/civicrm/civicrm-core/pull/21116))**
+- **Upgrade Pear/DB package to be version 1.11.0
+  ([21087](https://github.com/civicrm/civicrm-core/pull/21087))**
 
-- **dev/user-interface#38 Contact Edit: Only display signatures if contact has a CMS account ([21103](https://github.com/civicrm/civicrm-core/pull/21103))**
+- **CRM_Core_Component - Remove unused code
+  ([21086](https://github.com/civicrm/civicrm-core/pull/21086))**
 
-- **Replace deprecated calls to `renderMessageTemplate()` ([21121](https://github.com/civicrm/civicrm-core/pull/21121))**
+- **Move make-sure-single-set out of shared function
+  ([21062](https://github.com/civicrm/civicrm-core/pull/21062))**
 
-- **MessageTemplate - Add renderTemplate(). Deprecate renderMessageTemplate(). ([21115](https://github.com/civicrm/civicrm-core/pull/21115))**
+- **Remove unused, duplicate functions getEntitiesByTag
+  ([21209](https://github.com/civicrm/civicrm-core/pull/21209))**
 
-- **5.41 to master ([21117](https://github.com/civicrm/civicrm-core/pull/21117))**
+- **Remove deprecated function
+  ([21179](https://github.com/civicrm/civicrm-core/pull/21179))**
 
-- **5.41 ([21113](https://github.com/civicrm/civicrm-core/pull/21113))**
+- **Remove extraneous buildQuickForm
+  ([21325](https://github.com/civicrm/civicrm-core/pull/21325))**
 
-- **5.41 ([21111](https://github.com/civicrm/civicrm-core/pull/21111))**
+- **Remove unused assignment
+  ([21061](https://github.com/civicrm/civicrm-core/pull/21061))**
 
-- **dev/core#2747 Reconcile remaining fields between scheduled reminders and legacy tokens ([21046](https://github.com/civicrm/civicrm-core/pull/21046))**
+- **Remove no longer used variable in Email.tpl / smarty warning
+  ([21074](https://github.com/civicrm/civicrm-core/pull/21074))**
 
-- **Replace extension key with label during install/upgrade/disable/uninstall ([21094](https://github.com/civicrm/civicrm-core/pull/21094))**
+- **Remove deprecated isDevelopment() function
+  ([21269](https://github.com/civicrm/civicrm-core/pull/21269))**
 
-- **Respect http_timeout core setting for Guzzle HTTP requests ([21096](https://github.com/civicrm/civicrm-core/pull/21096))**
+- **[REF] Move acl delete logic to an event listener
+  ([dev/core#2757](https://lab.civicrm.org/dev/core/-/issues/2757):
+  [21201](https://github.com/civicrm/civicrm-core/pull/21201) and
+  [21213](https://github.com/civicrm/civicrm-core/pull/21213))**
 
-- **dev/core#2717 Use Same order ->payment flow for non recurring back of… ([20936](https://github.com/civicrm/civicrm-core/pull/20936))**
+- **[REF] Remove references to contribution_invoice_settings (Work Towards
+  [dev/core#2719](https://lab.civicrm.org/dev/core/-/issues/2719):
+  [20991](https://github.com/civicrm/civicrm-core/pull/20991))**
 
-- **Token Parser - Allow tokens with multiple dots (eg {contribution.contribution_recur_id.amount}) ([21076](https://github.com/civicrm/civicrm-core/pull/21076))**
+- **[REF] Afform - Code cleanup in LoadAdminData API action
+  ([21089](https://github.com/civicrm/civicrm-core/pull/21089))**
 
-- **dev/core#2719 [REF] Remove a couple more (tested) references to legacy contribution_invoice_settings ([20991](https://github.com/civicrm/civicrm-core/pull/20991))**
+- **[REF] SearchKit - Refactor search task code to share a trait
+  ([21156](https://github.com/civicrm/civicrm-core/pull/21156))**
 
-- **(dev/core#2673) Email Tokens - Custom tokens in `subject` block similar tokens in `body` ([21080](https://github.com/civicrm/civicrm-core/pull/21080))**
+- **[REF] SearchKit - display code refactor + pager options
+  ([21049](https://github.com/civicrm/civicrm-core/pull/21049))**
 
-- **[REF] SearchKit - Use non-deprecated join syntax when loading standalone displays ([21095](https://github.com/civicrm/civicrm-core/pull/21095))**
+- **[REF] SearchKit - Use non-deprecated join syntax when loading standalone
+  displays ([21095](https://github.com/civicrm/civicrm-core/pull/21095))**
 
-- **(NFC) MailingQueryEvent - Add more docblocks about query-writing and `tokenContext_*` ([21098](https://github.com/civicrm/civicrm-core/pull/21098))**
+- **[REF] APIv4 Notes - Ensure child notes are deleted with parent, and hooks
+  are called ([21208](https://github.com/civicrm/civicrm-core/pull/21208))**
 
-- **ActionSchedule - Pass real batches into TokenProcessor. Simplify CRM_Activity_Tokens. ([21088](https://github.com/civicrm/civicrm-core/pull/21088))**
+- **[REF] Remove unused/unneeded variables from Note View page
+  ([21226](https://github.com/civicrm/civicrm-core/pull/21226))**
 
-- **Scheduled Reminders UI - Show more activity tokens in admin GUI ([21091](https://github.com/civicrm/civicrm-core/pull/21091))**
+- **[REF] CRM_Utils_Recent - Use hook listener to delete items
+  ([21204](https://github.com/civicrm/civicrm-core/pull/21204))**
 
-- **[REF] Afform - Code cleanup in LoadAdminData API action ([21089](https://github.com/civicrm/civicrm-core/pull/21089))**
+- **[REF] Deprecate unnecessary del() functions
+  ([21200](https://github.com/civicrm/civicrm-core/pull/21200))**
 
-- **Upgrade angular-file-uploader to v2.6.1 ([21081](https://github.com/civicrm/civicrm-core/pull/21081))**
+- **REF Switch to CRM_Core_Form::setTitle() instead of
+  CRM_Utils_System::setTitle() part 1
+  ([21193](https://github.com/civicrm/civicrm-core/pull/21193))**
 
-- **(NFC) Expand test coverage for scheduled-reminders with `{activity.*}` tokens ([21092](https://github.com/civicrm/civicrm-core/pull/21092))**
+- **[Ref] remove unused variable
+  ([21161](https://github.com/civicrm/civicrm-core/pull/21161))**
 
-- **(NFC) TokenProcessorTest - Add scenario inspired by dev/core#2673 ([21090](https://github.com/civicrm/civicrm-core/pull/21090))**
+- **[Ref] Move id fetching to the classes
+  ([21075](https://github.com/civicrm/civicrm-core/pull/21075))**
 
-- **CRM_Core_Component - Remove unused code ([21086](https://github.com/civicrm/civicrm-core/pull/21086))**
+- **(REF) ReflectionUtils - Add findStandardProperties() and findMethodHelpers()
+  ([21114](https://github.com/civicrm/civicrm-core/pull/21114))**
 
-- **Upgrade Pear/DB package to be version 1.11.0 ([21087](https://github.com/civicrm/civicrm-core/pull/21087))**
+- **[Ref] Simplify IF clause
+  ([21078](https://github.com/civicrm/civicrm-core/pull/21078))**
 
-- **Fix caching on campaign pseudoconstant ([21083](https://github.com/civicrm/civicrm-core/pull/21083))**
+- **[Ref] extract function to getEmailDefaults
+  ([21067](https://github.com/civicrm/civicrm-core/pull/21067))**
 
-- **Scheduled Reminders - Pass locale through to TokenProcessor ([21085](https://github.com/civicrm/civicrm-core/pull/21085))**
+- **[Ref] Clarify what parameters are passed in
+  ([21063](https://github.com/civicrm/civicrm-core/pull/21063))**
 
-- **[Ref] Simplify IF clause ([21078](https://github.com/civicrm/civicrm-core/pull/21078))**
+- **[Ref] Move rule to email trait
+  ([21066](https://github.com/civicrm/civicrm-core/pull/21066))**
 
-- **APIv4 - Silently ignore errors in CoreUtil::getInfoItem() ([21084](https://github.com/civicrm/civicrm-core/pull/21084))**
+- **[Ref] cleanup alterActionSchedule
+  ([21047](https://github.com/civicrm/civicrm-core/pull/21047))**
 
-- **Fix the check to see if the financialAclExtension is installed ([21077](https://github.com/civicrm/civicrm-core/pull/21077))**
+- **[Ref] Copy emailcommon function back to email trait
+  ([21251](https://github.com/civicrm/civicrm-core/pull/21251))**
 
-- **Remove no longer used variable in Email.tpl / smarty warning ([21074](https://github.com/civicrm/civicrm-core/pull/21074))**
+- **[REF] Update a few references to invoicing
+  ([21101](https://github.com/civicrm/civicrm-core/pull/21101))**
 
-- **[Ref] extract function to getEmailDefaults ([21067](https://github.com/civicrm/civicrm-core/pull/21067))**
+- **[Ref] intial testing on case tokens, make knownTokens optional
+  ([21289](https://github.com/civicrm/civicrm-core/pull/21289))**
 
-- **MessageTemplate::sendTemplate() - Accept `array $messageTemplate` and `array $tokenContext` ([21073](https://github.com/civicrm/civicrm-core/pull/21073))**
+- **[Ref] Deprecate Core_Error handling
+  ([21279](https://github.com/civicrm/civicrm-core/pull/21279))**
 
-- **APIv4 - Throw exception instead of munging illegal join aliases ([21072](https://github.com/civicrm/civicrm-core/pull/21072))**
+- **[REF] Fix Page Hook test on php8 by putting in guard into customDataB…
+  ([21344](https://github.com/civicrm/civicrm-core/pull/21344))**
 
-- **SearchKit - Merge admin results table with searchDisplay code ([21069](https://github.com/civicrm/civicrm-core/pull/21069))**
+- **[REF] Fix undefined smarty vars in Advanced Search
+  ([21321](https://github.com/civicrm/civicrm-core/pull/21321))**
 
-- ** dev/core#2747 REF] Move all the generic functions to the parent ([21057](https://github.com/civicrm/civicrm-core/pull/21057))**
+- **[REF] Improve Custom data insert performance when using the copyCusto…
+  ([21313](https://github.com/civicrm/civicrm-core/pull/21313))**
 
-- **[Ref] Clarify what parameters are passed in ([21063](https://github.com/civicrm/civicrm-core/pull/21063))**
+- **[REF] Copy preProcessFromAddress back into the pdf function
+  ([21306](https://github.com/civicrm/civicrm-core/pull/21306))**
 
-- **Smarty notice - Explicitly set hideRelativeLabel var on Find Cases form ([21070](https://github.com/civicrm/civicrm-core/pull/21070))**
+- **[REF] Remove duplicate IF
+  ([21298](https://github.com/civicrm/civicrm-core/pull/21298))**
 
-- **Move make-sure-single-set out of shared function ([21062](https://github.com/civicrm/civicrm-core/pull/21062))**
+- **[REF] Minor extraction
+  ([21296](https://github.com/civicrm/civicrm-core/pull/21296))**
 
-- **[REF] SearchKit - display code refactor + pager options ([21049](https://github.com/civicrm/civicrm-core/pull/21049))**
+- **[REF] Remove unreachable code
+  ([21294](https://github.com/civicrm/civicrm-core/pull/21294))**
 
-- **Fix Membership.create in BAO to respect passed in status_id ([20976](https://github.com/civicrm/civicrm-core/pull/20976))**
+- **[Ref] Minor extraction
+  ([21293](https://github.com/civicrm/civicrm-core/pull/21293))**
 
-- **dev/core#2730 - Replace fopen call in CRM_Utils_File::isIncludable with one that doesn't need error-supression to avoid problems in php8 ([21060](https://github.com/civicrm/civicrm-core/pull/21060))**
+- **REF Don't check if id is set in ContributionView form - it's required
+  ([21274](https://github.com/civicrm/civicrm-core/pull/21274))**
 
-- **[Ref] Move rule to email trait ([21066](https://github.com/civicrm/civicrm-core/pull/21066))**
+- **[REF] Remove meaningless if
+  ([21273](https://github.com/civicrm/civicrm-core/pull/21273))**
 
-- **Remove unused assignment ([21061](https://github.com/civicrm/civicrm-core/pull/21061))**
+- **[NFC] Fix APIv4 Conformance tests on php8
+  ([21302](https://github.com/civicrm/civicrm-core/pull/21302))**
 
-- **5.41 ([21056](https://github.com/civicrm/civicrm-core/pull/21056))**
+- **[NFC] - Replace deprecated function in AngularLoaderTest
+  ([21244](https://github.com/civicrm/civicrm-core/pull/21244))**
 
-- **[Ref] cleanup alterActionSchedule ([21047](https://github.com/civicrm/civicrm-core/pull/21047))**
+- **[NFC] CRM_Utils_SystemTest - Call to Uri->withPath() using deprecated format
+  ([21215](https://github.com/civicrm/civicrm-core/pull/21215))**
 
-- **dev/drupal#161 - Remove drush sample data install option that doesn't work ([648](https://github.com/civicrm/civicrm-drupal/pull/648))**
+- **[NFC] CRM_Extension_Manager_ModuleUpgTest - use ?? instead of
+  error-suppression operator
+  ([21214](https://github.com/civicrm/civicrm-core/pull/21214))**
 
-- **Update quickform original ([330](https://github.com/civicrm/civicrm-packages/pull/330))**
+- **[NFC] CRM_Extension_Manager_ModuleTest - use ?? instead of error-suppression
+  operator ([21206](https://github.com/civicrm/civicrm-core/pull/21206))**
 
-- **Fixes dev/core#2769 remove quickform hack - we are no longer calling this rule ([329](https://github.com/civicrm/civicrm-packages/pull/329))**
+- **[NFC] Update CRM_Core_RegionTest so it doesn't need the error-suppression
+  operator ([21155](https://github.com/civicrm/civicrm-core/pull/21155))**
 
-- **Replace Drupal 9 user function, function getUsername is no more valid ([328](https://github.com/civicrm/civicrm-packages/pull/328))**
+- **[NFC] Update testCaseActivityCopyTemplate to provide variable that would
+  usually be present
+  ([21146](https://github.com/civicrm/civicrm-core/pull/21146))**
 
-## <a name="misc"></a>Miscellany
+- **NFC - Fix docblock in CRM_Core_Transaction
+  ([21125](https://github.com/civicrm/civicrm-core/pull/21125))**
+
+- **[NFC] {Test} Minor cleanup
+  ([21116](https://github.com/civicrm/civicrm-core/pull/21116))**
+
+- **[NFC] Fix UpdateSubscriptionTest on php8 by creating a Payment Processor
+  ([21324](https://github.com/civicrm/civicrm-core/pull/21324))**
+
+- **(NFC) Expand test coverage for scheduled-reminders with `{activity.*}`
+  tokens ([21092](https://github.com/civicrm/civicrm-core/pull/21092))**
+
+- **(NFC) TokenProcessorTest - Add scenario inspired by dev/core#2673
+  ([21090](https://github.com/civicrm/civicrm-core/pull/21090))**
+
+- **[NFC] Fix E-notice in Afform unit tests
+  ([21345](https://github.com/civicrm/civicrm-core/pull/21345))**
+
+- **[NFC] Cleanup boilerplate code in extension upgrader classes
+  ([21340](https://github.com/civicrm/civicrm-core/pull/21340))**
+
+- **[NFC/Unit test] Update flaky test
+  CRM_Utils_TokenConsistencyTest::testCaseTokenConsistency
+  ([21341](https://github.com/civicrm/civicrm-core/pull/21341))**
+
+- **(NFC) MailingQueryEvent - Add more docblocks about query-writing and
+  `tokenContext_*`
+  ([21098](https://github.com/civicrm/civicrm-core/pull/21098))**
+
+- **[NFC] Fix undefined array key when running CRM unit test suite in php8
+  ([21314](https://github.com/civicrm/civicrm-core/pull/21314))**
+
+- **Add test to UpdateSubscription form
+  ([21282](https://github.com/civicrm/civicrm-core/pull/21282))**
+
+- **Improve test for CRM_Utils_Recent
+  ([21222](https://github.com/civicrm/civicrm-core/pull/21222))**
 
 ## <a name="credits"></a>Credits
 
 This release was developed by the following code authors:
 
-AGH Strategies - Alice Frumin, Andie Hunt; Agileware - Justin Freeman; Australian Greens - John Twyman; Benjamin W; CiviCRM - Coleman Watts, Tim Otten; CompuCorp - Debarshi Bhaumik; Coop SymbioTIC - Mathieu Lutfy; Dave D; Fuzion - Jitendra Purohit; Greenpeace Central and Eastern Europe - Patrick Figel; JMA Consulting - Joe Murray, Monish Deb, Seamus Lee; Joinery - Allen Shaw; lisandro-compucorp; Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire; Nicol Wistreich; Skvare - Sunil Pawar; Tadpole Collective - Kevin Cristiano; Third Sector Design - Kurund Jalmi, Michael McAndrew; Wikimedia Foundation - Eileen McNaughton; Wildsight - Lars Sanders-Green
+AGH Strategies - Alice Frumin, Andie Hunt; Agileware - Justin Freeman;
+Australian Greens - John Twyman; Benjamin W; CiviCRM - Coleman Watts, Tim Otten;
+CompuCorp - Debarshi Bhaumik, Lisandro; Coop SymbioTIC - Mathieu Lutfy; Dave D;
+Fuzion - Jitendra Purohit; Greenpeace Central and Eastern Europe - Patrick
+Figel; JMA Consulting - Joe Murray, Monish Deb, Seamus Lee; Joinery - Allen
+Shaw; Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - Matthew
+Wire; Nicol Wistreich; Skvare - Sunil Pawar; Tadpole Collective - Kevin
+Cristiano; Third Sector Design - Kurund Jalmi, Michael McAndrew; Wikimedia
+Foundation - Eileen McNaughton; Wildsight - Lars Sanders-Green
 
 Most authors also reviewed code for this release; in addition, the following
 reviewers contributed their comments:
 
-Agileware - Justin Freeman; Black Brick Software - David Hayes; civibot[bot]; CiviCoop - Jaap Jansma; CiviCRM - Coleman Watts, Tim Otten; CompuCorp - Debarshi Bhaumik; Coop SymbioTIC - Mathieu Lutfy; Dave D; JMA Consulting - Monish Deb, Seamus Lee; Joinery - Allen Shaw; Lighthouse Consulting and Design - Brian Shaughnessy; lisandro-compucorp; Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire; Nicol Wistreich; redcuillin; Tadpole Collective - Kevin Cristiano; Third Sector Design - Kurund Jalmi; Wikimedia Foundation - Eileen McNaughton; Wildsight - Lars Sanders-Green
\ No newline at end of file
+Black Brick Software - David Hayes; CiviCoop - Jaap Jansma; Joinery - Allen
+Shaw; Lighthouse Consulting and Design - Brian Shaughnessy; redcuillin
+
+## <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`.