Merge pull request #23126 from eileenmcnaughton/imp
[civicrm-core.git] / release-notes / 5.48.0.md
1 # CiviCRM 5.48.0
2
3 Released April 6, 2022
4
5 - **[Synopsis](#synopsis)**
6 - **[Features](#features)**
7 - **[Bugs resolved](#bugs)**
8 - **[Miscellany](#misc)**
9 - **[Credits](#credits)**
10 - **[Feedback](#feedback)**
11
12 ## <a name="synopsis"></a>Synopsis
13
14 | *Does this version...?* | |
15 |:--------------------------------------------------------------- |:-------:|
16 | Fix security vulnerabilities? | no |
17 | **Change the database schema?** | **yes** |
18 | **Alter the API?** | **yes** |
19 | Require attention to configuration options? | no |
20 | **Fix problems installing or upgrading to a previous version?** | **yes** |
21 | **Introduce features?** | **yes** |
22 | **Fix bugs?** | **yes** |
23
24 ## <a name="features"></a>Features
25
26 ### Core CiviCRM
27
28 - **Add civicrm_admin_ui extension
29 ([22628](https://github.com/civicrm/civicrm-core/pull/22628))**
30
31 Adds a new bundled extension `civicrm_admin_ui`. This extension replaces 2
32 screens with SearchDisplay Afforms: Custom field groups and Custom fields.
33
34 - **Add deprecation notice to APIv3 Explorer
35 ([22811](https://github.com/civicrm/civicrm-core/pull/22811))**
36
37 Adds a notice to the APIv3 explorer to encourage users to use APIv4 instead.
38
39 - **Apiv4 entity parity (Work Towards
40 [dev/core#2486](https://lab.civicrm.org/dev/core/-/issues/2486):
41 [22754](https://github.com/civicrm/civicrm-core/pull/22754),
42 [22823](https://github.com/civicrm/civicrm-core/pull/22823),
43 [22624](https://github.com/civicrm/civicrm-core/pull/22624) and
44 [22799](https://github.com/civicrm/civicrm-core/pull/22799))**
45
46 Adds "Extension", "Mailing", "MailingGroup" and "MailingJob" entities to
47 APIv4.
48
49 - **APIv4 - Add tableName to Entity.get output
50 ([22829](https://github.com/civicrm/civicrm-core/pull/22829))**
51
52 Adds `tableName` to the APIv4 Entity.get action output, improving
53 flexibility for virtual entities.
54
55 - **APIv4 Explorer - Add REST syntax
56 ([22722](https://github.com/civicrm/civicrm-core/pull/22722))**
57
58 Displays REST syntax in the APIv4 Explorer.
59
60 - **APIv4 - Add metadata about class args
61 ([22831](https://github.com/civicrm/civicrm-core/pull/22831))**
62
63 The CustomValue API is a virtual entity, where multiple api entities all get
64 routed to the same class by virtue of all sharing the prefix "Custom_" and
65 pass a class arg to the php factory functions e.g.
66 CustomValue::get('MyCustomGroup').
67
68 Instead of hard-coding this idea into the API Explorer now it's part of the
69 entity metadata so that other APIs, notaby ECK, can use a similar pattern.
70
71 - **APIv4 Explorer - Add "copy" button to quickly copy code to clipboard
72 ([22896](https://github.com/civicrm/civicrm-core/pull/22896))**
73
74 Makes it easy to select and copy generated APIv4 Explorer code.
75
76 - **SearchKit - Update APIv3 Extension.get to use APIv4
77 ([22788](https://github.com/civicrm/civicrm-core/pull/22788))**
78
79 Updates SearchKit code to use newer version of the API when calling
80 Extension.get.
81
82 - **SearchKit - Use crmDialogButtons for task popups
83 ([22790](https://github.com/civicrm/civicrm-core/pull/22790))**
84
85 Updates the buttons in SearchKit action popups to use standard dialog button
86 formatting.
87
88 - **SearchKit - Add 'merge contacts' task
89 ([22768](https://github.com/civicrm/civicrm-core/pull/22768) and
90 [23035](https://github.com/civicrm/civicrm-core/pull/23035))**
91
92 Adds a "merge contacts" task to SearchKit.
93
94 - **SearchKit - Customizable "No Results" text
95 ([22770](https://github.com/civicrm/civicrm-core/pull/22770))**
96
97 Makes it so users can customize the "No Results" text in SearchKit.
98
99 - **SearchKit - Improve import UI to handle update & preview the import
100 ([22699](https://github.com/civicrm/civicrm-core/pull/22699))**
101
102 SearchKit has an import/export SavedSearch feature which allows you to
103 copy/paste api code in JSON format. This change enables update as well as create,
104 and improves that UI to give better user feedback about what will happen when
105 the import is run.
106
107 - **SearchKit - Support relative dates and datepicker with the DATE() sql fn
108 ([22783](https://github.com/civicrm/civicrm-core/pull/22783))**
109
110 Allows one to pick a relative or calendar date in conjunction with the DATE
111 ONLY field transformation.
112
113 - **Civi\Api4\Queue - Allow use with hook_managed
114 ([22796](https://github.com/civicrm/civicrm-core/pull/22796))**
115
116 Flags the entity Queue so that it can be used with hook_managed.
117
118 - **Define more usable queue DX for multithreaded background work (Work Towards
119 [dev/core#1304](https://lab.civicrm.org/dev/core/-/issues/1304):
120 [22812](https://github.com/civicrm/civicrm-core/pull/22812))**
121
122 Expands the schema for civicrm_queue (et al). By configuring properties on
123 civicrm_queue (et al), you can tell a generic queue-agent how to handle items
124 from this queue.
125
126 - **ManagedEntities - Allow "match" param to convert existing records to …
127 ([22883](https://github.com/civicrm/civicrm-core/pull/22883))**
128
129 This can help ease the pain of declaring managed entities which may or may not
130 already exist - now they can be matched by name or other unique identifier.
131
132 - **Database update from 5.47.2 to 5.47.3 fails with a non en_US database.
133 ([dev/core#3135](https://lab.civicrm.org/dev/core/-/issues/3151):
134 [23063](https://github.com/civicrm/civicrm-core/pull/23063))**
135
136 ### CiviContribute
137
138 - **Add basic contribution example base for contribution workflows
139 ([22636](https://github.com/civicrm/civicrm-core/pull/22636))**
140
141 Makes it so that one can preview Contribution Message Templates.
142
143 - **Remove time component from the {contribution.receive_date} token
144 ([dev/core#3072](https://lab.civicrm.org/dev/core/-/issues/3072):
145 [23071](https://github.com/civicrm/civicrm-core/pull/23071))**
146
147 ### CiviEvent
148
149 - **Introduce a way to link event participants from the associated booking.
150 ([dev/user-interface#45](https://lab.civicrm.org/dev/user-interface/-/issues/45):
151 [22732](https://github.com/civicrm/civicrm-core/pull/22732))**
152
153 Introduces a way to navigate to participants from the contribution view.
154
155 ### CiviMail
156
157 - **Mailing - Add `serialize` and `add` to `template_options` field
158 ([22785](https://github.com/civicrm/civicrm-core/pull/22785))**
159
160 Improves the mailing schema metadata for template_options and template_type
161 fields.
162
163 - **Start phasing out 'preferred_mail_format' (Work Towards
164 [dev/core#2866](https://lab.civicrm.org/dev/core/-/issues/2866):
165 [22775](https://github.com/civicrm/civicrm-core/pull/22775),
166 [22633](https://github.com/civicrm/civicrm-core/pull/22633) and
167 [22635](https://github.com/civicrm/civicrm-core/pull/22635))**
168
169 Ignores preferred mail format when sending a message. Instead sends both html
170 and plain text versions and lets the email client decide which to show.
171 Removes `preferred_mail_format` from email trait.
172
173 ### Drupal Integraton
174
175 - **civicrm.drush.inc - Add 'civicrm-pipe' subcommand
176 ([70](https://github.com/civicrm/civicrm-drupal-8/pull/70))**
177
178 Adds support for the subcommand `drush civicrm-pipe` (`drush cvpipe`).
179
180 ## <a name="bugs"></a>Bugs resolved
181
182 ### Core CiviCRM
183
184 - **Update DOMPDF to 1.2.1 and update composer-compile-plugin as per master
185 ([23102](https://github.com/civicrm/civicrm-core/pull/23102))**
186
187 - **Contact Logging Detail report crashes when a contribution and contact are
188 updated together
189 ([dev/report#85](https://lab.civicrm.org/dev/report/-/issues/85):
190 [22242](https://github.com/civicrm/civicrm-core/pull/22242))**
191
192 - **Warning: is_dir(): open_basedir restriction in effect
193 ([dev/core#2927](https://lab.civicrm.org/dev/core/-/issues/2927):
194 [22277](https://github.com/civicrm/civicrm-core/pull/22277))**
195
196 Avoids flooding logs with `open_basedir` in effect.
197
198 - **Filter summary no longer appearing on results for Reports
199 ([dev/core#3153](https://lab.civicrm.org/dev/core/-/issues/3153):
200 [23086](https://github.com/civicrm/civicrm-core/pull/23086))**
201
202 - **Switch extension downloader and extensions feed to use Guzzle HTTP library
203 ([21097](https://github.com/civicrm/civicrm-core/pull/21097))**
204
205 This fixes some situations (eg. shared servers with open_basedir restrictions
206 in effect) where zip file was not downloaded properly and extension could not
207 be updated. It also means that we are no longer using our custom
208 CRM_Utils_HttpClient::fetch() function from within civicrm core.
209
210 - **RC Error: Call to undefined method
211 CRM_Contact_Page_View_Summary::addExpectedSmartyVariables()
212 ([dev/core#3104](https://lab.civicrm.org/dev/core/-/issues/3104):
213 [22897](https://github.com/civicrm/civicrm-core/pull/22897))**
214
215 - **Post-upgrade messages no longer being displayed
216 ([dev/core#3119](https://lab.civicrm.org/dev/core/-/issues/3119):
217 [22985](https://github.com/civicrm/civicrm-core/pull/22985))**
218
219 - **CiviReport - Title and Statistics appearing at top and bottom of reports
220 ([dev/core#3126](https://lab.civicrm.org/dev/core/-/issues/3126):
221 [22976](https://github.com/civicrm/civicrm-core/pull/22976))**
222
223 - **APIv4 - Fix setting/getting a multi-record customfield with date+time
224 ([22731](https://github.com/civicrm/civicrm-core/pull/22731))**
225
226 - **APIv4 - Fix typo in Entity.getFields
227 ([22776](https://github.com/civicrm/civicrm-core/pull/22776))**
228
229 - **Fix apiv4 Contribution delete & all line items
230 ([22749](https://github.com/civicrm/civicrm-core/pull/22749))**
231
232 - **Fix API4 Explorer undefined variable error
233 ([22849](https://github.com/civicrm/civicrm-core/pull/22849))**
234
235 - **Afform - Fix saving and editing entity blocks
236 ([22963](https://github.com/civicrm/civicrm-core/pull/22963),
237 [22986](https://github.com/civicrm/civicrm-core/pull/22986), and
238 [23104](https://github.com/civicrm/civicrm-core/pull/23104))**
239
240 - **Afform Gui - Fix selecting html element of text box
241 ([22929](https://github.com/civicrm/civicrm-core/pull/22929))**
242
243 - **Afform - fix missing submit actions
244 ([23024](https://github.com/civicrm/civicrm-core/pull/23024))**
245
246 - **SearchKit - Fix support for non-DAO entities
247 ([22764](https://github.com/civicrm/civicrm-core/pull/22764))**
248
249 - **Fix deleting afforms when deleting saved search
250 ([22997](https://github.com/civicrm/civicrm-core/pull/22997))**
251
252 A typo in the code was preventing afforms from being deleted with a
253 corresponding saved search, and may have led to afforms being deleted
254 incorrectly.
255
256 - **SearchKit - Fix multi-valued afform filters
257 ([23012](https://github.com/civicrm/civicrm-core/pull/23012))**
258
259 Fixes a SearchKit regression causing multi-select afform filters to stop
260 working.
261
262 - **Search Kit: Unable to Aggregate on a Custom Field
263 ([dev/core#3143](https://lab.civicrm.org/dev/core/-/issues/3143):
264 [23070](https://github.com/civicrm/civicrm-core/pull/23070))**
265
266 - **Only acl line items based on contribution
267 ([22870](https://github.com/civicrm/civicrm-core/pull/22870))**
268
269 Ensures ACL query on line items only joins `entity_id` to contributions.
270
271 - **Add handling for civimember disabled
272 ([22864](https://github.com/civicrm/civicrm-core/pull/22864))**
273
274 - **Revert membership debug handling in IPN
275 ([22475](https://github.com/civicrm/civicrm-core/pull/22475))**
276
277 - **Format money in custom fields once, on the tpl layer
278 ([22728](https://github.com/civicrm/civicrm-core/pull/22728))**
279
280 - **New Individual: Unfilled fields "Custom Email Greeting", "Custom Postal
281 Greeting", "Custom Addressee" are hidden
282 ([dev/core#483](https://lab.civicrm.org/dev/core/-/issues/483):
283 [22380](https://github.com/civicrm/civicrm-core/pull/22380))**
284
285 - **Fix regression with flexible merging of contact information
286 ([22720](https://github.com/civicrm/civicrm-core/pull/22720))**
287
288 - **Recent update to {receipt_text} token gives warning in system check after
289 upgrade ([22821](https://github.com/civicrm/civicrm-core/pull/22821))**
290
291 - **Remove "Search Builder" from menubar on new installs.
292 ([22778](https://github.com/civicrm/civicrm-core/pull/22778))**
293
294 - **Pseudoconstants - Fix and improve handling of option callbacks
295 ([22730](https://github.com/civicrm/civicrm-core/pull/22730))**
296
297 - **Refresh entity list after updating custom group (self_hook_*)
298 ([22868](https://github.com/civicrm/civicrm-core/pull/22868))**
299
300 - **Avoid null column showing on groups search page
301 ([22724](https://github.com/civicrm/civicrm-core/pull/22724))**
302
303 - **Call to undefined function civicrm_api3_create_error() in
304 civicrm/civicrm/CRM/Core/Page/AJAX/Attachment.php:65
305 ([22872](https://github.com/civicrm/civicrm-core/pull/22872))**
306
307 - **Fix backward-compatability for new method in CRM_Contact_BAO_Query_Hook
308 ([22933](https://github.com/civicrm/civicrm-core/pull/22933))**
309
310 - **Fix submit handling of thousands when creating data entry batch
311 ([22772](https://github.com/civicrm/civicrm-core/pull/22772))**
312
313 - **Avoid PHP undefined index notices on extension pages
314 ([22848](https://github.com/civicrm/civicrm-core/pull/22848))**
315
316 - **Fix issues with PHP GetText and 0 length files
317 ([22842](https://github.com/civicrm/civicrm-core/pull/22842))**
318
319 - **Remove reference to undefined variable in
320 CRM_Contact_Form_Inline_CommunicationPreferences
321 ([22840](https://github.com/civicrm/civicrm-core/pull/22840))**
322
323 - **Mark methods which are only used statically as static
324 ([22844](https://github.com/civicrm/civicrm-core/pull/22844))**
325
326 - **Use valid syntax for self-closing br elements
327 ([22711](https://github.com/civicrm/civicrm-core/pull/22711))**
328
329 - **civicrm_handler_filter_pseudo_constant - Guard against old or inactive
330 pseudoconstants ([656](https://github.com/civicrm/civicrm-drupal/pull/656))**
331
332 - **Contact token should show contact's info instead of logged in contact
333 ([22874](https://github.com/civicrm/civicrm-core/pull/22874))**
334
335 - **Fixes fatal error - function doesn't exist
336 ([275](https://github.com/civicrm/civicrm-wordpress/pull/275))**
337
338 - **Notice fixes ([22706](https://github.com/civicrm/civicrm-core/pull/22706))**
339
340 - **Some more notice fixes in smarty
341 ([22745](https://github.com/civicrm/civicrm-core/pull/22745))**
342
343 - **Enotice fixes
344 ([22719](https://github.com/civicrm/civicrm-core/pull/22719))**
345
346 - **Enotice fix ([22707](https://github.com/civicrm/civicrm-core/pull/22707))**
347
348 - **Mark AJAX methods as static
349 ([22895](https://github.com/civicrm/civicrm-core/pull/22895))**
350
351 - **Avoid e-notices on pages with tabs
352 ([22892](https://github.com/civicrm/civicrm-core/pull/22892))**
353
354 - **Flush the metadata cache when the domain is edited
355 ([22637](https://github.com/civicrm/civicrm-core/pull/22637))**
356
357 - **Remove broken call to function_exists in CRM_Utils_String::isUtf8
358 ([22803](https://github.com/civicrm/civicrm-core/pull/22803))**
359
360 - **Avoid PHP notices on the UF settings page.
361 ([22667](https://github.com/civicrm/civicrm-core/pull/22667))**
362
363 - **Fix deprecated warnings, smary grumpy-mode issues in legacy searches
364 ([22742](https://github.com/civicrm/civicrm-core/pull/22742))**
365
366 - **Return array for setdefaults
367 ([22948](https://github.com/civicrm/civicrm-core/pull/22948))**
368
369 ### CiviCase
370
371 - **CiviCase - Call hooks when creating relationships
372 ([22814](https://github.com/civicrm/civicrm-core/pull/22814))**
373
374 Ensures hooks are called when creating case relationships.
375
376 ### CiviContribute
377
378 - **Bypass grumpy mode for contribution search totals & criteria
379 ([22744](https://github.com/civicrm/civicrm-core/pull/22744))**
380
381 - **Clean return values for dummy payment processor
382 ([22679](https://github.com/civicrm/civicrm-core/pull/22679))**
383
384 - **Adjust css class for payment processor to use `-`
385 ([22763](https://github.com/civicrm/civicrm-core/pull/22763))**
386
387 - **Fix pledge default on contribution page when the site has a WR for
388 "contribution" ([22801](https://github.com/civicrm/civicrm-core/pull/22801))**
389
390 - **Format money on transaction list
391 ([22438](https://github.com/civicrm/civicrm-core/pull/22438))**
392
393 - **Deprecate civicrm_contribution_recur.trxn_id
394 ([21539](https://github.com/civicrm/civicrm-core/pull/21539))**
395
396 - **php notices on contributionview
397 ([22866](https://github.com/civicrm/civicrm-core/pull/22866))**
398
399 - **php/smarty notices on contribution view part 2
400 ([22869](https://github.com/civicrm/civicrm-core/pull/22869))**
401
402 - **smarty/php notices on contribution view part 4
403 ([22894](https://github.com/civicrm/civicrm-core/pull/22894))**
404
405 - **Cleanup on contribution view
406 ([22698](https://github.com/civicrm/civicrm-core/pull/22698))**
407
408 - **Contribution view page crashes if you don't have event permissions
409 ([dev/core#3094](https://lab.civicrm.org/dev/core/-/issues/3094):
410 [22865](https://github.com/civicrm/civicrm-core/pull/22865))**
411
412 ### CiviEvent
413
414 - **Don't perform event timezone check if CiviEvent is disabled
415 ([22898](https://github.com/civicrm/civicrm-core/pull/22898))**
416
417 ## CiviGrant
418
419 - **CiviGrant - Don't auto-create any grant types
420 ([22913](https://github.com/civicrm/civicrm-core/pull/22913))**
421
422 - **Grant checkbox in display prefs does nothing anymore
423 ([dev/core#3159](https://lab.civicrm.org/dev/core/-/issues/3159):
424 [23105](https://github.com/civicrm/civicrm-core/pull/23105))**
425
426 - **Views - CiviGrant is now an extension
427 ([654](https://github.com/civicrm/civicrm-drupal/pull/654))**
428
429 Updates the Drupal Views integration to recognize that CiviGrant is now an
430 extension.
431
432 ### CiviMail
433
434 - **Move check for mailing workflow permisisons to BAO layer
435 ([22766](https://github.com/civicrm/civicrm-core/pull/22766))**
436
437 - **BAO_Mailing::create - stop passing by reference
438 ([22753](https://github.com/civicrm/civicrm-core/pull/22753))**
439
440 - **add checkPerm
441 ([22818](https://github.com/civicrm/civicrm-core/pull/22818))**
442
443 Adds checkPerm to crmMailingSimpleDirective, enables ability of permission
444 checking in composer mail.
445
446 - **A/B testing report should show unique opens, not total opens
447 ([dev/core#2100](https://lab.civicrm.org/dev/core/-/issues/2100):
448 [20093](https://github.com/civicrm/civicrm-core/pull/20093))**
449
450 - **Mailing Report: do not recalculate the recipients when the count is zero
451 ([22800](https://github.com/civicrm/civicrm-core/pull/22800))**
452
453 - **5.44+ Unsubscribe from Smart Group form generates excessive process load
454 ([dev/core#3031](https://lab.civicrm.org/dev/core/-/issues/3031):
455 [23051](https://github.com/civicrm/civicrm-core/pull/23051))**
456
457 This splits the select query in two when checking if a contact was subscribed
458 to one or more groups.
459
460 ### CiviMember
461
462 - **New Membership fails when price set present but not selected
463 ([dev/core#3134](https://lab.civicrm.org/dev/core/-/issues/3134):
464 [23027](https://github.com/civicrm/civicrm-core/pull/23027))**
465
466 - **Fixes for smarty grumpy mode with membership
467 ([22752](https://github.com/civicrm/civicrm-core/pull/22752))**
468
469 - **Cleanup on Offline Membership Receipts (ensures variables present across
470 flows) ([22736](https://github.com/civicrm/civicrm-core/pull/22736))**
471
472 ## <a name="misc"></a>Miscellany
473
474 - **Move acl check for contributionView to the extension
475 ([22684](https://github.com/civicrm/civicrm-core/pull/22684))**
476
477 - **Move financial acls for membership to extension
478 ([22677](https://github.com/civicrm/civicrm-core/pull/22677))**
479
480 - **APIv4 - remove unnecessary field from System::check
481 ([22748](https://github.com/civicrm/civicrm-core/pull/22748))**
482
483 - **APIv4 - Add fixme about filtering custom fields by sub-type
484 ([22827](https://github.com/civicrm/civicrm-core/pull/22827))**
485
486 - **Cleanup around taxTerm assignment
487 ([22422](https://github.com/civicrm/civicrm-core/pull/22422))**
488
489 - **RecurForms test fixes
490 ([22784](https://github.com/civicrm/civicrm-core/pull/22784))**
491
492 - **Update unit test to use exception
493 ([22787](https://github.com/civicrm/civicrm-core/pull/22787))**
494
495 - **Added Cancel Recur Subscription test & setter for `supports` on Dummy
496 processor ([21895](https://github.com/civicrm/civicrm-core/pull/21895))**
497
498 - **Move HookInterface to \Civi\Core namespace
499 ([22834](https://github.com/civicrm/civicrm-core/pull/22834))**
500
501 - **Cody tidy in CRM_Core_State
502 ([22841](https://github.com/civicrm/civicrm-core/pull/22841))**
503
504 - **Remove reference to undefined variable
505 ([22839](https://github.com/civicrm/civicrm-core/pull/22839))**
506
507 - **added as a contributor
508 ([22876](https://github.com/civicrm/civicrm-core/pull/22876))**
509
510 - **Remove unused parameter, pass-by-ref
511 ([22756](https://github.com/civicrm/civicrm-core/pull/22756))**
512
513 - **Bump karma from 6.3.14 to 6.3.16
514 ([22875](https://github.com/civicrm/civicrm-core/pull/22875))**
515
516 - **Bump karma from 6.3.4 to 6.3.14
517 ([22758](https://github.com/civicrm/civicrm-core/pull/22758))**
518
519 - **Bump ajv from 6.6.1 to 6.12.6
520 ([22761](https://github.com/civicrm/civicrm-core/pull/22761))**
521
522 - **Remove unit tests based on older framework
523 ([71](https://github.com/civicrm/civicrm-drupal-8/pull/71))**
524
525 - **REF - Use function to get component name from permission
526 ([22688](https://github.com/civicrm/civicrm-core/pull/22688))**
527
528 - **[REF] Simplify Location::getValues
529 ([22757](https://github.com/civicrm/civicrm-core/pull/22757))**
530
531 - **[REF] Fix issue where spaces in payment_processor_type.name field cau…
532 ([22760](https://github.com/civicrm/civicrm-core/pull/22760))**
533
534 - **[REF] Cleanup billingBlock.js
535 ([22713](https://github.com/civicrm/civicrm-core/pull/22713))**
536
537 - **[REF] Results of running npm audit fix
538 ([22773](https://github.com/civicrm/civicrm-core/pull/22773))**
539
540 - **[REF] - Deprecate & delegate BAO::retrieve functions
541 ([22543](https://github.com/civicrm/civicrm-core/pull/22543))**
542
543 - **REF Deprecate API3 _ipn_process_transaction()
544 ([22488](https://github.com/civicrm/civicrm-core/pull/22488))**
545
546 - **(REF) CRM_Queue_Queue_* - Retain a copy of `$queueSpec`
547 ([22797](https://github.com/civicrm/civicrm-core/pull/22797))**
548
549 - **(REF) CRM_Queue_Task - Tighter signature
550 ([22794](https://github.com/civicrm/civicrm-core/pull/22794))**
551
552 - **[REF] Remove old require_once statements made obsolete by autoloader
553 ([22792](https://github.com/civicrm/civicrm-core/pull/22792))**
554
555 - **[REF] Simplification in Contact::getValues
556 ([22765](https://github.com/civicrm/civicrm-core/pull/22765))**
557
558 - **[REF] Fix css code style issues
559 ([22807](https://github.com/civicrm/civicrm-core/pull/22807))**
560
561 - **[REF] Remove unused api v2 function
562 ([22819](https://github.com/civicrm/civicrm-core/pull/22819))**
563
564 - **[REF] Update Guzzlehttp/psr7 version to be 1.8.5
565 ([22998](https://github.com/civicrm/civicrm-core/pull/22998))**
566
567 - **[REF] Rename SoftDeleteEntity -> SoftDeleteActionTrait
568 ([22944](https://github.com/civicrm/civicrm-core/pull/22944))**
569
570 - **[REF] APIv4 - use entityTypes event to load custom records
571 ([22824](https://github.com/civicrm/civicrm-core/pull/22824))**
572
573 - **[REF] Cleanup docblocks & unused vars in Membership BAO
574 ([22665](https://github.com/civicrm/civicrm-core/pull/22665))**
575
576 - **(NFC) tests/phpunit/CRM/Queue - Add common `@group`
577 ([22795](https://github.com/civicrm/civicrm-core/pull/22795))**
578
579 - **[NFC] Rename RecurForms test class
580 ([22820](https://github.com/civicrm/civicrm-core/pull/22820))**
581
582 - **[NFC] Batch entry - Avoid warnings when performing math on empty string.
583 ([22715](https://github.com/civicrm/civicrm-core/pull/22715))**
584
585 - **(NFC) contributor-key.yml - Fix syntax error
586 ([22921](https://github.com/civicrm/civicrm-core/pull/22921))**
587
588 - **(NFC) LoggingDetailTest - Improve reliability of test
589 ([22867](https://github.com/civicrm/civicrm-core/pull/22867))**
590
591 - **(NFC) Membership Tests - Update assertions to match behavior circa leap-day
592 ([22860](https://github.com/civicrm/civicrm-core/pull/22860))**
593
594 - **[NFC] Basic case create test with org
595 ([22846](https://github.com/civicrm/civicrm-core/pull/22846))**
596
597 ## <a name="credits"></a>Credits
598
599 This release was developed by the following code authors:
600
601 AGH Strategies - Alice Frumin, Andie Hunt; BrightMinded Ltd - Bradley
602 Taylor;Christian Wach; Circle Interactive - Pradeep Nayak; CiviCRM - Coleman
603 Watts, Tim Otten; Coop SymbioTIC - Mathieu Lutfy; Dave D; Fuzion - Luke Stewart;
604 Grype Digital Inc. - Md Rashedul Islam; JMA Consulting - Monish Deb, Seamus Lee;
605 John Kingsnorth; Kartik Kathuria; Megaphone Technology Consulting - Jon
606 Goldberg; MJW Consulting - Matthew Wire; Registered Nurses' Association of
607 Ontario - Ian Wilson; Tadpole Collective - Kevin Cristiano; Wikimedia
608 Foundation - Eileen McNaughton; Wildsight - Lars Sanders-Green
609
610 Most authors also reviewed code for this release; in addition, the following
611 reviewers contributed their comments:
612
613 Agileware - Justin Freeman; Artful Robot - Rich Lott; Blackfly Solutions - Alan
614 Dixon; Bluehorn Digital - Matt Glaman; CiviCoop - Jaap Jansma; CiviDesk -
615 Yashodha Chaku; Progressive Technology Project - Jamie McClelland; Semper IT -
616 Karin Gerritsen; Skvare - Mark Hanna
617
618 ## <a name="feedback"></a>Feedback
619
620 These release notes are edited by Alice Frumin and Andie Hunt. If you'd like
621 to provide feedback on them, please log in to https://chat.civicrm.org/civicrm
622 and contact `@agh1`.