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