4.7.16 release notes: first bit of feature descriptions
[civicrm-core.git] / release-notes / 4.7.16.md
1 # CiviCRM 4.7.16
2
3 Released February 8, 2017
4
5 - **[Features](#features)**
6 - **[Bugs resolved](#bugs)**
7 - **[Credits](#credits)**
8
9 ## <a name="features"></a>Features
10
11 ### Core CiviCRM
12
13 - **[CRM-19925](https://issues.civicrm.org/jira/browse/CRM-19925) Add metadata
14 to fields array with entity info & date format info
15 ([9727](https://github.com/civicrm/civicrm-core/pull/9727))**
16
17 The data access objects (DAO) now include additional information for each
18 field, including the table name, entity, and business access object (BAO).
19
20 - **[CRM-19829](https://issues.civicrm.org/jira/browse/CRM-19829) Activity feed
21 ([9714](https://github.com/civicrm/civicrm-core/pull/9714),
22 [9649](https://github.com/civicrm/civicrm-core/pull/9649), and
23 [9624](https://github.com/civicrm/civicrm-core/pull/9624))
24 (Preliminary work)**
25
26 The Attachment API now includes the appropriate icon class name from Font
27 Awesome, a `CRM.cache` object in Javascript is available to set and retrieve
28 information from `window.localStorage`, and a new Angular utility
29 `crmThrottle` prevents a function from running concurrently if called several
30 times in rapid succession.
31
32 - **[CRM-19893](https://issues.civicrm.org/jira/browse/CRM-19893) Activity Type
33 Categories ([9696](https://github.com/civicrm/civicrm-core/pull/9696))
34 (Preliminary work)**
35
36 The option value form now displays the option's grouping if available.
37
38 - **[CRM-19831](https://issues.civicrm.org/jira/browse/CRM-19831) Function
39 `CRM_Contact_BAO_Group::getGroupsHierarchy` performes bad with 3000 groups
40 ([9673](https://github.com/civicrm/civicrm-core/pull/9673) and
41 [9633](https://github.com/civicrm/civicrm-core/pull/9633))**
42
43 Group listing performance is improved on sites with many groups.
44
45 - **[CRM-19256](https://issues.civicrm.org/jira/browse/CRM-19256) Add a hook to
46 dynamically escalate permissions
47 ([8916](https://github.com/civicrm/civicrm-core/pull/8916))**
48
49 A new `hook_civicrm_permission_check` is invoked whenever a user's permissions
50 are evaluated. (See [hook
51 documentation](https://wiki.civicrm.org/confluence/display/CRMDOC/hook_civicrm_permission_check)
52 for details and examples.)
53
54 - **[CRM-19853](https://issues.civicrm.org/jira/browse/CRM-19853) Change
55 interval select controls in Scheduled Reminders with number controls
56 ([9664](https://github.com/civicrm/civicrm-core/pull/9664))**
57
58 A few drop-down fields in the Scheduled Reminders interface that were simply
59 picking integers have been replaced with regular text fields.
60
61 - **[CRM-19769](https://issues.civicrm.org/jira/browse/CRM-19769) Colors for
62 tags and [CRM-19779](https://issues.civicrm.org/jira/browse/CRM-19779) Colors
63 for activity statuses
64 ([9660](https://github.com/civicrm/civicrm-core/pull/9660),
65 [9600](https://github.com/civicrm/civicrm-core/pull/9600), and
66 [9554](https://github.com/civicrm/civicrm-core/pull/9554))**
67
68 You can choose colors for tags and activity statuses for better visibility.
69
70 - **[CRM-19770](https://issues.civicrm.org/jira/browse/CRM-19770) Favorite
71 (starred) activities
72 ([9629](https://github.com/civicrm/civicrm-core/pull/9629))**
73
74 You can now mark favorite activities with stars.
75
76 - **[CRM-19816](https://issues.civicrm.org/jira/browse/CRM-19816) Improve
77 activity search filters
78 ([9609](https://github.com/civicrm/civicrm-core/pull/9609))**
79
80 - **[CRM-19447](https://issues.civicrm.org/jira/browse/CRM-19447) Improve
81 Activity Subject/Details text search to be similiar to Notes Subject/Body
82 ([9536](https://github.com/civicrm/civicrm-core/pull/9536))**
83
84 - **[CRM-19810](https://issues.civicrm.org/jira/browse/CRM-19810) Api3 - Add
85 joins on optionValue table
86 ([9593](https://github.com/civicrm/civicrm-core/pull/9593))**
87
88 ### CiviCase
89
90 - **[CRM-19723](https://issues.civicrm.org/jira/browse/CRM-19723) Icons for
91 activity types ([9707](https://github.com/civicrm/civicrm-core/pull/9707),
92 [9553](https://github.com/civicrm/civicrm-core/pull/9553), and
93 [9528](https://github.com/civicrm/civicrm-core/pull/9528))**
94
95 - **[CRM-19806](https://issues.civicrm.org/jira/browse/CRM-19806) CiviCase using
96 two formlinks when it only needs one
97 ([9586](https://github.com/civicrm/civicrm-core/pull/9586))**
98
99 ### CiviMail
100
101 - **[CRM-19690](https://issues.civicrm.org/jira/browse/CRM-19690) Allow
102 alternative email templating systems
103 ([9689](https://github.com/civicrm/civicrm-core/pull/9689),
104 [9566](https://github.com/civicrm/civicrm-core/pull/9566),
105 [9619](https://github.com/civicrm/civicrm-core/pull/9619),
106 [9565](https://github.com/civicrm/civicrm-core/pull/9565),
107 [9564](https://github.com/civicrm/civicrm-core/pull/9564),
108 [9563](https://github.com/civicrm/civicrm-core/pull/9563), and
109 [9562](https://github.com/civicrm/civicrm-core/pull/9562))**
110
111 - **[CRM-19783](https://issues.civicrm.org/jira/browse/CRM-19783) Accessibility
112 Error - CiviCRM Subscription Page
113 ([9606](https://github.com/civicrm/civicrm-core/pull/9606))**
114
115 ### CiviCRM Search, CiviReport
116
117 - **[CRM-19883](https://issues.civicrm.org/jira/browse/CRM-19883) Activity
118 Priority Field is Not Included in Advanced Search or Activity Reports
119 ([9687](https://github.com/civicrm/civicrm-core/pull/9687))**
120
121 ### CiviContribute, Core CiviCRM
122
123 - **[CRM-8526](https://issues.civicrm.org/jira/browse/CRM-8526) Support
124 [contribution.custom_nn] tokens in templates
125 ([9661](https://github.com/civicrm/civicrm-core/pull/9661))**
126
127 ### CiviCRM API
128
129 - **[CRM-19874](https://issues.civicrm.org/jira/browse/CRM-19874) Allow
130 overriding sort in the getlist API without clobbering pager
131 ([9675](https://github.com/civicrm/civicrm-core/pull/9675))**
132
133 ### CiviEvent
134
135 - **[CRM-19860](https://issues.civicrm.org/jira/browse/CRM-19860) Event
136 participant batch update: respect "options per line" setting for radio buttons
137 ([9667](https://github.com/civicrm/civicrm-core/pull/9667))**
138
139 ### Accounting Integration, CiviContribute, Core CiviCRM
140
141 - **[CRM-16189](https://issues.civicrm.org/jira/browse/CRM-16189) Improve
142 support for Accrual Method bookkeeping
143 ([8870](https://github.com/civicrm/civicrm-core/pull/8870))**
144
145 ### Drupal Integration Modules
146
147 - **[CRM-17917](https://issues.civicrm.org/jira/browse/CRM-17917) Add support
148 for Drupal 8 ([388](https://github.com/civicrm/civicrm-drupal/pull/388))**
149
150 ## <a name="bugs"></a>Bugs resolved
151
152 ### Core CiviCRM
153
154 - **Release notes 4.7.16 [wip]
155 ([9781](https://github.com/civicrm/civicrm-core/pull/9781))**
156
157 - **[CRM-19936](https://issues.civicrm.org/jira/browse/CRM-19936) Membership
158 line items are duplicated when a membership is created or renewed with
159 priceset containing multiple memberships
160 ([9748](https://github.com/civicrm/civicrm-core/pull/9748))**
161
162 - **Comment fixes plus fix inconsistent unused return bool
163 ([9722](https://github.com/civicrm/civicrm-core/pull/9722))**
164
165 - **[nfc] Updated test generated examples
166 ([9720](https://github.com/civicrm/civicrm-core/pull/9720))**
167
168 - **Remove unused var, comments & clean up & refactor caching function
169 ([9721](https://github.com/civicrm/civicrm-core/pull/9721))**
170
171 - **[CRM-19778](https://issues.civicrm.org/jira/browse/CRM-19778) Allowed
172 statuses per case-type
173 ([9705](https://github.com/civicrm/civicrm-core/pull/9705))**
174
175 - **[CRM-19906](https://issues.civicrm.org/jira/browse/CRM-19906) Allow Drupal
176 user names with "@"
177 ([9708](https://github.com/civicrm/civicrm-core/pull/9708))**
178
179 - **[CRM-19897](https://issues.civicrm.org/jira/browse/CRM-19897) Cannot edit
180 multiple case activities via profile, because deprecated "access CiviCase"
181 permission is referenced
182 ([9703](https://github.com/civicrm/civicrm-core/pull/9703))**
183
184 - **[nfc] Comment fixes, remove one unused var, declare visibility
185 ([9717](https://github.com/civicrm/civicrm-core/pull/9717))**
186
187 - **[NFC] add comments & extract function in contribution search
188 ([9716](https://github.com/civicrm/civicrm-core/pull/9716))**
189
190 - **[CRM-19003](https://issues.civicrm.org/jira/browse/CRM-19003) Profile
191 listing doesn't produce expected results when range-searching custom date
192 field ([9699](https://github.com/civicrm/civicrm-core/pull/9699))**
193
194 - **[CRM-19801](https://issues.civicrm.org/jira/browse/CRM-19801) changing the
195 same relationship type of a relationship from A to B or vice versa does not
196 work ([9579](https://github.com/civicrm/civicrm-core/pull/9579))**
197
198 - **iconPicker style improvements
199 ([9706](https://github.com/civicrm/civicrm-core/pull/9706))**
200
201 - **[CRM-19842](https://issues.civicrm.org/jira/browse/CRM-19842) Can't delete a
202 dedupe rule ([9698](https://github.com/civicrm/civicrm-core/pull/9698))**
203
204 - **[CRM-19794](https://issues.civicrm.org/jira/browse/CRM-19794) Wrong fields
205 displayed when setting a price set for a contribution page
206 ([9697](https://github.com/civicrm/civicrm-core/pull/9697))**
207
208 - **typo fix in New Tag Form.
209 ([9700](https://github.com/civicrm/civicrm-core/pull/9700))**
210
211 - **Docs fix: update for changed URL of Case Management > Setup page.
212 ([9701](https://github.com/civicrm/civicrm-core/pull/9701))**
213
214 - **CRM_Extension_Browser - Allow different cache files for different feeds
215 ([9693](https://github.com/civicrm/civicrm-core/pull/9693))**
216
217 - **[CRM-17663](https://issues.civicrm.org/jira/browse/CRM-17663) Dashlet code
218 improvements ([9672](https://github.com/civicrm/civicrm-core/pull/9672))**
219
220 - **Fire hook_civicrm_emailProcessor('activity') if Activity,create successful
221 ([9651](https://github.com/civicrm/civicrm-core/pull/9651))**
222
223 - **Civi\API\ExternalBatch - Verify that $_ENV is working
224 ([9595](https://github.com/civicrm/civicrm-core/pull/9595))**
225
226 - **Crm 19847 ([9653](https://github.com/civicrm/civicrm-core/pull/9653))**
227
228 - **Comment Fixes ([9659](https://github.com/civicrm/civicrm-core/pull/9659))**
229
230 - **Comments ([9658](https://github.com/civicrm/civicrm-core/pull/9658))**
231
232 - **(NFC) Civi/*, CRM_Utils_SQL_Select - Fix various warnings
233 ([9657](https://github.com/civicrm/civicrm-core/pull/9657))**
234
235 - **Add comment blocks
236 ([9656](https://github.com/civicrm/civicrm-core/pull/9656))**
237
238 - **[CRM-19839](https://issues.civicrm.org/jira/browse/CRM-19839) Declare class
239 used on developer tab of CiviCRM reports
240 ([9646](https://github.com/civicrm/civicrm-core/pull/9646))**
241
242 - **allow descendant classes to access the cache array
243 ([9605](https://github.com/civicrm/civicrm-core/pull/9605))**
244
245 - **[CRM-19795](https://issues.civicrm.org/jira/browse/CRM-19795) Contribution
246 page confirmation screen undefined index pay_later_receipt
247 ([9632](https://github.com/civicrm/civicrm-core/pull/9632))**
248
249 - **[CRM-19585](https://issues.civicrm.org/jira/browse/CRM-19585) Sales tax
250 issue ([9598](https://github.com/civicrm/civicrm-core/pull/9598),
251 [9576](https://github.com/civicrm/civicrm-core/pull/9576),
252 [9590](https://github.com/civicrm/civicrm-core/pull/9590), and
253 [9574](https://github.com/civicrm/civicrm-core/pull/9574))**
254
255 - **[CRM-19824](https://issues.civicrm.org/jira/browse/CRM-19824) Event
256 listeners are missing if container cache is disabled
257 ([9617](https://github.com/civicrm/civicrm-core/pull/9617))**
258
259 - **[CRM-19826](https://issues.civicrm.org/jira/browse/CRM-19826) Extensions in
260 "vendor" folder have errant slash
261 ([9618](https://github.com/civicrm/civicrm-core/pull/9618))**
262
263 - **fix header ([9607](https://github.com/civicrm/civicrm-core/pull/9607))**
264
265 - **[CRM-19706](https://issues.civicrm.org/jira/browse/CRM-19706) Smart Group
266 criteria (Activity Status) are not being retained when using 'Edit Smart Group
267 criteria' ([9620](https://github.com/civicrm/civicrm-core/pull/9620))**
268
269 - **[CRM-19624](https://issues.civicrm.org/jira/browse/CRM-19624) Exclude /
270 Include by privacy radio buttons gets reset on Smartgroup re-editing
271 ([9597](https://github.com/civicrm/civicrm-core/pull/9597))**
272
273 - **[CRM-19800](https://issues.civicrm.org/jira/browse/CRM-19800) Incorrect
274 Amount recorded in civicrm_financial_trxn table
275 ([9577](https://github.com/civicrm/civicrm-core/pull/9577))**
276
277 - **[CRM-19817](https://issues.civicrm.org/jira/browse/CRM-19817) Notice error
278 fails membership export
279 ([9610](https://github.com/civicrm/civicrm-core/pull/9610))**
280
281 - **[CRM-19805](https://issues.civicrm.org/jira/browse/CRM-19805) Comparing
282 instead of Assigning
283 ([9591](https://github.com/civicrm/civicrm-core/pull/9591))**
284
285 - **Fix startdate for testMembershipJoinDateFixed
286 ([9608](https://github.com/civicrm/civicrm-core/pull/9608))**
287
288 - **Add select2 class to loc_event_id
289 ([9603](https://github.com/civicrm/civicrm-core/pull/9603))**
290
291 - **[CRM-19812](https://issues.civicrm.org/jira/browse/CRM-19812) Display
292 related contact names in activity.get api
293 ([9599](https://github.com/civicrm/civicrm-core/pull/9599))**
294
295 - **(NFC) CRM_*_Tokens - Reduce redundant docs
296 ([9573](https://github.com/civicrm/civicrm-core/pull/9573))**
297
298 - **[CRM-19244](https://issues.civicrm.org/jira/browse/CRM-19244) Custom fields
299 with option group not importing
300 ([8906](https://github.com/civicrm/civicrm-core/pull/8906))**
301
302 - **OptionValue Api cleanup - remove unnecessary lookup
303 ([9569](https://github.com/civicrm/civicrm-core/pull/9569))**
304
305 - **[CRM-19789](https://issues.civicrm.org/jira/browse/CRM-19789) Cannot create
306 smart group from 'Find participants'
307 ([9567](https://github.com/civicrm/civicrm-core/pull/9567))**
308
309 - **tools/scripts/phpunit-ls - Fix PhpStorm lookup of PHPUnit_Framework_TestCase
310 ([9535](https://github.com/civicrm/civicrm-core/pull/9535))**
311
312 - **[CRM-18472](https://issues.civicrm.org/jira/browse/CRM-18472) Notice fixes
313 ([9558](https://github.com/civicrm/civicrm-core/pull/9558))**
314
315 - **[CRM-19413](https://issues.civicrm.org/jira/browse/CRM-19413) CiviMail: Test
316 mail notice errors: undefined index
317 ([9550](https://github.com/civicrm/civicrm-core/pull/9550))**
318
319 - **Upgrade cleanup - use addColumn utility instead of sql
320 ([9548](https://github.com/civicrm/civicrm-core/pull/9548))**
321
322 - **API Explorer: Minor usability improvements
323 ([9539](https://github.com/civicrm/civicrm-core/pull/9539))**
324
325 - **Document inconsistent function signature.
326 ([9541](https://github.com/civicrm/civicrm-core/pull/9541))**
327
328 - **fix headers ([421](https://github.com/civicrm/civicrm-drupal/pull/421))**
329
330 - **CiviCRM Menu -- Add PathProcessor to allow parameters to routes to include
331 slashes ([420](https://github.com/civicrm/civicrm-drupal/pull/420))**
332
333 - **Reroll of VTecheira's updates to civicrm.info.yml and civicrm.install
334 ([419](https://github.com/civicrm/civicrm-drupal/pull/419))**
335
336 - **fix headers ([109](https://github.com/civicrm/civicrm-wordpress/pull/109))**
337
338 - **fix headers ([42](https://github.com/civicrm/civicrm-joomla/pull/42))**
339
340 - **Convert drupal to Backdrop and change variable_get/set to state_get/set
341 ([21](https://github.com/civicrm/civicrm-backdrop/pull/21))**
342
343 ### CiviCRM API, Joomla Integration
344
345 - **[CRM-19877](https://issues.civicrm.org/jira/browse/CRM-19877) on Joomla
346 api.Setting.create fails with "option,task not valid settings"
347 ([9678](https://github.com/civicrm/civicrm-core/pull/9678))**
348
349 ### CiviMail, CiviMember
350
351 - **[CRM-19895](https://issues.civicrm.org/jira/browse/CRM-19895) membership
352 renewal page style collapsed if email disabled
353 ([9713](https://github.com/civicrm/civicrm-core/pull/9713))**
354
355 ### CiviEvent
356
357 - **[CRM-19907](https://issues.civicrm.org/jira/browse/CRM-19907) Syntax error
358 generated on CiviEvent Dashboard when show_events is null
359 ([9709](https://github.com/civicrm/civicrm-core/pull/9709))**
360
361 - **[CRM-19832](https://issues.civicrm.org/jira/browse/CRM-19832)
362 hook_civicrm_searchTasks get invoked twice for some entities
363 ([9637](https://github.com/civicrm/civicrm-core/pull/9637))**
364
365 ### CiviCRM Search
366
367 - **[CRM-19875](https://issues.civicrm.org/jira/browse/CRM-19875) Search
368 builder: Fatal error when searching custom field of type "country"
369 ([9695](https://github.com/civicrm/civicrm-core/pull/9695))**
370
371 - **[CRM-19811](https://issues.civicrm.org/jira/browse/CRM-19811) Slow queries
372 due to use of LOWER() in mysql searches, fix contribution search, current
373 employer. Comment elsewhere
374 ([9596](https://github.com/civicrm/civicrm-core/pull/9596))**
375
376 ### CiviCase
377
378 - **[CRM-19890](https://issues.civicrm.org/jira/browse/CRM-19890) Case Manager
379 listed in cases tab is not up to date
380 ([9691](https://github.com/civicrm/civicrm-core/pull/9691))**
381
382 - **[CRM-19754](https://issues.civicrm.org/jira/browse/CRM-19754) CiviCase role
383 relationships reversed
384 ([9560](https://github.com/civicrm/civicrm-core/pull/9560))**
385
386 ### CiviReport
387
388 - **[CRM-19884](https://issues.civicrm.org/jira/browse/CRM-19884) DB Error on
389 Activity Details Report
390 ([9681](https://github.com/civicrm/civicrm-core/pull/9681))**
391
392 - **[CRM-19509](https://issues.civicrm.org/jira/browse/CRM-19509) Add character
393 set and collation to create table statements in reports
394 ([9411](https://github.com/civicrm/civicrm-core/pull/9411))**
395
396 - **[CRM-19807](https://issues.civicrm.org/jira/browse/CRM-19807) MySQL error
397 when adding contacts on a report to a group
398 ([9594](https://github.com/civicrm/civicrm-core/pull/9594))**
399
400 ### Core CiviCRM, WordPress Integration
401
402 - **[CRM-19172](https://issues.civicrm.org/jira/browse/CRM-19172) on behalf form +
403 user account creation attempts to create user for org
404 ([9669](https://github.com/civicrm/civicrm-core/pull/9669))**
405
406 ### CiviContribute
407
408 - **[CRM-19863](https://issues.civicrm.org/jira/browse/CRM-19863) 'item_name'
409 unnecessarily truncated when passed to PayPal
410 ([9677](https://github.com/civicrm/civicrm-core/pull/9677))**
411
412 - **[CRM-19725](https://issues.civicrm.org/jira/browse/CRM-19725) Honoree should
413 never be same as donor
414 ([9503](https://github.com/civicrm/civicrm-core/pull/9503))**
415
416 - **[CRM-19761](https://issues.civicrm.org/jira/browse/CRM-19761) contribution
417 thank you letter generator: unable to export to docx
418 ([9575](https://github.com/civicrm/civicrm-core/pull/9575) and
419 [9568](https://github.com/civicrm/civicrm-core/pull/9568))**
420
421 - **[CRM-19799](https://issues.civicrm.org/jira/browse/CRM-19799) LineItems
422 incorrect at both Contribution Level and Financial Accounts Level
423 ([9580](https://github.com/civicrm/civicrm-core/pull/9580))**
424
425 - **[CRM-19802](https://issues.civicrm.org/jira/browse/CRM-19802) Contribution
426 page : missing translation
427 ([9581](https://github.com/civicrm/civicrm-core/pull/9581))**
428
429 - **[CRM-19777](https://issues.civicrm.org/jira/browse/CRM-19777) Edit
430 contribution : wrong decimal separator on total_amount
431 ([9556](https://github.com/civicrm/civicrm-core/pull/9556))**
432
433 ### CiviContribute, CiviEvent
434
435 - **[CRM-19803](https://issues.civicrm.org/jira/browse/CRM-19803) View Payment
436 popup of a participant does not show refunds
437 ([9634](https://github.com/civicrm/civicrm-core/pull/9634) and
438 [9592](https://github.com/civicrm/civicrm-core/pull/9592))**
439
440 - **[CRM-19288](https://issues.civicrm.org/jira/browse/CRM-19288) VAT not
441 included for additional participant fee when registering for events
442 ([9545](https://github.com/civicrm/civicrm-core/pull/9545))**
443
444 ### CiviCRM API
445
446 - **[CRM-18591](https://issues.civicrm.org/jira/browse/CRM-18591) group_type
447 parameter ignored when using API to create group
448 ([9578](https://github.com/civicrm/civicrm-core/pull/9578))**
449
450 ### Accounting Integration, CiviContribute
451
452 - **[CRM-19804](https://issues.civicrm.org/jira/browse/CRM-19804) Pre() and
453 Post() hook for Financial Account
454 ([9584](https://github.com/civicrm/civicrm-core/pull/9584))**
455
456 ### CiviEvent, CiviReport
457
458 - **[CRM-19782](https://issues.civicrm.org/jira/browse/CRM-19782) "View" link on
459 printed Participant Listing Report renders display name unreadable
460 ([9546](https://github.com/civicrm/civicrm-core/pull/9546))**
461
462 ### Drupal Integration Modules
463
464 - **[CRM-19740](https://issues.civicrm.org/jira/browse/CRM-19740) Regression in
465 phone number Drupal views integration
466 ([415](https://github.com/civicrm/civicrm-drupal/pull/415))**
467
468 ## <a name="credits"></a>Credits
469
470 This release was developed by the following code authors:
471
472 AGH Strategies - Alice Frumin, Andrew Hunt; ATD Fourth World - Véronique
473 Gratioulet; Agileware - Agileware Team; Aidan Saunders; AppChecker; Australian
474 reens - Seamus Lee; CiviCRM - Coleman Watts, Jitendra Purohit, Tim Otten, Monish
475 Deb, Yashodha Chaku; CiviCoop - Jaap Jansma; CiviDesk - Nicolas Ganivet;
476 Community Builders - Dejan Lukic; CompuCorp - Omar Abu Hussein; Coop SymbioTIC -
477 Mathieu Lutfy; Erich Schulz; Freeform Solutions - Herb van den Dool; Fuzion -
478 Chris Burgess, Eileen McNaughton; Ginkgo Street Labs - Frank Gómez; JMA
479 Consulting - Edsel Lopez, Jon Goldberg, Pradeep Nayak; John Kingsnorth; Joinery -
480 Allen Shaw; Klaas Eikelboom; Klangsoft - David Reedy Jr; Lighthouse Design and
481 Consulting - Brian Shaughnessy; Marc Brazeau; Progressive Technology Project -
482 Jamie McClelland; Skvare - Mark Hanna
483
484 Most authors also reviewed code for this release; in addition, the following
485 reviewers contributed their comments:
486
487 AGH Strategies - Tommy Bobo; Christian Wach; Circle Interactive - Dave Jenkins;
488 CiviCRM - Donald Lobo, Rohan Katkar; Community IT Academy - William Mortada;
489 CompuCorp - Madura Krishnamoorthy, Mike Kondrashin; Denver DataMan - Steve
490 Kessler; Digitalcourage - Detlev Sieber; Fedor Khodkov; Forest CRM Consulting -
491 Tamar Meir; Fuzion - Peter Davis; Ginkgo Street Labs - Frank Gómez; Glick
492 Software - David Glick; iXiam - Vangelis Pantazis; JMA Consulting - Joe Murray;
493 Kacper Warda; Ken West; Korlon - Stuart Gaston; Naomi Rosenberg; Noah Miller;
494 Oxfam Germany - Thomas Schüttler; Richard van Oosterhout; Robert Lang; Semper IT -
495 Karin Gerritsen; Tadpole Collective - Kevin Cristiano; University of Hawaii at
496 Manoa - Center on Disability Studies - William Rems; Vakees K; Valéry Gouleau