3.11.0 release notes

Known issues

  • medic-android#127: Image upload forms crash the app. This has been broken for some time and is not easy to fix while supporting Android 4.4 so the resolution has been deferred until we can make this breaking change. Reach out if you require this feature in the near future.

Upgrade notes

  • This upgrade can be rolled out remotely. Users will download the new version in the background and be prompted to reload the app when it’s ready. A small amount of data will be needed to download the new version.
  • Upgrading to this version does not require other applications to be upgraded. This release does not drop support for any hardware or software that works with the previous version.
  • This release modifies some CouchDB view definitions so we recommend you Stage the upgrade and wait for the views to be rebuilt before rolling it out to minimize downtime.
  • It is recommended to test the upgrade on a clone of your server first to ensure it works well for your application.

Breaking changes

Removal of Reporting Rates feature

This feature wasn’t documented or tested and hasn’t been used in production for some time so it has been removed. To read more about this feature or if this breaking change affects you, read this forum post.

UI/UX changes

Android app

A few UI/UX changes were made to the medic-android app. It is safe to ignore this section if you are not updating android app right now.

Add UI for prominent disclosure when requesting permissions

The app will now require a one time authorization from the user to enable access to location information. This was required to comply with the latest Google Play Store requirements.

prominent disclosure

Improve connection errors UX

If the user does not have a connection the first time the app is opened they will now see a user friendly error message with a retry button.

connection errors

Improve UX of crosswalk to webview migration

When migrating data from a Crosswalk apk to a Webview apk the user is now guided through the migration process so it can be upgraded without support. The migration was introduced in 0.6.0 for Android 10 and 11 devices to maintain compliance with Google Play Store policies. Read more about the transition to webview in this previously released issue.

migration UX

Supported software

There are no required changes to the supported software matrix from 3.0.0.

NodeCouchDBBrowsersSMS bridgeAndroidmedic-androidmedic-couch2pg
8.11+2.1+Chrome 53+, Firefox latestmedic-gateway4.4+0.4.5+3.0+

Highlights

Angular upgrade

The UI framework has been upgraded from the deprecated AngularJS v1.6 to Angular v10.0 which drastically reduces the memory used on the phone. It will make development of the Core Framework easier and more reliable and also makes it easier to keep on the latest version of Angular which means we can keep up to date and on a supported version from now on.

Angular performance

RapidPro SMS gateway

SMS messages can now be sent and received using a RapidPro instance. This allows for integration with a wide range of SMS aggregators for a high scale SMS deployment. Learn more in the feature documentation.

RapidPro logo

Improved replication performance

API CPU usage has been significantly improved when requesting the changes feed, which is a frequently requested endpoint for smartphone applications.

  • cht-core#6577: Improve performance of subject lookups in authorization service

Performance improvement

Added a GitHub Action for deploying configuration

If you wish to automate configuration deployment you can now use our GitHub Action as a building block.

  • cht-core#6758: Re-usable GitHub action for deploying configurations via medic-conf

And more…

Features

Improvements

Security issues

Performance fixes

Bug fixes

  • cht-core#6139: Hyperlinks to tasks don’t load the task in the url
  • cht-core#6385: Error when editing scheduled message from webapp
  • cht-core#6387: Error when selecting incoming message from deleted contact
  • cht-core#6447: Upgrade UI only considers URLS ending in “app.medicmobile.org” as production
  • cht-core#6533: Sentinel might process changes when it shouldn’t
  • cht-core#6557: API service doesn’t boot successfully if there is a label named “submission” in the xform
  • cht-core#6591: Replication of meta data does not occur when the regex doesn’t match
  • cht-core#6611: Exporting should be available to all online roles
  • cht-core#6627: Bug causing feedback “Duplicates in a repeater are not allowed”
  • cht-core#6629: Feedback documents are not created when contact-summary crashes
  • cht-core#6648: Blank screen when launching external apps from CHT Android app
  • cht-core#6663: Type error when running remove_non_admin_users script
  • cht-core#6700: For targets without idType, the winning emission is not deterministic
  • cht-core#6711: Form submissions hang in desktop browsers when location permission requests are ignored by users
  • cht-core#6811: Targets with property “passesIfGroupCount.gte” count intances with “pass: false” when aggregating
  • cht-core#6814: Document update conflicts deleting reviewed report
  • cht-core#6835: Android app version and Server URL not showing in About page
  • cht-core#6839: Race condition in rules engine / task list interaction can result in a stale tasks list
  • cht-core#6920: Users might start upwards replication from 0 after upgrade
  • cht-core#6993: Patients with type: 'person', contact_type: 'other' don’t have tasks appear when viewed on the contacts tab
  • cht-core#6996: Muting transition and update clinics don’t handle contacts that use a hardcoded type and also have a contact_type property correctly
  • cht-core#7022: In the form’s context.expression the summary parameter is always undefined
  • cht-core#7035: Handle compiled messageformat translations throwing errors with missing translation params
  • cht-core#7037: SMS recipients might not be mapped correctly when using places as subjects
  • cht-core#7041: Loading places fails when using an offline user and the place has a primary contact that is not a child
  • medic-android#136: Add UI for prominent disclosure when requesting for permissions
  • medic-android#91: Failure to upload APKs to Play Store prevents APKs being published to GitHub
  • medic-conf#164: Declarative config appliesToType is indicated as optional for fields and cards but we do require them
  • medic-conf#331: Validate xforms before uploading
  • medic-conf#345: Warn config overwrite falsely alerts about changes when uploading certain types of attachments
  • medic-conf#358: Can’t create task action with type “contact”
  • medic-conf#377: Incorrect warning when specifying hidden_fields
  • medic-conf#387: Can’t upload-app-settings on Node lower than 12
  • medic-couch2pg#42: Node 10 build fails a lot in a flakey way
  • medic-couch2pg#54: Add ability to replicate medic-users-meta database to PostgreSQL
  • medic-couch2pg#61: Update contactview_metadata to be compatible with configurable contact hierarchies
  • medic-gateway#139: Don’t mark messages as permanently failed unless they are irredeemable
  • medic-gateway#154: SMSs are stuck in PENDING state after being successfully sent

Technical issues