Skip to content

Release 3.8.4 to main - #501

Merged
snehar-nd merged 9 commits into
mainfrom
release-3.8.4
Oct 7, 2026
Merged

snehar-nd merged 9 commits into
mainfrom
release-3.8.4

Conversation

@snehar-nd

Copy link
Copy Markdown
Contributor

📋 Description

JIRA ID:

3.8.4 to main

✅ Type of Change

  • 🐞 Bug fix (non-breaking change which resolves an issue)
  • ✨ New feature (non-breaking change which adds functionality)
  • 🔥 Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • 🛠 Refactor (change that is neither a fix nor a new feature)
  • ⚙️ Config change (configuration file or build script updates)
  • 📚 Documentation (updates to docs or readme)
  • 🧪 Tests (adding new or updating existing tests)
  • 🎨 UI/UX (changes that affect the user interface)
  • 🚀 Performance (improves performance)
  • 🧹 Chore (miscellaneous changes that don't modify src or test files)

ℹ️ Additional Information

Please describe how the changes were tested, and include any relevant screenshots, logs, or other information that provides additional context.

vanitha1822 and others added 7 commits August 24, 2026 17:23
Adds the UI for the central-to-local down-sync, which until now could only be
triggered by calling the API directly - MMU-UI had no hook for
/dataSyncActivity/startDownSync at all.

A fifth tab in the data sync workarea, alongside Data Upload, Data Download,
Generate BeneficiaryID and Inventory Data Download, so it needs no new route,
menu entry or permission. It shows a progress bar, the current table, tables
completed, records inserted / updated / skipped, conflicts, and a list of any
failed tables. Van ID and providerServiceMapID come from session storage exactly
as the Data Download tab takes them.

Its progress state is deliberately separate from showProgressBar /
progressValue: those belong to the up-sync and the master download, and sharing
them would let one sync clear the other's progress bar. The button is still
disabled while either is running, since both drive the same API.

Polling stops on inProgress = false rather than on percentage >= 100. The master
download stops at 100%, which never arrives when a run fails part way; the
down-sync reports inProgress explicitly, so a failed run ends the poll and shows
the failed tables instead of spinning. canDeactivate blocks navigation while a
down-sync is running, and ngOnDestroy clears the interval.

Note src/environments/environment.ts is gitignored, so the two URLs are added to
the tracked environment files only; a local environment.ts has to be refreshed
from environment.local.ts to pick them up.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
* fix: block data sync if user does not belong to same VAN

Added providerServiceMapID validation in data sync login flow.
After successful authentication, the data sync user's PSM is compared
against the main session's PSM. If they differ (e.g., Mysuru nurse
trying to sync a Vizag van), an alert is shown and sync is blocked.

- Alert: 'Data sync user does not belong to the same VAN'
- Clears serverKey so the sync screen remains locked
- Applies to both normal and concurrent-login (doLogout) flows

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Revert "fix: block data sync if user does not belong to same VAN"

This reverts commit 3ea1285.

* fix: validate data sync userID matches main session userID

