|
| 1 | + |
| 2 | +--- |
| 3 | +title: "5.0.0 release notes" |
| 4 | +linkTitle: "5.0.0" |
| 5 | +sidebar: |
| 6 | + exclude: true |
| 7 | +description: |
| 8 | + Released 2025-11-20 |
| 9 | +--- |
| 10 | + |
| 11 | + |
| 12 | +{{< callout type="warning" >}} |
| 13 | +To prepare for this release, read through our [Preparing to Upgrade documentation](/hosting/cht/migration/preparing-for-5/) before upgrading. This guide covers each of the breaking changes in detail and which deployment versions and which hosting architectures it applies to. |
| 14 | +{{< /callout >}} |
| 15 | + |
| 16 | +## Highlights |
| 17 | + |
| 18 | +### Reducing hosting total cost of ownership |
| 19 | + |
| 20 | +Based on the knowledge of hosting dozens of CHT instances for over a decade, Medic found disk space [to be the main cost](https://docs.google.com/presentation/d/1rbpJi654VDvm-zJnqqCO7bDZ6anA77zTPZZh9GjQSS8/) in hosting. CHT 5.0 uses [CouchDB Nouveau](https://neighbourhood.ie/blog/2024/09/23/couchdb-3-4-0-feature-nouveau) to enable disk savings in excess of 30% for large instances. |
| 21 | + |
| 22 | +<!-- |
| 23 | +See source for chart: |
| 24 | +https://docs.google.com/spreadsheets/d/1RBnfmH0QApvof3XXHLM2DHAtVuwYcKxvlgYvA57LCpM |
| 25 | +--> |
| 26 | +{{< cards >}} |
| 27 | +{{< card image="../images/5_0_reduction2.png" title="Up to 34% less disk used" subtitle="Chart showing disk use during a CHT upgrade going from 63.2GB on CHT 4.11 down to 41.7GB on CHT 5.0">}} |
| 28 | +{{< card image="../images/5_0_disk_use_cost2.png" method="resize" title="Cost Breakdown" subtitle="Disk 78.5%, RAM 12.8%, CPU 8.7%" >}} |
| 29 | +{{< /cards >}} |
| 30 | + |
| 31 | +Deployments which don't see an immediate disk space savings, should either let run compaction run organically (this is the default configuration) or [initiate compaction manually](https://docs.couchdb.org/en/stable/maintenance/compaction.html#manual-database-compaction). |
| 32 | + |
| 33 | +- [#9542](https://github.com/medic/cht-core/issues/9542): Reduce disk space with CouchDB Nouveau (TCO v1) |
| 34 | + |
| 35 | +### Faster synchronization which uses less server CPU |
| 36 | + |
| 37 | +As national deployments scaled to over 5,000 users, the server CPU became overburdened. Upon close inspection, one of the bottlenecks was found to be CHWs requesting the list of documents needed for replication. The API handling this request has been massively improved in CHT 5.0. This means synchronizations take less time and, in turn, reduces server load. This reduction enables the same server to handle more requests with only a software upgrade, without any hardware changes. |
| 38 | + |
| 39 | + |
| 40 | +#### Seconds to synchronize (lower is better) |
| 41 | + |
| 42 | +<!-- |
| 43 | +See source for chart: |
| 44 | +https://docs.google.com/spreadsheets/d/1RBnfmH0QApvof3XXHLM2DHAtVuwYcKxvlgYvA57LCpM |
| 45 | +--> |
| 46 | +<img class="graph-key" src="../images/5_0_4color.png" style="width:20px; " title=" CHT 4.21"> CHT 4.21 |
| 47 | +<img class="graph-key" src="../images/5_0_5color.png" style="width:20px; " title=" CHT 5.0"> CHT 5.0 |
| 48 | +{{< cards cols="1">}} |
| 49 | +{{< card image="../images/5_0_faster_replication.png" title="Up to 69% faster synchronization" subtitle="Chart showing users with 2.3k, 83k, 126.2k, 110.9k and 121.8k documents synchronizing against CHT 4.21 (blue) and CHT 5.0 (red)" >}} |
| 50 | +{{< /cards >}} |
| 51 | +<style> |
| 52 | +.graph-key { |
| 53 | + display: inline-block; |
| 54 | +} |
| 55 | +.content :where(.graph-key):not(:where([class~=not-prose],[class~=not-prose] *)) { |
| 56 | + margin-top: 0; |
| 57 | + margin-bottom: 0; |
| 58 | +} |
| 59 | +</style> |
| 60 | + |
| 61 | +- [#10262](https://github.com/medic/cht-core/issues/10262): Improve replication performance by moving docs_by_replication_key to nouveau |
| 62 | + |
| 63 | +### Welcome prompt when starting a new instance for how to easily add data |
| 64 | + |
| 65 | +Administrators logging in to the CHT for the first time reported confusion about whether the app was working. They would see an error message saying `No message selected`. CHT 5.0 leverages [existing training card](/building/training/training-cards-resources/) technology to help administrators get started with adding contacts and configuring the app. This includes helpful tips: |
| 66 | + |
| 67 | +> * Get started by [adding contacts and users](/building/contact-management/contact-and-users-1/) |
| 68 | +> * To configure this instance for your specific workflows, see [the documentation](/building/) |
| 69 | +
|
| 70 | +{{< cards cols="2">}} |
| 71 | +{{< card image="../images/5_0_welcome_message.png" title="Welcome message shown to admins logging in for the first time" >}} |
| 72 | +{{< /cards >}} |
| 73 | + |
| 74 | +- [#10208](https://github.com/medic/cht-core/issues/10208): Instruct new deployments how to add data |
| 75 | + |
| 76 | + |
| 77 | +## Known issues |
| 78 | + |
| 79 | +Check the repository for the [latest known issues](https://github.com/medic/cht-core/issues?q=is%3Aissue+label%3A%22Affects%3A+5.0.0%22). |
| 80 | + |
| 81 | +## Upgrade notes |
| 82 | + |
| 83 | +### Breaking changes |
| 84 | + |
| 85 | +As mentioned above, be sure to review the [upgrade documentation](/hosting/cht/migration/preparing-for-5/) before upgrading to appreciate what the following changes mean for your deployment: |
| 86 | + |
| 87 | +- [#10183](https://github.com/medic/cht-core/issues/10183): Replication fails to filter out reports with needs_signoff set to false |
| 88 | +- [#10429](https://github.com/medic/cht-core/issues/10429): Require Chrome 107 to support Angular uplift |
| 89 | +- [#5906](https://github.com/medic/cht-core/issues/5906): Make declarative config mandatory |
| 90 | +- [#8157](https://github.com/medic/cht-core/issues/8157): Deprecate enabling languages through generated docs |
| 91 | +- [#9202](https://github.com/medic/cht-core/issues/9202): Increase ecmaversion linting for ddocs |
| 92 | +- [#9542](https://github.com/medic/cht-core/issues/9542): Reduce disk space with CouchDB Nouveau (TCO v1) |
| 93 | +- [#9954](https://github.com/medic/cht-core/issues/9954): Hide upgrade button in admin app for k8s deployments, while still allowing staging upgrades |
| 94 | +- [#9983](https://github.com/medic/cht-core/issues/9983): Require `app_url` to be set when enabling `token_login` |
| 95 | + |
| 96 | +### UI/UX changes |
| 97 | + |
| 98 | +None. |
| 99 | + |
| 100 | + |
| 101 | + |
| 102 | +## And more... |
| 103 | + |
| 104 | +### Features |
| 105 | + |
| 106 | +- [#10242](https://github.com/medic/cht-core/issues/10242): Display major version in admin upgrade UI so it's clear if its 4.x or 5.x (or X.x!) |
| 107 | +- [#10208](https://github.com/medic/cht-core/issues/10208): Instruct new deployments how to add data |
| 108 | +- [#8340](https://github.com/medic/cht-core/issues/8340): Add impact metrics API |
| 109 | +- [#9869](https://github.com/medic/cht-core/issues/9869): Add user storage usage to user-devices API |
| 110 | +- [#9954](https://github.com/medic/cht-core/issues/9954): Hide upgrade button in admin app for k8s deployments, while still allowing staging upgrades |
| 111 | + |
| 112 | +### Improvements |
| 113 | + |
| 114 | +- [#10265](https://github.com/medic/cht-core/issues/10265): Add visual indicator of Nouveau indexing progress on API startup and Admin upgrade page |
| 115 | +- [#8147](https://github.com/medic/cht-core/issues/8147): Training cards display loading error when user does not have contact |
| 116 | +- [#8348](https://github.com/medic/cht-core/issues/8348): Adding error object to logger in sentinel/server.js |
| 117 | +- [#9542](https://github.com/medic/cht-core/issues/9542): Reduce disk space with CouchDB Nouveau (TCO v1) |
| 118 | +- [#9639](https://github.com/medic/cht-core/issues/9639): Remove pre 3.x db migrations and protect `migration-log` doc from edits |
| 119 | +- [#9838](https://github.com/medic/cht-core/issues/9838): Refactor to use `cht-datasource` for reading contacts by id (both with and without lineage) |
| 120 | + |
| 121 | +### Security fixes |
| 122 | + |
| 123 | +None. |
| 124 | + |
| 125 | +### Performance improvements |
| 126 | + |
| 127 | +- [#10262](https://github.com/medic/cht-core/issues/10262): Improve replication performance by moving docs_by_replication_key to nouveau |
| 128 | +- [#10322](https://github.com/medic/cht-core/issues/10322): Identify and remove all unused couchdb views |
| 129 | +- [#10384](https://github.com/medic/cht-core/issues/10384): Using changes feed with _doc_ids filter causes performance issues. |
| 130 | + |
| 131 | +### Bug fixes |
| 132 | + |
| 133 | +- [#10183](https://github.com/medic/cht-core/issues/10183): Replication fails to filter out reports with needs_signoff set to false |
| 134 | +- [#10319](https://github.com/medic/cht-core/issues/10319): npm build fails on lastest master |
| 135 | +- [#8026](https://github.com/medic/cht-core/issues/8026): Admin app fails to update `branding` if existing document is malformed |
| 136 | +- [#8027](https://github.com/medic/cht-core/issues/8027): Admin app fails to update `partners` if existing document is malformed |
| 137 | +- [#9739](https://github.com/medic/cht-core/issues/9739): Can't deselect all reports after selecting all reports |
| 138 | + |
| 139 | +### Technical improvements |
| 140 | + |
| 141 | +- [#10023](https://github.com/medic/cht-core/issues/10023): Update `release-notes` script to include all commit co-authors in contributors list |
| 142 | +- [#10079](https://github.com/medic/cht-core/issues/10079): Update `webapp` to read contacts with cht-datasource |
| 143 | +- [#10186](https://github.com/medic/cht-core/issues/10186): Remove upgrade service from Helm charts |
| 144 | +- [#10203](https://github.com/medic/cht-core/issues/10203): Africa's Talking documentation link provided is not working |
| 145 | +- [#10206](https://github.com/medic/cht-core/issues/10206): Remove ancient/deprecated/3.x scripts |
| 146 | +- [#10294](https://github.com/medic/cht-core/issues/10294): Branch name escape logic broken for semver |
| 147 | +- [#10309](https://github.com/medic/cht-core/issues/10309): API is throwing error in latest master for SMS workflows |
| 148 | +- [#10374](https://github.com/medic/cht-core/issues/10374): Flaky e2e test: Search Reports should navigate back to list view and return results when searching by case_id |
| 149 | +- [#10375](https://github.com/medic/cht-core/issues/10375): Flaky e2e test: Bikram Sambat date display should display report list dates converted to bikram sambat |
| 150 | +- [#10420](https://github.com/medic/cht-core/issues/10420): Test Cinque & Nouveau on large production data set |
| 151 | +- [#10429](https://github.com/medic/cht-core/issues/10429): Require Chrome 107 to support Angular uplift |
| 152 | +- [#5906](https://github.com/medic/cht-core/issues/5906): Make declarative config mandatory |
| 153 | +- [#8157](https://github.com/medic/cht-core/issues/8157): Deprecate enabling languages through generated docs |
| 154 | +- [#8220](https://github.com/medic/cht-core/issues/8220): Docker image build fails for branch names with reserved characters |
| 155 | +- [#8657](https://github.com/medic/cht-core/issues/8657): Delete transition code in telemetry service |
| 156 | +- [#8787](https://github.com/medic/cht-core/issues/8787): Remove indexedDB polyfill for Firefox |
| 157 | +- [#9202](https://github.com/medic/cht-core/issues/9202): Increase ecmaversion linting for ddocs |
| 158 | +- [#9499](https://github.com/medic/cht-core/issues/9499): UI Nav Work Image Replacement - Feature Messaging |
| 159 | +- [#9720](https://github.com/medic/cht-core/issues/9720): Support stateless API docker container |
| 160 | +- [#9921](https://github.com/medic/cht-core/issues/9921): Reports search |
| 161 | +- [#9992](https://github.com/medic/cht-core/issues/9992): Remove haproxy-healthcheck service from single-node CouchDb deployments |
| 162 | + |
| 163 | + |
| 164 | + |
| 165 | +## Contributors |
| 166 | + |
| 167 | +Thanks to all who committed changes for this release! |
| 168 | + |
| 169 | +- [Joshua Kuestersteffen](https://github.com/jkuester) |
| 170 | +- [Sugat Bajracharya](https://github.com/sugat009) |
| 171 | +- [Mokhtar](https://github.com/m5r) |
| 172 | +- [witash](https://github.com/witash) |
| 173 | +- [Shashi sah](https://github.com/shashi-sah2003) |
| 174 | +- [mrjones](https://github.com/mrjones-plip) |
| 175 | +- [Lorena Rodriguez](https://github.com/lorerod) |
| 176 | +- [Julio Arias](https://github.com/jarias) |
| 177 | +- [Binod Adhikary](https://github.com/binokaryg) |
| 178 | +- [Diana Barsan](https://github.com/dianabarsan) |
| 179 | +- [Andra Blaj](https://github.com/andrablaj) |
| 180 | +- [Najuna Brian](https://github.com/najuna-brian) |
| 181 | +- [Hsing Fu](https://github.com/HsingFuC) |
| 182 | +- [Ayush Singh](https://github.com/SinghCod3r) |
| 183 | +- [Luis Serrano](https://github.com/billoserra) |
| 184 | +- [Jennifer Ajoy](https://github.com/JenniAjoy) |
| 185 | +- [1yuv](https://github.com/1yuv) |
| 186 | +- [Kevin Segura](https://github.com/kevSeguraEdify) |
| 187 | +- [Steven Fonseca](https://github.com/steven-fc-edify) |
| 188 | +- [Jeferson Gómez](https://github.com/jefgmz) |
| 189 | +- ... and more |
0 commit comments