diff --git a/content/en/releases/5_2_0.md b/content/en/releases/5_2_0.md new file mode 100644 index 000000000..1ac9b62e9 --- /dev/null +++ b/content/en/releases/5_2_0.md @@ -0,0 +1,265 @@ + +--- +title: "5.2.0 release notes" +linkTitle: "5.2.0" +sidebar: + exclude: true +description: + Released 2026-06-26 +--- + +## Highlights + +### Collapsable contact summaries + +Previously, the content fields for [contact summary condition cards](/building/contact-summary/contact-summary-templated/#condition-cards) were always visible to the user. Now, the body of the contact summary cards can be collapsed or expanded by tapping their headers. This reduces vertical scrolling for content-heavy cards like stock monitoring and immunizations. App developers can control the default state by configuring a property for the card. + +#### Demo Video + + + +### Tab customizations + +While the CHT has supported [hiding certain tabs](https://forum.communityhealthtoolkit.org/t/is-it-possible-to-hide-certain-tabs/601/2?u=mrjones) in the user interface, it has been impossible to set a new default tab or change the order of the visible tabs. CHT 5.2 enables deployments to customize the order and choose which tab a CHW sees when they first open their app. See [the config documentation](/building/reference/app-settings/header_tabs) for more details. + + +### UI Extensions + +App developers can now build [configurable pages](https://forum.communityhealthtoolkit.org/t/the-ui-evolution-of-the-cht/3515/8) in the CHT application! UI extensions are [web components](https://developer.mozilla.org/en-US/docs/Web/API/Web_components) maintained and deployed as part of the CHT configuration code. They provide users with custom content ranging from static reference pages to interactive mini-apps. UI extensions can read/create/update data for contacts, reports, etc via stable apis. See the [docs](/building/reference/ui-extensions) for more info. + +[//]: # ( mrjones says: appologies for the crass amount of HTML - we should likely templatize the ability ) +[//]: # ( to put videos in cards if we use this going forward.) +
+ {{< card image="../images/5_2_0_UI_extensions.png" title="New \"Help\" tab on bottom of screen, main page shows custom UI Extension help content" >}} + + + + +
+ Demo Video of UI Extension featuring a fictitious chicken farm. Originally from CHT Round Up call +
+
+
+ + +### Search Field in Tasks UI + +During the [Smart Task Prioritization squad](https://github.com/medic/cht-roadmap/issues/191), it became clear CHWs managing large numbers of tasks would benefit significantly from a free-text search feature to quickly locate tasks. The search works instantly and offline - eliminating the need to scroll through long lists. Check out [the ticket](https://github.com/medic/cht-core/issues/10694) for more info. + +#### Demo Video + + + +### Identify users with replication failures + +Large-scale CHT deployments are serving ever-increasing numbers of users. With 20,000+ active users on some instances and 80,000+ users across multiple instances in national deployments, monitoring system health is critical. + +Users configured to sync more than 10,000 documents can experience replication failures that impact both their own device performance _and_ the overall server response time for all users. Previously, identifying these problematic users required manual investigation and API queries. + +CHT 5.2.0 introduces two new API endpoints that make it easy to identify users who have had replication failures or who have not successfully replicated within a configurable time interval. Administrators can now proactively identify and address users with excessive document loads, ensuring healthy synchronization for the entire deployment. + +- `/api/v1/replication-failure-logs` - [Docs](https://docs.communityhealthtoolkit.org/building/reference/api/#/User/v1ReplicationFailureLogsGet) [#10794](https://github.com/medic/cht-core/issues/10794) +- `/api/v1/replication-health/failed` - [Docs](https://docs.communityhealthtoolkit.org/building/reference/api/#/User/v1ReplicationHealthFailedGet) [#11146](https://github.com/medic/cht-core/issues/11146) + +See also: [Monitoring user replication status](https://forum.communityhealthtoolkit.org/t/cpu-impacts-of-users-with-10k-documents-how-to-fix-them/5413) + +### Upgrade to CouchDB 3.5.2 + +The new CHT version includes CouchDB `3.5.2`, which brings a ~60% performance improvement for Nouveau indexing - the technology which powers the CHT replication algorithm and online full-text searches. This upgrade also [fixes an issue](https://github.com/medic/cht-core/issues/11153) causing search timeouts. See [the ticket](https://github.com/medic/cht-core/issues/11080) for more details. + +### New REST apis for persons, places, and reports + +New REST apis have been added to the CHT server for creating and updating persons, places, and reports ([#9835](https://github.com/medic/cht-core/issues/9835)). These can be used by scripts or 3rd-party integrations to interact with the CHT data model. See our newly enhanced [API reference documentation](https://docs.communityhealthtoolkit.org/building/reference/api/) for more details! + +## Known issues + +Check the repository for the [latest known issues](https://github.com/medic/cht-core/issues?q=is%3Aissue+label%3A%22Affects%3A+5.2.0%22). + +## Upgrade notes + +### Breaking changes + +None. + +### UI/UX changes + +- [#10240](https://github.com/medic/cht-core/issues/10240): Add the option to hide target counts past the goal +- [#10569](https://github.com/medic/cht-core/issues/10569): Indicate the number of households in a hierarchy +- [#10694](https://github.com/medic/cht-core/issues/10694): Implement free text search feature in tasks page +- [#10766](https://github.com/medic/cht-core/issues/10766): Support collapsing contact-summary cards +- [#9834](https://github.com/medic/cht-core/issues/9834): Make login page responsive to LTR <-> RTL switching + +## And more... + +### Features + +- [#10224](https://github.com/medic/cht-core/issues/10224): Support custom UI Extensions +- [#10240](https://github.com/medic/cht-core/issues/10240): Add the option to hide target counts past the goal +- [#10438](https://github.com/medic/cht-core/issues/10438): Add telemetry for how many tasks the users see +- [#10508](https://github.com/medic/cht-core/issues/10508): Serialize lists of primitive values returned from External Apps as space-delimited strings +- [#10569](https://github.com/medic/cht-core/issues/10569): Indicate the number of households in a hierarchy +- [#10694](https://github.com/medic/cht-core/issues/10694): Implement free text search feature in tasks page +- [#10794](https://github.com/medic/cht-core/issues/10794): Implement failed user replication tracking +- [#10810](https://github.com/medic/cht-core/issues/10810): Support calling extension-libs from form expressions +- [#11146](https://github.com/medic/cht-core/issues/11146): Add API endpoint that returns which users have no replication successes within an interval +- [#7005](https://github.com/medic/cht-core/issues/7005): Use OpenAPI to document endpoints +- [#9339](https://github.com/medic/cht-core/issues/9339): Phone Widget display formatted phone number value + +### Improvements + +- [#10217](https://github.com/medic/cht-core/issues/10217): Record telemetry for External Android App calls +- [#10695](https://github.com/medic/cht-core/issues/10695): Implement telemetry to track task selection duration +- [#10766](https://github.com/medic/cht-core/issues/10766): Support collapsing contact-summary cards +- [#10846](https://github.com/medic/cht-core/issues/10846): Allow configuring phone number display format in outgoing SMS messages (strip country code) +- [#10862](https://github.com/medic/cht-core/issues/10862): Don't run database compaction on every version upgrade +- [#10987](https://github.com/medic/cht-core/issues/10987): Login password visibility icon does not update after toggling +- [#11071](https://github.com/medic/cht-core/issues/11071): Add monitoring data about users who fail to replicate +- [#11196](https://github.com/medic/cht-core/issues/11196): Wrong translation in nepali for unsupported safari browser +- [#4543](https://github.com/medic/cht-core/issues/4543): Marking inputs field's appearance as 'hidden' in person-create form generates empty pages +- [#7948](https://github.com/medic/cht-core/issues/7948): Improve misconfigured "registration" transition error message +- [#8226](https://github.com/medic/cht-core/issues/8226): Do not display a form page when all the contents are "hidden" +- [#8816](https://github.com/medic/cht-core/issues/8816): Fragile text search can invalidate CouchDb admins on container restart +- [#9834](https://github.com/medic/cht-core/issues/9834): Make login page responsive to LTR <-> RTL switching +- [#9835](https://github.com/medic/cht-core/issues/9835): Add cht-datasource APIs for creation and update of contacts and reports + +### Security fixes + +- [#10209](https://github.com/medic/cht-core/issues/10209): Protect against XXE attack +- [#10520](https://github.com/medic/cht-core/issues/10520): Remove dependency of on disk GH token for release notes +- [#10559](https://github.com/medic/cht-core/issues/10559): Implement static analysis of github CI to check for security vulnerabilities +- [#11075](https://github.com/medic/cht-core/issues/11075): Bump nginx to 1.31 +- [#11112](https://github.com/medic/cht-core/issues/11112): Bump nginx to 1.31.1 +- [#6571](https://github.com/medic/cht-core/issues/6571): Detect logged passwords and errors + +### Performance improvements + +- [#11080](https://github.com/medic/cht-core/issues/11080): Upgrade to CouchDB 3.5.2 + +### Bug fixes + +- [#10341](https://github.com/medic/cht-core/issues/10341): Deleting roles does not result in users with those roles losing permission +- [#10357](https://github.com/medic/cht-core/issues/10357): debug level messages printed on production instances +- [#10661](https://github.com/medic/cht-core/issues/10661): Race condition in loading contact summary +- [#10679](https://github.com/medic/cht-core/issues/10679): Geolocation acquisition timeout blocks submitting forms +- [#10712](https://github.com/medic/cht-core/issues/10712): ContactChangeFilterService.isRelevantChange uses ?? instead of ||, making isRelevantContact and isRelevantReport dead code +- [#10751](https://github.com/medic/cht-core/issues/10751): Duplicate phone number validation broken when using "" +- [#10754](https://github.com/medic/cht-core/issues/10754): Cookies not being sent with `secure: true` +- [#10802](https://github.com/medic/cht-core/issues/10802): Message getting sent to pending state even after it is sent. +- [#10815](https://github.com/medic/cht-core/issues/10815): Existing helm chart fails after recent changes on helm chart +- [#10852](https://github.com/medic/cht-core/issues/10852): accept_patient_reports can throw an error if configuration is missing the `messages` property +- [#10879](https://github.com/medic/cht-core/issues/10879): Unsupported browser warning not shown on About page +- [#10912](https://github.com/medic/cht-core/issues/10912): Authorization context drops duplicate replication-key matches because `Set.add()` only adds one id +- [#11153](https://github.com/medic/cht-core/issues/11153): Nouveau requests timeout after 30 seconds +- [#11154](https://github.com/medic/cht-core/issues/11154): Bump bikram-sambat to 1.8.1 +- [#11198](https://github.com/medic/cht-core/issues/11198): API fails to initialize after Node 22.23 release +- [#8974](https://github.com/medic/cht-core/issues/8974): Form `end` meta field not correctly populated when the form ends + +### Technical improvements + +- [#10029](https://github.com/medic/cht-core/issues/10029): Upgrade to Angular 20 +- [#10113](https://github.com/medic/cht-core/issues/10113): Flaky test: CI compile fails due to rate limiting when downloading shellcheck +- [#10144](https://github.com/medic/cht-core/issues/10144): Extract common patterns from CouchDB helm charts templates into reusable helper templates +- [#10174](https://github.com/medic/cht-core/issues/10174): Cleanup workflow fails for all contributors with forked repositories +- [#10302](https://github.com/medic/cht-core/issues/10302): Remove app management configure targets page +- [#10378](https://github.com/medic/cht-core/issues/10378): Switch to UUID v7 everywhere +- [#10416](https://github.com/medic/cht-core/issues/10416): Warning: patch-package detected a patch file version mismatch +- [#10495](https://github.com/medic/cht-core/issues/10495): Flaky integration test: monitoring v1 should return empty values for empty db: +- [#10498](https://github.com/medic/cht-core/issues/10498): Multiple e2e workflow tests are failing due to feedback documents being generated +- [#10538](https://github.com/medic/cht-core/issues/10538): Add constant for 'privacy-policies' document ID +- [#10539](https://github.com/medic/cht-core/issues/10539): Add constant for 'branding' document ID +- [#10540](https://github.com/medic/cht-core/issues/10540): Add constant for 'partners' document ID +- [#10541](https://github.com/medic/cht-core/issues/10541): Add constants for 'target-aggregates', 'migration-log', 'extension-libs', and 'zscore-charts' document IDs +- [#10542](https://github.com/medic/cht-core/issues/10542): Add constant for 'data_record' document type +- [#10544](https://github.com/medic/cht-core/issues/10544): Add constant for 'clinic' document type +- [#10546](https://github.com/medic/cht-core/issues/10546): Add constant for 'district_hospital' document type +- [#10550](https://github.com/medic/cht-core/issues/10550): Add constants for HTTP headers (e.g., common header names beyond `REQUEST_ID`) +- [#10551](https://github.com/medic/cht-core/issues/10551): Add constants for user roles (e.g., common role strings beyond `ONLINE`) +- [#10552](https://github.com/medic/cht-core/issues/10552): Add constants for Sentinel metadata (e.g., additional local document IDs) +- [#10553](https://github.com/medic/cht-core/issues/10553): Add constants for common prefixes or patterns (e.g., `org.couchdb.user:`, `messages-` for translations) +- [#10564](https://github.com/medic/cht-core/issues/10564): Flaky e2e test: User with contact should quit training in modal, and be able to complete it later in the Training Material page, verify completed trainings display in the list +- [#10606](https://github.com/medic/cht-core/issues/10606): Switch minimum browser version for e2e tests from 90 to 107 +- [#10613](https://github.com/medic/cht-core/issues/10613): Hide dependabot commits when running release notes script +- [#10653](https://github.com/medic/cht-core/issues/10653): Add frontend performance benchmarking suite +- [#10702](https://github.com/medic/cht-core/issues/10702): release notes script: Exclude "chore" type, update readme +- [#10704](https://github.com/medic/cht-core/issues/10704): Add e2e test that checks repeat fields are saved +- [#10729](https://github.com/medic/cht-core/issues/10729): Fix bugs and typos in smsparser.js and related files +- [#10780](https://github.com/medic/cht-core/issues/10780): Flaky e2e test: meta db replication should replicate meta db up +- [#10813](https://github.com/medic/cht-core/issues/10813): Flaky integration test db-doc handler restricts offline users GET attachment: +- [#10858](https://github.com/medic/cht-core/issues/10858): Flaky wdio test: should reply to an existing message and add a new recipient - raw phone number +- [#10870](https://github.com/medic/cht-core/issues/10870): Add automated test to validate shared-libs testing script +- [#10871](https://github.com/medic/cht-core/issues/10871): Flaky api integration test: Import Records JSON parses and stores the passed JSON: +- [#10872](https://github.com/medic/cht-core/issues/10872): Flaky api integration test: auditing api db should only store 10 history entries +- [#10873](https://github.com/medic/cht-core/issues/10873): Flaky api integration test: server DNS resolver nginx should resolve updated api ips +- [#10878](https://github.com/medic/cht-core/issues/10878): Switching pages too quickly can throw errors in the contacts detail page +- [#10881](https://github.com/medic/cht-core/issues/10881): Flaky wdio test: Tasks group landing page should open task from the same group +- [#10882](https://github.com/medic/cht-core/issues/10882): Migrate small Angular templates from structural directives to built-in control flow +- [#10883](https://github.com/medic/cht-core/issues/10883): Replace `any` types with proper interfaces in small service files +- [#10891](https://github.com/medic/cht-core/issues/10891): Implement GHA concurrency +- [#10892](https://github.com/medic/cht-core/issues/10892): Break down `ci-webdriver-default-workflows` in two separate actions +- [#10931](https://github.com/medic/cht-core/issues/10931): Storage progress bar has broken aria-label binding and hardcoded English text +- [#10944](https://github.com/medic/cht-core/issues/10944): updateMessageTaskStates crashes when allDocs returns rows without doc +- [#10985](https://github.com/medic/cht-core/issues/10985): Nouveau query escaping misses documented special characters +- [#11099](https://github.com/medic/cht-core/issues/11099): CI failing when pushing to ECR: maximum allowed number of tags per image which is '1000' +- [#11118](https://github.com/medic/cht-core/issues/11118): Routing test fails for feature release branches +- [#11179](https://github.com/medic/cht-core/issues/11179): Flaky e2e test: create-user-for-contacts.create-user.wdio-spec.js +- [#11181](https://github.com/medic/cht-core/issues/11181): Release notes script failing: Cannot read properties of null +- [#11182](https://github.com/medic/cht-core/issues/11182): Loading webapp without a valid user cookie logs an error +- [#11191](https://github.com/medic/cht-core/issues/11191): Flaky integration test: mark_for_outbound error logging logs an error if the server cannot be found: +- [#11204](https://github.com/medic/cht-core/issues/11204): Flaky integration test: should find existing outbound tasks and execute them, leaving them if the send was unsuccessful +- [#11207](https://github.com/medic/cht-core/issues/11207): Run cht-conf integration tests in isolation +- [#5936](https://github.com/medic/cht-core/issues/5936): Record test coverage +- [#8758](https://github.com/medic/cht-core/issues/8758): Test report creation using SMS in default config +- [#8799](https://github.com/medic/cht-core/issues/8799): Shared libs unit test failures are a chore to debug +- [#9491](https://github.com/medic/cht-core/issues/9491): e2e tests should fail gracefully if the ports are not available (or find a new port) +- [#9492](https://github.com/medic/cht-core/issues/9492): Webapp unit tests have very noisy logs +- [#9927](https://github.com/medic/cht-core/issues/9927): Targets widgets + + + +## Contributors + +Thanks to all who committed changes for this release! + +- [mrjones](https://github.com/mrjones-plip) +- [Joshua Kuestersteffen](https://github.com/jkuester) +- [Diana Barsan](https://github.com/dianabarsan) +- [Anurag Yadav](https://github.com/anurag2787) +- [Sugat Bajracharya](https://github.com/sugat009) +- [Apoorva Pendse](https://github.com/apoorvapendse) +- [paulpascal](https://github.com/paulpascal) +- [Sai Krishna Reddy](https://github.com/saikrishna488) +- [Pratik Nadgouda](https://github.com/Carbonautics) +- [Shivam Chaudhary](https://github.com/sh1vam31) +- [Aravind](https://github.com/gmarav05) +- [Megha](https://github.com/megha1807) +- [Sneha Chaurasia](https://github.com/SnehaChaursia) +- [Amir Saudagar](https://github.com/AmirSaudagar55) +- [Vikrant](https://github.com/vikrantwiz02) +- [1yuv](https://github.com/1yuv) +- [Binod Adhikary](https://github.com/binokaryg) +- [santhosh teja piridi](https://github.com/santhosh-7777) +- [Harshit](https://github.com/blenbot) +- [Yash Sharma](https://github.com/YASHSHARMAOFFICIALLY) +- [Clifton McIntosh](https://github.com/cliftonmcintosh) +- [Asish Kumar](https://github.com/officialasishkumar) +- [Claude](https://github.com/claude) +- [witash](https://github.com/witash) +- [Andra Blaj](https://github.com/andrablaj) +- [Abhishek](https://github.com/Abhishek9639) +- [Original Gary](https://github.com/OriginalGary) +- [Trevin Chow](https://github.com/tmchow) +- [Shashi sah](https://github.com/shashi-sah2003) +- [Manish Nemade](https://github.com/Manishnemade12) +- [Saurabh Singh](https://github.com/saurabh12nxf) +- [rovertrack](https://github.com/rovertrack) diff --git a/content/en/releases/_index.md b/content/en/releases/_index.md index 9ded38130..3f1fb6f7e 100644 --- a/content/en/releases/_index.md +++ b/content/en/releases/_index.md @@ -22,7 +22,8 @@ It is recommended that all projects update regularly multiple times a year to ge | Version | Status | Release date | End of life | |---------|-----------|--------------|-------------| -| 5.1.x | Supported | 26-Feb-2026 | TBA | +| 5.2.x | Supported | 26-Jun-2026 | TBA | +| 5.1.x | Supported | 26-Feb-2026 | 26-Sep-2026 | | 5.0.x | EOL | 20-Nov-2025 | 26-May-2026 | | 4.22.x | Supported | 10-Oct-2025 | 20-Nov-2026 | | 4.21.x | EOL | 25-Jun-2025 | 10-Jan-2026 | @@ -92,6 +93,7 @@ Devices with more navigation systems are more likely to get a more accurate loca ## Release Notes ### 5.x +- [5.2.0](/releases/5_2_0) - 2026-06-26 - [5.1.3](/releases/5_1_3) - 2026-06-05 - [5.1.2](/releases/5_1_2) - 2026-04-30 - [5.1.1](/releases/5_1_1) - 2026-04-08 diff --git a/content/en/releases/images/5_2_0_UI_extensions.png b/content/en/releases/images/5_2_0_UI_extensions.png new file mode 100644 index 000000000..d3c2c25ef Binary files /dev/null and b/content/en/releases/images/5_2_0_UI_extensions.png differ diff --git a/content/en/releases/videos/CHT5.2.demo.collapsable.sections.mp4 b/content/en/releases/videos/CHT5.2.demo.collapsable.sections.mp4 new file mode 100644 index 000000000..871eef148 Binary files /dev/null and b/content/en/releases/videos/CHT5.2.demo.collapsable.sections.mp4 differ diff --git a/content/en/releases/videos/CHT5.2.demo.collapsable.sections.png b/content/en/releases/videos/CHT5.2.demo.collapsable.sections.png new file mode 100644 index 000000000..be9eff306 Binary files /dev/null and b/content/en/releases/videos/CHT5.2.demo.collapsable.sections.png differ diff --git a/content/en/releases/videos/CHT5.2.demo.task.search.mp4 b/content/en/releases/videos/CHT5.2.demo.task.search.mp4 new file mode 100644 index 000000000..db906c6f8 Binary files /dev/null and b/content/en/releases/videos/CHT5.2.demo.task.search.mp4 differ diff --git a/content/en/releases/videos/CHT5.2.demo.task.search.png b/content/en/releases/videos/CHT5.2.demo.task.search.png new file mode 100644 index 000000000..e6aed2e17 Binary files /dev/null and b/content/en/releases/videos/CHT5.2.demo.task.search.png differ diff --git a/content/en/releases/videos/CHT5.2.demo.ui.extensions.mp4 b/content/en/releases/videos/CHT5.2.demo.ui.extensions.mp4 new file mode 100644 index 000000000..18703a9d8 Binary files /dev/null and b/content/en/releases/videos/CHT5.2.demo.ui.extensions.mp4 differ diff --git a/content/en/releases/videos/CHT5.2.demo.ui.extensions.png b/content/en/releases/videos/CHT5.2.demo.ui.extensions.png new file mode 100644 index 000000000..bc3e5a341 Binary files /dev/null and b/content/en/releases/videos/CHT5.2.demo.ui.extensions.png differ