Block data sync login if the authenticated data sync user is different
from the logged-in MMU session user. Compares userID from the
userAuthenticate API response against the session's stored userID.
Shows alert 'Sync user is not valid' and clears serverKey if mismatch.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(stoptb): Nikshay sync screens and results CSV upload (#460)

* feat(stoptb): add Nikshay results CSV upload tab to camp hub dialog

Adds the upload half of the Nikshay ID Generator round trip: a new
tab lets camp staff pick the visit date and the app's results CSV,
posts it to MMU-API's importResultsCsv endpoint, and shows how many
Nikshay IDs were written back versus how many rows need manual
review or failed, with beneficiary names so staff know who to check.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* feat: nikshaya id syn screens

* feat(stoptb): gate Nikshay Sync nav item behind Stop TB env flag

Hides the Nikshay Sync header tab outside Stop TB deployments by
reusing environment.isMMUOfflineQRCode, the same flag that gates the
Camp Hub QR code button on the login page. The Camp Hub results
upload tab needed no change: that dialog is only reachable through
openQrDialog(), already behind the same flag.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Sneha <sneha@ADMINs-MacBook-Pro.local>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>

* Sn/merge 3.6.3 to 3.8.4 (#468)

* fix: replace native alert() with confirmationService in AppHeaderComponent

* fix: address CodeRabbit review comments in AppHeaderComponent

* fix(auth-guard): remove unmanaged currentLangugae$ subscription

* chore(auth-guard): add required GPL-3.0 header

* fix(auth-guard): return UrlTree/boolean from canActivate

* docs: add CONTRIBUTING.md guide for MMU-UI contributors

* docs: fix README setup instructions and Common-UI submodule initialization

* refactor: implement standard Reactive Forms validation in DataSyncLoginComponent

* feat(core): add aria labels to mobile navbar toggler

* fix(rxjs): replace internal rxjs imports with public API paths

* fix(core): replace native alert() with ConfirmationService in AppHeaderComponent

* chore(deps-dev): bump karma-jasmine-html-reporter from 2.1.0 to 2.2.0

Bumps [karma-jasmine-html-reporter](https://github.com/dfederm/karma-jasmine-html-reporter) from 2.1.0 to 2.2.0.
- [Release notes](https://github.com/dfederm/karma-jasmine-html-reporter/releases)
- [Commits](dfederm/karma-jasmine-html-reporter@v2.1.0...v2.2.0)

---
updated-dependencies:
- dependency-name: karma-jasmine-html-reporter
  dependency-version: 2.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump websocket-driver from 0.7.4 to 0.7.5

Bumps [websocket-driver](https://github.com/faye/websocket-driver-node) from 0.7.4 to 0.7.5.
- [Changelog](https://github.com/faye/websocket-driver-node/blob/main/CHANGELOG.md)
- [Commits](faye/websocket-driver-node@0.7.4...0.7.5)

---
updated-dependencies:
- dependency-name: websocket-driver
  dependency-version: 0.7.5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump axios from 1.16.0 to 1.18.1

Bumps [axios](https://github.com/axios/axios) from 1.16.0 to 1.18.1.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](axios/axios@v1.16.0...v1.18.1)

---
updated-dependencies:
- dependency-name: axios
  dependency-version: 1.18.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump engine.io from 6.6.4 to 6.6.9

Bumps [engine.io](https://github.com/socketio/socket.io) from 6.6.4 to 6.6.9.
- [Release notes](https://github.com/socketio/socket.io/releases)
- [Changelog](https://github.com/socketio/socket.io/blob/main/CHANGELOG.md)
- [Commits](https://github.com/socketio/socket.io/compare/engine.io@6.6.4...engine.io@6.6.9)

---
updated-dependencies:
- dependency-name: engine.io
  dependency-version: 6.6.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump immutable from 4.3.8 to 4.3.9

Bumps [immutable](https://github.com/immutable-js/immutable-js) from 4.3.8 to 4.3.9.
- [Release notes](https://github.com/immutable-js/immutable-js/releases)
- [Changelog](https://github.com/immutable-js/immutable-js/blob/main/CHANGELOG.md)
- [Commits](immutable-js/immutable-js@v4.3.8...v4.3.9)

---
updated-dependencies:
- dependency-name: immutable
  dependency-version: 4.3.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* feat(stoptb): add a Down Sync tab to the data sync screen

Adds the UI for the central-to-local down-sync, which until now could only be
triggered by calling the API directly - MMU-UI had no hook for
/dataSyncActivity/startDownSync at all.

A fifth tab in the data sync workarea, alongside Data Upload, Data Download,
Generate BeneficiaryID and Inventory Data Download, so it needs no new route,
menu entry or permission. It shows a progress bar, the current table, tables
completed, records inserted / updated / skipped, conflicts, and a list of any
failed tables. Van ID and providerServiceMapID come from session storage exactly
as the Data Download tab takes them.

Its progress state is deliberately separate from showProgressBar /
progressValue: those belong to the up-sync and the master download, and sharing
them would let one sync clear the other's progress bar. The button is still
disabled while either is running, since both drive the same API.

Polling stops on inProgress = false rather than on percentage >= 100. The master
download stops at 100%, which never arrives when a run fails part way; the
down-sync reports inProgress explicitly, so a failed run ends the poll and shows
the failed tables instead of spinning. canDeactivate blocks navigation while a
down-sync is running, and ngOnDestroy clears the interval.

Note src/environments/environment.ts is gitignored, so the two URLs are added to
the tracked environment files only; a local environment.ts has to be refreshed
from environment.local.ts to pick them up.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* fix: add the screen for downsync

* fix: update pom version

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Lakshy S. <suntiwari3495@gmail.com>
Co-authored-by: VarshiniGunti <guntiv@iitbhilai.ac.in>
Co-authored-by: Aarti Panchal <aartipanchal539@gmail.com>
Co-authored-by: Rahul Tripathi <rahul@Rahuls-Mac-mini.local>
Co-authored-by: Arpit Tripathi <arpittripathiayo@gmail.com>
Co-authored-by: pratyksh gupta <pratykshgupta@pratykshs-MacBook-Pro.local>
Co-authored-by: Kaushik Kumar <kaushikrjpm10@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: vanitha1822 <vanitha@navadhiti.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Sneha <sneha@ADMINs-MacBook-Pro.local>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Sneha <sneha@ADMINs-MacBook-Pro.local>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Lakshy S. <suntiwari3495@gmail.com>
Co-authored-by: VarshiniGunti <guntiv@iitbhilai.ac.in>
Co-authored-by: Aarti Panchal <aartipanchal539@gmail.com>
Co-authored-by: Rahul Tripathi <rahul@Rahuls-Mac-mini.local>
Co-authored-by: Arpit Tripathi <arpittripathiayo@gmail.com>
Co-authored-by: pratyksh gupta <pratykshgupta@pratykshs-MacBook-Pro.local>
Co-authored-by: Kaushik Kumar <kaushikrjpm10@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: vanitha1822 <vanitha@navadhiti.com>
* fix: block data sync if user does not belong to same VAN

Added providerServiceMapID validation in data sync login flow.
After successful authentication, the data sync user's PSM is compared
against the main session's PSM. If they differ (e.g., Mysuru nurse
trying to sync a Vizag van), an alert is shown and sync is blocked.

- Alert: 'Data sync user does not belong to the same VAN'
- Clears serverKey so the sync screen remains locked
- Applies to both normal and concurrent-login (doLogout) flows

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* Revert "fix: block data sync if user does not belong to same VAN"

This reverts commit 3ea1285.

* fix: validate data sync userID matches main session userID

Block data sync login if the authenticated data sync user is different
from the logged-in MMU session user. Compares userID from the
userAuthenticate API response against the session's stored userID.
Shows alert 'Sync user is not valid' and clears serverKey if mismatch.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat(stoptb): Nikshay sync screens and results CSV upload (#460)

* feat(stoptb): add Nikshay results CSV upload tab to camp hub dialog

Adds the upload half of the Nikshay ID Generator round trip: a new
tab lets camp staff pick the visit date and the app's results CSV,
posts it to MMU-API's importResultsCsv endpoint, and shows how many
Nikshay IDs were written back versus how many rows need manual
review or failed, with beneficiary names so staff know who to check.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* feat: nikshaya id syn screens

* feat(stoptb): gate Nikshay Sync nav item behind Stop TB env flag

Hides the Nikshay Sync header tab outside Stop TB deployments by
reusing environment.isMMUOfflineQRCode, the same flag that gates the
Camp Hub QR code button on the login page. The Camp Hub results
upload tab needed no change: that dialog is only reachable through
openQrDialog(), already behind the same flag.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Sneha <sneha@ADMINs-MacBook-Pro.local>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>

* Sn/merge 3.6.3 to 3.8.4 (#468)

* fix: replace native alert() with confirmationService in AppHeaderComponent

* fix: address CodeRabbit review comments in AppHeaderComponent

* fix(auth-guard): remove unmanaged currentLangugae$ subscription

* chore(auth-guard): add required GPL-3.0 header

* fix(auth-guard): return UrlTree/boolean from canActivate

* docs: add CONTRIBUTING.md guide for MMU-UI contributors

* docs: fix README setup instructions and Common-UI submodule initialization

* refactor: implement standard Reactive Forms validation in DataSyncLoginComponent

* feat(core): add aria labels to mobile navbar toggler

* fix(rxjs): replace internal rxjs imports with public API paths

* fix(core): replace native alert() with ConfirmationService in AppHeaderComponent

* chore(deps-dev): bump karma-jasmine-html-reporter from 2.1.0 to 2.2.0

Bumps [karma-jasmine-html-reporter](https://github.com/dfederm/karma-jasmine-html-reporter) from 2.1.0 to 2.2.0.
- [Release notes](https://github.com/dfederm/karma-jasmine-html-reporter/releases)
- [Commits](dfederm/karma-jasmine-html-reporter@v2.1.0...v2.2.0)

---
updated-dependencies:
- dependency-name: karma-jasmine-html-reporter
  dependency-version: 2.2.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump websocket-driver from 0.7.4 to 0.7.5

Bumps [websocket-driver](https://github.com/faye/websocket-driver-node) from 0.7.4 to 0.7.5.
- [Changelog](https://github.com/faye/websocket-driver-node/blob/main/CHANGELOG.md)
- [Commits](faye/websocket-driver-node@0.7.4...0.7.5)

---
updated-dependencies:
- dependency-name: websocket-driver
  dependency-version: 0.7.5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump axios from 1.16.0 to 1.18.1

Bumps [axios](https://github.com/axios/axios) from 1.16.0 to 1.18.1.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v1.x/CHANGELOG.md)
- [Commits](axios/axios@v1.16.0...v1.18.1)

---
updated-dependencies:
- dependency-name: axios
  dependency-version: 1.18.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps): bump engine.io from 6.6.4 to 6.6.9

Bumps [engine.io](https://github.com/socketio/socket.io) from 6.6.4 to 6.6.9.
- [Release notes](https://github.com/socketio/socket.io/releases)
- [Changelog](https://github.com/socketio/socket.io/blob/main/CHANGELOG.md)
- [Commits](https://github.com/socketio/socket.io/compare/engine.io@6.6.4...engine.io@6.6.9)

---
updated-dependencies:
- dependency-name: engine.io
  dependency-version: 6.6.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore(deps-dev): bump immutable from 4.3.8 to 4.3.9

Bumps [immutable](https://github.com/immutable-js/immutable-js) from 4.3.8 to 4.3.9.
- [Release notes](https://github.com/immutable-js/immutable-js/releases)
- [Changelog](https://github.com/immutable-js/immutable-js/blob/main/CHANGELOG.md)
- [Commits](immutable-js/immutable-js@v4.3.8...v4.3.9)

---
updated-dependencies:
- dependency-name: immutable
  dependency-version: 4.3.9
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

* feat(stoptb): add a Down Sync tab to the data sync screen

Adds the UI for the central-to-local down-sync, which until now could only be
triggered by calling the API directly - MMU-UI had no hook for
/dataSyncActivity/startDownSync at all.

A fifth tab in the data sync workarea, alongside Data Upload, Data Download,
Generate BeneficiaryID and Inventory Data Download, so it needs no new route,
menu entry or permission. It shows a progress bar, the current table, tables
completed, records inserted / updated / skipped, conflicts, and a list of any
failed tables. Van ID and providerServiceMapID come from session storage exactly
as the Data Download tab takes them.

Its progress state is deliberately separate from showProgressBar /
progressValue: those belong to the up-sync and the master download, and sharing
them would let one sync clear the other's progress bar. The button is still
disabled while either is running, since both drive the same API.

Polling stops on inProgress = false rather than on percentage >= 100. The master
download stops at 100%, which never arrives when a run fails part way; the
down-sync reports inProgress explicitly, so a failed run ends the poll and shows
the failed tables instead of spinning. canDeactivate blocks navigation while a
down-sync is running, and ngOnDestroy clears the interval.

Note src/environments/environment.ts is gitignored, so the two URLs are added to
the tracked environment files only; a local environment.ts has to be refreshed
from environment.local.ts to pick them up.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* fix: add the screen for downsync

* fix: update pom version

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Lakshy S. <suntiwari3495@gmail.com>
Co-authored-by: VarshiniGunti <guntiv@iitbhilai.ac.in>
Co-authored-by: Aarti Panchal <aartipanchal539@gmail.com>
Co-authored-by: Rahul Tripathi <rahul@Rahuls-Mac-mini.local>
Co-authored-by: Arpit Tripathi <arpittripathiayo@gmail.com>
Co-authored-by: pratyksh gupta <pratykshgupta@pratykshs-MacBook-Pro.local>
Co-authored-by: Kaushik Kumar <kaushikrjpm10@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: vanitha1822 <vanitha@navadhiti.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Sneha <sneha@ADMINs-MacBook-Pro.local>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Sneha <sneha@ADMINs-MacBook-Pro.local>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: Lakshy S. <suntiwari3495@gmail.com>
Co-authored-by: VarshiniGunti <guntiv@iitbhilai.ac.in>
Co-authored-by: Aarti Panchal <aartipanchal539@gmail.com>
Co-authored-by: Rahul Tripathi <rahul@Rahuls-Mac-mini.local>
Co-authored-by: Arpit Tripathi <arpittripathiayo@gmail.com>
Co-authored-by: pratyksh gupta <pratykshgupta@pratykshs-MacBook-Pro.local>
Co-authored-by: Kaushik Kumar <kaushikrjpm10@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: vanitha1822 <vanitha@navadhiti.com>
…set (#482)

* fix(ci): default QRCODE_ENABLED so build-ci doesn't hard-fail when unset

environment.ci.ts.template's isMMUOfflineQRCode uses <%= QRCODE_ENABLED %>
(throws on undefined), but this key was missing from ci-prebuild.js's
defaultEnvValues — so any CI job that doesn't set it as an env var fails
the whole build with "QRCODE_ENABLED is not defined" before TypeScript
compilation even starts (hit on Jenkins UAT-STOPTB). Unrelated to the
Nikshay work — a pre-existing gap from whatever introduced the camp hub
QR code feature. Defaulted to false; a job that does set the env var
still wins, since process.env is spread after this object.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* chore(ci): remove comments from QRCODE_ENABLED default

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: vishwab1 <vishwanath@navadhiti.com>
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: Sneha <sneha@ADMINs-MacBook-Pro.local>
@coderabbitai

coderabbitai Bot commented Oct 7, 2026 •

Copy link
Copy Markdown

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 2f56bff0-9918-4cf2-be6c-a4474c616fe0
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sneha and others added 2 commits October 7, 2026 11:13
Resolve conflicts with main for PR #501:
- pom.xml: keep release version 3.8.4
- data-sync-login: keep getDataSyncPrivileges() for the data sync service
  lookup (used elsewhere in the component and null-safe) over main's
  inline serviceName === 'MMU' filter

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@snehar-nd snehar-nd changed the title Release 3.8.4 Release 3.8.4 to main Oct 7, 2026
@sonarqubecloud

sonarqubecloud Bot commented Oct 7, 2026

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
C Reliability Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

@snehar-nd
snehar-nd merged commit e9d6550 into main Oct 7, 2026
2 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants