# CiviCRM 5.45.0 Released January 5, 2022 - **[Synopsis](#synopsis)** - **[Features](#features)** - **[Bugs resolved](#bugs)** - **[Miscellany](#misc)** - **[Credits](#credits)** - **[Feedback](#feedback)** ## 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** | ## Features ### Core CiviCRM - **Add CiviX class in Core? (Work Towards [civix#175](https://github.com/totten/civix/issues/175): [22198](https://github.com/civicrm/civicrm-core/pull/22198) and [22199](https://github.com/civicrm/civicrm-core/pull/22199))** Adds support for mixins to civix and updates core extensions to use them. - **Escape-on-Input => Escape-on-Output (Work Towards [dev/core#1328](https://lab.civicrm.org/dev/core/-/issues/1328): [21956](https://github.com/civicrm/civicrm-core/pull/21956))** Adds option to enable escape-on-output. - **APIv4 Explorer - Optionally view results in PHP format ([22010](https://github.com/civicrm/civicrm-core/pull/22010))** Improves the APIv4 Explorer UX by showing output in PHP format as well as JSON. - **APIv4 - Add SortableEntity type which auto-adjusts weights ([22137](https://github.com/civicrm/civicrm-core/pull/22137))** Gives APIv4 the ability to manage the "weight" of certain entities. - **APIv4 - Add export action for managed entities ([22014](https://github.com/civicrm/civicrm-core/pull/22014))** Adds a new APIv4 export action which generates an exportable array suitable for use in a .mgd.php file. - **APIv4 - Opt-in more ManagedEntity types ([22068](https://github.com/civicrm/civicrm-core/pull/22068))** Adds the ManagedEntity trait to a number of entities that are commonly used for configuration, making it possible to work with them as APIv4 managed entities. - **SearchKit - Animated loading skeleton ([22019](https://github.com/civicrm/civicrm-core/pull/22019))** Shows a wireframe "skeleton" while loading results in SearchKit. Improves the user perception of load times. - **SearchKit - tabbed display for custom vs packaged searches ([21986](https://github.com/civicrm/civicrm-core/pull/21986))** Splits the SearchKit admin UI in to 2 tabs - one for custom (locally-created) searches, and one for packaged searches (defined in extensions). Adds a "revert" button for packaged searches. - **SearchKit - Add default text/image to displays; support custom file fields ([21992](https://github.com/civicrm/civicrm-core/pull/21992))** Allows for "placeholder" text in a search display when a column value is empty. Also works for image fields. Image fields now support custom file fields to display images out-of-the-box. - **SearchKit - Add drag-sortable weight functionality ([22081](https://github.com/civicrm/civicrm-core/pull/22081))** Allows SearchKit table displays to be drag-sortable. - **SearchKit - enable search by case role ([22121](https://github.com/civicrm/civicrm-core/pull/22121))** Permits searching for contacts by case role in SearchKit. - **SearchKit - Allow searches of OptionValues, LocationTypes, CustomFields ([22151](https://github.com/civicrm/civicrm-core/pull/22151))** Flips the switch on a few entities to be searchable in SearchKit, with an eye toward more UIs being built with it. - **SearchKit - Improve UX for refresh after editing ([22125](https://github.com/civicrm/civicrm-core/pull/22125))** Makes editing records faster and easier, and fixes a bug where the pager count would not be correctly updated. - **SearchKit - Improve search listing UI ([22114](https://github.com/civicrm/civicrm-core/pull/22114))** Makes a few improvements to the main SearchKit screen (the tabbed listing of Saved Searches) specifically: - More responsive switching between tabs - Bookmarkable urls for each tab - Fixes the "modified" column for packaged searches, only showing a value if the packaged version has been overridden - Only shows "revert" button when a packaged search has been overridden - **Update Afform & search kit info ([22126](https://github.com/civicrm/civicrm-core/pull/22126))** Updates SearchKit and Afform info.xml files with more helpful and less confusing titles, descriptions and links. - **Afform - Add table of submission results ([22009](https://github.com/civicrm/civicrm-core/pull/22009))** Uses a SearchDisplay in an Afform to display form submissions. - **Afform - Display the extension in which an Afform is packaged ([21960](https://github.com/civicrm/civicrm-core/pull/21960))** Displays extension name in the UI for packaged Afforms. - **Make more hardcoded strings available for translation ([21994](https://github.com/civicrm/civicrm-core/pull/21994))** Improves translation. - **Alter default frequency for scheduled reminders job ([dev/core#2916](https://lab.civicrm.org/dev/core/-/issues/2916): [21835](https://github.com/civicrm/civicrm-core/pull/21835))** Changes the scheduled reminder job to default to run hourly instead of daily. - **Display higher severity status checks first ([22143](https://github.com/civicrm/civicrm-core/pull/22143))** Improves user experience on the status page by displaying highest severity status checks first. - **Sort list of extensions alphabetically in 'Extensions ok' check ([22142](https://github.com/civicrm/civicrm-core/pull/22142))** Improves user experience by sorting the list of extensions alphabetically in the 'Extensions ok' check. ## Bugs resolved ### Core CiviCRM - **Email to Activity processing: If there's a matching org contact and no matching individual, then file on the org instead of creating a new individual ([dev/core#2872](https://lab.civicrm.org/dev/core/-/issues/2872): [21983](https://github.com/civicrm/civicrm-core/pull/21983))** - **Activity redirects to search instead of view ([dev/core#2894](https://lab.civicrm.org/dev/core/-/issues/2894): [22088](https://github.com/civicrm/civicrm-core/pull/22088))** - **Can't save extra custom fields when inline and required ([dev/core#2912](https://lab.civicrm.org/dev/core/-/issues/2912): [21936](https://github.com/civicrm/civicrm-core/pull/21936))** - **Hidden submit buttons are confusing for keyboard users ([dev/core#2919](https://lab.civicrm.org/dev/core/-/issues/2919): [21854](https://github.com/civicrm/civicrm-core/pull/21854))** - **some PDFs hard-code format to "a3 landscape", overriding default PDF format ([dev/core#2959](https://lab.civicrm.org/dev/core/-/issues/2959): [22098](https://github.com/civicrm/civicrm-core/pull/22098))** - **All custom fields broken on edit forms ([dev/core#2973](https://lab.civicrm.org/dev/core/-/issues/2973): [22178](https://github.com/civicrm/civicrm-core/pull/22178))** - **APIv4 Export - Fix logic for exporting pseudoconstant syntax ([22201](https://github.com/civicrm/civicrm-core/pull/22201))** - **APIv4 - Add fixes & tests for domain-specific managed entities ([22173](https://github.com/civicrm/civicrm-core/pull/22173))** - **Api v4 contact delete bug ([dev/core#2757](https://lab.civicrm.org/dev/core/-/issues/2757): [21232](https://github.com/civicrm/civicrm-core/pull/21232))** - **APIv4 - Delete unused OptionList trait ([22158](https://github.com/civicrm/civicrm-core/pull/22158))** - **APIv4 - Treat navigation permissions as array, add pseudoconstant for operator ([22160](https://github.com/civicrm/civicrm-core/pull/22160))** - **APIv4 - Fix checkAccess for CiviCase or other entities with nonstandard class names ([22090](https://github.com/civicrm/civicrm-core/pull/22090))** - **SearchKit with Form Builder when viewed on the front-end displays a CiviCRM breadcrumb trail which can duplicate the existing website breadcrumb trail ([22087](https://github.com/civicrm/civicrm-core/pull/22087))** - **SearchKit - Fix undefined variable for searches of Afforms etc. ([22218](https://github.com/civicrm/civicrm-core/pull/22218))** - **[Smarty variables] Consistently assign isAdmin at php layer ([22189](https://github.com/civicrm/civicrm-core/pull/22189))** - **Smarty variables] Remove isset from a.net ([22191](https://github.com/civicrm/civicrm-core/pull/22191))** - **[Smarty variables] remove isset from Mail accounts ([22190](https://github.com/civicrm/civicrm-core/pull/22190))** - **[Smarty variables] Remove another isset - user dashboard ([22181](https://github.com/civicrm/civicrm-core/pull/22181))** - **Smarty variables] Remove isset from relationship tab ([22177](https://github.com/civicrm/civicrm-core/pull/22177))** - **[Smarty variables] [CiviCase] remove isset from case dashboard ([22176](https://github.com/civicrm/civicrm-core/pull/22176))** - **[Smarty variables] - remove isset ([22185](https://github.com/civicrm/civicrm-core/pull/22185))** - **[Smarty variables] Fix contribution tab to work with escape by default ([22179](https://github.com/civicrm/civicrm-core/pull/22179))** - **[Smarty variables] The last isset.... ([22196](https://github.com/civicrm/civicrm-core/pull/22196))** - **Smarty variables] Prevent settings form assigned html from being escaped ([22165](https://github.com/civicrm/civicrm-core/pull/22165))** - **[Smarty variable][Civicase] remove isset ([22175](https://github.com/civicrm/civicrm-core/pull/22175))** - **[Smarty variables] Remove isset from add new group form ([22184](https://github.com/civicrm/civicrm-core/pull/22184))** - **[Smarty Variables] Remove isset from location type form ([22167](https://github.com/civicrm/civicrm-core/pull/22167))** - **[Smarty variables] Remove issets from scheduled job screen ([22166](https://github.com/civicrm/civicrm-core/pull/22166))** - **[Smarty variables] [custom data form] Template notice cleanup - make sane ([22138](https://github.com/civicrm/civicrm-core/pull/22138))** - **[Smarty variables] [report test]Ensure smarty variables are consistently assigned in report ([22147](https://github.com/civicrm/civicrm-core/pull/22147))** - **[Smarty variables] [Activity form] Ensure separation,tag are assigned to the template ([22152](https://github.com/civicrm/civicrm-core/pull/22152))** - **[Smarty variables] Specify isRepeatingEntity when including ConfirmRepeatMode.tpl ([22155](https://github.com/civicrm/civicrm-core/pull/22155))** - **[Smarty variables] Ensure groupElementType is always set ([22074](https://github.com/civicrm/civicrm-core/pull/22074))** - **[Smarty variables] [contact summary] Assign variable to determine whether to show email signature field ([22132](https://github.com/civicrm/civicrm-core/pull/22132))** - **[Smarty variables] Use always-assigned isTagSet to determine if is tagset ([22154](https://github.com/civicrm/civicrm-core/pull/22154))** - **[Smarty variables] [Activity form] Ensure activityTypeFile is always assigned ([22153](https://github.com/civicrm/civicrm-core/pull/22153))** - **Remove issets from Activity search screen ([22180](https://github.com/civicrm/civicrm-core/pull/22180))** - **Remove isset checks on isForm ([22174](https://github.com/civicrm/civicrm-core/pull/22174))** - **Remove isset from custom data tpls ([22124](https://github.com/civicrm/civicrm-core/pull/22124))** - **Remove issets from Options.tpl ([22079](https://github.com/civicrm/civicrm-core/pull/22079))** - **Remove a bunch of isset from options.tpl ([22111](https://github.com/civicrm/civicrm-core/pull/22111))** - **Remove isset from Datasource.tpl ([21988](https://github.com/civicrm/civicrm-core/pull/21988))** - **Remove smarty isset in favour of always set ([22084](https://github.com/civicrm/civicrm-core/pull/22084))** - **Escape-on-output: Cleanup addCampaignToSearch, remove isset ([22035](https://github.com/civicrm/civicrm-core/pull/22035))** - **OptionValue - Fix checking if domain is set ([22095](https://github.com/civicrm/civicrm-core/pull/22095))** - **Fix all the issets that affect ability to load contact summary page ([22030](https://github.com/civicrm/civicrm-core/pull/22030))** - **Remove use of isset for info.tpl ([22028](https://github.com/civicrm/civicrm-core/pull/22028))** - **Ensure smarty variable formTpl is set ([22018](https://github.com/civicrm/civicrm-core/pull/22018))** - **Enotice fixes - ensure a couple more variables are consistently assigned ([22148](https://github.com/civicrm/civicrm-core/pull/22148))** - **Fix broken extension page smarty assignment ([22168](https://github.com/civicrm/civicrm-core/pull/22168))** - **Ensure custom fields properties are assigned to the template ([22139](https://github.com/civicrm/civicrm-core/pull/22139))** - **Ensure context is always assigned ([22141](https://github.com/civicrm/civicrm-core/pull/22141))** - **FormBuilder - Hide configuration options that do not apply to certain form types ([22127](https://github.com/civicrm/civicrm-core/pull/22127))** - **Ensure CMSPrint variables are assigned to the template ([22134](https://github.com/civicrm/civicrm-core/pull/22134))** - **Ensure tab headers are assigned, fix widget form test ([22135](https://github.com/civicrm/civicrm-core/pull/22135))** - **Ensure buildForm is called to assign values ([22128](https://github.com/civicrm/civicrm-core/pull/22128))** - **Update Fields.tpl ([22129](https://github.com/civicrm/civicrm-core/pull/22129))** - **Add Colombia missing state ([22007](https://github.com/civicrm/civicrm-core/pull/22007))** - **Use getEntityNameForTable() instead of getClassForTable(), as this might yield ambiguous results ([22116](https://github.com/civicrm/civicrm-core/pull/22116))** - **Suppresses error logging on every page load when open_basedir restriction in effect: File(/CRM/Core/Smarty/plugins/) is not within the allowed path(s) ([21589](https://github.com/civicrm/civicrm-core/pull/21589))** - **Bypass any default escaping for blog, getting started ([22119](https://github.com/civicrm/civicrm-core/pull/22119))** - **Do not use default escaping on address display ([22120](https://github.com/civicrm/civicrm-core/pull/22120))** - **Throw spaghetti ([22070](https://github.com/civicrm/civicrm-core/pull/22070))** - **Allow "Download chart" text to be translated. ([22106](https://github.com/civicrm/civicrm-core/pull/22106))** - **Contribution amounts configuration page is borked when translation contains apostrophe ([22091](https://github.com/civicrm/civicrm-core/pull/22091))** - **Use smarty:nodefaults with smarty.get ([22082](https://github.com/civicrm/civicrm-core/pull/22082))** - **Ensure masterAddress is always assigned ([22076](https://github.com/civicrm/civicrm-core/pull/22076))** - **Ensure paramSubType is always set ([22075](https://github.com/civicrm/civicrm-core/pull/22075))** - **Do not check is context is set, should always be ([22069](https://github.com/civicrm/civicrm-core/pull/22069))** - **Fix typo in smarty template "gender_display" ([22066](https://github.com/civicrm/civicrm-core/pull/22066))** - **Ensure context is always set ([22056](https://github.com/civicrm/civicrm-core/pull/22056))** - **Ensure contactTag is always set ([22055](https://github.com/civicrm/civicrm-core/pull/22055))** - **php8 - fix for breadcrumb fails during tests ([22059](https://github.com/civicrm/civicrm-core/pull/22059))** - **Mark a few more token functions as deprected ([22044](https://github.com/civicrm/civicrm-core/pull/22044))** - **Ensure gender_display is always set ([22047](https://github.com/civicrm/civicrm-core/pull/22047))** - **ManagedEntities - Track modification and auto-update ([21989](https://github.com/civicrm/civicrm-core/pull/21989))** - **Ensure userRecordUrl is always set- fixes enotice with escape-on-output ([22042](https://github.com/civicrm/civicrm-core/pull/22042))** - **Fix tabs getting overwritten by double foreach loop ([22040](https://github.com/civicrm/civicrm-core/pull/22040))** - **Ensure imageUrl is always set ([22031](https://github.com/civicrm/civicrm-core/pull/22031))** - **Escape-on-output-proof enotice fixes ([22036](https://github.com/civicrm/civicrm-core/pull/22036))** - **Do not smarty encode quicksearch html ([22033](https://github.com/civicrm/civicrm-core/pull/22033))** - **Ensure action is set when loading contactFooter ([22029](https://github.com/civicrm/civicrm-core/pull/22029))** - **Flip logic for determining if $section variable is set. ([22027](https://github.com/civicrm/civicrm-core/pull/22027))** - **Ensure beginHookFormElements is assigned ([22000](https://github.com/civicrm/civicrm-core/pull/22000))** - **CRM_Utils_File::isChildPath - Fix checking of non-existent paths ([22021](https://github.com/civicrm/civicrm-core/pull/22021))** - **Ensure hookContentPlacement is assigned ([22001](https://github.com/civicrm/civicrm-core/pull/22001))** - **Ensure that keys are set in tabValues before hitting smarty ([21991](https://github.com/civicrm/civicrm-core/pull/21991))** - **Extract getGroupOrganizationUrl & ensure always assigned ([22002](https://github.com/civicrm/civicrm-core/pull/22002))** - **Avoid default escaping for blog titles ([22172](https://github.com/civicrm/civicrm-core/pull/22172))** - **PHP 8 compat - no optional param before required ([22210](https://github.com/civicrm/civicrm-core/pull/22210))** - **tools/mixin/bin/test-all - Fix guard for EXT_DIR ([22204](https://github.com/civicrm/civicrm-core/pull/22204))** - **DebugSubscriber - Fix test-suite compatibility with XDebug 3 ([22197](https://github.com/civicrm/civicrm-core/pull/22197))** - **ManagedEntities - Fix permission error during uninstallation (regression-fix) ([22188](https://github.com/civicrm/civicrm-core/pull/22188))** - **Fix two English strings ([22097](https://github.com/civicrm/civicrm-core/pull/22097))** - **OptionValue - Fix incorrect update of `is_default` ([22089](https://github.com/civicrm/civicrm-core/pull/22089))** - **Fix missing currency for event registration when configured via "quick config" ([21966](https://github.com/civicrm/civicrm-core/pull/21966))** - **don't overfill the prevnext cache when reserving for a survey. ([22011](https://github.com/civicrm/civicrm-core/pull/22011))** - **Guard against passing empty values to CRM_Core_DAO::getFieldValue() ([21998](https://github.com/civicrm/civicrm-core/pull/21998))** - **Tidy up title attributes ([21995](https://github.com/civicrm/civicrm-core/pull/21995))** - **Enotice fixes in debug.tpl that are compatible with default escaping ([21940](https://github.com/civicrm/civicrm-core/pull/21940))** - **Fix isForm to be always assigned, remove checks ([21979](https://github.com/civicrm/civicrm-core/pull/21979))** - **Enotice fixes ([21987](https://github.com/civicrm/civicrm-core/pull/21987))** - **Beautifier - avoid e_notice in php 7.4 when acting on first comment token ([332](https://github.com/civicrm/civicrm-packages/pull/332))** ### CiviCase - **Assign cgCount in Case custom data form ([22140](https://github.com/civicrm/civicrm-core/pull/22140))** ### CiviContribute - **Can't filter by anything other than contribution status in Contribution Aggregate by Relationship CiviReport ([dev/report#77](https://lab.civicrm.org/dev/report/-/issues/77): [22041](https://github.com/civicrm/civicrm-core/pull/22041), [22024](https://github.com/civicrm/civicrm-core/pull/22024), [22015](https://github.com/civicrm/civicrm-core/pull/22015), [22016](https://github.com/civicrm/civicrm-core/pull/22016) and [22025](https://github.com/civicrm/civicrm-core/pull/22025))** - **Using GHC as a default currency causes a fatal error with Brick/Money ([dev/financial#184](https://lab.civicrm.org/dev/financial/-/issues/184): [21751](https://github.com/civicrm/civicrm-core/pull/21751))** Fixes the currency names for Ghana and Belarus. - **Repeat Contributions CiviReport warnings: Formatting non-numeric values is no longer supported ([dev/core#2982](https://lab.civicrm.org/dev/core/-/issues/2982): [22216](https://github.com/civicrm/civicrm-core/pull/22216))** - **Expose contribution custom fields in LYBUNT report ([dev/core#2951](https://lab.civicrm.org/dev/core/-/issues/2951): [22038](https://github.com/civicrm/civicrm-core/pull/22038))** - **fix unit plural in contribution page ([21944](https://github.com/civicrm/civicrm-core/pull/21944))** - **Update PayPalImpl.php - action on style test failure ([22112](https://github.com/civicrm/civicrm-core/pull/22112))** - **Check the billing fields returned by each payment processor ([20811](https://github.com/civicrm/civicrm-core/pull/20811))** ### CiviEvent - **Participant Listing report filters incorrectly on role ID ([dev/report#18](https://lab.civicrm.org/dev/report/-/issues/18): [21975](https://github.com/civicrm/civicrm-core/pull/21975))** - **Remove broken dynamic title from event template ([22113](https://github.com/civicrm/civicrm-core/pull/22113))** - **CRM/Event/BAO/Event: Fix ts usage on selfservice_preposition ([22136](https://github.com/civicrm/civicrm-core/pull/22136))** - **Notice error Deprecated function CRM_Event_BAO_Event::checkPermission ([dev/core#1529](https://lab.civicrm.org/dev/core/-/issues/1529): [22017](https://github.com/civicrm/civicrm-core/pull/22017))** - **Custom data not available in the post hook after registering for an event ([dev/core#2948](https://lab.civicrm.org/dev/core/-/issues/2948): [22022](https://github.com/civicrm/civicrm-core/pull/22022))** - **CiviCRM Event, remove the superfluous "Are you sure you want to delete this Event?" confirmation for the Event delete action ([22122](https://github.com/civicrm/civicrm-core/pull/22122))** ### CiviMail - **Fix unencoded mailing url query param in Mailing report ([22008](https://github.com/civicrm/civicrm-core/pull/22008))** - **CiviCRM Message Template, HTML Format and Text Format fields are listed in a different order on the Default Message Template ([22110](https://github.com/civicrm/civicrm-core/pull/22110))** - **Fix message templates screen to work with escape enabled by default ([22118](https://github.com/civicrm/civicrm-core/pull/22118))** ### CiviMember - **CiviCRM Membership Status can never be deleted when logging is enabled ([22032](https://github.com/civicrm/civicrm-core/pull/22032))** - **Fix membership test to use full flow ([22162](https://github.com/civicrm/civicrm-core/pull/22162))** ### Drupal Integration - **Add back in body classes for themeing. ([68](https://github.com/civicrm/civicrm-drupal-8/pull/68))** ### WordPress Integration - **CiviCRM WordPress shortcode remove the display of default text and instead just return blank if the shortcode cannot be rendered. ([262](https://github.com/civicrm/civicrm-wordpress/pull/262))** - **Resolve conflict with AIOSEO stomping on CiviCRM Shortcode ([263](https://github.com/civicrm/civicrm-wordpress/pull/263))** - **Prevent fatal error when the "the_title" filter has only one param ([261](https://github.com/civicrm/civicrm-wordpress/pull/261))** ## Miscellany - **APIv4 ConformanceTest - Demonstrate entity APIs which fail to emit `hook_civicrm_post(delete)` ([22205](https://github.com/civicrm/civicrm-core/pull/22205))** - **Move responsibilty for ensuring greeting parameters are set to `ensureGreetingParamsAreSet` ([21912](https://github.com/civicrm/civicrm-core/pull/21912))** - **Remove unused variable ([21933](https://github.com/civicrm/civicrm-core/pull/21933))** - **Remove obsolete showVisibility ([22102](https://github.com/civicrm/civicrm-core/pull/22102))** - **Remove empty check previously commented to be meaningless ([22164](https://github.com/civicrm/civicrm-core/pull/22164))** - **[REF] Remove support for not-passed 'pledge' value ([21908](https://github.com/civicrm/civicrm-core/pull/21908))** - **[REF] - Switch BAOs to use standard delete function which calls hooks ([22207](https://github.com/civicrm/civicrm-core/pull/22207))** - **[REF] Remove usage of deprecated jqXHR.error in jQuery code ([21919](https://github.com/civicrm/civicrm-core/pull/21919))** - **[REF] Preliminary cleanup in update greeting ([21909](https://github.com/civicrm/civicrm-core/pull/21909))** - **REF: Switch to debug level logging for lock debugging ([22026](https://github.com/civicrm/civicrm-core/pull/22026))** - **[REF] Fix Pledge Test failing on php8 by ensuring all payments have a status assigned and that customGroup is always assigned to the template and updating test to pass in some additional form values ([22037](https://github.com/civicrm/civicrm-core/pull/22037))** - **[REF] Add in missing province for Philippines and update names to match ISO ([22005](https://github.com/civicrm/civicrm-core/pull/22005))** - **[REF] "Your browser session has expired and we are unable to complete your form submission" on all D9.2 anonymous sessions ([dev/drupal#169](https://lab.civicrm.org/dev/drupal/-/issues/169): [22080](https://github.com/civicrm/civicrm-core/pull/22080) and [335](https://github.com/civicrm/civicrm-packages/pull/335))** - **[NFC] Update System Uft8mb4 check to handle for the fact that MySQL8 outputs utf8mb3 when the charset has been set to utf8 as utf8mb3 is the underlyling charset for utf8 ([22221](https://github.com/civicrm/civicrm-core/pull/22221))** - **[NFC] Remove Selenium WebTest code from CiviMailUtils ([22219](https://github.com/civicrm/civicrm-core/pull/22219))** - **(NFC) tools/mixin/bin/test-all - Work-around segfault in CI ([22215](https://github.com/civicrm/civicrm-core/pull/22215))** - **[NFC] Fix test failures for testRelativeDateRanges ([22209](https://github.com/civicrm/civicrm-core/pull/22209))** - **[NFC] Add missing calls to parent::setUp and tearDown in unit tests ([22073](https://github.com/civicrm/civicrm-core/pull/22073))** - **[NFC] Array formatting ([22067](https://github.com/civicrm/civicrm-core/pull/22067))** - **[NFC] ENsure that formTpl is assigned in CRM_Custom_Form_OptionTest ([22065](https://github.com/civicrm/civicrm-core/pull/22065))** - **[NFC] php8 assign formTpl in HookTest test ([22061](https://github.com/civicrm/civicrm-core/pull/22061))** - **[NFC] php8 - set smarty null defaults for CRM_Core_SessionTest ([22048](https://github.com/civicrm/civicrm-core/pull/22048))** - **[NFC] php8 - fix test fails for CRM_Contact_Page_View_UserDashBoardTest ([22023](https://github.com/civicrm/civicrm-core/pull/22023))** - **[NFC] Fix test issue about trying to do array offset on NULL in Payment ProcessorFormTest ([22020](https://github.com/civicrm/civicrm-core/pull/22020))** - **[NFC] Add in unit test to demonstate issue with API ([dev/mail#103](https://lab.civicrm.org/dev/mail/-/issues/103): [22045](https://github.com/civicrm/civicrm-core/pull/22045))** - **[NFC] Additional Fix on UserDashBoard Tests to assign action value to dashboard ([22034](https://github.com/civicrm/civicrm-core/pull/22034))** - **Test fix - use more 'real' rendering function ([22123](https://github.com/civicrm/civicrm-core/pull/22123))** - **Fix more tests to use full flow ([22161](https://github.com/civicrm/civicrm-core/pull/22161))** - **[Test] Fix tests to use form helper ([22157](https://github.com/civicrm/civicrm-core/pull/22157))** - **[Test] Test cleanup to use full-form methods ([22156](https://github.com/civicrm/civicrm-core/pull/22156))** ## Credits This release was developed by the following code authors: AGH Strategies - Alice Frumin, Andie Hunt; Agileware - Justin Freeman; BrightMinded Ltd - Bradley Taylor; Christian Wach; CiviCoop - Jaap Jansma; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; CompuCorp - Lisandro; Coop SymbioTIC - Mathieu Lutfy; CSES (Chelmsford Science and Engineering Society) - Adam Wood; Dave D; Digitalcourage - Detlev Sieber; homotechsual - Mikey O'Toole; Jens Schuppe; JMA Consulting - Monish Deb, Seamus Lee; joapta; Joinery - Allen Shaw; Lighthouse Consulting and Design - Brian Shaughnessy; Megaphone Technology Consulting - Jon Goldberg; MJW Consulting - Matthew Wire; PERORA SRL - Samuele Masetto; Progressive Technology Project - Jamie McClelland; Third Sector Design - Kurund Jalmi, William Mortada; Wikimedia Foundation - Eileen McNaughton Most authors also reviewed code for this release; in addition, the following reviewers contributed their comments: Arnaud Broes; Artful Robot - Rich Lott; Asylum Seekers Centre; Australian Greens - John Twyman; Betty Dolfing; Blackfly Solutions - Alan Dixon; Carlos Capote; Guydn; JMA Consulting - Joe Murray; Lemniscus - Noah Miller; netzih; Nicol Wistreich; Richard van Oosterhout; Skvare - Sunil Pawar; Tadpole Collective - Kevin Cristiano; ## 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`.