4.2.0 release notes

Known issues

Check the repository for the latest known issues.

Upgrade notes

Breaking changes

None.

UI/UX changes

Floating Action Button

The additive actions (creating reports, places, people, etc…) have moved from the bottom action bar to a Floating Action Button that opens a menu with all actions. This change aligns the CHT more closely with Android UX and material design patterns, and applies to the Messages, Reports, and Contacts tab.

NOTE: The bottom action bar can be temporarily re-enabled for specific users by granting them the can_view_old_action_bar permission; however, it will be completely removed in a future release. See the Feature Flags documentation for more information.



  • #7998: Move additive actions from Action Bar to Floating Action Button

More Options menu

The Export, Edit, and Delete actions have moved from the bottom action bar to a new More Option (⋮) menu located on the top right side of the screen. This change aligns the CHT more closely with Android UX and material design patterns, and applies to the Messages, Reports, and Contacts tab.

NOTE: The bottom action bar can be temporarily re-enabled for specific users by granting them the can_view_old_action_bar permission; however, it will be completely removed in a future release. See the Feature Flags documentation for more information.


  • #7872: Move non-additive actions from Action Bar to “More Options” menu

Highlights

Training Cards

A new feature was added to help health workers learn about changes to their CHT app remotely, directly in their app. Training Card content might include information about a newly deployed feature, changes to a care guide, or simply a reminder about an underused feature or workflow. You can read more about it in the Training Cards documentation and find some template content in the resources section on the documentation site to help you get started with Training Cards.


  • #6598: In app “What’s new” training cards

Support automatically creating users when contact is added

When configured, users will automatically be created when certain types of person contacts are added. No intervention from a system administrator is required in this process.

For example, a supervisor could onboard a new CHW just by creating a new person contact for them with a “create contact” form. The new user for the CHW will automatically be created and the CHW will receive an SMS message containing the token login link. This link will allow them to login as the newly created user.

You can read more about it in the transitions configuration docs!

  • #7753: Allow supervisors to create health workers

Extension libraries

The extension libraries are blocks of code that are cached with the CHT web application giving app developers a powerful tool to extend the CHT. An example of a use for this feature is to provide a function to calculate a risk score based on a machine learning model. The function can then be called passing in values from app forms and return the result to be stored with the report.

Read more about this feature in the extension libraries docs

  • #7824: Provide a general integration point of arbitrary JS in forms via config

Initial replication improvements

After refactoring the initial replication mechanism, which is the process of synchronizing data for the first time between the user’s device and the app’s server, it is now at least 8 times faster than before. Look at this performance comparison table:

No. concurrent usersBefore (median)After (median)
1251s18s
1086s11s
10025m2.5m
  • #8134: Refactor initial replication to not use PouchDb replicate

And more…

Features

  • #6598: In app “What’s new” training cards
  • #7824: Provide a general integration point of arbitrary JS in forms via config

Improvements

  • #7753: Allow supervisors to create health workers
  • #7998: Move additive actions from Action Bar to Floating Action Button
  • #7872: Move non-additive actions from Action Bar to “More Options” menu “⋮”
  • #7902: Incorrect image tag on release
  • #7926: Show a more useful error message when decrypting using a different secret
  • #7947: Improve wording of the warning when upgrading
  • #7964: Use _all_docs to get forms documents in API
  • #8009: Display version and build number separately in the admin upgrade page
  • #8093: Prevent data loss through re-sync when restoring data from backup
  • #8136: Add timestamp information in feedback document log events
  • #8210: Change extension libs API so libs are modules not functions
  • #6281: Allow app builders to specify disabled languages in config
  • #8134: Refactor initial replication to not use PouchDb replicate

Security fixes

None.

Performance improvements

None.

Bug fixes

  • #7425: Schedules don’t have a default value for start_from
  • #7602: Race condition in db-object-widget
  • #7603: Race condition in unloading contact content
  • #7642: Successful users-info request reported as errored
  • #7892: Enketo selected option highlight color changes incorrectly on drag
  • #7910: Confirmation prompt for “Cancel” button in forms
  • #7925: Bikram Sambat date should be validated when users are editing a report and enter an invalid date
  • #7949: Nginx Environment Variables not passed along
  • #7953: 4.x: Version deployed still visible in App Management release list
  • #7957: Sentinel erroneously reporting target for outbound push has expired TLS cert
  • #7976: Unhandled rejection when favicon not found
  • #7986: Container names issue for clustered couchdb setup when running across different nodes
  • #8040: API Crashes on malformed translation docs
  • #8154: Race condition during sentinel startup
  • #8144: Secondary risk factors are not returned if primary risk factors are present in getRiskFactorsFromPregnancy
  • #8130: Haproxy stops routing during stress test
  • #225: Ability to run Tasks.js and Targets.js code without Nools
  • #8205: Nginx can’t connect to API after container restarts because of dynamic IP allocation
  • #8213: Contact and Messages Tab: footer button scrolls with content, not staying pinned
  • #8166: Haproxy crashes instance during scalability test due to high memory usage
  • #8173: API Changes watcher skips changes - or becomes blocked

Technical improvements

  • #7372: Update mocha to latest
  • #7901: Upgrade test fails release
  • #7905: GH Actions deprecation warning
  • #7952: Change ECR repo alias to medic
  • #7962: Change CouchDb service names to match all hostname specs
  • #7966: Flaky e2e test Submit Default Delivery Report
  • #7980: create_user_for_contacts unit test flakes
  • #7992: Upgrade webapp’s angular to v15.x.x
  • #8060: Update WDIO to latest
  • #8062: Fix e2e test: Should verify that all tasks related with the high risk pregnancy were created
  • #8067: CouchDB entry point always saves couch_httpd_auth and couchdb to cluster-credentials.ini
  • #8076: Update haproxy
  • #8077: Add wdio retries
  • #8103: Protractor test failures are not retried and failed retries clear results from previous failure
  • #8151: E2E builds fail for external contributors because of allure history jobs
  • #8099: Enable easy integration with certbot and nginx container
  • #8024: Update scalability suite to work with 4.x