Skip to content

Latest commit

 

History

History
1100 lines (769 loc) · 45.7 KB

5.23.0.md

File metadata and controls

1100 lines (769 loc) · 45.7 KB

CiviCRM 5.23.0

Released March 4, 2020

Synopsis

Does this version...?
Fix security vulnerabilities? no
Change the database schema? yes
Alter the API? yes
Require attention to configuration options? no
Fix problems installing or upgrading to a previous version? yes
Introduce features? yes
Fix bugs? yes

Features

Core CiviCRM

  • Add PDF letter functionality for Activities using new token processor (14662)

    Adds the ability to create PDF letters that include activity tokens from the activity search.

  • Add utf8 to utfmb8 conversion api command (15969)

    Adds an API to convert the database from utf8 to utf8mb4. This is intended to help early adopters using the utf8mb4 standard (which includes support for emojis) with CiviCRM.

  • Move exportui extension into core (16335)

    Updates the 'Select Fields' screen on step 3 of the Export wizard.

  • Allow setting a custom L10n/I18n resource directory (dev/translation#30: 15408 and 16583)

    Adds a new setting for the "L10n/I18n resource directory" which allows site administrators to specify the location of the l10n directory (and allows the directory to be outside of the main code base).

  • Proposal to add a new hook_civicrm_alterExternUrl (dev/core#1100: 15475)

    Adds a new hook hook_civicrm_alterExternUrl which can be used by extension developers to alter Extern scripts.

  • Support MySQL 8.0 now that it is GA (Work Towards dev/core#392: 16204, 16202 and 16207)

    Works toward supporting MySQL 8.0 by:

    • Ensuring that the log_date column on logging tables is NOT NULL in MySQL 8.
    • Ensuring that CRM_Utils_QueryFormatterTest passes on MySQL 8.
    • Fixing the handling of dates in getMembershipStarts function to ensure date is passed to query as yyyy-mm-dd to fix test failure on MySQL 8.
  • Field Names now Reserved Words in MySQL8 (dev/core#1143: 16206, 16203, 16201, 16193 and 16214)

    MySQL8 reserves the words "description" and "grouping" which CiviCRM uses as field names. These changes work to ensure that these fields play nicely when using MySQL8.

  • CQ: Migrate simple Preferences & Settings forms to using a Generic class. (Work Towards dev/core#495: 16224, 16234, 16235, 16236, 16237, 16233, 16232, 16228, 16229 and 16227)

    Makes admin settings field labels translatable.

  • composer.json - Update civicrm-setup (16423)

    Improves civicrm-setup for scripted installations of Druapl8 with cv and GUI based installations on WordPress.

  • Replace all instances of CRM_Core_Fatal with throw new CRM_Core_Exception (Work Towards dev/core#560: 16433)

    Work towards throwing exceptions instead of fatal errors.

  • Google+ references should be removed as it phases out (Work Towards dev/core#711: 16099 and 16185)

    Google is phasing out Google+ this begins work to remove all visible references to Google+ from CiviCRM.

  • "config_backend" should be thoroughly removed (Work Towards dev/core#1387: 15842)

    Ensures that the column civicrm_domain.config_backend is not created on new sites and drops the column civicrm_domain.config_backend for sites that started on 4.7-5.20. Additionally, this deprecates some functions related to the setting civicrm_domain.config_backend.

  • Address ID field should be exportable (dev/core#1512: 16240)

    Makes Address ID an exportable field.

  • APIv3 - Only scan files for deprecation checks in Entity.get (16460)

    Improves performance of APIv3 by stopping scanning nonexistent files.

  • Add debug info to api4 output (16351)

    Improves API4 by adding debug info and displaying the query.

  • APIv4 - don't throw exception when updating/deleting 0 items (16374)

    Improves APIv4's update and delete actions when operating on 0 items so that they do not throw exceptions, instead they return 0 results.

  • APIv4 - Variable substitution in docblocks (16449)

    Makes the help text more meaningful in the APIv4 Explorer by always referring to the correct entity & action names.

  • APIv4 Explorer css tweaks (16431)

    Makes the checkboxes in the APIv4 explorer line up better and makes them bold when checked.

  • APIv4 docs improvements (16411)

    Improves APIv4 docs and their display in the explorer.

  • APIv4 Explorer - Better UI for defaults param (16454)

    Improves APIv4 so that it handles defaults param with select2 instead of a text box. Also shows the new way of using the variadic addSelect function.

  • Api4 - improve docblocks & display links in explorer (16373)

    Improves documentation for most APIv4 entities by adding clickable links to documentation displayed in the APIv4 explorer.

  • Implement PaymentProcessor and PaymentProcessorType APIv4 Entities (15624)

    Adds PaymentProcesor and PaymentProcessorType entities to APIv4.

  • Update function to repair indexes to take table as a parameter (16146)

    Makes it so the System.getmissingindices and System.updateindexes APIs accept 'tables' as a parameter (array or string) and limits the results to the specified tables if supplied.

  • Api4 - Support wildcard * in select clause (16302)

    Adds support for the * wildcard in the SELECT clause of APIv4 Get actions.

  • Api4 - Filter returned fields by contact type (16300)

    Ensures that civicrm_api4('Contact', 'get' ...) filters the fields returned based on contact type.

  • Api4 - Convert field values to correct data type (16274)

    Ensures that Api4 returns field values as the correct data type (instead of always as a raw string).

  • Api4 - format output consistently across get/create/update. (16305)

    Improves consistency of output in Api4.

  • Add more functionality to the api4 $index param (16257)

    Improves APIv4 by making the $index param support 4 modes: Integer, String, Non-associative array and Associative array and documenting them more clearly.

  • Use markdown in php docblocks & display in APIv4 Explorer (16425)

    Reformats some docblocks to use markdown, and uses the marked.js library to display the docblocks clearly in the APIv4 Explorer.

  • Civi\Test - Allow headless()->apply() (etc) to execute without setup.sh (16405)

    Makes it possible to run the headless test suites without running setup.sh.

  • Allow most values of $civicrm_paths['XXX']['url'] to be relative (16403)

    Allows system administrators to override various path and URL computations using a relative URL.

  • composer.json - Explicitly set target PHP platform (16421)

    Refines the way in which composer resolves dependencies - so as to prefer packages that are compatible with CiviCRM's declared minimum requirement.

  • Add function to set entitySubType for entity forms (16017)

    Makes it so entity subtype can be set in a standard way and is used if set.

  • Add metadata to is_primary fields (16113)

    Improves field information for is_primary for the sake of Form Builder.

  • Check field to carry over custom data by default when the other contact has none (16246)

    Improves the contact merge screen by defaulting to checking the box to carryover any custom data fields where the contact being merged into has no data.

  • Add resolved to return array for get_conflicts (15829)

    Enhances the Contact.get_merge_conflicts API call to also include an array of resolved conflicts.

CiviCase

  • Add case tokens to email activities (dev/core#522: 16105)

    Adds the ability to use case tokens in PDF Letters and single emails.

  • Restrict case roles by group (15570)

    Adds a setting to restrict contacts available to be selected for a case role by group.

CiviContribute

  • Add columns to Contribution Detail report: Employer, Location Type, Preferred Communication Method (dev/core#1573: 16458)

    Improves the Contribution Detail report by making the fields 'Employer', 'Location Type', 'Preferred Communication Method' available as columns.

  • Add "Contributor Name" to Offline Contribution Receipts (16286)

    Adds the display name of the contributor to Offline Contribution Receipts.

  • Add pre/post hooks on ContributionSoft entity (16264)

    Add Pre and post hooks for the ContributionSoft entity.

  • Deprecate creating partially paid contributions, other than by partially paying a contribution. (15855)

    Adds deprecation noise when an attempt is made to set a contribution to partially paid other than by adding a payment (using Payment.create). This is necessary not only because we have a preferred workflow but also because setting to "Partially Paid" doesn't actually create the financial_trxn that is required if done via Contribution.create flow.

CiviEvent

  • Expose "is_show_location" to control display of event locations (dev/core#1511: 16230)

    Exposes an option to show event location on the event configuration tab.

CiviMail

  • Make Deja Vu Sans the default font for mailing labels (dev/core#1502: 16216)

    Updates the default font for mailing labels to be "Deja Vu Sans" which is a font that supports unicode characters.

  • Pass through mailing id to alterMailContent hook (dev/core#1253: 15306)

    Improves the hook_civicrm_alterMailContent hook by passing the mailing ID to it so that developers can access data about the mailing that the content is part of.

  • Eventually google will require OAUTH for bounce processing and may require it for outbound SMTP through gmail servers (Work Towards dev/mail#59: 16231, 16518, 16307 and 16306)

    Adds the ability to connect to IMAP server using XOAUTH2 protocol. Updates the version of zetacomponents/mail package to a version that will support XAUTH2.

  • Allow personalised 'view in browser' links for mass emails (dev/core#1064: 14591)

    Improves the CiviMail "view in browser" experience by allowing personalized links.

CiviMember

  • When viewing a membership show if the status is overridden (16341)

    Adds the text "(Overridden)" next to the membership status when viewing a membership for which the status has been overridden.

  • Auto renew text appears at top of membership edit form (dev/core#1519: 16269)

    Improves the placement of the Auto Renew help text on the Membership edit form.

  • Improve accessibility of membership edit form (dev/core#1520: 16272)

    Updates the help text link text on the membership edit form to be meaningful to improve accessibility.

  • Permit modified_id as a parameter for membership create api (16166)

    Adds modified_id as a parameter for APIv3 membership.create.

Wordpress Integration

  • WordPress Version Update (dev/wordpress#2: 16211)

    Ensures the WordPress plugin version is updated by distmaker.

  • Pass language code to CiviCRM for Wordpress (16446)

    Ensures CiviCRM will always pick up the language that WordPress is configured to use instead of having to configure the language in both CiviCRM and WordPress.

  • Update civicrm.settings.php.template to default to CLEANURL for WP (16284)

    Makes it so that new WordPress/CiviCRM sites default to having CleanUrls.

Bugs resolved

Core CiviCRM

  • No Household Member Relationship Created when an Individual shares a relationship with a household (dev/core#1319: 16447)

    Fixes a regression in core where sharing an address with a household stopped creating a household member relationship so that there is a checkbox (that defaults to checked) to create a household member relationship when sharing an address with a household.

  • Add mechanism for avoiding conflicts when deduping (dev/core#1355: 15670)

    Improves dedupe functionality so that it aborts early if two (or more) dedupe jobs are running at the same time and attempt to act on the same contact.

  • Clear asset builder cache when clearing cache (dev/core#1395: 15857)

    Ensures the "dyn" folder gets cleared when clearing CiviCRM caches.

  • Smart groups with deleted/disabled custom fields throw fatal error on its usage. (Work Towards dev/core#1471: 16267)

    Adds an alert on the system status page when deleted custom fields are used in a smart group.

  • Invalid links to extension directory (dev/core#1550: 16394)

    Fixes an invalid link to the extension directory in help text.

  • CQ: Eliminate 'contribution_invoice_settings' 'Setting' in favour of following our standard (Work Towards dev/core#1558: 16397, 16398, 16412 and 16424)

    Works towards eliminating the 'contribution_invoice_settings' 'Setting' in favor of following the CiviCRM standard by ensuring the credit_notes_prefix is retrieved the standard way, refactoring some old code and adding some data conversion code for the non-standard setting.

  • Errors in link ReCaptcha and Extension Directory (dev/translation#33: 16387)

    Fixes a link with incorrect quoting leading to malformed html and a link with an incorrect anchor.

  • Incorrect Contact Reference option for Postal Code in civicrm_data.sql (dev/translation#34: 16352)

    Fixes a bug where custom fields of the type "contact reference" would display the country instead of the postal code so that they show the country as expected.

  • Getting Started dashlet does not cache per language (dev/translation#35: 16354)

    Ensures the CiviCRM Resources dashlet displays in the user's language.

  • Call hook_civicrm_copy for RecurringEntity (16466)

    Ensures that hook_civicrm_copy is called when entities are copied via RecurringEntity.

  • CRM_Utils_XML::parseFile() - Fix obscure segfault (16463)

    Fixes a Segfault error for users with a very specific config (Macs running php 7.4.1 or 7.3.9 MAMP 5.6).

  • Add require_once to api3TestTrait (16461)

    Ensures the api3TestTrait includes the file for the _civicrm_api3_get_options_from_params function instead of relying on it being loaded tangentially.

  • Cleanup API_Exception usage (16432)

    Fixes mis-capitalized exception class name, and moves a APIv3-only check to the right place.

  • IconPicker widget improvements (15760)

    Fixes some style issues with the icon picker widget and adds some controls to the dialog.

  • CRM_Core_Menu - Fix warnings during local test run (16406)

    Fixes the warning Warning: simplexml_load_file(): I/O warning : failed to load external entity when running the test suite on Drupal 8 sites on OSX.

  • Add user friendly error message on merge error (dev/core#1540: 16340)

    Adds a user friendly error when attempting to merge two contacts from the Advanced Search Screen when no Supervised rule is present on the site, before this change a fatal error was thrown.

  • Enotice fix (16293)

    Fixes an "Warning: Invalid argument supplied foreach()" e-notice on the edit smart group screen.

  • Force reCaptcha is not working when pay later enabled (16282)

    Ensures that ReCaptcha is always on even if only pay later is enabled as a payment method.

  • Dedupe rules don't work with custom fields/Variable type error during import process (dev/core#1597 and dev/core#1595: 16558)

    Fixes a regression where dedupe rules were failing when attempting to use a custom field as the match field.

  • Select_string only accepts integers: 1 (dev/translation#36: 16599)

    Fixes an error for translated sites when trying to perform a contact search.

  • Advanced Search: "active period" filter regression (dev/core#1592: 16535)

    Fixes a bug in Advanced Search where the filter "active period" (for relationships) is not respected.

  • Advanced search links on mailing reports page give "DB Error: syntax error" (dev/core#1551: 16534)

    Fixes a regression where this url "civicrm/contact/search/advanced?force=1&mailing_id=1" throws a fatal error.

  • Upgrade fails when civicrm_managed table contains a row including entity_type='PaymentProcessorType'; (dev/core#1498: 16521)

  • Fix loading with alternate packages path (system-level) (16407)

  • Fix loading with alternate packages path (UI-level) (16409)

  • setup.sh - Fixes for running in basic composer file-structure (16408)

  • Make $civicrm_paths less sensitive to trailing slashes. Add tests. (16404)

  • Prevent PropertBag from being so noisy about deprecation warnings (16390)

  • Wrong parameter passed to executeQuery function (16353)

  • Update temp table handler to support utf8mb4 if that is the db collation (15992)

  • Enforce isSkipLineItem for membership payment entity in Order.create (15891)

  • Fetch Only Active Custom Group Extend Values (15759)

  • Ensure that we always return a raw urlencoded url for extenal urls to fix Flexmailer tests (16265)

  • Country/State PseudoConstant not sorted according to the locale (16258)

  • Change check.gif to an actual gif (was a PNG) (16220)

  • Fix Error handling following DB Package upgrade (16213)

  • Do not escape html in report header and footers on API create (dev/core#1286: 15383)

  • Editing a group description inline causes the recent items list to display blank instead of the group title (dev/core#1506: 16197)

  • Recent items list has blank entry and E_NOTICE's when viewing an Email activity from activities tab (dev/core#1507: 16195)

  • 'Merge All Contacts with the Same Address' doesn't consider Household replace individuals that share same address. (CRM-21858 and dev/core#1364: 16369)

  • Scheduled reminder emails sent to contacts with do_not_email set or with email on hold (dev/core#1378: 15778)

  • Update BAO_Acl internal functions to protected & unused to deprecated (16189)

  • Deactivating CiviContribute causes SQL error (dev/core#547: 16365)

CiviCase

  • Changing a civicase activity's label breaks the max_instances check (dev/core#1116: 16347)

  • Case Resource shows contact names that are not accessible to logged in user (dev/core#1499: 16150)

  • Fix activity.case_id token to always display the first case ID (16208)

CiviContribute

  • Positive integer expected for recurring interval even when user is not making a recurring contribution (dev/core#1588: 16532)

    Fixes a Fatal error when the recurring option "Support recurring intervals" is enabled on a contribution page.

  • Make getTotalPayments return 0 instead of NULL (16129)

  • Email address token on the confirmation message not working for a pay later contribution. (dev/core#1255: 15314)

  • Paypal IPN fails when contact is merged (dev/core#1249: 15307)

  • , as decimal separator, and [space] as thousand separators leads to api errors (dev/core#1522: 16392)

  • Fix retrieving contribution_status_id for manual payment processor (16018)

  • Set contribution status to refunded when it has been refunded (16148)

CiviEvent

  • "Confirm Event Invitation" message template has a bad variable (dev/event#32: 16367)

    Fixes the URL for self-service updates links in the "Confirm Event Invitation" message template to include the participant ID so that they link correctly.

  • Respect form value for register_date on participant form (16439)

    Fixes a bug where the participant registration date is exposed on the backoffice event form, but when a credit card payment is being submitted it is ignored.

  • Scheduled reminders are incorrectly sent from event templates when "additional group" is selected (dev/event#28: 16311)

  • "Confirm from waitlist" doesn't consider whether participant roles are counted. (dev/event#23: 16098)

  • Event registration form doesn't prevent multiple signups for waitlisted participants. (dev/event#30: 16358)

  • Permission error on event info page for anonymous users (dev/core#1517: 16266)

CiviMember

  • Changing the membership type causes multiple copies of related membership text on edit membership page (dev/core#1537: 16326)

  • search builder: member since field ignored (dev/core#1602: 16578)

    Ensures that "Search Builder" respects the "Member Since" field.

Drupal Integration

  • composer.json - Relax psr/log constraint. Improve D8 compatibility. (16471)

    Fixes a composer conflict when installing CiviCRM on Drupal 8.7.

  • Drupal8: Enabling language breaks a fresh CiviCRM install (dev/drupal#85: 15912)

  • Drupal8 - Contact Report does not load any values in the ACL Group/Role field (dev/drupal#89: 16273 and 15318)

  • CiviCRM session instance not working when Masquerading in Drupal 7 (dev/drupal#98: 16177)

  • Wiki link in OG Sync module description gives a 404 (dev/drupal#102: 595)

Miscellany

  • Duplicate code (for real) (16363 and 16567)

  • Mailing Subscribe Form: remove nbsp from descriptions (16186)

  • Remove SymfonyComponents/YAML package (285)

  • Update DB_Object (280)

  • Update gettext to latest tagged release (227)

  • Upgrade DB package to be version 1.9.3 (276)

  • Update copyright headers following merge of #14662 (16199)

  • Add tax rates to metadata (16253)

  • Add helper for getting participantValues (16355)

  • Update docs link for edit scheduled job parameters (16299)

  • Start to use function rather than multiple queries for event details add test (16329)

  • Simplify event title retrieval, use cache, add test (16345)

  • Change function buildEventFeeForm to non-static (16337)

  • Finish removal of deferred_revenue_enabled from non-standard setting (16395)

  • Api4 - Improve Entity::get (16346)

  • Api4 - Make abstract function abstract (16343)

  • Api4 - Use explicit adder functions rather than magicMethod (16372)

  • Update contributor-key.yml (16268)

  • Update my contributor details (16184)

  • APIv4 documentation & code cleanup (16457)

  • Fix minor typo in help text. (16303)

  • Extract code for isPaymentOnExistingContribution. (16327)

  • Remove function that exactly matches parent class. (16316)

  • Remove unsupported and unused package DB_Table (277)

  • Remove $ids as parameter for Membership::add (16192)

  • Remove unused code in Case/Form/Activity postProcess (16304)

  • Remove never passed-in parameter from addPayments (16262)

  • Remove duplicate line of code (16317)

  • Remove unreachable code lines. (16349)

  • Remove unused code (16371)

  • Remove irrelevant code. (16348)

  • Remove unindexed join from getACLRoles query (16183)

  • Remove unmaintained unsupported System_Command package (283)

  • fix typo's in the text (16361)

  • fix more typo's in the text (16368)

  • Fix unit tests after gettext merge (282)

  • Update recently-added PathUrlTest to be more representative (16607)

  • Fix tests to use buildFeeFn (16389)

  • Add unit test to back office form when a payment is made against a partially paid contribution (16437)

  • Revised version of test from #15725 (15948)

  • Update failing test to match intervening changes elsewhere (16270)

  • Fix unit test so price set params are valid (16344)

  • Update Export unit test to pass on MySQL 8 (16375)

  • Basic extraction of paid event processing (16281)

  • Refactor CRM_Contact_BAO_Contact::importableFields() to use metadata (16222)

  • [REF] Remove setting of unused function. (16315)

  • [REF] Remove apparent copy & paste code. (16308)

  • [REF] Move the bounce to the start of the form submit (16333)

  • [REF] Eliminate silly parameter from function signature. (16330)

  • [REF] Extract code that assigns event variables to the tpl (16325)

  • [REF] Fix return value on deleting financial type (16280)

  • [REF] Move handling of default payment instrument for a payment proc… (16279)

  • [REF] Move use of priceSetID & amount_override to where they are used (16252)

  • [REF] Cleanup CRM_Member_BAO_Membership::buildMembershipTypeValues (16059)

  • [REF] Remove enclosed & escaped variables (16249)

  • [REF] Minor code simplification in dedupe. (16245)

  • [REF] move sessionStart functionality to System subclass (16241)

  • [REF] Update fetchAll function signature to match parent function (16198)

  • REF Simplify if statement on case activity form (16210)

  • [REF] Eliminate ['userID'] as an input for BAO_Membership::create (16196)

  • [REF] Move the storing of custom data into the add function rather th… (16191)

  • [REF] Remove never-passed param from getLineItems (16251)

  • [REF] Extract location wrangling code. (16247)

  • [REF] rename lineItem & lineItems variable (16254)

  • [REF] Activate fetchAll function in DataObject file (281)

  • [REF] Reduce places where we pass ids into Mailing::create (16263)

  • [REF] Remove ids and fully deprecate passing it to Contribution::create (16256)

  • [REF] Pass params into function rather than this weird check for whether params exists. (16438)

  • [REF] Move assignment of BalanceAmount (16334)

  • [REF] Fix CRM_Core_BAO_UFGroup::createUFJoin to not receive by reference. (16260)

  • [REF] Interim code cleanup - make the usage of addPayments clearer (16441)

  • [REF] Remove unused variable (16434)

  • [REF] Add test for line item, extract fn (16402)

  • [REF] Ensure that the from is correctly modified in both the main que… (16422)

  • [REF] Remove some unused variables (16414)

  • REF Extract code to build pcp_supporter_text and enable translation (16271)

  • [REF] Remove unused variables (16396)

  • [REF] Extract function to export header row (16364)

  • [REF] Extract & share code to determine revenue recognition date. (16388)

  • [NFC] code cleanup (16310)

  • [NFC] Code cleanup (16309)

  • [NFC] code cleanup (16301)

  • [NFC] Minor code cleanup (16290)

  • [NFC] Extend unit test to cover for recent refactor by eileen to ensure sup… (16332)

  • [NFC] Code formatting (16331)

  • [NFC] Code cleanup (16314)

  • NFC Convert Manage PCP page to short array syntax (16320)

  • [NFC] Add in more assertions around the content of line items and tot… (16218)

  • [NFC] Doc Block fix should be bool no boolean as per coding standards (596)

  • [NFC] Code comments (16248)

  • [NFC] Minor cleanup in test class (16250)

  • [NFC] Skip utf8mb4 test on MySQL versions lower than 5.7 (16483)

  • [NFC] Test update following PR #16150, assertEquals first param is th… (16219)

  • [NFC] Explicitly specify that it is the Payment processor Type Name n… (16275)

  • NFC Fix TokenRow docblock (16452)

  • [NFC] Minor test cleanup. (16450)

  • [NFC] Remove unused local variables from CRM_Contribute_Form_AdditionalPayment::processCreditCard (16342)

  • [NFC] throw exceptions, single quotes, declare exceptions, remove unused param (16415)

  • (NFC) Update Var declaration to be standard in CRM folder (16382)

  • (NFC) Civi/*.php - Update for Drupal.Commenting.VariableComment.IncorrectVarType (16379)

  • NFC Add parameter definition to membershipstatus.calc (16370)

  • [NFC] Ensure that annon permissions are correctly assigned when enabling civicrm webtest module in backdrop (16547)

  • [NFC] Fix style error (16549)

Credits

This release was developed by the following code authors:

a-n The Artists Information Company - William Mortada; AGH Strategies - Andrew Hunt; Agileware - Pengyi Zhang; Andrei Mondoc; British Humanist Association - Andrew West; Caltha - Tomasz Pietrzkowski; Chris Burgess; Circle Interactive - Pradeep Nayak; CiviCoop - Jaap Jansma; CiviCRM - Coleman Watts, Tim Otten; CiviDesk - Yashodha Chaku; CompuCorp - Vinu Varshith Sekar; Coop SymbioTIC - Mathieu Lutfy, Samuel Vanhove; Dave D; Electronic Frontier Foundation - Mark Burdett; Fuzion - Jitendra Purohit; GMCVO Databases - Jade Gaunt; JMA Consulting - Seamus Lee; John Kingsnorth; Joinery - Allen Shaw; Joris Vercammen; Megaphone Technology Consulting - Jon Goldberg; MJCO - Mikey O'Toole; MJW Consulting - Matthew Wire; myDropWizard - David Snopek; Progressive Technology Project - Jamie McClelland; Squiffle Consulting - Aidan Saunders; Tadpole Collective - Kevin Cristiano; Third Sector Design - Michael McAndrew; Timbsoft Technologies - Tunbola Ogunwande; Web Access - Kurund Jalmi; Wikimedia Foundation - Eileen McNaughton, Elliott Eggleston

Most authors also reviewed code for this release; in addition, the following reviewers contributed their comments:

AGH Strategies - Alice Frumin; Agileware - Justin Freeman; Andrew Cormick-Dockery; Artful Robot - Rich Lott; Christian Wach; CiviDesk - Nicolas Ganivet; CompuCorp - Shitij Gugnani; Francesc Bassas i Bullich; Fuzion - Luke Stewart, Peter Davis; Greenpeace Central and Eastern Europe - Patrick Figel; JMA Consulting - Joe Murray, Monish Deb; Korlon - Stuart Gaston; Lighthouse Design and Consulting - Brian Shaughnessy; mikantchap; Richard van Oosterhout; SYSTOPIA Organisationsberatung - Björn Endres; tapashdatta;

Feedback

These release notes are edited by Alice Frumin and Andie Hunt. If you'd like to provide feedback on them, please log in to https://chat.civicrm.org/civicrm and contact @agh1.