1cf3e023464c4b2c011d07c11f3c91cf586bd9e3
[civicrm-core.git] / release-notes / 5.46.0.md
1 # CiviCRM 5.46.0
2
3 Released February 2, 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? | |
17 | Change the database schema? | |
18 | Alter the API? | |
19 | Require attention to configuration options? | |
20 | Fix problems installing or upgrading to a previous version? | |
21 | Introduce features? | |
22 | Fix bugs? | |
23
24 ## <a name="features"></a>Features
25
26 ### Core CiviCRM
27
28 - **crm- Missing Summary ([22303](https://github.com/civicrm/civicrm-core/pull/22303))**
29
30 ## <a name="bugs"></a>Bugs resolved
31
32 ### Core CiviCRM
33
34 - **dev/core#3028 - For invalid greetings, return '' instead of failing ([22650](https://github.com/civicrm/civicrm-core/pull/22650))**
35
36 - **Extensions - Add dependency status check ([22640](https://github.com/civicrm/civicrm-core/pull/22640))**
37
38 - **ExtensionUpgrades - Skip trying to upgrade missing dependencies ([22623](https://github.com/civicrm/civicrm-core/pull/22623))**
39
40 - **APIv4 - Rename 'ReadOnly' trait to 'ReadOnlyEntity' to avoid PHP error ([22626](https://github.com/civicrm/civicrm-core/pull/22626))**
41
42 - **SearchKit - Fix running searches for anonymous users ([22597](https://github.com/civicrm/civicrm-core/pull/22597))**
43
44 - **Use api for entityRole - addresses save issue on the form ([22589](https://github.com/civicrm/civicrm-core/pull/22589))**
45
46 - **[REF] Upgrade JQuery UI to 1.13.0 ([22583](https://github.com/civicrm/civicrm-core/pull/22583))**
47
48 - **[dev/core#3029] Avoid risking a TypeError when evaluating tokens for non-existent custom fields ([22537](https://github.com/civicrm/civicrm-core/pull/22537))**
49
50 - **SearchKit - Fix token selector to use expression alias ([22539](https://github.com/civicrm/civicrm-core/pull/22539))**
51
52 - **SearchKit - Facilitate popup forms ([22490](https://github.com/civicrm/civicrm-core/pull/22490))**
53
54 - **Cleanup test class ([22493](https://github.com/civicrm/civicrm-core/pull/22493))**
55
56 - **dev/core#3026 - 5.46 version of 22478 ([22479](https://github.com/civicrm/civicrm-core/pull/22479))**
57
58 - **Crash when adding a relationship when CiviMember is disabled ([22451](https://github.com/civicrm/civicrm-core/pull/22451))**
59
60 - **Use field value function to get html signature ([22445](https://github.com/civicrm/civicrm-core/pull/22445))**
61
62 - **fixes report#93: SearchKit shows broken external URLs ([22437](https://github.com/civicrm/civicrm-core/pull/22437))**
63
64 - **Fix input type for smarty number formatting (more forgiving) ([22429](https://github.com/civicrm/civicrm-core/pull/22429))**
65
66 - **[NFC] isDir unit test fails on php 7 'min' matrix ([22418](https://github.com/civicrm/civicrm-core/pull/22418))**
67
68 - **Remove unnecessary pass-by-ref ([22393](https://github.com/civicrm/civicrm-core/pull/22393))**
69
70 - **Privatise function ([22392](https://github.com/civicrm/civicrm-core/pull/22392))**
71
72 - **[REF] Remove handling for relationshipID ([22391](https://github.com/civicrm/civicrm-core/pull/22391))**
73
74 - **Ensure getDuplicateContacts always returns an array ([22394](https://github.com/civicrm/civicrm-core/pull/22394))**
75
76 - **REF - Use `CRM_Contact_BAO_ContactType::basicTypes()` instead of hardcoded lists ([22389](https://github.com/civicrm/civicrm-core/pull/22389))**
77
78 - **DedupeRules - Translate contact type labels, respect enabled contact types ([22383](https://github.com/civicrm/civicrm-core/pull/22383))**
79
80 - **[REF] Further cleanup on employer create ([22390](https://github.com/civicrm/civicrm-core/pull/22390))**
81
82 - **Afform - UI and contextual titles for search displays ([22319](https://github.com/civicrm/civicrm-core/pull/22319))**
83
84 - **Smarty modifier - stop using isset to check taxTerm ([22323](https://github.com/civicrm/civicrm-core/pull/22323))**
85
86 - **dev/core#2752 Allow financial_trxns to be viewed ([21178](https://github.com/civicrm/civicrm-core/pull/21178))**
87
88 - **Remove unused function ([22388](https://github.com/civicrm/civicrm-core/pull/22388))**
89
90 - **(NFC) Cleanup test class ([22384](https://github.com/civicrm/civicrm-core/pull/22384))**
91
92 - **dev/core#3001 escape single quotes when rendering tokens in html format ([22387](https://github.com/civicrm/civicrm-core/pull/22387))**
93
94 - **5.45.0 release notes: added late changes ([22386](https://github.com/civicrm/civicrm-core/pull/22386))**
95
96 - **Add system status check for missing dedupe rules ([22369](https://github.com/civicrm/civicrm-core/pull/22369))**
97
98 - **Ensure dashboardLinks assigned to prevent e-notice ([22378](https://github.com/civicrm/civicrm-core/pull/22378))**
99
100 - **APIv4 Explorer - Format array params using add methods instead of set ([22382](https://github.com/civicrm/civicrm-core/pull/22382))**
101
102 - **[Ref] Add getter for priceSetID and use full form flow ([22267](https://github.com/civicrm/civicrm-core/pull/22267))**
103
104 - **SearchKit - Fix editable dates on standalone form ([22366](https://github.com/civicrm/civicrm-core/pull/22366))**
105
106 - **SearchKit - Contextual "View" button ([22367](https://github.com/civicrm/civicrm-core/pull/22367))**
107
108 - **Fix E_WARNING access array offset on null when creating new contribution page ([22373](https://github.com/civicrm/civicrm-core/pull/22373))**
109
110 - **dev/report#90 - Don't crash search_kit on upgrade from 5.35 ([22375](https://github.com/civicrm/civicrm-core/pull/22375))**
111
112 - **dev/core#2773 Add an ACL to demo data ([22377](https://github.com/civicrm/civicrm-core/pull/22377))**
113
114 - **enotice fix (with default modifiers) ([22372](https://github.com/civicrm/civicrm-core/pull/22372))**
115
116 - **Fix "Import Multi-Value Custom Data" ([22365](https://github.com/civicrm/civicrm-core/pull/22365))**
117
118 - **Do not escape showHideBlocks by default ([22371](https://github.com/civicrm/civicrm-core/pull/22371))**
119
120 - **Formatting cleanup ([22374](https://github.com/civicrm/civicrm-core/pull/22374))**
121
122 - **Ensure we don't get previously set honoree values in receipts ([21483](https://github.com/civicrm/civicrm-core/pull/21483))**
123
124 - **Fix notices on acl page ([22370](https://github.com/civicrm/civicrm-core/pull/22370))**
125
126 - **SearchKit - Allow aggregate columns to be links ([22356](https://github.com/civicrm/civicrm-core/pull/22356))**
127
128 - **Fix PropertyBag setRecurInstallments to accept 0 ([21517](https://github.com/civicrm/civicrm-core/pull/21517))**
129
130 - **Use new money formatting util for smarty formatting ([22309](https://github.com/civicrm/civicrm-core/pull/22309))**
131
132 - **dev/financial#57 Hide recur trxn_id if it matches recur processor_id ([21916](https://github.com/civicrm/civicrm-core/pull/21916))**
133
134 - **Improve accessibility - associate label and fields ([22361](https://github.com/civicrm/civicrm-core/pull/22361))**
135
136 - **Fix campaign dashboard to work with default escaping ([22364](https://github.com/civicrm/civicrm-core/pull/22364))**
137
138 - **Fix over-escaping when default escaping is on ([22363](https://github.com/civicrm/civicrm-core/pull/22363))**
139
140 - **Fix escape-by-default ([22362](https://github.com/civicrm/civicrm-core/pull/22362))**
141
142 - **(dev/core#3012) Expose email on hold as filter for report ([22357](https://github.com/civicrm/civicrm-core/pull/22357))**
143
144 - **APIv4 - Set 'activity_type_id' to required ([22359](https://github.com/civicrm/civicrm-core/pull/22359))**
145
146 - **[NFC] docblock improvements to Import_Field classes ([22360](https://github.com/civicrm/civicrm-core/pull/22360))**
147
148 - **Allow chart dropdown labels to be translatable. ([22349](https://github.com/civicrm/civicrm-core/pull/22349))**
149
150 - **Add state name to export fields ([22318](https://github.com/civicrm/civicrm-core/pull/22318))**
151
152 - **dev/drupal#172 - module status used incorrectly in drupal 8 to determine which modules to care about for managed entities ([22350](https://github.com/civicrm/civicrm-core/pull/22350))**
153
154 - **Remove unnecessary id attribute. ([22347](https://github.com/civicrm/civicrm-core/pull/22347))**
155
156 - **5.45 ([22354](https://github.com/civicrm/civicrm-core/pull/22354))**
157
158 - **Fix tests that fail after 2021 ([22352](https://github.com/civicrm/civicrm-core/pull/22352))**
159
160 - **SqlParallel - Enable more tests. Fix compatiblity with `release_time` ([22326](https://github.com/civicrm/civicrm-core/pull/22326))**
161
162 - **dev/drupal#172 - Deprecated function call in Drupal 9.3 ([22337](https://github.com/civicrm/civicrm-core/pull/22337))**
163
164 - **Use JS escaping for {ts} calls in a JS context ([22348](https://github.com/civicrm/civicrm-core/pull/22348))**
165
166 - **Fix membership test fail for Dec 31 ([22351](https://github.com/civicrm/civicrm-core/pull/22351))**
167
168 - **Add workflow template classes for contributions ([22340](https://github.com/civicrm/civicrm-core/pull/22340))**
169
170 - **SearchKit - Allow functions in the WHERE clause ([22241](https://github.com/civicrm/civicrm-core/pull/22241))**
171
172 - **dev/core#2752 Use acl, not blanket permissions on FinancialAccount, FinancialType, EntityFinancialAccount ([21181](https://github.com/civicrm/civicrm-core/pull/21181))**
173
174 - **[REF] Deprecated old getContributionStatuses ([22345](https://github.com/civicrm/civicrm-core/pull/22345))**
175
176 - **dev/core#3001 escape single quotes when rendering tokens in html format ([22285](https://github.com/civicrm/civicrm-core/pull/22285))**
177
178 - **[REF] Simplify getContributionStatuses ([22280](https://github.com/civicrm/civicrm-core/pull/22280))**
179
180 - **5.45 to master ([22342](https://github.com/civicrm/civicrm-core/pull/22342))**
181
182 - **SearchKit - Fix UI for configuring display pager limit ([22321](https://github.com/civicrm/civicrm-core/pull/22321))**
183
184 - **[NFC] CRM_Core_Exception incorrectly called without message ([22339](https://github.com/civicrm/civicrm-core/pull/22339))**
185
186 - **Find Activities Search, default search option for Activity Status will exclude Activities by default which do not have a status of Scheduled or Completed. Confuses and frustrates End Users. ([21596](https://github.com/civicrm/civicrm-core/pull/21596))**
187
188 - **Fix params passed to setStatus method ([22338](https://github.com/civicrm/civicrm-core/pull/22338))**
189
190 - **Fix Profile helptext menu reference to reCaptcha (by r4zoli) ([22333](https://github.com/civicrm/civicrm-core/pull/22333))**
191
192 - **Wrap another set of hardcoded strings in {ts} ([22315](https://github.com/civicrm/civicrm-core/pull/22315))**
193
194 - **Fix inaccuracies and mistakes in comments (especially phpdoc comments) ([22334](https://github.com/civicrm/civicrm-core/pull/22334))**
195
196 - **Correctly mark updateStatusMessage method as static ([22335](https://github.com/civicrm/civicrm-core/pull/22335))**
197
198 - **Fix typo. CRM_Core_Execption should be CRM_Core_Exception ([22336](https://github.com/civicrm/civicrm-core/pull/22336))**
199
200 - **Remove unused method getGrantStatusOptGroup ([22332](https://github.com/civicrm/civicrm-core/pull/22332))**
201
202 - **Fix JS Error for Free event with multiple participant on registration… ([22310](https://github.com/civicrm/civicrm-core/pull/22310))**
203
204 - **SearchKit - Fix column headers for custom fields in default display ([22331](https://github.com/civicrm/civicrm-core/pull/22331))**
205
206 - **APIv4 - Fix saving NULL as custom field value ([22328](https://github.com/civicrm/civicrm-core/pull/22328))**
207
208 - **APIv4 - Set default status when creating GroupContact record ([22322](https://github.com/civicrm/civicrm-core/pull/22322))**
209
210 - **Add authx_login() API for backend script authentication (alt) ([22292](https://github.com/civicrm/civicrm-core/pull/22292))**
211
212 - **Demo sample data - Add in some mixed currency contributions ([22307](https://github.com/civicrm/civicrm-core/pull/22307))**
213
214 - **Allow text to be translated and fix URL paths in calls to docURL() function. ([22311](https://github.com/civicrm/civicrm-core/pull/22311))**
215
216 - **Event Registration: initialize array ([22312](https://github.com/civicrm/civicrm-core/pull/22312))**
217
218 - **5.45 ([22317](https://github.com/civicrm/civicrm-core/pull/22317))**
219
220 - **APIv3 - Fix overzealous pseudoconstant matching ([22298](https://github.com/civicrm/civicrm-core/pull/22298))**
221
222 - **SearchKit - Add links for CustomField and CustomGroup entities ([22302](https://github.com/civicrm/civicrm-core/pull/22302))**
223
224 - **E-notice fix (smarty) ([22308](https://github.com/civicrm/civicrm-core/pull/22308))**
225
226 - **Fix char-set for default escaping ([22306](https://github.com/civicrm/civicrm-core/pull/22306))**
227
228 - **SearchKit - Tweak export explorer link icon + format ([22300](https://github.com/civicrm/civicrm-core/pull/22300))**
229
230 - **Display label before input elements on SMTP settings page ([22304](https://github.com/civicrm/civicrm-core/pull/22304))**
231
232 - **Do not apply default escaping to multiselects on currency form ([22294](https://github.com/civicrm/civicrm-core/pull/22294))**
233
234 - **Fix broken links in default modifier mode on manage contributions ([22290](https://github.com/civicrm/civicrm-core/pull/22290))**
235
236 - **Merge 5.45 to master ([22297](https://github.com/civicrm/civicrm-core/pull/22297))**
237
238 - **Follow up fix on recur data ([22301](https://github.com/civicrm/civicrm-core/pull/22301))**
239
240 - **Add recurring conributions to sample data ([22296](https://github.com/civicrm/civicrm-core/pull/22296))**
241
242 - **[REF] move code into the function ([22288](https://github.com/civicrm/civicrm-core/pull/22288))**
243
244 - **Apiv4 - Make Groups a managed entity, fix 'null' bugs in BAO_Group ([22228](https://github.com/civicrm/civicrm-core/pull/22228))**
245
246 - **Enotice fixes on ContributionPage dash ([22289](https://github.com/civicrm/civicrm-core/pull/22289))**
247
248 - **[REF] Stop passing this as form, set in function ([22287](https://github.com/civicrm/civicrm-core/pull/22287))**
249
250 - **Add workflow template for recurring cancelled ([21611](https://github.com/civicrm/civicrm-core/pull/21611))**
251
252 - **SearchKit - Import/Export saved search configuration ([22229](https://github.com/civicrm/civicrm-core/pull/22229))**
253
254 - **[REF] Remove now non-variable variables from previously shared code ([22284](https://github.com/civicrm/civicrm-core/pull/22284))**
255
256 - **Cleanup Smarty e-notices on campaign dashboard ([22283](https://github.com/civicrm/civicrm-core/pull/22283))**
257
258 - **[REF] Duplicate & unshare processFormContribution ([22276](https://github.com/civicrm/civicrm-core/pull/22276))**
259
260 - **CustomGroup - Add pseudoconstant for extends column ([22282](https://github.com/civicrm/civicrm-core/pull/22282))**
261
262 - **dev/core#2996 Increment php recommndations ([22265](https://github.com/civicrm/civicrm-core/pull/22265))**
263
264 - **dev/core#567 Add test shell ([22275](https://github.com/civicrm/civicrm-core/pull/22275))**
265
266 - **Remove unused function CRM/Utils/Mail/EmailProcessor::cleanupDir ([22278](https://github.com/civicrm/civicrm-core/pull/22278))**
267
268 - **Remove unnecessary pass-by-ref ([22279](https://github.com/civicrm/civicrm-core/pull/22279))**
269
270 - **[NFC] Cleanup in Authorize.net test class ([22272](https://github.com/civicrm/civicrm-core/pull/22272))**
271
272 - **Move two more functions to financialProcessor ([21927](https://github.com/civicrm/civicrm-core/pull/21927))**
273
274 - **APIv4 Explorer - Make selected language and format bookmarkable ([22233](https://github.com/civicrm/civicrm-core/pull/22233))**
275
276 - **Fix test to use full form flow ([22266](https://github.com/civicrm/civicrm-core/pull/22266))**
277
278 - **[NFC] - Try to work around failing tests ([22269](https://github.com/civicrm/civicrm-core/pull/22269))**
279
280 - **5.45 ([22271](https://github.com/civicrm/civicrm-core/pull/22271))**
281
282 - **dev/core#2927 - Avoid warnings for is_dir() when open_basedir is in effect ([22107](https://github.com/civicrm/civicrm-core/pull/22107))**
283
284 - **Resources: set language-specific cacheCode, fixes AngularJS translation with multilingual ([22236](https://github.com/civicrm/civicrm-core/pull/22236))**
285
286 - **Add system status warning to display scheduled job failures ([21762](https://github.com/civicrm/civicrm-core/pull/21762))**
287
288 - **[REF] Remove more params that are unused now function is not shared ([22261](https://github.com/civicrm/civicrm-core/pull/22261))**
289
290 - **Remove handling for always-truthy var being false ([22260](https://github.com/civicrm/civicrm-core/pull/22260))**
291
292 - **Rename protected function ([22259](https://github.com/civicrm/civicrm-core/pull/22259))**
293
294 - **Remove never passed variables ([22258](https://github.com/civicrm/civicrm-core/pull/22258))**
295
296 - **[REF] Duplicate function to allow us to work it out of the code ([22254](https://github.com/civicrm/civicrm-core/pull/22254))**
297
298 - **(NFC) APIv4: Add help info for multi-record custom field sets ([22257](https://github.com/civicrm/civicrm-core/pull/22257))**
299
300 - **Smarty variables] Remove another isset - deferredFinancialType ([22183](https://github.com/civicrm/civicrm-core/pull/22183))**
301
302 - **Do not default-escape weight field on order ([22256](https://github.com/civicrm/civicrm-core/pull/22256))**
303
304 - **[REF] Minor parameter simplification ([22253](https://github.com/civicrm/civicrm-core/pull/22253))**
305
306 - **[NFC] Test cleanup ([22251](https://github.com/civicrm/civicrm-core/pull/22251))**
307
308 - **[NFC] Minor cleanup in test class ([22249](https://github.com/civicrm/civicrm-core/pull/22249))**
309
310 - **Move require_once for smarty modifier due to order issues ([22252](https://github.com/civicrm/civicrm-core/pull/22252))**
311
312 - **dev/core#2825 - Make source contact required for activities on the form ([22243](https://github.com/civicrm/civicrm-core/pull/22243))**
313
314 - **Contributor key: Add Matt Trim ([22248](https://github.com/civicrm/civicrm-core/pull/22248))**
315
316 - **dev/core#2977 - For custom group creation, flip the default display settings ([22244](https://github.com/civicrm/civicrm-core/pull/22244))**
317
318 - **Update Brick/Money to 0.5.3 ([22246](https://github.com/civicrm/civicrm-core/pull/22246))**
319
320 - **Contact/BAO/Query.php: fix searching for whitespace ([22240](https://github.com/civicrm/civicrm-core/pull/22240))**
321
322 - **[REF] Afform - Use APIv4 for managed dashboard ([22213](https://github.com/civicrm/civicrm-core/pull/22213))**
323
324 - **(dev/core#2962) get contact id for the mailing along with display nam… ([22096](https://github.com/civicrm/civicrm-core/pull/22096))**
325
326 - **Simplify autogenerated boilerplate upgrader class ([22225](https://github.com/civicrm/civicrm-core/pull/22225))**
327
328 - **Upgrade - Bump minimum upgradable version to 4.6.12 ([22238](https://github.com/civicrm/civicrm-core/pull/22238))**
329
330 - **Smarty variables] Another isset bites the dust ([22186](https://github.com/civicrm/civicrm-core/pull/22186))**
331
332 - **(REF) CRM/Upgrade - Remove unused entrypoint `verifyPreDBstate()` ([22237](https://github.com/civicrm/civicrm-core/pull/22237))**
333
334 - **Smarty variables] Remove isset from batch form ([22187](https://github.com/civicrm/civicrm-core/pull/22187))**
335
336 - **Afform - Set date-range defaults ([22234](https://github.com/civicrm/civicrm-core/pull/22234))**
337
338 - **5.45 ([22232](https://github.com/civicrm/civicrm-core/pull/22232))**
339
340 - **NFC - Delete boilerplate comments and empty functions from upgrade classes ([22226](https://github.com/civicrm/civicrm-core/pull/22226))**
341
342 - **[Smarty variables] remove isset from merge screen ([22193](https://github.com/civicrm/civicrm-core/pull/22193))**
343
344 - **dev/core#2984 - Clarify API error when component is disabled ([22231](https://github.com/civicrm/civicrm-core/pull/22231))**
345
346 - **(dev/core#2979) remove the limit of 15 max values for multiple values… ([22214](https://github.com/civicrm/civicrm-core/pull/22214))**
347
348 - **[Smarty variables] Fix overzealous escaping with smarty default escaping ([22194](https://github.com/civicrm/civicrm-core/pull/22194))**
349
350 - **[Smarty variables] Remove issets relating to auto_renew ([22195](https://github.com/civicrm/civicrm-core/pull/22195))**
351
352 - **[Smarty variables] Remove issets from payment processor form ([22192](https://github.com/civicrm/civicrm-core/pull/22192))**
353
354 - **dev/core#2982 - Deprecated warnings for money formatting in Repeat Contributions CiviReport ([22217](https://github.com/civicrm/civicrm-core/pull/22217))**
355
356 - **NFC - Cleanup messy boilerplate ([22224](https://github.com/civicrm/civicrm-core/pull/22224))**
357
358 - **Initial refactor of createProfileContact groups ([18158](https://github.com/civicrm/civicrm-core/pull/18158))**
359
360 - **5.45 ([22222](https://github.com/civicrm/civicrm-core/pull/22222))**
361
362 - **[REF] Add in getVersion override for Drupal 8/9 to support cv testing… ([22220](https://github.com/civicrm/civicrm-core/pull/22220))**
363
364 - **Deprecated function drupal_get_path() ([69](https://github.com/civicrm/civicrm-drupal-8/pull/69))**
365
366 - **Fix unreplaced template vars in civicrm.settings.php when using drush installer ([67](https://github.com/civicrm/civicrm-drupal-8/pull/67))**
367
368 - **(Backport) HookTest - Fix execution on PHP 8 ([269](https://github.com/civicrm/civicrm-wordpress/pull/269))**
369
370 - **(dev/core#1615) wp-cli - Perform CLI installations using Civi\Setup ([264](https://github.com/civicrm/civicrm-wordpress/pull/264))**
371
372 - **HookTest - Fix execution on PHP 8 ([266](https://github.com/civicrm/civicrm-wordpress/pull/266))**
373
374 - **dev/drupal#169 - Fix namespacing in kcfinder ([338](https://github.com/civicrm/civicrm-packages/pull/338))**
375
376 - **Update jquery.tokeninput.js to 1.6.1 ([336](https://github.com/civicrm/civicrm-packages/pull/336))**
377
378 ## <a name="misc"></a>Miscellany
379
380 ## <a name="credits"></a>Credits
381
382 This release was developed by the following code authors:
383
384 AGH Strategies - Alice Frumin, Andie Hunt; Agileware - Justin Freeman; BrightMinded Ltd - Bradley Taylor; Circle Interactive - Matt Trim; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy; Dave D; Jens Schuppe; JMA Consulting - Seamus Lee; Megaphone Technology Consulting - Jon Goldberg; Miguel Almeida; MJW Consulting - Matthew Wire; Progressive Technology Project - Jamie McClelland; Skvare - Sunil Pawar; Squiffle Consulting - Aidan Saunders; Wikimedia Foundation - Eileen McNaughton
385
386 Most authors also reviewed code for this release; in addition, the following
387 reviewers contributed their comments:
388
389 Artful Robot - Rich Lott; Ben Mango; Betty Dolfing; BrightMinded Ltd - Bradley Taylor; Christian Wach; Circle Interactive - Matt Trim; civibot[bot]; CiviCoop - Jaap Jansma, Klaas Eikelboom; civicrm-builder; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; Coop SymbioTIC - Mathieu Lutfy, Samuel Vanhove; Dave D; Freeform Solutions - Herb van den Dool; Fuzion - Jitendra Purohit, Peter Davis; Greenpeace Central and Eastern Europe - Patrick Figel; Jens Schuppe; JMA Consulting - Joe Murray, Monish Deb, Seamus Lee; Lighthouse Consulting and Design - Brian Shaughnessy; Megaphone Technology Consulting - Jon Goldberg; Mikey O'Toole; MJW Consulting - Matthew Wire; Semper IT - Karin Gerritsen; Skvare - Sunil Pawar; Tadpole Collective - Kevin Cristiano; tapashdatta; Third Sector Design - William Mortada; Wikimedia Foundation - Eileen McNaughton, Elliott Eggleston