CiviEvent Dashboard and Manage Events: clean up disused url template vars
[civicrm-core.git] / release-notes / 5.14.0.md
1 # CiviCRM 5.14.0
2
3 Released June 5, 2019
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 - **Minimum supported PHP version is 7.0
29 ([14437](https://github.com/civicrm/civicrm-core/pull/14437), [14459](https://github.com/civicrm/civicrm-core/pull/14459))**
30
31 CiviCRM now requires PHP 7.0 or higher. While sites running PHP 5.6 will be
32 able to upgrade to CiviCRM 5.14.0, they will see an error message saying it is
33 no longer supported. Upcoming changes to CiviCRM will not be evaluated with
34 regard to PHP 5.6 compatibility, and new sites installing CiviCRM must have
35 PHP 7.0 or higher.
36
37 - **civi.api.prepare - Allow dynamic wrappers (preliminary work for
38 [dev/core#873](https://lab.civicrm.org/dev/core/issues/873):
39 [14047](https://github.com/civicrm/civicrm-core/pull/14047))**
40
41 This furthers the goal of allowing users to A/B test subject lines in Mosaico
42 by allowing extension developers to dynamically wrap an API using a listener
43 for the new civi.api.prepare event.
44
45 - **Make DAO fields more consistent
46 ([14072](https://github.com/civicrm/civicrm-core/pull/14072))**
47
48 This PR makes it so the 'where' field is populated regardless of whether
49 import or export is set. The goal of this pull request is to simplify some of
50 the metadata based magic by trying to get the meaning of import & export
51 closer to the original intent.
52
53 - **Hook to alter menubar css variables & fix breakpoint in WP
54 ([14135](https://github.com/civicrm/civicrm-core/pull/14135) and
55 [14420](https://github.com/civicrm/civicrm-core/pull/14420))**
56
57 A new hook, `hook_civicrm_getAssetUrl()`, allows modifying parameters for a
58 semi-static asset like a CSS file that takes certain parameters. The result
59 is that the menu bar is more flexible and configurable, and this fixes a
60 couple of issues with it in WordPress at certain widths.
61
62 - **Replace jcalendar instances with datepicker (continues
63 [dev/core#561](https://lab.civicrm.org/dev/core/issues/561):
64 [14150](https://github.com/civicrm/civicrm-core/pull/14150) and
65 [14099](https://github.com/civicrm/civicrm-core/pull/14099))**
66
67 The campaign search form and pledge forms now use datepicker instead of the
68 deprecated jcalendar for choosing dates.
69
70 - **Result filter criteria doesn't show IS NULL/IS NOT NULL for operations
71 ([dev/core#865](https://lab.civicrm.org/dev/core/issues/865):
72 [14028](https://github.com/civicrm/civicrm-core/pull/14028))**
73
74 Allow users to access to the operations `IS NULL` and `IS NOT NULL` when
75 choosing report filters for multiselect fields.
76
77 - **Allow url to set IS NULL/ NOT NULL in report for operations
78 ([dev/core#876](https://lab.civicrm.org/dev/core/issues/876):
79 [14052](https://github.com/civicrm/civicrm-core/pull/14052))**
80
81 Makes it so that the newly added filter options IS NULL/ NOT NULL (added
82 above) can be passed via URL.
83
84 - **Convert dedupe select to select 2 and remove not-used var
85 ([14161](https://github.com/civicrm/civicrm-core/pull/14161))**
86
87 On the Dedupe rules form, the "Field" drop-downs are converted to Select2
88 fields.
89
90 - **Add function filterLinks to return an array of links for an entity that can
91 be used by the API / form layer to generate a link
92 ([14112](https://github.com/civicrm/civicrm-core/pull/14112))**
93
94 Adds the function filterLinks (CRM_Core_Action::filterLinks()) which can be
95 used to generate link html client-side. This function is currently unused,
96 added in preparation for CiviCase link refactoring.
97
98 - **Add serialize metadata to tag used_for field
99 ([14096](https://github.com/civicrm/civicrm-core/pull/14096))**
100
101 Add schema metadata to the Tag `used_for` field, which is a comma separated
102 list.
103
104 - **Cron Status Check - Better hyperlinks
105 ([14085](https://github.com/civicrm/civicrm-core/pull/14085))**
106
107 Improves the System Status check "Cron Not Running" by including a link to
108 most up to date documentation.
109
110 - **Add pseudoconstant to UFField dao
111 ([14041](https://github.com/civicrm/civicrm-core/pull/14041))**
112
113 Improves the UFField API by exposing the option list for the field
114 `fieldname`, before this change it was displayed as a text field instead of a
115 select.
116
117 - **CQ: Switch core forms to be Entity Forms (continues
118 [dev/core#818](https://lab.civicrm.org/dev/core/issues/818):
119 [13887](https://github.com/civicrm/civicrm-core/pull/13887))**
120
121 The group settings form now relies upon a standard entity form for the most
122 part, with most fields defined by metadata. This removes boilerplate code
123 from the specific form function, standardizing the form and facilitating later
124 form improvements that can be made across the board.
125
126 ### CiviContribute
127
128 - **CQ: Refactor Recurring Contribution Forms (continues
129 [dev/core#846](https://lab.civicrm.org/dev/core/issues/846):
130 [13994](https://github.com/civicrm/civicrm-core/pull/13994) and
131 [13993](https://github.com/civicrm/civicrm-core/pull/13993)))**
132
133 This begins the process of converting recurring contribution forms to use
134 entity forms. It standardizes the way in which the payment processor is
135 loaded in the 3 forms that update subscriptions.
136
137 - **Call Payment.create from Payment.cancel
138 ([13689](https://github.com/civicrm/civicrm-core/pull/13689))**
139
140 This change improves the Payment.create API by adding handling for negative
141 amounts and moves the Payment.cancel API to use the Payment.create API instead
142 of a bespoke function.
143
144 - **Switch to using ContributionRecur.cancel API from CancelSubscription form
145 ([14033](https://github.com/civicrm/civicrm-core/pull/14033))**
146
147 This change makes it so the CancelSubscription Form uses the
148 ContributionRecur.cancel API instead of a bespoke function.
149
150 - **Update MasterCard icon to match branding guidelines
151 ([14078](https://github.com/civicrm/civicrm-core/pull/14078))**
152
153 Updates the MasterCard icon to match the MasterCard branding guidelines:
154 https://brand.mastercard.com/brandcenter/mastercard-brand-mark/downloads.html
155
156 ### CiviEvent
157
158 - **Event Cart: add support for the Credit Card type icons
159 ([14175](https://github.com/civicrm/civicrm-core/pull/14175))**
160
161 Adds support for the Credit Card type icons (Amex, visa etc.) to Event Cart
162 registration forms.
163
164 ### Drupal Integration
165
166 - **Drupal Views : relationships for standard groups
167 ([CRM-20006](https://issues.civicrm.org/jira/browse/CRM-20006):
168 [507](https://github.com/civicrm/civicrm-drupal/pull/507))**
169
170 Adds relationships for standard groups to the CiviCRM/Drupal Views
171 integration.
172
173 - **Enable contribution views to filter on empty Receipt and Thank You dates
174 ([573](https://github.com/civicrm/civicrm-drupal/pull/573))**
175
176 Adds a view filter on "Thank You date" and "Receipt Date" for empty/not empty
177 which can be used to create a view showing contributions that
178 have/have not been thanked.
179
180 ## <a name="bugs"></a>Bugs resolved
181
182 ### Core CiviCRM
183
184 - **Email processor filing all emails as .unknown attachments
185 ([dev/core#940](https://lab.civicrm.org/dev/core/issues/940):
186 [14208](https://github.com/civicrm/civicrm-core/pull/14208))**
187
188 Fixes a regression where emails being sent to the email-to-activity mailbox
189 were being saved with a `.unknown` extension and no content.
190
191 - **.ics files should be whitelisted as file types for upload
192 ([dev/core#974](https://lab.civicrm.org/dev/core/issues/974):
193 [14531](https://github.com/civicrm/civicrm-core/pull/14351))**
194
195 - **Regression - faster activity tab in 5.13 won't sort by source_name now
196 ([dev/core#934](https://lab.civicrm.org/dev/core/issues/934):
197 [14194](https://github.com/civicrm/civicrm-core/pull/14194) and
198 [14204](https://github.com/civicrm/civicrm-core/pull/14204))**
199
200 - **Search displaying Related Contacts produces fatal error
201 ([dev/core#1002](https://lab.civicrm.org/dev/core/issues/1002):
202 [14409](https://github.com/civicrm/civicrm-core/pull/14409))**
203
204 - **Error randomly appearing when Financial type ACL is enabled
205 ([dev/core#918](https://lab.civicrm.org/dev/core/issues/918):
206 [14165](https://github.com/civicrm/civicrm-core/pull/14165) and
207 [14168](https://github.com/civicrm/civicrm-core/pull/14168))**
208
209 Fixes an undefined index error `Undefined index: status in
210 CRM_Utils_Check_Component_FinancialTypeAcls::checkFinancialAclReport()` when a
211 site has a Financial Type ACL enabled.
212
213 - **utf8mb4 warning keeps coming back up
214 ([dev/core#880](https://lab.civicrm.org/dev/core/issues/880):
215 [14123](https://github.com/civicrm/civicrm-core/pull/14123))**
216
217 This change makes it so users only receive the Mysql utf8mb4 status check
218 once, before this change the status check would show up whenever apache was
219 restarted.
220
221 - **Fix import primary phone, primary email, add tests
222 ([14043](https://github.com/civicrm/civicrm-core/pull/14043))**
223
224 Fixes a bug where importing a phone (or email) & choosing 'Primary' as the
225 location type resulted in the creation of a duplicate, sometimes with no
226 location type.
227
228 - **Fix upgrade message db setting location
229 ([14083](https://github.com/civicrm/civicrm-core/pull/14083))**
230
231 Updates the upgrade message "This database uses InnoDB Full Text Search for
232 optimized searching. The upgrade procedure has not been tested with this
233 feature. You should disable (and later re-enable) the feature by navigating
234 to..." to point to the right settings form "Administer => Customize Data and
235 Screens => Search Preferences" instead of "Administer => System Settings =>
236 Miscellaneous".
237
238 - **Fix getAddressColumns() to respect tableAlias
239 ([14014](https://github.com/civicrm/civicrm-core/pull/14014))**
240
241 Fixes `CRM_Report_Form::getAddressColumns()` function so that it no longer
242 returns an error when used twice.
243
244 - **Ensure edit tooltip is always initially hidden in contact summary block
245 ([14065](https://github.com/civicrm/civicrm-core/pull/14065))**
246
247 Ensures when a user does not have permission to edit a contact summary block,
248 the little "Edit" tooltip is hidden.
249
250 - **Skip adding core resources when building assets
251 ([14010](https://github.com/civicrm/civicrm-core/pull/14010))**
252
253 - **Advanced Search - Mailing column headers out of alignment
254 ([dev/core#248](https://lab.civicrm.org/dev/core/issues/248):
255 [14134](https://github.com/civicrm/civicrm-core/pull/14134))**
256
257 - **Validate queue_id is a positive integer before passing to the BAO
258 ([14355](https://github.com/civicrm/civicrm-core/pull/14355))**
259
260 - **Fixes issue where contact's display name did not show on membership edit
261 If there was no registered email address
262 ([dev/core#1000](https://lab.civicrm.org/dev/core/issues/1000):
263 [14438](https://github.com/civicrm/civicrm-core/pull/14438))**
264
265 ### CiviCase
266
267 - **Case activity query performs poorly on large databases
268 ([dev/core#832](https://lab.civicrm.org/dev/core/issues/832):
269 [14086](https://github.com/civicrm/civicrm-core/pull/14086) and
270 [14139](https://github.com/civicrm/civicrm-core/pull/14139))**
271
272 This change enhances performance of CiviCase by streamlining the Case Activity
273 Query which was crashing the server for some sites with large databases by
274 producing too many temporary files.
275
276 - **Make `hook_civicrm_pre()` and `hook_civicrm_post()` fire on CaseContacts
277 ([14030](https://github.com/civicrm/civicrm-core/pull/14030))**
278
279 ### CiviContribute
280
281 - **Always bootstrap CRM_Utils_System on legacy IPN endpoint
282 ([dev/drupal#66](https://lab.civicrm.org/dev/drupal/issues/66),
283 [dev/core#973](https://lab.civicrm.org/dev/core/issues/973), and
284 [dev/core#1017](https://lab.civicrm.org/dev/core/issues/1017):
285 [14406](https://github.com/civicrm/civicrm-core/pull/14406) and
286 [14430](https://github.com/civicrm/civicrm-core/pull/14430))**
287
288 This fixes a recent regression where recurring payments would fail to be
289 recorded in CiviCRM if the contribution was set to notify the legacy IPN URL.
290
291 - **Fix checksum failure when editing recuring contributions
292 ([14407](https://github.com/civicrm/civicrm-core/pull/14407))**
293
294 Fixes a fatal error where checksum users were not able to cancel or update
295 recurring contributions.
296
297 - **Fix error when exporting soft credits ([dev/core#1015](https://lab.civicrm.org/dev/core/issues/1015): [14453](https://github.com/civicrm/civicrm-core/pull/14453))**
298
299 ### CiviEvent
300
301 - **Event Cart: Pass the contactID to fix payment on Stripe
302 ([14173](https://github.com/civicrm/civicrm-core/pull/14173))**
303
304 Fixes a bug where a user could not complete an Event Registration using Event
305 Cart and the Stripe payment processor.
306
307 - **Event Cart: Fix sending of email receipts
308 ([14170](https://github.com/civicrm/civicrm-core/pull/14170))**
309
310 Fixes fatal error being thrown when an email receipt was sent from an Event
311 Cart registration.
312
313 - **Event Cart: Honor the allow_same_participant_emails setting
314 ([14174](https://github.com/civicrm/civicrm-core/pull/14174))**
315
316 Ensures the Event Cart Checkout process honors the "allow participants with
317 the same email address".
318
319 - **Event Cart: Fix start_date formatting in line items during checkout
320 ([14169](https://github.com/civicrm/civicrm-core/pull/14169))**
321
322 Ensures start dates are formatted according to the site's localization
323 preference during the Event Cart checkout process.
324
325 - **When creating a new event using a template, the new event screen is
326 taking the default values directly from the custom fields, and not from what's
327 saved in the event template.
328 ([CRM-18570](https://issues.civicrm.org/jira/browse/CRM-18570), [dev/core#553](https://lab.civicrm.org/dev/core/issues/553):
329 [14063](https://github.com/civicrm/civicrm-core/pull/14063))**
330
331 ### CiviMail
332
333 - **Fixed double protocol being added in link by CKEditor.
334 ([14128](https://github.com/civicrm/civicrm-core/pull/14128))**
335
336 Fixes a bug where adding action tokens using the CKEditor link interface, and
337 then editing them could cause double protocols (ex: http://https:// or
338 http://http://).
339
340 - **Fix ts() usage in CRM_SMS_Form_Schedule
341 ([14111](https://github.com/civicrm/civicrm-core/pull/14111))**
342
343 Allows translation of the "Send Mass SMS" form.
344
345 ### CiviMember
346
347 - **Batch update membership type
348 ([dev/core#338](https://lab.civicrm.org/dev/core/issues/338):
349 [14064](https://github.com/civicrm/civicrm-core/pull/14064))**
350
351 Fixes a regression when batch updating membership types and copying values
352 down the column.
353
354 - **Membership status processor ignoring records where is_override=0
355 ([dev/core#881](https://lab.civicrm.org/dev/core/issues/881):
356 [14059](https://github.com/civicrm/civicrm-core/pull/14059) and
357 [14073](https://github.com/civicrm/civicrm-core/pull/14073))**
358
359 - **Back-office membership renewals don't display an on-screen notification
360 ([dev/membership#9](https://lab.civicrm.org/dev/membership/issues/9):
361 [14088](https://github.com/civicrm/civicrm-core/pull/14088))**
362
363 - **Fix test / possible live error on submitting credit card renewals
364 ([14412](https://github.com/civicrm/civicrm-core/pull/14412))**
365
366 This resolves intermittent errors in unit tests when renewing memberships due
367 to the `receive_date` not being set.
368
369 - **Fixed auto populate of contact reference field on membership signup form
370 ([14077](https://github.com/civicrm/civicrm-core/pull/14077))**
371
372 ### Drupal Integration
373
374 - **Civi 5.12.1 renders Quicksearch unreadable on Drupal 8
375 ([dev/drupal#56](https://lab.civicrm.org/dev/drupal/issues/56):
376 [14080](https://github.com/civicrm/civicrm-core/pull/14080))**
377
378 Fixes a regression where the text in the Quicksearch box was too light to read
379 so that it is darker and easier to read.
380
381 - **Don't render an empty mailto link for empty email addresses
382 ([540](https://github.com/civicrm/civicrm-drupal/pull/540))**
383
384 Fixes a bug in Views where an "email address" field set to output as a
385 `mailto:` link would still make a link if no email exists.
386
387 - **Column next_sched_contribution should be next_sched_contribution_date for
388 Views integration
389 ([dev/drupal#48](https://lab.civicrm.org/dev/drupal/issues/48):
390 [578](https://github.com/civicrm/civicrm-drupal/pull/578))**
391
392 ### Joomla Integration
393
394 - **Fix bug preventing affecting `cv --user` on Joomla
395 ([13890](https://github.com/civicrm/civicrm-core/pull/13890))**
396
397 ## <a name="misc"></a>Miscellany
398
399 - **Bump PHP version to match core requirements
400 ([567](https://github.com/civicrm/civicrm-drupal/pull/567))**
401
402 - **CiviUnitTestCase - Extract traits to facilitate extension testing
403 (preliminary work for
404 [dev/core#873](https://lab.civicrm.org/dev/core/issues/873):
405 [14044](https://github.com/civicrm/civicrm-core/pull/14044))**
406
407 - **Refactor dedupe merger (preliminary work for
408 [dev/core#723](https://lab.civicrm.org/dev/core/issues/723):
409 [14144](https://github.com/civicrm/civicrm-core/pull/14144) and
410 [14146](https://github.com/civicrm/civicrm-core/pull/14146))**
411
412 - **Replace all instances of CRM_Core_Fatal with throw new CRM_Core_Exception
413 (continues [dev/core#560](https://lab.civicrm.org/dev/core/issues/560):
414 [14143](https://github.com/civicrm/civicrm-core/pull/14143))**
415
416 - **(Partial) Towards fixing E2E_Core_AssetBuilderTest on WordPress
417 ([14212](https://github.com/civicrm/civicrm-core/pull/14212/),
418 [14201](https://github.com/civicrm/civicrm-core/pull/14201))**
419
420 - **(REF) Add unit tests on contribution recur trxn_id, contribution recur
421 processor id (preparation for
422 [dev/core#830](https://lab.civicrm.org/dev/core/issues/830):
423 [14119](https://github.com/civicrm/civicrm-core/pull/14119))**
424
425 - **Remove instances of $dao->free (continues
426 [dev/core#562](https://lab.civicrm.org/dev/core/issues/562):
427 [14070](https://github.com/civicrm/civicrm-core/pull/14070),
428 [14071](https://github.com/civicrm/civicrm-core/pull/14071) and
429 [14037](https://github.com/civicrm/civicrm-core/pull/14037))**
430
431 - **(NFC) Add tests of retreiving notes for display on a contact record a…
432 ([14094](https://github.com/civicrm/civicrm-core/pull/14094))**
433
434 - **(NFC) Update CRM/Contact to match new coder style
435 ([14022](https://github.com/civicrm/civicrm-core/pull/14022))**
436
437 - **(NFC) Minor code style fixes
438 ([14015](https://github.com/civicrm/civicrm-core/pull/14015))**
439
440 - **(NFC) Add in unit test checking that E2E test returns sensible contac…
441 ([14076](https://github.com/civicrm/civicrm-core/pull/14076))**
442
443 - **(NFC) Whitespace formatting for formButtons.tpl
444 ([14107](https://github.com/civicrm/civicrm-core/pull/14107))**
445
446 - **(NFC) Expand unit test to show off double protocol error
447 ([14141](https://github.com/civicrm/civicrm-core/pull/14141))**
448
449 - **(REF) Move gathering of location info to relevant function (towards
450 dev/core#723) ([14142](https://github.com/civicrm/civicrm-core/pull/14142))**
451
452 - **(REF) Move the qfbug handling to it's own function (towards dev/core#723)
453 ([14140](https://github.com/civicrm/civicrm-core/pull/14140))**
454
455 - **(REF) Use events for CMS resource loading
456 ([14131](https://github.com/civicrm/civicrm-core/pull/14131))**
457
458 - **(REF) Extract getConflicts function
459 ([14148](https://github.com/civicrm/civicrm-core/pull/14148))**
460
461 - **(REF) Extract get cfields function
462 ([14151](https://github.com/civicrm/civicrm-core/pull/14151))**
463
464 - **(REF) Use variable for menubar height
465 ([14122](https://github.com/civicrm/civicrm-core/pull/14122))**
466
467 - **(REF) Clean up CRM_Contribute_Form_SearchTest
468 ([14068](https://github.com/civicrm/civicrm-core/pull/14068))**
469
470 - **(REF) Extract formatLocationBlock from import parsing
471 ([14040](https://github.com/civicrm/civicrm-core/pull/14040))**
472
473 - **(REF) Function extraction in dedupe code
474 ([14157](https://github.com/civicrm/civicrm-core/pull/14157))**
475
476 - **(REF) cleanup input parameters on extracted function
477 ([14050](https://github.com/civicrm/civicrm-core/pull/14050))**
478
479 - **(REF) Fix accepted params in CustomValueTable::setValues
480 ([14079](https://github.com/civicrm/civicrm-core/pull/14079))**
481
482 - **(REF) Fix unnecessary required param in contact BAO update
483 ([14075](https://github.com/civicrm/civicrm-core/pull/14075))**
484
485 - **(REF) Reduce redundant code in CRM_Utils_Type::validate
486 ([14011](https://github.com/civicrm/civicrm-core/pull/14011))**
487
488 - **(REF) Replace hardcoded IDs with pseudoconstants in activity form
489 ([14108](https://github.com/civicrm/civicrm-core/pull/14108))**
490
491 - **(REF) Standardize UFField create function
492 ([14084](https://github.com/civicrm/civicrm-core/pull/14084))**
493
494 - **(REF) Call formatLocationBlock from parent function.
495 ([14105](https://github.com/civicrm/civicrm-core/pull/14105))**
496
497 - **(REF; dev/core#873) MailingAB - Migrate "copy winner" logic from JS to PHP
498 ([14045](https://github.com/civicrm/civicrm-core/pull/14045))**
499
500 - **(REF) Don't pass activity object to addCaseActivityLinks
501 ([14110](https://github.com/civicrm/civicrm-core/pull/14110))**
502
503 - **(REF) Use shared function to check inbound email permissions
504 ([14109](https://github.com/civicrm/civicrm-core/pull/14109))**
505
506 - **(REF) Follow up tidy up on import fixes
507 ([14117](https://github.com/civicrm/civicrm-core/pull/14117))**
508
509 - **Readability cleanup on EventIncome report (towards bringing it under
510 testing) ([13963](https://github.com/civicrm/civicrm-core/pull/13963))**
511
512 - **Remove deprecated function
513 ([14039](https://github.com/civicrm/civicrm-core/pull/14039))**
514
515 - **Revert "dev/core#553: Creating new event takes value from default value not
516 from saved template for custom fields"
517 ([14121](https://github.com/civicrm/civicrm-core/pull/14121))**
518
519 - **Update docblock for doPayment function
520 ([13844](https://github.com/civicrm/civicrm-core/pull/13844))**
521
522 - **(Cleanup) Remove CRM_Report_Form_Extended
523 ([14149](https://github.com/civicrm/civicrm-core/pull/14149))**
524
525 ## <a name="credits"></a>Credits
526
527 This release was developed by the following code authors:
528
529 AGH Strategies - Alice Frumin, Andrew Hunt; Agileware - Alok Patel; Australian
530 Greens - Seamus Lee; Christian Wach; CiviCRM - Coleman Watts, Tim Otten;
531 CiviDesk - Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy; Dave D; Electronic
532 Frontier Foundation - Mark Burdett; Freeform Solutions - Herb van den Dool;
533 Fuzion - Luke Stewart; Guillaume Rischard; JMA Consulting - Monish Deb; John
534 Kingsnorth; Korlon - Stuart Gaston; Lighthouse Design and Consulting - Brian
535 Shaughnessy; Megaphone Technology Consulting - Jon Goldberg; MJW Consulting -
536 Matthew Wire; Pradeep Nayak; Squiffle Consulting - Aidan Saunders; Tadpole
537 Collective - Kevin Cristiano; Wikimedia Foundation - Eileen McNaughton
538
539 Most authors also reviewed code for this release; in addition, the following
540 reviewers contributed their comments:
541
542 AGH Strategies - Tommy Bobo; DevApp - Adam Kwiatkowski; Fuzion - Jitendra
543 Purohit; JMA Consulting - Joe Murray; Nicol Wistreich; Palante - Morgan
544 Robinson; Skvare - Mark Hanna; Tapash Datta
545
546 ## <a name="feedback"></a>Feedback
547
548 These release notes are edited by Alice Frumin and Andrew Hunt. If you'd like
549 to provide feedback on them, please log in to https://chat.civicrm.org/civicrm
550 and contact `@agh1`.