# CiviCRM 6.12.0

Released March 4, 2026;

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

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

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

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

### Core CiviCRM

- **Adding ability to output Confirmation Messages in HTML
  ([34498](https://github.com/civicrm/civicrm-core/pull/34498))**

  Adds the ability to use html in Afform Confirmation messages.

- **SearchKit - Add GetMarkup api action
  ([34463](https://github.com/civicrm/civicrm-core/pull/34463))**

  Adds a new api action for SearchKit `GetMarkup` which generates the markup to
  embed a search display in a page.

- **CustomGroup - Allow default values from url
  ([34456](https://github.com/civicrm/civicrm-core/pull/34456))**

  Enables contextual use of the Custom Group form, e.g. creating a custom group
  for a specific entity.

- **Router - Test encoding of path chars. Align Standalone with everyone else.
  ([34248](https://github.com/civicrm/civicrm-core/pull/34248))**

  Makes the encoding of path chars consistent accross CMS's and Standalone.

- **Force loading Smarty5
  ([34484](https://github.com/civicrm/civicrm-core/pull/34484))**

  Ensures core only supports smarty5.

- **PHP 8.4 compatibility
  (Work towards [dev/core#5409](https://lab.civicrm.org/dev/core/-/issues/5409):
  [92](https://github.com/civicrm/civicrm-joomla/pull/92),
  [694](https://github.com/civicrm/civicrm-drupal/pull/694),
  [197](https://github.com/civicrm/civicrm-backdrop/pull/197),
  [34520](https://github.com/civicrm/civicrm-core/pull/34520),
  [34465](https://github.com/civicrm/civicrm-core/pull/34465) and
  [355](https://github.com/civicrm/civicrm-wordpress/pull/355))**

  Increments recommended php version to 8.4.

- **Quicksearch - trim input
  ([34529](https://github.com/civicrm/civicrm-core/pull/34529))**

  Trims whitsepace off the ends of search terms in the menubar quicksearch.

- **Add a contact.checksum_raw token that does not include "cs="
  ([dev/core#2225](https://lab.civicrm.org/dev/core/-/issues/2225):
  [34531](https://github.com/civicrm/civicrm-core/pull/34531))**

  Adds a new token `contact.checksum_raw` that provides just the checksum value
  without the "cs=".

- **Afform - Add titles to metadata
  ([34567](https://github.com/civicrm/civicrm-core/pull/34567))**

  Adds a few more field titles to the Afform API metadata.

- **api: MessageTemplate.send - Return specific SMTP error messages
  ([34505](https://github.com/civicrm/civicrm-core/pull/34505))**

  Improves error reporting in the MessageTemplate.send API by returning specific
  SMTP error messages instead of a generic failure message.

- **Add return value handling for MessageTemplate.send API
  ([34504](https://github.com/civicrm/civicrm-core/pull/34504))**

  Improves the MessageTemplate.send API by properly handling the return value
  from CRM_Core_BAO_MessageTemplate::sendTemplate() and returning appropriate
  success or error responses. It also enhances the API documentation with
  detailed return value specifications.

- **Riverlea - add stream preview/edit to admin page
  ([32344](https://github.com/civicrm/civicrm-core/pull/32344))**

  Add stream listing/previewing/editing to the Riverlea settings page. Rename
  the page "Theme Settings"

### CiviContribute

- **Update online receipts to use same product tokens as offline
  ([34556](https://github.com/civicrm/civicrm-core/pull/34556) and
  [34565](https://github.com/civicrm/civicrm-core/pull/34565))**

  More token replacements.

- **Order API: Support recurring contributions
  ([34523](https://github.com/civicrm/civicrm-core/pull/34523))**

  Adds support for creating and using existing recurring contributions in the
  Order API.

- **Generate Contribution examples with Pending status
  ([34488](https://github.com/civicrm/civicrm-core/pull/34488))**

  When using the Message Administration extension, workflow messages can be
  previewed. Contributions with various statuses are available - this adds
  Pending contributions.

### Joomla Integration

- **Joomla 5 compatibility
  (Work Towards [dev/joomla#54](https://lab.civicrm.org/dev/joomla/-/issues/54):
  [95](https://github.com/civicrm/civicrm-joomla/pull/95),
  [93](https://github.com/civicrm/civicrm-joomla/pull/93) and
  [90](https://github.com/civicrm/civicrm-joomla/pull/90))**

  Work towards Joomla 5 compatibility.

### Standalone Integration

- **Standalone - Implement role access functions
  ([34615](https://github.com/civicrm/civicrm-core/pull/34615))**

  Adds missing functions to Standalone that are present in Wordpress, Drupal,
  etc. This allows CiviReport to control access by role, as it does for other
  CMSs.

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

### Core CiviCRM

- **Save preferred_language from contact summary
  ([34882](https://github.com/civicrm/civicrm-core/pull/34882))**

- **Upgrade (6.0=>6.11) encounters failures with civiimport
  ([dev/core#6356](https://lab.civicrm.org/dev/core/-/issues/6356):
  [34948](https://github.com/civicrm/civicrm-core/pull/34948))**

- **show/hide for activity assignee notification activity types filter not
  working ([dev/core#6351](https://github.com/civicrm/civicrm-core/pull/34877):
  [34877](https://github.com/civicrm/civicrm-core/pull/34877))**

- **Custom required Contact Reference field on Membership not required
  ([dev/core#5469](https://lab.civicrm.org/dev/core/-/issues/5469):
  [34568](https://github.com/civicrm/civicrm-core/pull/34568))**

- **Can't save preferences in 6.9 if a preference is defined in
  civicrm.settings.php
  ([dev/core#6251](https://lab.civicrm.org/dev/core/-/issues/6251):
  [34444](https://github.com/civicrm/civicrm-core/pull/34444))**

- **SearchKit - Download Spreadsheet Excel hangs when you have date listed
  columns ([dev/core#6273](https://lab.civicrm.org/dev/core/-/issues/6273):
  [34511](https://github.com/civicrm/civicrm-core/pull/34511))**

- **Dashlet Permission Check Ignoring Legacy Reports ACL Group/Role Settings
  ([dev/core#6290](https://lab.civicrm.org/dev/core/-/issues/6290):
  [34630](https://github.com/civicrm/civicrm-core/pull/34630))**

- **Front-end User Dashboard stopped working
  ([dev/core#6296](https://lab.civicrm.org/dev/core/-/issues/6296):
  [34777](https://github.com/civicrm/civicrm-core/pull/34777))**

- **Link to own user account broken from CiviCRM contact page
  ([dev/core#6299](https://lab.civicrm.org/dev/core/-/issues/6299):
  [34631](https://github.com/civicrm/civicrm-core/pull/34631))**

- **Afform/River - Panel pane title hides text from below
  ([dev/core#6326](https://lab.civicrm.org/dev/core/-/issues/6326):
  [34778](https://github.com/civicrm/civicrm-core/pull/34778))**

- **API_Wrapper - Fix autoloading
  ([34839](https://github.com/civicrm/civicrm-core/pull/34839))**

- **Fix Filter Fields for entities without <entity>_type_id
  ([34830](https://github.com/civicrm/civicrm-core/pull/34830))**

- **Afform: Tag causes "Invalid cache key: Illegal characters"
  ([dev/core#6353](https://lab.civicrm.org/dev/core/-/issues/6353):
  [34887](https://github.com/civicrm/civicrm-core/pull/34887))**

- **AfformMetadataInjector blanks out non string attribute values
  ([dev/core#6207](https://lab.civicrm.org/dev/core/-/issues/6207):
  [34892](https://github.com/civicrm/civicrm-core/pull/34892))**

- **Afform - Fix "Store Values" in search display filters
  ([34803](https://github.com/civicrm/civicrm-core/pull/34803))**

- **Afform - Add missing proximity search input type
  ([34809](https://github.com/civicrm/civicrm-core/pull/34809))**

  Fixes a bug where the "Location" input type was perceived as missing by
  FormBuilder.

- **fix Afform JWT token replacement
  ([34729](https://github.com/civicrm/civicrm-core/pull/34729))**

- **Afform css is not loaded when quick edit opened for a 2nd time from
  autocomplete ([dev/core#6187](https://lab.civicrm.org/dev/core/-/issues/6187):
  [33987](https://github.com/civicrm/civicrm-core/pull/33987))**

- **Forms - Remove special handling for old widgets
  ([34684](https://github.com/civicrm/civicrm-core/pull/34684))**

- **Disable Check Permissions when updating UserJob on Preview screen when
  importing to ensure users without administer CiviCRM can import contacts
  ([34666](https://github.com/civicrm/civicrm-core/pull/34666))**

- **CRM.url - protect from null
  ([34655](https://github.com/civicrm/civicrm-core/pull/34655))**

- **Api4 - support summing boolean fields
  ([34599](https://github.com/civicrm/civicrm-core/pull/34599))**

  When using SUM sql function on a boolean field, the result value is
  interpreted as a boolean, and displayed as "Yes" for any non-zero value, or
  "No" for zero value

- **Prioritize earliest contact id when finding match
  ([34601](https://github.com/civicrm/civicrm-core/pull/34601))**

- **Reduce file-conflict risk. Trim require_once expressions.
  ([34618](https://github.com/civicrm/civicrm-core/pull/34618))**

- **Get merged to contact for batch entry imports, so we don't import to deleted
  contact ([34594](https://github.com/civicrm/civicrm-core/pull/34594))**

- **allow Search Displays to use all columns from their Saved Search
  ([34178](https://github.com/civicrm/civicrm-core/pull/34178))**

- **Extensions - Multiple updates for `enable-when-satisfied` / `parent` warning
  ([34593](https://github.com/civicrm/civicrm-core/pull/34593))**

- **Fix regression from #34309
  ([34597](https://github.com/civicrm/civicrm-core/pull/34597))**

- **Navigation items can disappear fairly randomly due to logic bug.
  ([dev/core#6285](https://lab.civicrm.org/dev/core/-/issues/6285):
  [34588](https://github.com/civicrm/civicrm-core/pull/34588))**

- **Save date format on User Job, when set on the data source form
  ([34572](https://github.com/civicrm/civicrm-core/pull/34572))**

- **Do not assign currency in sendEmail code
  ([34558](https://github.com/civicrm/civicrm-core/pull/34558))**

- **Replace deprecated createFromFileObject() with Writer::from()
  ([34514](https://github.com/civicrm/civicrm-core/pull/34514))**

- **Move assignment of profile fields for Contribution & Membership Online
  templates to WorkflowMessage subsystem, add preview
  ([34575](https://github.com/civicrm/civicrm-core/pull/34575))**

- **Address php8.5 deprecation notices
  ([34547](https://github.com/civicrm/civicrm-core/pull/34547))**

- **Replace deprecated output() with download()
  ([34516](https://github.com/civicrm/civicrm-core/pull/34516))**

- **8.5 [trace] => #0
  /home/homer/buildkit/build/build-7/web/core/CRM/Core/DAO.php(3070):
  PHPUnit\Util\ErrorHandler->__invoke(8192, 'Using null as a...',
  '/home/homer/bui...', 3070)
  ([34538](https://github.com/civicrm/civicrm-core/pull/34538))**

- **Remove some php 8.5 deprecations
  ([34551](https://github.com/civicrm/civicrm-core/pull/34551))**

- **PHP 8.5 deprecation
  ([34540](https://github.com/civicrm/civicrm-core/pull/34540))**

- **Fix deprecation (php 8.5)
  ([34533](https://github.com/civicrm/civicrm-core/pull/34533))**

- **Fix some php 8.5 notices
  ([34619](https://github.com/civicrm/civicrm-core/pull/34619))**

- **PHP 8.5 deprecation fix
  ([34620](https://github.com/civicrm/civicrm-core/pull/34620))**

- **PHP 8.5 - Fix warning on EntityMetadataBase::getSqlOptions()
  ([34501](https://github.com/civicrm/civicrm-core/pull/34501))**

- **PHP 8.5 - Fix warning in ContactType::getAllContactTypes()
  ([34502](https://github.com/civicrm/civicrm-core/pull/34502))**

- **PHP 8.5 - Fix warning in Civi\Core\Url
  ([34497](https://github.com/civicrm/civicrm-core/pull/34497))**

- **PHP 8.5 - Fix warnings about setAccessible()
  ([34535](https://github.com/civicrm/civicrm-core/pull/34535))**

- **SearchKit - Fix counting matched results
  ([34749](https://github.com/civicrm/civicrm-core/pull/34749))**

- **SearchKit admin - fix adding custom display columns after reload
  ([34738](https://github.com/civicrm/civicrm-core/pull/34738))**

- **SearchKit - Only use first search field in default sort
  ([34592](https://github.com/civicrm/civicrm-core/pull/34592))**

- **SearchKit - Fix tokens in toolbar for multivalued field
  ([34475](https://github.com/civicrm/civicrm-core/pull/34475))**

- **CustomGroup - Collapse wysywyg inputs on form to save space
  ([34458](https://github.com/civicrm/civicrm-core/pull/34458))**

- **ChartKit - reimplement trailing debounce in getResultsPronto
  ([34276](https://github.com/civicrm/civicrm-core/pull/34276))**

- **chart_kit - apply label color setting more consistently
  ([34471](https://github.com/civicrm/civicrm-core/pull/34471))**

- **AuthX - Fix capitalization of permissions
  ([34625](https://github.com/civicrm/civicrm-core/pull/34625))**

- **Method League\Csv\Reader::fetchOne() is deprecated since league/csv:.9.0,
  use League\Csv\Reader::nth() instead
  ([34517](https://github.com/civicrm/civicrm-core/pull/34517))**

- **Fix wrapping for long search criteria
  ([34652](https://github.com/civicrm/civicrm-core/pull/34652))**

- **River: fixes typo that breaks dropdown-link hover styling
  ([34940](https://github.com/civicrm/civicrm-core/pull/34940))**

- **River: Resets toggle padding for front-end
  ([34880](https://github.com/civicrm/civicrm-core/pull/34880)**

- **River: Improves padding on accordion inside dashboard dashlet & removes a
  few unused bits
  ([34675](https://github.com/civicrm/civicrm-core/pull/34675))**

- **River: '--crm-info-color-on-dark' was being called but not defined, replaces
  for something that is
  ([34493](https://github.com/civicrm/civicrm-core/pull/34493))**

- **regen to fix demo status check messages about message templates
  ([34752](https://github.com/civicrm/civicrm-core/pull/34752))**

- **typo - probably
  ([34587](https://github.com/civicrm/civicrm-core/pull/34587))**

- **fix typo in upgrade step
  ([34769](https://github.com/civicrm/civicrm-core/pull/34769))**

- **Php 8.4 deprecation fix
  ([122](https://github.com/civicrm/civicrm-drupal-8/pull/122))**

- **DB_DataObject - Fix for PHP 8.5, another
  ([432](https://github.com/civicrm/civicrm-packages/pull/432))**

- **DB_DataObject - Fix for PHP 8.5
  ([430](https://github.com/civicrm/civicrm-packages/pull/430))**

- **PHP 8.4 - Fix warnings/failures for PHP_IDS
  ([429](https://github.com/civicrm/civicrm-packages/pull/429))**

- **scssphp - Fix warnings. Update v1.10.3 => v1.13.0
  ([34513](https://github.com/civicrm/civicrm-core/pull/34513))**

### CiviCampaign

- **PR #33318 breaks Campaign Surveys
  ([dev/core#6258](https://lab.civicrm.org/dev/core/-/issues/6258):
  [34805](https://github.com/civicrm/civicrm-core/pull/34805))**

### CiviContribute

- **Contribution page layout mildly broken
  ([dev/core#6318](https://lab.civicrm.org/dev/core/-/issues/6318):
  [34952](https://github.com/civicrm/civicrm-core/pull/34952) and
  [34958](https://github.com/civicrm/civicrm-core/pull/34958))**

- **Cannot use entities' names with Order.create and line items (api4)
  ([dev/core#6217](https://lab.civicrm.org/dev/core/-/issues/6217):
  [34508](https://github.com/civicrm/civicrm-core/pull/34508))**

- **Move valid status transition check from API3 to Contribution BAO
  ([34473](https://github.com/civicrm/civicrm-core/pull/34473))**

- **Remove code for deleting soft credits from front end form
  ([34623](https://github.com/civicrm/civicrm-core/pull/34623))**

- **Fix Line_item is set twice in short succession
  ([34641](https://github.com/civicrm/civicrm-core/pull/34641))**

- **Stop assigning and add warning for financialTypeName, contributionTypeName
  ([34638](https://github.com/civicrm/civicrm-core/pull/34638))**

- **Let the ThankYou page access the value directly
  ([34670](https://github.com/civicrm/civicrm-core/pull/34670))**

- **Remove handling for contribution to be not pending since it is always
  pending ([34677](https://github.com/civicrm/civicrm-core/pull/34677))**

- **Price sets are picking the wrong financial type. Also sometimes charge
  double-tax because of it.
  ([dev/financial#235](https://lab.civicrm.org/dev/financial/-/issues/235):
  [34792](https://github.com/civicrm/civicrm-core/pull/34792))**

- **Javascript to hide the invoice-related config fields when invoicing not
  enabled has gone missing
  ([dev/financial#239](https://lab.civicrm.org/dev/financial/-/issues/239):
  [34811](https://github.com/civicrm/civicrm-core/pull/34811))**

- **Fix ContributionPageConfirm to create lineitems right the first time
  ([34685](https://github.com/civicrm/civicrm-core/pull/34685))**

- **Notice fix when a premium with options AND a premium without options
  configured ([34580](https://github.com/civicrm/civicrm-core/pull/34580))**

- **Move Confirm pledge tests to full form flow & fix bug exposed
  ([34586](https://github.com/civicrm/civicrm-core/pull/34586))**

- **Cannot import 'Amount Label'
  ([dev/core#6339](https://lab.civicrm.org/dev/core/-/issues/6339):
  [34796](https://github.com/civicrm/civicrm-core/pull/34796))**

### CiviEvent

- **SearchKit - Make participant statuses searchable by non-admins
  ([34499](https://github.com/civicrm/civicrm-core/pull/34499))**

- **System Message Template preview crashes with fatal error when CiviEvent
  component is disabled
  ([dev/core#6349](https://lab.civicrm.org/dev/core/-/issues/6349):
  [34957](https://github.com/civicrm/civicrm-core/pull/34957))**

- **Regression - Confirmation step on paid events error and compatibility with
  'Show event payment on confirm'
  ([dev/core#6271](https://lab.civicrm.org/dev/core/-/issues/6271):
  [34970](https://github.com/civicrm/civicrm-core/pull/34970))**

- **Event, Send Receipt action does not work, affects CiviCRM 6.12.x back to
  6.9.2 ([34969](https://github.com/civicrm/civicrm-core/pull/34969))**

### CiviGrant

- **SearchKit - Add support for optional tokens
  ([34428](https://github.com/civicrm/civicrm-core/pull/34428))**

  Fixes the CiviGrant dashboard create link by making the contact id in the url
  optional.

- **CiviGrant - Fix missing charts on dashboard
  ([34756](https://github.com/civicrm/civicrm-core/pull/34756))**

### CiviMember

- **Custom Fields admin screen throws error when CiviMember component disabled
  ([dev/core#6337](https://lab.civicrm.org/dev/core/-/issues/6337):
  [34788](https://github.com/civicrm/civicrm-core/pull/34788))**

- **CiviMember - Membership changes without payment
  ([dev/core#6208](https://lab.civicrm.org/dev/core/-/issues/6208):
  [34342](https://github.com/civicrm/civicrm-core/pull/34342))**

- **Fix array_sum type issue for MembershipBlock PHP83
  ([34476](https://github.com/civicrm/civicrm-core/pull/34476))**

### Drupal Integration

- **Switch to using non deprecated class references in civicrm_api drush
  function and return out of the function after setting error using
  drush_set_error to avoid notice about undefined variable
  ([695](https://github.com/civicrm/civicrm-drupal/pull/695))**

### WordPress Integration

- **Fix CRM_Utils_System_WordPress::createUser() to return expected FALSE on
  failure ([34487](https://github.com/civicrm/civicrm-core/pull/34487))**

- **Avoid fatal error in WP-CLI install command
  ([356](https://github.com/civicrm/civicrm-wordpress/pull/356))**

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

- **Use getSubmittedValue to retrieve the submitted premium options
  ([34561](https://github.com/civicrm/civicrm-core/pull/34561))**

- **Consolidate handling of currency parameter & get parameters for payment
  processor consistently
  ([34570](https://github.com/civicrm/civicrm-core/pull/34570))**

- **Cleanup ACL form show/hide code
  ([34600](https://github.com/civicrm/civicrm-core/pull/34600))**

- **Take copy of pcp function
  ([34602](https://github.com/civicrm/civicrm-core/pull/34602))**

- **Copy activity creation code to Confirm, comment & simplify
  ([34603](https://github.com/civicrm/civicrm-core/pull/34603))**

- **Take copy of ContributionPage::SetValues
  ([34639](https://github.com/civicrm/civicrm-core/pull/34639))**

- **Move assignment of honor profile & soft credit info to Workflow Message
  subsystem ([34640](https://github.com/civicrm/civicrm-core/pull/34640))**

- **SchemaHelperInterface: Set default value for argument in @method
  ([34654](https://github.com/civicrm/civicrm-core/pull/34654))**

- **Consolidate handling of is_email_receipt in Confirm form
  ([34590](https://github.com/civicrm/civicrm-core/pull/34590))**

- **Pass isSecondPayment in in more transparent way
  ([34661](https://github.com/civicrm/civicrm-core/pull/34661))**

- **Api4 - Code cleanup; remove unused function, add type hints
  ([34595](https://github.com/civicrm/civicrm-core/pull/34595))**

- **Extract getExistingMembership(), setting renewalMode, add membership_id to
  line items early
  ([34668](https://github.com/civicrm/civicrm-core/pull/34668))**

- **Use apiv4 for contribution update
  ([34678](https://github.com/civicrm/civicrm-core/pull/34678))**

- **composer.json - Make dependency on psr/http-client more explicit
  ([34534](https://github.com/civicrm/civicrm-core/pull/34534))**

- **Consolidate handling of payment_processor_id
  ([34581](https://github.com/civicrm/civicrm-core/pull/34581))**

- **Afform - Update js code syntax
  ([34526](https://github.com/civicrm/civicrm-core/pull/34526))**

- **Upgrade Guzzle HTTP stack and related dependencies
  ([34545](https://github.com/civicrm/civicrm-core/pull/34545))**

- **Upgrading ezyang/htmlpurifier (v4.17.0 => v4.19.0)
  ([34530](https://github.com/civicrm/civicrm-core/pull/34530))**

- **Update crm.ajax.js, allow ES11
  ([34546](https://github.com/civicrm/civicrm-core/pull/34546))**

- **Upgrade phpsec to 3, add backward compatibility
  ([34532](https://github.com/civicrm/civicrm-core/pull/34532))**

- **Upgrading behat/mink (v1.11.0 => v1.13.0)
  ([34519](https://github.com/civicrm/civicrm-core/pull/34519))**

- **Upgrade dmore/chrome-mink-driver 2.9.3 => 2.10.0)
  ([34518](https://github.com/civicrm/civicrm-core/pull/34518))**

- **Update  Smarty 5 v5.3.1 to v5.7.0
  ([431](https://github.com/civicrm/civicrm-packages/pull/431))**

- **Bump firebase/php-jwt from 6.11.1 to 7.0.0
  ([34867](https://github.com/civicrm/civicrm-core/pull/34867))**

- **Bump qs from 6.14.1 to 6.14.2
  ([34819](https://github.com/civicrm/civicrm-core/pull/34819))**

- **Extract getMembershipCustomFields, pass around less
  ([34653](https://github.com/civicrm/civicrm-core/pull/34653))**

- **Extract getMembershipSource
  ([34681](https://github.com/civicrm/civicrm-core/pull/34681))**

- **Extract isPayLater() on Confirm form
  ([34679](https://github.com/civicrm/civicrm-core/pull/34679))**

- **Extract & consolidate getPaymentInstrumentID()
  ([34683](https://github.com/civicrm/civicrm-core/pull/34683))**

- **Stop passing around always NULL value
  ([34650](https://github.com/civicrm/civicrm-core/pull/34650))**

- **Add deprecation comment on processPriceSet
  ([34489](https://github.com/civicrm/civicrm-core/pull/34489))**

- **Deprecate being broken
  ([34691](https://github.com/civicrm/civicrm-core/pull/34691))**

- **Remove pcp-notify-send from unreachable code point
  ([34669](https://github.com/civicrm/civicrm-core/pull/34669))**

- **Remove early setting of doPayment values
  ([34662](https://github.com/civicrm/civicrm-core/pull/34662))**

- **Finish extraction of MembershipPayment from OrderCompleteSubscriber
  ([34667](https://github.com/civicrm/civicrm-core/pull/34667))**

- **Remove email handling for variable now handled in workflow template
  ([34660](https://github.com/civicrm/civicrm-core/pull/34660))**

- **Remove always NULL parameter
  ([34562](https://github.com/civicrm/civicrm-core/pull/34562))**

- **Remove deprecated curl_close()
  ([34539](https://github.com/civicrm/civicrm-core/pull/34539))**

- **Remove status check obsolete since Smarty5 upgrade
  ([34461](https://github.com/civicrm/civicrm-core/pull/34461))**

- **Stop calculating and assigning unused customGroup
  ([34649](https://github.com/civicrm/civicrm-core/pull/34649))**

- **Start extracting `getFinancialTypeID()`
  ([34439](https://github.com/civicrm/civicrm-core/pull/34439))**

- **Stop passing membership type, access when needed
  ([34690](https://github.com/civicrm/civicrm-core/pull/34690))**

- **Remove legacy doPayment parameters
  ([34564](https://github.com/civicrm/civicrm-core/pull/34564))**

- **Remove params
  ([34569](https://github.com/civicrm/civicrm-core/pull/34569))**

- **remove files used by CiviHR
  ([34460](https://github.com/civicrm/civicrm-core/pull/34460))**

- **Further tidy up pcp handling
  ([34616](https://github.com/civicrm/civicrm-core/pull/34616))**

- **Upgrade dompdf packages
  ([34528](https://github.com/civicrm/civicrm-core/pull/34528))**

- **Update brick libraries to latest point version
  ([34527](https://github.com/civicrm/civicrm-core/pull/34527))**

- **Unshare & refactor code to get PCP values on contribution page
  ([34598](https://github.com/civicrm/civicrm-core/pull/34598))**

- **Remove unnused param, returned form from handlePledge
  ([34563](https://github.com/civicrm/civicrm-core/pull/34563))**

- **Remove extraneous code now on_behalf profile is assigned by WorkflowMessage
  class  ([34643](https://github.com/civicrm/civicrm-core/pull/34643))**

- **Remove onBehalfAddress assign
  ([34578](https://github.com/civicrm/civicrm-core/pull/34578))**

- **Remove always-true IFs
  ([34607](https://github.com/civicrm/civicrm-core/pull/34607))**

- **Remove always-true parameter
  ([34645](https://github.com/civicrm/civicrm-core/pull/34645))**

- **Remove code for never set value
  ([34642](https://github.com/civicrm/civicrm-core/pull/34642))**

- **Remove fieldTypes filter on on-behalf fields for email
  ([34574](https://github.com/civicrm/civicrm-core/pull/34574))**

- **Remove 2022 deprecated getHonorContacts
  ([34637](https://github.com/civicrm/civicrm-core/pull/34637))**

- **Remove code cautiously deprecated rather than deleted in 2024
  ([34398](https://github.com/civicrm/civicrm-core/pull/34398))**

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

- **[REF] SearchKit - Code cleanup, less lo-dash
  ([34453](https://github.com/civicrm/civicrm-core/pull/34453))**

- **REF: Consistency for Afform Autofill code
  ([34267](https://github.com/civicrm/civicrm-core/pull/34267))**

- **[REF] Convert CRM_Core_BAO_Block::getValues to API4
  ([32737](https://github.com/civicrm/civicrm-core/pull/32737))**

- **REF: Tests: Don't create two contributions when API version = 4
  ([34479](https://github.com/civicrm/civicrm-core/pull/34479))**

- **(NFC) Fix age test
  ([34949](https://github.com/civicrm/civicrm-core/pull/34949))**

- **(NFC) UrlFacadeTest - Emit more debug info about failures
  ([34491](https://github.com/civicrm/civicrm-core/pull/34491))**

- **Api4 - Add another partial date test
  ([34596](https://github.com/civicrm/civicrm-core/pull/34596))**

- **Fix tests to call form with full form flow
  ([34566](https://github.com/civicrm/civicrm-core/pull/34566))**

- **CRM_Utils_DateTest - Accept new+old abbreviation formats
  ([34515](https://github.com/civicrm/civicrm-core/pull/34515))**

- **(PHP 8.4) FormatTest - Fix failures
  ([34490](https://github.com/civicrm/civicrm-core/pull/34490))**

- **Test clean up towards moving all confirm tests to ConfirmTest
  ([34583](https://github.com/civicrm/civicrm-core/pull/34583))**

- **Test clean up towards moving all confirm tests to ConfirmTest
  ([34573](https://github.com/civicrm/civicrm-core/pull/34573))**

- **Test standardisation
  ([34582](https://github.com/civicrm/civicrm-core/pull/34582))**

- **ElavonTest - Skip test on PHP 8.1 and Drupal 9 (Guzzle 6)
  ([34555](https://github.com/civicrm/civicrm-core/pull/34555))**

- **Fix test to call form using full flow
  ([34579](https://github.com/civicrm/civicrm-core/pull/34579))**

- **Mark tests that regularly fail as ornery
  ([32526](https://github.com/civicrm/civicrm-core/pull/32526))**

- **Revert "ElavonTest - Skip test on PHP 8.1 and Drupal 9 (Guzzle 6)"
  ([34577](https://github.com/civicrm/civicrm-core/pull/34577))**

- **Move some more tests to full form flow
  ([34658](https://github.com/civicrm/civicrm-core/pull/34658))**

- **Fix test fails - figuring out membership end dates is hard
  ([34647](https://github.com/civicrm/civicrm-core/pull/34647))**

- **Consolidate another ConfirmTest onto that class, full form flow
  ([34622](https://github.com/civicrm/civicrm-core/pull/34622))**

- **Consolidate getFinancialID()
  ([34571](https://github.com/civicrm/civicrm-core/pull/34571))**

- **Convert Contribution test to Payment::create
  ([34612](https://github.com/civicrm/civicrm-core/pull/34612))**

- **Convert ContributionRecur test to Payment::create
  ([34611](https://github.com/civicrm/civicrm-core/pull/34611))**

- **Convert membership test to Payment::create
  ([34610](https://github.com/civicrm/civicrm-core/pull/34610))**

- **Move another test to full form flow
  ([34686](https://github.com/civicrm/civicrm-core/pull/34686))**

- **Migrate test to full form flow
  ([34676](https://github.com/civicrm/civicrm-core/pull/34676))**

- **Remove some test helper code
  ([34680](https://github.com/civicrm/civicrm-core/pull/34680))**

- **Migrate another test to ConfirmTest
  ([34672](https://github.com/civicrm/civicrm-core/pull/34672))**

- **Move another test to full form flow
  ([34671](https://github.com/civicrm/civicrm-core/pull/34671))**

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

This release was developed by the following code authors:

AGH Strategies - Alice Frumin; Artful Robot - Rich Lott; Benjamin W; Christian
Wach; CiviCRM - Coleman Watts, Tim Otten; Coop SymbioTIC - Shane Bill; CSES
(Chelmsford Science and Engineering Society) - Adam Wood; Dave D; Francesc
Bassas i Bullich; JMA Consulting - Monish Deb, Seamus Lee; Megaphone Technology
Consulting - Jon Goldberg; MJW Consulting - Matthew Wire; NIAB - Stuart; Nicol
Wistreich; PERORA SRL - Samuele Masetto; Richard Baugh; Squiffle Consulting -
Aidan Saunders; Systopia - Dominic Tubach; Tadpole Collective - Kevin Cristiano;
Wikimedia Foundation - Eileen McNaughton; Wildsight - Lars Sander-Green

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

Circle Interactive - Angela Jackson; Coop SymbioTIC - Mathieu Lutfy; Fuzion -
Luke Stewart; JMA Consulting - Celine Nicolas; Progressive Technology Project -
Jamie McClelland; Sjoerd Langkemper; Skvare - Mark Hanna; Third Sector Design -
William Mortada
