CustomFields - Improve metadata for custom_group_extends
[civicrm-core.git] / release-notes / 5.39.0.md
... / ...
CommitLineData
1# CiviCRM 5.39.0
2
3Released July 7, 2021
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- **Separate the default language for contacts from the site language (Work Towards
29 [dev/core#2584](https://lab.civicrm.org/dev/core/-/issues/2584):
30 [20214](https://github.com/civicrm/civicrm-core/pull/20214))**
31
32 Improves user experience for multilingual sites by separating the
33 CiviCRM contacts default language setting from the site default language.
34
35- **Canonize API for storing translated data (Work Towards
36 [dev/translation#67](https://lab.civicrm.org/dev/translation/-/issues/67):
37 [20478](https://github.com/civicrm/civicrm-core/pull/20478))**
38
39 Defines a "Translation" table (`civicrm_translation`), to represent a single
40 translated string (e.g. a translated message-title or a translated
41 event-description).
42
43- **Allow for the default number of search results to be configurable
44 ([dev/core#2187](https://lab.civicrm.org/dev/core/-/issues/2187):
45 [20336](https://github.com/civicrm/civicrm-core/pull/20336 and
46 [18969](https://github.com/civicrm/civicrm-core/pull/18969))**
47
48 Creates a setting to define the number of search results to be returned.
49
50- **Give the custom CSS file a 'name' to make it easier to manipulate in
51 hook_civicrm_alterBundle()
52 ([20278](https://github.com/civicrm/civicrm-core/pull/20278))**
53
54 Gives the resource bundles custom CSS file a useful 'name' to make it easier
55 to manipulate in the alterBundle hook.
56
57- **OAuth: initial support for per-contact OAuth tokens
58 ([20189](https://github.com/civicrm/civicrm-core/pull/20189))**
59
60 Adds a system for managing OAuthContactTokens -- tokens linked to a
61 contact_id.
62
63- **BAOs, Tests, etal - Support `HookInterface` and `EventSubscriberInterface`
64 for auto-registration
65 ([20427](https://github.com/civicrm/civicrm-core/pull/20427))**
66
67 Expands the functionality for declaring event-listeners in different classes,
68 making it easier to participate in Symfony events.
69
70- **The version numbers for core-extensions should match core-proper.
71 ([dev/release#17](https://lab.civicrm.org/dev/release/-/issues/17):
72 [20303](https://github.com/civicrm/civicrm-core/pull/20303) and
73 [20302](https://github.com/civicrm/civicrm-core/pull/20302))**
74
75 Ensures that CiviCRM core extension version numbers are updated to match the
76 core release they are included in and denotes development stage of extensions
77 using icons.
78
79- **Enable/Disable Extension Receives API Error (Work Towards
80 [dev/core#2646](https://lab.civicrm.org/dev/core/-/issues/2646):
81 [20564](https://github.com/civicrm/civicrm-core/pull/20564))**
82
83 Improves the error messages when disabling or enabling an extension causes an
84 API Error.
85
86- **Regen.sh/setup.sh would be nice if the output for civicrm_generated.mysql
87 had long lines broken up
88 ([dev/core#1549](https://lab.civicrm.org/dev/core/-/issues/1549):
89 [20513](https://github.com/civicrm/civicrm-core/pull/20513))**
90
91 Improves display of civicrm_generated.mysql output so its easier to read.
92
93- **Use new crm-angular-js instead of ng-app to bootstrap AngularJS
94 ([20419](https://github.com/civicrm/civicrm-core/pull/20419))**
95
96 Updates the method used to bootstrap Angular for internal consistency and so
97 that multiple angular apps can be used on the same page.
98
99- **APIv4 - Save custom fields in bulk
100 ([20269](https://github.com/civicrm/civicrm-core/pull/20269))**
101
102 Makes it so custom fields can be saved in bulk thru APIv4.
103
104- **Add APIv4 Batch.create spec
105 ([20501](https://github.com/civicrm/civicrm-core/pull/20501))**
106
107 Adds a spec for APIv4 Batch.create.
108
109- **APIv4 - Make the @searchable flag explicit for OptionList type entities.
110 ([20560](https://github.com/civicrm/civicrm-core/pull/20560))**
111
112 Improves code for categorizing entities for SearchKit, making searchability
113 easier to grok and less magical/mysterious.
114
115- **Apiv4 entity parity (Work Towards
116 [dev/core#2486](https://lab.civicrm.org/dev/core/-/issues/2486):
117 [20559](https://github.com/civicrm/civicrm-core/pull/20559),
118 [20499](https://github.com/civicrm/civicrm-core/pull/20499),
119 [20464](https://github.com/civicrm/civicrm-core/pull/20464),
120 [20609](https://github.com/civicrm/civicrm-core/pull/20609),
121 [20433](https://github.com/civicrm/civicrm-core/pull/20433) and
122 [20474](https://github.com/civicrm/civicrm-core/pull/20474))**
123
124 Works towards APIv4 parity with APIv3 by adding the following entities to
125 APIv4: WordReplacement, FinancialItem and ACLEntityRole.
126
127- **Introduce civi.api4.authorizeRecord and civi.api4.validate
128 ([20533](https://github.com/civicrm/civicrm-core/pull/20533))**
129
130 Refactors APIv4 code so that events use more consistent style (ie
131 civi.api4.{$TASK} with alias civi.api4.{$TASK}::{$ENTITY}).
132
133- **APIv4 Entity.get refactor to be more efficient
134 ([20470](https://github.com/civicrm/civicrm-core/pull/20470))**
135
136 Makes APIv4 Entity.get more efficient.
137
138- **APIv4 - Return id_field as part of Entity.get
139 ([20457](https://github.com/civicrm/civicrm-core/pull/20457))**
140
141 Improves APIv4 metadata so it returns the name of the unique identifier field
142 for each entity (usually but not always named "id").
143
144- **Add DedupeRule, DedupeRuleGroup and DedupeException API4 entity
145 ([20466](https://github.com/civicrm/civicrm-core/pull/20466))**
146
147 Adds the following entities to APIv4: DedupeRule, DedupeRuleGroup and
148 DedupeException.
149
150- **Use PHPUnit8 in main test suites
151 ([20370](https://github.com/civicrm/civicrm-core/pull/20370))**
152
153 Makes phpunit8 the default test runner for PHP versions greater than 7.2 for
154 the core test suites.
155
156- **Link styling with default greenwich theme is not linklike on search kit
157 screen ([dev/core#2403](https://lab.civicrm.org/dev/core/-/issues/2403):
158 [20341](https://github.com/civicrm/civicrm-core/pull/20341))**
159
160 Improves the SearchKit user interface by making links blue so that they are
161 easier to find.
162
163- **Afform - Improve Gui, prefill & submit APIs
164 ([20383](https://github.com/civicrm/civicrm-core/pull/20383))**
165
166 Standardizes prefill & submit APIs to use the same logic for validating
167 contacts. Displays correct form URL in the Afform GUI depending on is_frontend
168 setting. Shows warning about url arguments to prevent unintentional
169 permissions escalation.
170
171- **Afform Gui - Add support for entityRef fields
172 ([20216](https://github.com/civicrm/civicrm-core/pull/20216))**
173
174 Adds a widget to Afform for EntityRef to autocomplete contacts & other
175 entities, allows the autocomplete field to be changed to Number (for entering
176 ID) or Select (for choosing another entity on a form).
177
178- **Afform Entity Reference Submit
179 ([20305](https://github.com/civicrm/civicrm-core/pull/20305))**
180
181 Improves Afform Submit handling to handle entity reference fields that
182 reference other form elements.
183
184- **SearchKit - allow searches based on relationships
185 ([20558](https://github.com/civicrm/civicrm-core/pull/20558))**
186
187 Allows SearchKit searches based on relationships.
188
189- **SearchKit - Add API filter for contacts in groups and smart groups
190 ([20507](https://github.com/civicrm/civicrm-core/pull/20507))**
191
192 Adds a filter-style field to search for contacts in (or not in) one or more
193 groups.
194
195- **SearchKit - Update `hook_civicrm_searchKitTasks` signature
196 ([20467](https://github.com/civicrm/civicrm-core/pull/20467))**
197
198 Updates the hook_civicrm_searchKitTasks signature to include checkPermissions
199 and userId.
200
201- **SearchKit - Add static groups and organize main entity selector
202 ([20434](https://github.com/civicrm/civicrm-core/pull/20434))**
203
204 Adds static (non-smart) groups to SearchKit, and organizes main entity
205 selector to be less cluttered, with primary entities up top and the rest
206 within a collapsible optgroup.
207
208- **SearchKit and Afform UI improvements
209 ([20348](https://github.com/civicrm/civicrm-core/pull/20348))**
210
211 Cleans up the admin UI for SearchKit and Afform, adds click-to-sort table
212 headers and fixes a bug where SavedSearch modified_date were not being saved.
213
214- **SearchKit - Rename crmSearchActions module to crmSearchTasks & add hook
215 ([20307](https://github.com/civicrm/civicrm-core/pull/20307))**
216
217 Adds hook_civicrm_searchKitTasks() to make it easy for other extensions to add
218 tasks specific to SearchKit. Also renames the module for consistency.
219
220- **[php8-compat] Upgrade PHPWord Package to support php8
221 ([20449](https://github.com/civicrm/civicrm-core/pull/20449))**
222
223 Work towards making CiviCRM php8 compatible, specifically by upgrading PHPWord
224 Package.
225
226- **[php8-compat] Upgrade TCPDF version to support php8
227 ([20540](https://github.com/civicrm/civicrm-core/pull/20540))**
228
229 Work Towards making CiviCRM php8 compatible specifically by upgrading TCPDF.
230
231- **Consider joining the GitHub Sponsors program
232 ([community/sustainability#20](https://lab.civicrm.org/community/sustainability/-/issues/20):
233 [248](https://github.com/civicrm/civicrm-wordpress/pull/248) and
234 [62](https://github.com/civicrm/civicrm-joomla/pull/62))**
235
236 Adds a sponsor link as apart of the GitHub Sponsors program.
237
238- **Change the help text for Message Templates and Scheduled Reminders to
239 include link to CiviCRM Token Documentation page
240 ([20259](https://github.com/civicrm/civicrm-core/pull/20259))**
241
242 Improves user experience by linking to CiviCRM Token documentation from the
243 Message Templates and Scheduled Reminders forms.
244
245- **authx - Accept API keys by default
246 ([20081](https://github.com/civicrm/civicrm-core/pull/20081))**
247
248 Relaxes the default settings so that it is easier to use authx
249 as a replacement for extern/rest.php (which uses the api_key for
250 authentication).
251
252### CiviCase
253
254- **Add defaults for APIv4 Case create
255 ([20306](https://github.com/civicrm/civicrm-core/pull/20306))**
256
257 Adds the following defaults for APIv4 Case.create:
258 - default Case Creator = current user
259 - default Case Start Date = now
260
261### CiviContribute
262
263- **Improve Sample data by ensuring all Credit Card Contributions have a
264 transaction id and that they are shown to be linked to the test payment
265 processor ([20312](https://github.com/civicrm/civicrm-core/pull/20312))**
266
267 Improves CiviContribute sample date.
268
269## <a name="bugs"></a>Bugs resolved
270
271### Core CiviCRM
272
273- **"You do not have permission to access this page" when exporting participants
274 in Search Kit
275 ([dev/report#67](https://lab.civicrm.org/dev/report/-/issues/67):
276 [20528](https://github.com/civicrm/civicrm-core/pull/20528))**
277
278 Fixes an 'access denied' error on standalone SearchKit export forms, caused by
279 renaming the PHP classes.
280
281- **500 error saving Search Kit Smart Group sorted on aggregated field
282 ([dev/report#68](https://lab.civicrm.org/dev/report/-/issues/68):
283 [20610](https://github.com/civicrm/civicrm-core/pull/20610))**
284
285- **Fatal error reported when photo cannot be found
286 ([dev/core#2369](https://lab.civicrm.org/dev/core/-/issues/2369):
287 [20447](https://github.com/civicrm/civicrm-core/pull/20447))**
288
289- **Loss of translation when copying (cloning) entities (multilingual)
290 ([dev/core#2479](https://lab.civicrm.org/dev/core/-/issues/2479):
291 [20059](https://github.com/civicrm/civicrm-core/pull/20059))**
292
293- **Fatal error while upgrading smart-group data
294 ([dev/core#2659](https://lab.civicrm.org/dev/core/-/issues/2659):
295 [20756](https://github.com/civicrm/civicrm-core/pull/20756/))**
296
297- **CRM_Utils_File::isAbsolute does not respect PHP stream wrappers (Work
298 Towards [dev/core#2590](https://lab.civicrm.org/dev/core/-/issues/2590):
299 [20270](https://github.com/civicrm/civicrm-core/pull/20270))**
300
301 Removes unused function.
302
303- **Installer doesn't check MySQL version properly
304 ([dev/core#2602](https://lab.civicrm.org/dev/core/-/issues/2602):
305 [20255](https://github.com/civicrm/civicrm-core/pull/20255))**
306
307- **Useradd task gives a deprecation notice for the password confirmation field
308 ([dev/core#2613](https://lab.civicrm.org/dev/core/-/issues/2613):
309 [20347](https://github.com/civicrm/civicrm-core/pull/20347))**
310
311- **APIv4 - Delete undocumented deprecated activityType lookup
312 ([20506](https://github.com/civicrm/civicrm-core/pull/20506))**
313
314 Deletes an undocumented APIv4 quirk that's been giving deprecated warnings for
315 over a year.
316
317- **APIv4 - Fix getFields to respect default_value from getFields
318 ([20481](https://github.com/civicrm/civicrm-core/pull/20481))**
319
320- **AfformGui - Fix tabs when cms theme adds extra margin
321 ([20431](https://github.com/civicrm/civicrm-core/pull/20431))**
322
323- **Afform GUI - Fix tab breakage in Shoreditch theme
324 ([20416](https://github.com/civicrm/civicrm-core/pull/20416))**
325
326- **Afform drag n drop fixes
327 ([20281](https://github.com/civicrm/civicrm-core/pull/20281) and
328 [20263](https://github.com/civicrm/civicrm-core/pull/20263))**
329
330- **Afform - Fix custom field handling and add tests
331 ([20480](https://github.com/civicrm/civicrm-core/pull/20480))**
332
333- **Afform - hide disabled contact types & entities from disabled
334 components/extensions
335 ([20283](https://github.com/civicrm/civicrm-core/pull/20283))**
336
337 Cleans up and improves Afform's internal entity lookup so it won't show
338 disabled entities.
339
340- **SearchKit - Fix link target selection
341 ([20537](https://github.com/civicrm/civicrm-core/pull/20537))**
342
343- **SearchKit - Fix menu permission
344 ([20349](https://github.com/civicrm/civicrm-core/pull/20349))**
345
346- **SearchKit - Organize ON clause field selectors with joined entity first
347 ([20454](https://github.com/civicrm/civicrm-core/pull/20454))**
348
349- **[php8-compat] Fix some more examples of where required parameters are after
350 optional parameters in function declaration
351 ([20515](https://github.com/civicrm/civicrm-core/pull/20515))**
352
353- **[php8-compat] Fix PHP Beautifier notice by conditionally assigning dynamic
354 foreign key to the template
355 ([20509](https://github.com/civicrm/civicrm-core/pull/20509))**
356
357- **[php8-compat] Fix issue in APIv3 Where by because product has a column
358 called options the testCreateSingleValueAlter triggers a cannot access offset
359 of type string on string in php8
360 ([20508](https://github.com/civicrm/civicrm-core/pull/20508))**
361
362- **[php8-compat] Fix issue with returning bool from uasort by using the
363 spaceship operator
364 ([20502](https://github.com/civicrm/civicrm-core/pull/20502))**
365
366- **[php8-compat] Fix Upgrade call back issues by making functions static and
367 also fixing an issue with an array key not existing when checking obsolete
368 extensions ([20503](https://github.com/civicrm/civicrm-core/pull/20503))**
369
370- **Update PHPUnit for PHPUnit8 config to ensure we don't cache test results
371 ([645](https://github.com/civicrm/civicrm-drupal/pull/645),
372 [140](https://github.com/civicrm/civicrm-backdrop/pull/140) and
373 [249](https://github.com/civicrm/civicrm-wordpress/pull/249))**
374
375- **[php8-compat] Fix calling method_exist with paremeter that is bool not an
376 object in php8 ([323](https:
377
378- **[php8-compat] Fix calling method_exist with paremeter that is bool not an
379 object in php8 ([20443](https://github.com/civicrm/civicrm-core/pull/20443))**
380
381- **[php8-compat] Fix deprecation error where by required function parameter
382 follows an optional function parameter
383 ([20473](https://github.com/civicrm/civicrm-core/pull/20473))**
384
385- **[php8-compat] Fix Warning Notices when running schema generation
386 ([20445](https://github.com/civicrm/civicrm-core/pull/20445))**
387
388- **[php8-compat] Update Various Symfony components to latest version in the
389 3.4.x series to fix deprecation notice around libxml entity disable
390 ([20444](https://github.com/civicrm/civicrm-core/pull/20444))**
391
392- **Fix the populateTempTable to be more direct
393 ([20548](https://github.com/civicrm/civicrm-core/pull/20548))**
394
395- **Sort trigger data before processing
396 ([20541](https://github.com/civicrm/civicrm-core/pull/20541))**
397
398- **Allow legacy warnings to be fully suppressed in PropertyBag
399 ([20331](https://github.com/civicrm/civicrm-core/pull/20331))**
400
401- **Prevent adding duplicate dashlet if present with same name and label
402 ([20375](https://github.com/civicrm/civicrm-core/pull/20375))**
403
404- **Ensure contacts without a name are updated when primary email changes
405 ([20403](https://github.com/civicrm/civicrm-core/pull/20403))**
406
407- **fix arguments sent to hook_civicrm_check
408 ([20400](https://github.com/civicrm/civicrm-core/pull/20400))**
409
410- **Fix Distmaker building by ensuring we are rsyncing from the right folder
411 ([20353](https://github.com/civicrm/civicrm-core/pull/20353))**
412
413- **Fix mandatory keys check fail for value of float 0.0 in a required key in an
414 entity ([20342](https://github.com/civicrm/civicrm-core/pull/20342))**
415
416- **Fix extraneous white space in generated SQL
417 ([20340](https://github.com/civicrm/civicrm-core/pull/20340))**
418
419- **Fix case sensitive parameter for call to getCustomFieldTokens
420 ([20333](https://github.com/civicrm/civicrm-core/pull/20333))**
421
422- **Fix CKEditor5 link editing in modal dialog
423 ([20285](https://github.com/civicrm/civicrm-core/pull/20285))**
424
425- **Correct copy-paste error in CustomField schema
426 ([20329](https://github.com/civicrm/civicrm-core/pull/20329))**
427
428- **Explicitly throw an error/status bounce on Edit/New if no types.
429 ([19840](https://github.com/civicrm/civicrm-core/pull/19840))**
430
431- **Core_DAO - Fire links_callback for all entities
432 ([20332](https://github.com/civicrm/civicrm-core/pull/20332))**
433
434- **Get county fields populated via api call
435 ([20309](https://github.com/civicrm/civicrm-core/pull/20309))**
436
437 Ensure that county fields are properly populated when calling the
438 Profile.getfields api.
439
440- **Activate user when no activation is required
441 ([20229](https://github.com/civicrm/civicrm-core/pull/20229))**
442
443 Ensures that any user created on a site that does not require admin approval
444 is considered active.
445
446- **Switch to non deprecated buildPermissionClause() for contact detail report
447 ([20314](https://github.com/civicrm/civicrm-core/pull/20314))**
448
449- **Switch to non deprecated buildPermissionClause() for contact summary report
450 ([20287](https://github.com/civicrm/civicrm-core/pull/20287))**
451
452- **Freeze readonly fields
453 ([20204](https://github.com/civicrm/civicrm-core/pull/20204))**
454
455- **CiviCRM Scheduled Reminders, Subject field missing Token selector - users
456 must copy Token from Body field to Subject
457 ([20260](https://github.com/civicrm/civicrm-core/pull/20260))**
458
459- **Fix delete customgroup using API4 so it removes data table
460 ([20265](https://github.com/civicrm/civicrm-core/pull/20265))**
461
462- **hook_managed - Do not try to disable managed entities if is_active is not
463 available to api3.create
464 ([20144](https://github.com/civicrm/civicrm-core/pull/20144))**
465
466- **DB/DataObject: use mb_strtolower because in turkish, INSERT becomes Insert
467 ([324](https://github.com/civicrm/civicrm-packages/pull/324))**
468
469### CiviCase
470
471- **APIv4 - CiviCase API: Fix opening a case with current user as creator
472 ([20238](https://github.com/civicrm/civicrm-core/pull/20238))**
473
474- **My Cases dashlet no longer working (javascript network error - blank
475 dashlet) ([dev/core#2606](https://lab.civicrm.org/dev/core/-/issues/2606):
476 [20275](https://github.com/civicrm/civicrm-core/pull/20275))**
477
478## CiviContribute
479
480- **PayPal fails to create contribution following duplicate merge when
481 membership record has been deleted
482 ([dev/core#2593](https://lab.civicrm.org/dev/core/-/issues/2593):
483 [20422](https://github.com/civicrm/civicrm-core/pull/20422),
484 [20424](https://github.com/civicrm/civicrm-core/pull/20424),
485 [20246](https://github.com/civicrm/civicrm-core/pull/20246) and
486 [20300](https://github.com/civicrm/civicrm-core/pull/20300))**
487
488- **"Pay Now" button on user dashboard is only for Pending, not Partially Paid
489 contributions
490 ([dev/financial#173](https://lab.civicrm.org/dev/financial/-/issues/173):
491 [20376](https://github.com/civicrm/civicrm-core/pull/20376))**
492
493 Ensures the 'Pay Now' buttons on the user dashboard are displayed for
494 partially paid contributions.
495
496- **Do not error on view contribution recur if not displaying contributions
497 ([20209](https://github.com/civicrm/civicrm-core/pull/20209))**
498
499- **Fix for tax rates being mangled on contribution update
500 ([20357](https://github.com/civicrm/civicrm-core/pull/20357))**
501
502- **Add call to validateAllContributions & fix getTotalAmount
503 ([20391](https://github.com/civicrm/civicrm-core/pull/20391))**
504
505- **Add warning when url_site is not specified for paypal (it won't work if not
506 set) ([20082](https://github.com/civicrm/civicrm-core/pull/20082))**
507
508- **Typo when retrieving help_pre textarea attributes for price field
509 ([20276](https://github.com/civicrm/civicrm-core/pull/20276))**
510
511- **Fix old-ish regression on paypal standard self-service cancel links
512 ([20210](https://github.com/civicrm/civicrm-core/pull/20210))**
513
514- **Don't pass doPayment by reference in Contribution.transact API
515 ([20463](https://github.com/civicrm/civicrm-core/pull/20463))**
516
517- **If paymentprocessor still uses doTransferCheckout/doDirectPayment trigger
518 deprecated function warning
519 ([20384](https://github.com/civicrm/civicrm-core/pull/20384))**
520
521- **Convert payJunction to doPayment
522 ([20326](https://github.com/civicrm/civicrm-core/pull/20326))**
523
524- **Convert FirstData to doPayment
525 ([20325](https://github.com/civicrm/civicrm-core/pull/20325))**
526
527- **Convert elavon to doPayment
528 ([20324](https://github.com/civicrm/civicrm-core/pull/20324))**
529
530- **Convert Realex to doPayment
531 ([20327](https://github.com/civicrm/civicrm-core/pull/20327))**
532
533- **Convert payflowpro to doPayment
534 ([20328](https://github.com/civicrm/civicrm-core/pull/20328))**
535
536- **Convert eway to doPayment
537 ([20323](https://github.com/civicrm/civicrm-core/pull/20323))**
538
539- **Convert AuthorizeNet to doPayment()
540 ([20322](https://github.com/civicrm/civicrm-core/pull/20322))**
541
542- **Sample payment processor types are misaligned in the sample data
543 ([dev/core#2614](https://lab.civicrm.org/dev/core/-/issues/2614):
544 [20311](https://github.com/civicrm/civicrm-core/pull/20311))**
545
546### CiviMail
547
548- **<link> URLs are tracked and shouldn't be
549 ([dev/mail#95](https://lab.civicrm.org/dev/mail/-/issues/95):
550 [20129](https://github.com/civicrm/civicrm-core/pull/20129))**
551
552 Ensures link tracking is applied only to URLs inside <a> tags.
553
554### CiviMember
555
556- **Creating a relationship fails when a related membership has a contact
557 reference custom field.
558 ([dev/membership#37](https://lab.civicrm.org/dev/membership/-/issues/37):
559 [20493](https://github.com/civicrm/civicrm-core/pull/20493))**
560
561- **Use line items to look up memberships
562 ([20495](https://github.com/civicrm/civicrm-core/pull/20495))**
563
564- **Use order api when creating a recurring membership from the Membership
565 ([20077](https://github.com/civicrm/civicrm-core/pull/20077))**
566
567### Drupal Integration
568
569- **AuthX extension: user_load() deprecated in Drupal 8.x.
570 ([dev/core#2636](https://lab.civicrm.org/dev/core/-/issues/2636):
571 [20479](https://github.com/civicrm/civicrm-core/pull/20479))**
572
573- **drush install - Bump up entropy for autogenerated creds. Add signing key.
574 ([128](https://github.com/civicrm/civicrm-backdrop/pull/128))**
575
576### WordPress Integration
577
578- **[php8-compat] Fix undefined property on Array Cache class in wordpress on
579 PHP8 ([20491](https://github.com/civicrm/civicrm-core/pull/20491))**
580
581- **Remove Base Page content filter once it has been used
582 ([dev/wordpress#91](https://lab.civicrm.org/dev/wordpress/-/issues/91):
583 [240](https://github.com/civicrm/civicrm-wordpress/pull/240))**
584
585 Fixes a bug where CiviCRM content would repeat itself in certain page
586 configurations.
587
588## <a name="misc"></a>Miscellany
589
590- **Add file_exists check on loading services xml
591 ([20620](https://github.com/civicrm/civicrm-core/pull/20620))**
592
593- **APIv4 - Cleanup getFields, add @internal flag for non-public field
594 attributes ([20489](https://github.com/civicrm/civicrm-core/pull/20489))**
595
596- **Extract code that populates temp table for an individual group
597 ([20458](https://github.com/civicrm/civicrm-core/pull/20458))**
598
599- **Cleanup - declare return types, remove unused var
600 ([20363](https://github.com/civicrm/civicrm-core/pull/20363))**
601
602- **Bump lodash from 4.17.19 to 4.17.21
603 ([20247](https://github.com/civicrm/civicrm-core/pull/20247))**
604
605- **Bump DOMPDF to `~1.0.0`
606 ([20465](https://github.com/civicrm/civicrm-core/pull/20465))**
607
608- **Make functions protected
609 ([20455](https://github.com/civicrm/civicrm-core/pull/20455))**
610
611- **Deprecate function CRM_Core_BAO_CustomField::bulkSave
612 ([20367](https://github.com/civicrm/civicrm-core/pull/20367))**
613
614- **Cleanup tracking on group.load
615 ([20310](https://github.com/civicrm/civicrm-core/pull/20310))**
616
617- **Describe logic behind placement of `invalidateRouteCache`
618 ([20414](https://github.com/civicrm/civicrm-core/pull/20414))**
619
620- **Fix internal group contact cache functions to be protected
621 ([20385](https://github.com/civicrm/civicrm-core/pull/20385))**
622
623- **Clarify types on `hook_custom` and `hook_customPre`
624 ([20488](https://github.com/civicrm/civicrm-core/pull/20488))**
625
626- **Cleanup references to old dedupe class names
627 ([20492](https://github.com/civicrm/civicrm-core/pull/20492))**
628
629- **Switch l10n.js from ajax callback to assetBuilder
630 ([20121](https://github.com/civicrm/civicrm-core/pull/20121))**
631
632- **ACLEntityRole BAO tidy fixes
633 ([20504](https://github.com/civicrm/civicrm-core/pull/20504))**
634
635- **Dedupe DAO is out of date
636 ([20534](https://github.com/civicrm/civicrm-core/pull/20534))**
637
638- **Switch table mapping to square bracket array syntax.
639 ([20535](https://github.com/civicrm/civicrm-core/pull/20535))**
640
641- **Update civicrm_generated (5.39 version)
642 ([20571](https://github.com/civicrm/civicrm-core/pull/20571))**
643
644- **[REF] Cannot edit CiviCRM Joomla permissions (access control) in 5.37.0
645 (Clean up for [dev/core#2601](https://lab.civicrm.org/dev/core/-/issues/2601):
646 [20271](https://github.com/civicrm/civicrm-core/pull/20271))**
647
648- **Revised fix for menu/UI issues for Joomla 4.0
649 ([20401](https://github.com/civicrm/civicrm-core/pull/20401))**
650
651- **[php8-compat] Fix Include/Exclude Group Custom Search Tests by better
652 handling empty arrays on exclusions in the custom search
653 ([20539](https://github.com/civicrm/civicrm-core/pull/20539))**
654
655- **[php8-compat] Fix Resources Test issue due to undefined array key add
656 CacheCode ([20538](https://github.com/civicrm/civicrm-core/pull/20538))**
657
658- **[php8-compat] Fix api_v3_PaymentTest failures by putting in more guards into
659 message templates
660 ([20520](https://github.com/civicrm/civicrm-core/pull/20520))**
661
662- **[php8-compat] Update smarty templates and some PHP files to get the
663 api_v3_contribution testclass to pass on php8
664 ([20512](https://github.com/civicrm/civicrm-core/pull/20512))**
665
666- **[php8-compact] Add in guards into various templates to fix hook tests in
667 php8 ([20542](https://github.com/civicrm/civicrm-core/pull/20542))**
668
669- **[php8-compact] Fix Report tests failing on php8
670 ([20549](https://github.com/civicrm/civicrm-core/pull/20549))**
671
672- **[php8-compat] Partial Fix of hook tests for php8
673 ([20545](https://github.com/civicrm/civicrm-core/pull/20545))**
674
675- **[php8-compat] [REF] Fix a couple of functions triggering deprecation notices
676 in php 8.0 where by an optional parameter is before required parameters in the
677 function signature
678 ([20442](https://github.com/civicrm/civicrm-core/pull/20442))**
679
680- **[php8-compat] [REF] Fix call to function CRM_Utils_String::createRandom by
681 ensuring that the length is the first parameter not 2nd
682 ([20441](https://github.com/civicrm/civicrm-core/pull/20441))**
683
684- **[php8-compat][NFC] Ensure that the 2nd parameter of hash_equals is a string
685 in authx ([20483](https://github.com/civicrm/civicrm-core/pull/20483))**
686
687- **[php8-compat][NFC] Fix using ZipArchive::open on an empty file
688 ([20500](https://github.com/civicrm/civicrm-core/pull/20500))**
689
690- **[php8-compat][NFC] Fix issue where by we are tryiing to access array keys
691 that haven't been created yet
692 ([20496](https://github.com/civicrm/civicrm-core/pull/20496))**
693
694- **[REF][php8-compat] Fix more instances of where there is a required parameter
695 for a function after an optional one and fix an issue where by a NULL function
696 property is treated as not exisiting in php8
697 ([20497](https://github.com/civicrm/civicrm-core/pull/20497))**
698
699- **[REF][php8-compat] Further fixes where there is a required paramater after
700 an optional paramater
701 ([20490](https://github.com/civicrm/civicrm-core/pull/20490))**
702
703- **[php8-compat][REF] Fix some more test failures in php8
704 ([20516](https://github.com/civicrm/civicrm-core/pull/20516))**
705
706- **[php8-compat][REF] Fix api_v3_contributionpagetest on php8
707 ([20518](https://github.com/civicrm/civicrm-core/pull/20518))**
708
709- **[php8-compat][REF] Fix more php8 test failures caused by template issues
710 ([20517](https://github.com/civicrm/civicrm-core/pull/20517))**
711
712- **[php8-compat][REF] Fix php8 error on undefined constant
713 CIVICRM_DISABLE_DEFAULT_MENU
714 ([20485](https://github.com/civicrm/civicrm-core/pull/20485))**
715
716- **[php8-compat][REF] Fix Date unit tests in php8 by passing in 00 instead of
717 null for hours,minutes and seconds
718 ([20525](https://github.com/civicrm/civicrm-core/pull/20525))**
719
720- **[php8-compact][REF] Fix another couple of places where by there are required
721 variables in php function declaration after optional ones
722 ([20526](https://github.com/civicrm/civicrm-core/pull/20526))**
723
724- **[php8-compact][REF] Fix api_v3_PaymentTokenTest to work on php8
725 ([20527](https://github.com/civicrm/civicrm-core/pull/20527))**
726
727- **[php8-compat][REF] Fix Case and Custom data tests by adding guards in to
728 templates ([20524](https://github.com/civicrm/civicrm-core/pull/20524))**
729
730- **[php8-compat][phpunit8][NFC] Fix PHPUnit Warnings and fix a php error on
731 function declaration syntax in core extension tests
732 ([20477](https://github.com/civicrm/civicrm-core/pull/20477))**
733
734- **Remove extraneous debug
735 ([20319](https://github.com/civicrm/civicrm-core/pull/20319))**
736
737- **Remove legacy references to partial_amount_to_pay
738 ([20358](https://github.com/civicrm/civicrm-core/pull/20358))**
739
740- **Remove remains of md5 check from authorizenet
741 ([20406](https://github.com/civicrm/civicrm-core/pull/20406))**
742
743- **Remove deprecation of order-must-be-pending
744 ([20205](https://github.com/civicrm/civicrm-core/pull/20205))**
745
746- **Remove some unused variables
747 ([20487](https://github.com/civicrm/civicrm-core/pull/20487))**
748
749- **Remove never-passed parameter from now unshared function
750 ([20304](https://github.com/civicrm/civicrm-core/pull/20304))**
751
752- **Remove defunct default return property
753 ([20139](https://github.com/civicrm/civicrm-core/pull/20139))**
754
755- **Remove now-unused ids parameter from signature
756 ([20299](https://github.com/civicrm/civicrm-core/pull/20299))**
757
758- **Remove unused functions from payJunction
759 ([20417](https://github.com/civicrm/civicrm-core/pull/20417))**
760
761- **Remove unused variable on dummy processor
762 ([20418](https://github.com/civicrm/civicrm-core/pull/20418))**
763
764- **Remove pass-by-ref as param not altered
765 ([20475](https://github.com/civicrm/civicrm-core/pull/20475))**
766
767- **[REF] (Code style) To const, or not const - that is the event
768 ([dev/core#1744](https://lab.civicrm.org/dev/core/-/issues/1744):
769 [20555](https://github.com/civicrm/civicrm-core/pull/20555))**
770
771- **[REF] Extract function to get locks
772 ([20373](https://github.com/civicrm/civicrm-core/pull/20373))**
773
774- **[REF] Remove unused variable
775 ([20378](https://github.com/civicrm/civicrm-core/pull/20378))**
776
777- **[REF] Slightly more logical order of code
778 ([20368](https://github.com/civicrm/civicrm-core/pull/20368))**
779
780- **[REF] Extract code to transfer groups from temp table to cache
781 ([20435](https://github.com/civicrm/civicrm-core/pull/20435))**
782
783- **[REF] Remove never-passed param
784 ([20456](https://github.com/civicrm/civicrm-core/pull/20456))**
785
786- **[REF] APIv4 refactoring to support calculated fields
787 ([20440](https://github.com/civicrm/civicrm-core/pull/20440))**
788
789- **[REF] Set receipt_date after sending, (from batch) not in anticipation
790 ([20395](https://github.com/civicrm/civicrm-core/pull/20395))**
791
792- **[REF] Minor extraction - getInfoUrl
793 ([20421](https://github.com/civicrm/civicrm-core/pull/20421))**
794
795- **[REF] Fix issue where by mailing urls were always stuck in the original
796 language not the overriden language in a multilingual site
797 ([20102](https://github.com/civicrm/civicrm-core/pull/20102))**
798
799- **[REF] Paypal pro - remove call to load contact record
800 ([20423](https://github.com/civicrm/civicrm-core/pull/20423))**
801
802- **[REF] Stop passing unneed params to the recur function
803 ([20412](https://github.com/civicrm/civicrm-core/pull/20412))**
804
805- **[REF] Replace isFirst parameter
806 ([20411](https://github.com/civicrm/civicrm-core/pull/20411))**
807
808- **[REF] Remove now-unused params
809 ([20410](https://github.com/civicrm/civicrm-core/pull/20410))**
810
811- **[REF] Paypal IPN - Cleanup references to completion
812 ([20407](https://github.com/civicrm/civicrm-core/pull/20407))**
813
814- **[REF] Replace deprecated code call
815 ([20409](https://github.com/civicrm/civicrm-core/pull/20409))**
816
817- **[REF] Cleanup validation in PaypalProIPN single function
818 ([20360](https://github.com/civicrm/civicrm-core/pull/20360))**
819
820- **[REF] Minor simplification
821 ([20393](https://github.com/civicrm/civicrm-core/pull/20393))**
822
823- **[REF] Useradd contact task - Use OO instead of hardcoding "if Wordpress"
824 ([20366](https://github.com/civicrm/civicrm-core/pull/20366))**
825
826- **[REF] Cleanup on import rows error
827 ([20196](https://github.com/civicrm/civicrm-core/pull/20196))**
828
829- **[REF] Extract function to build temporary table of members of group from
830 Report_Form ([20297](https://github.com/civicrm/civicrm-core/pull/20297))**
831
832- **[REF] Remove now-unused parameter
833 ([20354](https://github.com/civicrm/civicrm-core/pull/20354))**
834
835- **[REF] Extract getContributionObject
836 ([20355](https://github.com/civicrm/civicrm-core/pull/20355))**
837
838- **[REF] Add getter for contributionID
839 ([20318](https://github.com/civicrm/civicrm-core/pull/20318))**
840
841- **[REF] Make previous unshared function protected & Remove hard-coded params
842 ([20345](https://github.com/civicrm/civicrm-core/pull/20345))**
843
844- **[REF] Update Pear Validate Finance CreditCard to use latest tagged release
845 that now includes the improved mastercard 2bin regex
846 ([20351](https://github.com/civicrm/civicrm-core/pull/20351))**
847
848- **[REF] Make previously unshared function protected
849 ([20346](https://github.com/civicrm/civicrm-core/pull/20346))**
850
851- **[REF] Remove unused parameters
852 ([20301](https://github.com/civicrm/civicrm-core/pull/20301))**
853
854- **[REF] Cleanup BAO_ActionSchedule::getlist() signature
855 ([20239](https://github.com/civicrm/civicrm-core/pull/20239))**
856
857- **(REF) Regen CRM/Core/DAO/CustomField.php
858 ([20337](https://github.com/civicrm/civicrm-core/pull/20337))**
859
860- **[REF] Remove redundant call to clearGroupContactCache
861 ([20243](https://github.com/civicrm/civicrm-core/pull/20243))**
862
863- **[REF] [tests only] Replace direct calls to enable logging with calls to the
864 setting ([20460](https://github.com/civicrm/civicrm-core/pull/20460))**
865
866- **[REF] Remove function parameter only used from test
867 ([20459](https://github.com/civicrm/civicrm-core/pull/20459))**
868
869- **[REF] Extract code determining list of groups requiring a refresh
870 ([20242](https://github.com/civicrm/civicrm-core/pull/20242))**
871
872- **REF - Cleanup array key checking to use array_key_exists
873 ([20563](https://github.com/civicrm/civicrm-core/pull/20563))**
874
875- **[REF] CRM_Contact_Task - Use short array syntax
876 ([20562](https://github.com/civicrm/civicrm-core/pull/20562))**
877
878- **[REF] Fix Authx tests on Druapl 8/9 by ensuring that we only return an id
879 for the user id if it is greater than 0
880 ([20498](https://github.com/civicrm/civicrm-core/pull/20498))**
881
882- **[REF] Move ACLPermission Trait into Civi Folder so that it can be accessed
883 by Extensions ([20208](https://github.com/civicrm/civicrm-core/pull/20208))**
884
885- **[REF] Use function to getContributionRecurID
886 ([20293](https://github.com/civicrm/civicrm-core/pull/20293))**
887
888- **[REF] Duplicate processMembership preliminary to cleanup
889 ([20295](https://github.com/civicrm/civicrm-core/pull/20295))**
890
891- **[REF] Switch to using getContributionRecurID function, remove now unused
892 param ([20316](https://github.com/civicrm/civicrm-core/pull/20316))**
893
894- **[REF] Fully remove ids variable from paypal std
895 ([20317](https://github.com/civicrm/civicrm-core/pull/20317))**
896
897- **[REF] Make use of recently added default pager size setting in Reports
898 ([20273](https://github.com/civicrm/civicrm-core/pull/20273))**
899
900- **[REF] Duplicate & deprecate processMembership
901 ([20313](https://github.com/civicrm/civicrm-core/pull/20313))**
902
903- **[REF] Provide standardised methods to get recurring contribution id & object
904 ([20294](https://github.com/civicrm/civicrm-core/pull/20294))**
905
906- **[REF] Reverse if statement
907 ([20211](https://github.com/civicrm/civicrm-core/pull/20211))**
908
909- **Mark test class as having invalid financials
910 ([20448](https://github.com/civicrm/civicrm-core/pull/20448))**
911
912- **Update eventcart test to only test payment form
913 ([20405](https://github.com/civicrm/civicrm-core/pull/20405))**
914
915- **Fix profile test teardown
916 ([20439](https://github.com/civicrm/civicrm-core/pull/20439))**
917
918- **Fix separate payment membership test to create valid financial transactions
919 ([20436](https://github.com/civicrm/civicrm-core/pull/20436))**
920
921- **fix missing parent tearDown
922 ([20261](https://github.com/civicrm/civicrm-core/pull/20261) and
923 [20262](https://github.com/civicrm/civicrm-core/pull/20262))**
924
925- **Fix v3 api payment test to validate on postAssert
926 ([20530](https://github.com/civicrm/civicrm-core/pull/20530))**
927
928- **Fix Financial item test to validate Financials
929 ([20532](https://github.com/civicrm/civicrm-core/pull/20532))**
930
931- **Mark DetailTest as having invalid financials
932 ([20552](https://github.com/civicrm/civicrm-core/pull/20552))**
933
934- **Fix form params for testEventPaymentForms
935 ([20330](https://github.com/civicrm/civicrm-core/pull/20330))**
936
937- **Update bulkSave test to use the api
938 ([20362](https://github.com/civicrm/civicrm-core/pull/20362))**
939
940- **Fix contribution page pledge tests to create valid contributions
941 ([20404](https://github.com/civicrm/civicrm-core/pull/20404))**
942
943- **Improve cleanup on contact test
944 ([20248](https://github.com/civicrm/civicrm-core/pull/20248))**
945
946- **Test fix up for AdditionalPaymentTest
947 ([20521](https://github.com/civicrm/civicrm-core/pull/20521))**
948
949- **Test fix - assertion fails when run with other tests (sometimes)
950 ([20250](https://github.com/civicrm/civicrm-core/pull/20250))**
951
952- **[Test] Improve cleanup of domain contacts
953 ([20253](https://github.com/civicrm/civicrm-core/pull/20253))**
954
955- **Test - fix contributionTest to validate contributions
956 ([20415](https://github.com/civicrm/civicrm-core/pull/20415))**
957
958- **Test fixes ([20426](https://github.com/civicrm/civicrm-core/pull/20426))**
959
960- **Tax fixes in unit test
961 ([20390](https://github.com/civicrm/civicrm-core/pull/20390))**
962
963- **[Test] Add test cover for contribution tokens in pdf letter
964 ([20217](https://github.com/civicrm/civicrm-core/pull/20217))**
965
966- **Unit test for #20342
967 ([20361](https://github.com/civicrm/civicrm-core/pull/20361))**
968
969- **Add test for mixed Order data
970 ([20241](https://github.com/civicrm/civicrm-core/pull/20241))**
971
972- **Add unit test for #20144
973 ([20320](https://github.com/civicrm/civicrm-core/pull/20320))**
974
975- **Superficial tidy up in test class
976 ([20359](https://github.com/civicrm/civicrm-core/pull/20359))**
977
978- **[NFC] Remove timecop function references from Cache Tiered Test
979 ([20343](https://github.com/civicrm/civicrm-core/pull/20343))**
980
981- **[NFC] Superficial code cleanup
982 ([20446](https://github.com/civicrm/civicrm-core/pull/20446))**
983
984- **[NFC] Cleanup in test class
985 ([20402](https://github.com/civicrm/civicrm-core/pull/20402))**
986
987- **[NFC] {test} code cleanup in test class
988 ([20389](https://github.com/civicrm/civicrm-core/pull/20389))**
989
990- **[NFC] Minor cleanup
991 ([20387](https://github.com/civicrm/civicrm-core/pull/20387))**
992
993- **[NFC] Minor code cleanup
994 ([20386](https://github.com/civicrm/civicrm-core/pull/20386))**
995
996- **[NFC] Fix PHPUnit8 Deprecation Warnings in api_v3 and Civi Test Suites
997 ([20380](https://github.com/civicrm/civicrm-core/pull/20380))**
998
999- **[NFC] [Test] Big cleanup in test class
1000 ([20374](https://github.com/civicrm/civicrm-core/pull/20374))**
1001
1002- **[NFC] Fix PHPUnit8 Deprecation warnings in the api_v4 Test Suite
1003 ([20381](https://github.com/civicrm/civicrm-core/pull/20381))**
1004
1005- **[NFC] Fix PHPUnit8 Warning notices in E2E And in some API unit tests
1006 ([20379](https://github.com/civicrm/civicrm-core/pull/20379))**
1007
1008- **[NFC] Fix PHPUnit8 deprecation warnings in the CRM_AllTests suite
1009 ([20377](https://github.com/civicrm/civicrm-core/pull/20377))**
1010
1011- **[NFC] Further cleanup in test class
1012 ([20372](https://github.com/civicrm/civicrm-core/pull/20372))**
1013
1014- **[NFC] Add in more voids to unit tests to support PHPUnit8
1015 ([20369](https://github.com/civicrm/civicrm-core/pull/20369))**
1016
1017- **[NFC] [Test] Preliminary cleanup in test class
1018 ([20371](https://github.com/civicrm/civicrm-core/pull/20371))**
1019
1020- **[NFC] Add in voids to various setUpBeforeClass and tearDownAfterClass
1021 functions ([20365](https://github.com/civicrm/civicrm-core/pull/20365))**
1022
1023- **[NFC] Update PHPUnit config to not cache results in phpunit8 and add more
1024 voids into PayflowProTest
1025 ([20356](https://github.com/civicrm/civicrm-core/pull/20356))**
1026
1027- **[NFC] Add in unit tests of credit card validation rules
1028 ([20352](https://github.com/civicrm/civicrm-core/pull/20352))**
1029
1030- **[NFC/TEST] - Add unit test enforcing automatic chaining for financial
1031 type/account creation via api
1032 ([20288](https://github.com/civicrm/civicrm-core/pull/20288))**
1033
1034- **[NFC] Test - Improve tearDown cleanup of domain contacts
1035 ([20258](https://github.com/civicrm/civicrm-core/pull/20258))**
1036
1037- **[NFC] Test - fix to use v3 api on postAsserts
1038 ([20257](https://github.com/civicrm/civicrm-core/pull/20257))**
1039
1040- **[NFC] Fix phpunit9 deprecation issues on using assertType instead of more
1041 explicit assertIsArray or AssertIsInt
1042 ([20567](https://github.com/civicrm/civicrm-core/pull/20567))**
1043
1044## <a name="credits"></a>Credits
1045
1046This release was developed by the following code authors:
1047
1048AGH Strategies - Alice Frumin, Andie Hunt; Agileware - Justin Freeman;
1049Christian Wach; Circle Interactive - Pradeep Nayak; CiviCoop - Jaap Jansma;
1050CiviCRM - Coleman Watts, Tim Otten; CompuCorp - Ahed Eid; Coop SymbioTIC -
1051Mathieu Lutfy, Samuel Vanhove; Dave D; iXiam - Vangelis Pantazis; JMA
1052Consulting - Monish Deb, Seamus Lee; Lemniscus - Noah Miller; Megaphone
1053Technology Consulting - Jon Goldberg; MJCO - Mikey O'Toole; MJW Consulting -
1054Matthew Wire; Nicol Wistreich; Progressive Technology Project - Jamie
1055McClelland; Richard van Oosterhout; Robert J. Lang; Squiffle Consulting - Aidan
1056Saunders; Wikimedia Foundation - Eileen McNaughton; Wildsight - Lars
1057Sanders-Green
1058
1059Most authors also reviewed code for this release; in addition, the following
1060reviewers contributed their comments:
1061
1062Agileware - Justin Freeman; Business & Code - Alain Benbassat; CiviDesk -
1063Nicolas Ganivet, Yashodha Chaku; CompuCorp - Jamie Novick; Coop SymbioTIC -
1064Mathieu Lutfy, Samuel Vanhove; Dave D; Freeform Solutions - Herb van den Dool;
1065Fuzion - Jitendra Purohit; Semper IT - Karin Gerritsen; SYSTOPIA
1066Organisationsberatung - Björn Endres; Tadpole Collective - Kevin Cristiano
1067
1068
1069## <a name="feedback"></a>Feedback
1070
1071These release notes are edited by Alice Frumin and Andie Hunt. If you'd like
1072to provide feedback on them, please log in to https://chat.civicrm.org/civicrm
1073and contact `@agh1`.