)]}'
{
  "log": [
    {
      "commit": "3ea39f061797abb0d6f37bc6835443018df0ec30",
      "tree": "a850b12a98d84869a56dbf3ff5c367bdf1812041",
      "parents": [
        "553b7c2a40d640ddf27004c8669c3d3ab95558b0",
        "e3b16cfa2ce9182721749886d77ba4c31bc0b679"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Tue Jul 28 09:58:28 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 09:58:28 2026 +0530"
      },
      "message": "Merge pull request #154 from apache/dependabot/npm_and_yarn/emnapi/core-1.11.2\n\nchore(deps-dev): bump @emnapi/core from 1.10.0 to 1.11.2"
    },
    {
      "commit": "e3b16cfa2ce9182721749886d77ba4c31bc0b679",
      "tree": "a850b12a98d84869a56dbf3ff5c367bdf1812041",
      "parents": [
        "553b7c2a40d640ddf27004c8669c3d3ab95558b0"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Tue Jul 28 04:15:53 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 04:15:53 2026 +0000"
      },
      "message": "chore(deps-dev): bump @emnapi/core from 1.10.0 to 1.11.2\n\nBumps [@emnapi/core](https://github.com/toyobayashi/emnapi) from 1.10.0 to 1.11.2.\n- [Release notes](https://github.com/toyobayashi/emnapi/releases)\n- [Commits](https://github.com/toyobayashi/emnapi/compare/v1.10.0...v1.11.2)\n\n---\nupdated-dependencies:\n- dependency-name: \"@emnapi/core\"\n  dependency-version: 1.11.2\n  dependency-type: direct:development\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "553b7c2a40d640ddf27004c8669c3d3ab95558b0",
      "tree": "e5f6c4f9bdaefcf45ecf10c1c99f0cf700d29959",
      "parents": [
        "e3753ca692261bff45d881041be0f982a391efc5",
        "5eb7f8dda395c6ee919ec8d494ef0cba1b5a1dd4"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Tue Jul 28 09:42:02 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 09:42:02 2026 +0530"
      },
      "message": "Merge pull request #155 from apache/dependabot/npm_and_yarn/playwright/test-1.61.1\n\nchore(deps-dev): bump @playwright/test from 1.59.1 to 1.61.1"
    },
    {
      "commit": "e3753ca692261bff45d881041be0f982a391efc5",
      "tree": "772779840e7c33fea111dcb6867435261ed7dd78",
      "parents": [
        "21a0968c906cf7f1c96ce2c4b2a123c39f94d584",
        "192b8a769a40b1fb2b33eae0bcd58a2325aa570a"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Tue Jul 28 09:41:21 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 28 09:41:21 2026 +0530"
      },
      "message": "Merge pull request #156 from apache/dependabot/npm_and_yarn/typescript-eslint-8.64.0\n\nchore(deps-dev): bump typescript-eslint from 8.62.1 to 8.64.0"
    },
    {
      "commit": "21a0968c906cf7f1c96ce2c4b2a123c39f94d584",
      "tree": "363d3bcef71c0cb581e89234c454d75947921732",
      "parents": [
        "a75c30e92aa6fc37bb3e312a1b2bf9d45d002064",
        "5b16399cb2af262bcaae3788c80fbac03c97c1b2"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Mon Jul 27 19:38:33 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 19:38:33 2026 +0530"
      },
      "message": "Merge pull request #158 from apache/dependabot/github_actions/actions/setup-node-7.0.0\n\nchore(deps): bump actions/setup-node from 6.4.0 to 7.0.0"
    },
    {
      "commit": "192b8a769a40b1fb2b33eae0bcd58a2325aa570a",
      "tree": "9f1adfe86d3939b33c0ac453a0aa11c739f420bb",
      "parents": [
        "a75c30e92aa6fc37bb3e312a1b2bf9d45d002064"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jul 27 13:38:37 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 13:38:37 2026 +0000"
      },
      "message": "chore(deps-dev): bump typescript-eslint from 8.62.1 to 8.64.0\n\nBumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.62.1 to 8.64.0.\n- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)\n- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)\n- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.64.0/packages/typescript-eslint)\n\n---\nupdated-dependencies:\n- dependency-name: typescript-eslint\n  dependency-version: 8.64.0\n  dependency-type: direct:development\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "5b16399cb2af262bcaae3788c80fbac03c97c1b2",
      "tree": "363d3bcef71c0cb581e89234c454d75947921732",
      "parents": [
        "a75c30e92aa6fc37bb3e312a1b2bf9d45d002064"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jul 27 13:35:48 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 13:35:48 2026 +0000"
      },
      "message": "chore(deps): bump actions/setup-node from 6.4.0 to 7.0.0\n\nBumps [actions/setup-node](https://github.com/actions/setup-node) from 6.4.0 to 7.0.0.\n- [Release notes](https://github.com/actions/setup-node/releases)\n- [Commits](https://github.com/actions/setup-node/compare/48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e...820762786026740c76f36085b0efc47a31fe5020)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-node\n  dependency-version: 7.0.0\n  dependency-type: direct:production\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "a75c30e92aa6fc37bb3e312a1b2bf9d45d002064",
      "tree": "6760385558d6a797c51b4e260a9819815fc08451",
      "parents": [
        "9b5eb048a91f1d1557f366a70d700b3742f8b1e5",
        "42d9fd0b7f60b02576f38c4dc4b54d9027be44f0"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Mon Jul 27 19:05:01 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 19:05:01 2026 +0530"
      },
      "message": "Merge pull request #159 from apache/dependabot/github_actions/actions/setup-java-5.6.0\n\nchore(deps): bump actions/setup-java from 5.5.0 to 5.6.0"
    },
    {
      "commit": "9b5eb048a91f1d1557f366a70d700b3742f8b1e5",
      "tree": "4f0a54783d64dd9ad47764163d775f517ebb3cb9",
      "parents": [
        "8c54e2e8e0acc9925c032cd2fc29513463ba3f99",
        "5f735ff5c029ef57e3a987bc02ae756410bc94e5"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Mon Jul 27 19:04:15 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 19:04:15 2026 +0530"
      },
      "message": "Merge pull request #152 from apache/dependabot/github_actions/zizmorcore/zizmor-action-0.6.0\n\nchore(deps): bump zizmorcore/zizmor-action from 0.5.7 to 0.6.0"
    },
    {
      "commit": "8c54e2e8e0acc9925c032cd2fc29513463ba3f99",
      "tree": "8ea39f59021352fb34e4bd62186b89e1a1523237",
      "parents": [
        "b307f497cc4f7f567e6c46681838e531d19c9364",
        "f3a1668239812e6babacc68a3534d3c4f0e633b7"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Mon Jul 27 19:03:39 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 27 19:03:39 2026 +0530"
      },
      "message": "Merge pull request #151 from apache/dependabot/github_actions/actions/checkout-7.0.1\n\nchore(deps): bump actions/checkout from 7.0.0 to 7.0.1"
    },
    {
      "commit": "b307f497cc4f7f567e6c46681838e531d19c9364",
      "tree": "09c09a2abffbed5471c11b7c173d2b4cc3b6d758",
      "parents": [
        "1ef8ebc47208edf91d86a69a869cd128cafbf18e",
        "d6c6f11121173f3e960026dce8364ede060790fc"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Sun Jul 26 22:20:13 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 26 22:20:13 2026 +0530"
      },
      "message": "Merge pull request #161 from Aman-Mittal/feature/ionic-migration\n\nMigrate from Material to Ionic framework"
    },
    {
      "commit": "d6c6f11121173f3e960026dce8364ede060790fc",
      "tree": "09c09a2abffbed5471c11b7c173d2b4cc3b6d758",
      "parents": [
        "afeae31e1cc007c277589c8762ab050939e1b022"
      ],
      "author": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 22:16:52 2026 +0530"
      },
      "committer": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 22:16:52 2026 +0530"
      },
      "message": "docs: use a real translation key in the tooltip usage example\n\ncheck-translations.mjs scans source for translation keys and does not skip\ncomments, so the placeholder \u0027HELP.FOO\u0027 in the directive\u0027s JSDoc was reported\nas a key referenced in code but missing from en.json, failing CI.\n\nPointing the example at HELP.SEARCH_DESC, a key that actually exists, fixes\nthe check and makes the example more useful than a placeholder would be.\n"
    },
    {
      "commit": "afeae31e1cc007c277589c8762ab050939e1b022",
      "tree": "b8685321a6d665608e3d14238ea2a9b68e73e92a",
      "parents": [
        "865c4ccc36f0279ed8e17c2b6703a9a2000c60e9"
      ],
      "author": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 22:12:53 2026 +0530"
      },
      "committer": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 22:12:53 2026 +0530"
      },
      "message": "fix: restore tooltips with a real directive, and finish the login page\n\nmatTooltip had no Ionic counterpart and the migration fell back to the native\ntitle attribute. That was a regression: title does not surface from the shadow\nhost of an Ionic web component, so most of these tooltips simply stopped\nappearing, and the ones that did lost their styling and timing to the browser.\n\nTooltipDirective replaces all 218 bindings across 81 files. It is worth owning\nrather than working around, because contextual help is load-bearing in this\napp — nearly every table and form field carries a HELP.*_DESC key.\n\n- Appended to the body, so a card\u0027s overflow never clips it, and positioned\n  above the host with a flip below when there is no room and a clamp at the\n  viewport edges.\n- Opens on focus as well as hover and closes on Escape, so it is reachable\n  without a mouse.\n- Wires aria-describedby, since screen readers never see the tooltip element.\n- Honours prefers-reduced-motion.\n\nVerified in the browser rather than assumed: the tooltip renders with the\nright text, resolves to --secondary-color, lands on screen, and sets\naria-describedby.\n\nLogin page: the ℹ️ emoji used as a help affordance is replaced by the shared\napp-help-icon, so help looks the same here as everywhere else, and the\nlanguage picker moves out of an absolute position that collided with the\ncentred logo.\n"
    },
    {
      "commit": "865c4ccc36f0279ed8e17c2b6703a9a2000c60e9",
      "tree": "498136c64e0c9aef963146258fa82d3460d063d6",
      "parents": [
        "c0909db78e83c5dd1ee80f98e90bd605e1d08c7c"
      ],
      "author": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 21:55:08 2026 +0530"
      },
      "committer": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 21:55:08 2026 +0530"
      },
      "message": "style: unify the visual system on theme-aware tokens\n\nEvery visual inconsistency left after the migration had the same root cause:\ncomponents hard-coded light colours instead of reading tokens, so dark mode\nbroke component by component. This adds the missing tokens and points the\noffenders at them.\n\nNew tokens in _common.scss, defined for both themes:\n\n- --hover-bg / --active-bg. The data table hovered with rgba(0,0,0,0.02),\n  which is invisible on a dark row.\n- --overlay-bg. The loading scrim was rgba(255,255,255,0.65), a white flash\n  over a dark card.\n- --surface-sunken, --focus-ring, and a --space-1..6 scale so gaps stop being\n  ad-hoc.\n\nThe data table is where the care goes — it is what these users read for hours:\n\n- ion-card-header lays its children out in a column by default, which is why\n  the title rendered centred with its action orphaned onto the line below.\n  It is now an explicit row, title left, actions right, with a rule beneath.\n- The column header is sticky. These tables are read top-to-bottom for\n  minutes and losing the column names costs a scroll back.\n- Sortable headers show intent on hover and the sorted column stays tinted,\n  so sort state is legible without reading the arrow.\n\nguidance-tour no longer forces `background: #fff !important`, which left it a\nwhite card floating on a dark page. header\u0027s hover states and the login page\u0027s\nsurfaces, borders, focus ring and error styling all read from tokens now, and\nthe language picker is styled to sit with the Ionic controls beside it rather\nthan as default browser chrome.\n\nThe login page keeps its native input and select elements deliberately: they\nare keyboard-robust, and the e2e helper drives #serverUrl through\nselectOption. Consistency here is a styling job, not a reason to swap the\ncontrol.\n"
    },
    {
      "commit": "c0909db78e83c5dd1ee80f98e90bd605e1d08c7c",
      "tree": "2edb5e91fcd0eaf431989b5a3b03d7f283f3116f",
      "parents": [
        "7bfea0c938e7a5df42afa5b1231394eac9ceaab2"
      ],
      "author": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 21:42:14 2026 +0530"
      },
      "committer": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 21:42:14 2026 +0530"
      },
      "message": "test: adapt the e2e suite to Ionic\u0027s select and overlay DOM\n\nion-select does not reproduce mat-select\u0027s DOM. Verified against the running\napp rather than assumed: it opens an ion-alert whose options are\nrole\u003d\"radio\" buttons inside a role\u003d\"radiogroup\", and the alert interface\nneeds an explicit OK press to commit the choice.\n\n- All ion-selects gain interface\u003d\"popover\". The default alert interface puts\n  a modal in front of every dropdown and requires a confirmation click,\n  which is wrong for a desktop back-office; a popover selects on click, as\n  mat-select did.\n- select-mat-option becomes select-option, targets the radios inside\n  ion-alert/ion-popover, and synchronises on those overlays rather than\n  .cdk-overlay-backdrop. It still presses OK when the alert interface is in\n  play, so it works either way.\n- getByRole(\u0027option\u0027) and getByRole(\u0027listbox\u0027) lookups move to the radios\n  inside the overlay. ion-select-option is a configuration element and is\n  never the thing you click.\n\nAlso clears the stale native-federation artifact cache issue encountered\nafter removing @angular/material: the dev server kept serving 404s for\nchunks that no longer existed until .angular/cache was removed.\n"
    },
    {
      "commit": "7bfea0c938e7a5df42afa5b1231394eac9ceaab2",
      "tree": "b4f57cedae281d1ee58d060cc2d6799df53d72a2",
      "parents": [
        "3bb637a6233768b2cabba6cfb59fb13f00efb2d8"
      ],
      "author": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 21:24:21 2026 +0530"
      },
      "committer": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 21:24:21 2026 +0530"
      },
      "message": "feat: remove Angular Material\n\nNo source file imports @angular/material any more.\n\n- Deletes custom-paginator-intl and its MatPaginatorIntl provider; the shared\n  app-paginator carries the translated labels and the unknown-total heuristic.\n- Removes the dependency and the indigo-pink prebuilt theme from both the\n  build and test targets. @angular/cdk stays: it is the unstyled primitives\n  package and the shared data table is built on cdk-table.\n- Drops the .mat-mdc-* dark-mode overrides from _common.scss. Ionic takes its\n  colours from the variables above them via _ionic-theme.scss, so ~110 lines\n  of !important overrides are simply gone. The form utilities now target\n  ion-input/ion-select/ion-textarea, and .error-snackbar is replaced by the\n  toast cssClass.\n- index.html drops the Material Icons webfont, the mat-typography body class\n  and the Roboto family, and gains viewport-fit\u003dcover for Ionic\u0027s safe-area\n  insets.\n\nThe migration ratchet has served its purpose at zero and is replaced by a\nno-restricted-imports rule, which was verified to reject a planted import.\nThe six temporary codemod scripts are deleted along with it.\n\ne2e: all Material selectors are gone. select-mat-option becomes\nselect-option and synchronises on ion-alert/ion-popover rather than\n.cdk-overlay-backdrop, since ion-select presents through those and they have\ntheir own animation timing. loan-lifecycle\u0027s inline copy of that helper is\nremoved, taking with it the force: true workaround for a mat-form-field\nfloating label that no longer exists. Icon selectors move from ligature text\nto [name] attributes, and the paginator assertion uses the range label\u0027s\ndata-testid rather than .mat-mdc-paginator-range-label.\n\nProduction dependencies: 26 packages, all Apache Category A.\n"
    },
    {
      "commit": "3bb637a6233768b2cabba6cfb59fb13f00efb2d8",
      "tree": "4ded72b35de890b517fa2e5a56147bd3840def4e",
      "parents": [
        "71eb8de591300563855b12182f9c5900f685c652"
      ],
      "author": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 21:14:27 2026 +0530"
      },
      "committer": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 21:14:27 2026 +0530"
      },
      "message": "feat: finish the feature sweep\n\nMaterial file count drops from 13 to 2. The only remaining imports are\nMatPaginatorIntl in app.config.ts and custom-paginator-intl.ts, both of which\nthe cutover deletes.\n\n- mat-expansion-panel becomes ion-accordion in audit-logs.\n- The last mat-paginator, in client-search-v2, becomes app-paginator. That\n  component is controlled rather than self-tracking, so the page index is now\n  a field the template reads instead of living inside the paginator.\n- wc-loan-product-form\u0027s date pickers were the half-migrated pair: their\n  inputs already sat inside an ion-item, so the form-field codemod never\n  matched them.\n- checker-inbox\u0027s fire-and-forget dialog moves to DialogService.\n- Material palette names have no Ionic counterpart, so color\u003d\"warn\" becomes\n  \"danger\" and color\u003d\"accent\" becomes \"secondary\" across 80 files. Left\n  as-is they would silently fall back to the default colour.\n- The remaining mat-icons interpolated their ligature from an expression;\n  those become [name] bindings with ionicon names.\n\nAlso rewrites the mat-* selectors left behind in component styles arrays,\nwhich would have gone on matching nothing.\n"
    },
    {
      "commit": "71eb8de591300563855b12182f9c5900f685c652",
      "tree": "50a748ac0bd5ac32cfad34ae7e4e17d338c4ad77",
      "parents": [
        "9daa85fe4aeaa5d50732cc0ce89675dc98a8c9d7"
      ],
      "author": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 21:02:44 2026 +0530"
      },
      "committer": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 21:02:44 2026 +0530"
      },
      "message": "feat: convert the remaining radios, lists and multi-line icons\n\nMaterial file count drops from 22 to 13.\n\nHandles what the earlier passes left: mat-icon elements whose attributes\nwrap across lines, mat-radio-group/button, mat-list and mat-list-item,\nplus the last stray spinners, dividers and matSuffix/matPrefix.\n\ncurrencies.component.ts needed real work rather than a rename. It used a\nmat-selection-list and read the checked rows back off the element through\nselectedOptions.selected. ion-list has no selection model, so each pane now\ntracks its own checked codes in a Set and the add/remove handlers read from\nthat instead of from the DOM.\n"
    },
    {
      "commit": "9daa85fe4aeaa5d50732cc0ce89675dc98a8c9d7",
      "tree": "c26a566d2fa946a6fdd12007066eaf64a6004792",
      "parents": [
        "6472f2ed208c2bc3f88068f67f58cf5edab8cb95"
      ],
      "author": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 20:57:27 2026 +0530"
      },
      "committer": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 20:57:27 2026 +0530"
      },
      "message": "feat: convert menus to ion-popover and the remaining date pickers\n\nMaterial file count drops from 31 to 22.\n\nMaterial wires a menu to its trigger through a template reference, Ionic\nwires a popover to a DOM id, so [matMenuTriggerFor]\u003d\"fooMenu\" becomes\nid\u003d\"fooMenu-trigger\" on the button and trigger\u003d\"fooMenu-trigger\" on the\npopover. Menu items become ion-item button, with their text moved into an\nion-label and leading icons given slot\u003d\"start\".\n\nThe date picker codemod now falls back to the bound property when the input\nhas no name attribute — ngModel still needs one — and carries [max]/[min]\nacross. client-action-dialog\u0027s maxDate becomes a string with it, since\nion-datetime expresses its bounds in ISO strings too.\n\nRe-running the first codemod afterwards converts the form fields those\npickers were blocking, as before.\n"
    },
    {
      "commit": "6472f2ed208c2bc3f88068f67f58cf5edab8cb95",
      "tree": "c77e7f55a47086a037cc7709979011016f058740",
      "parents": [
        "91f29a0f40396e8a74f24534aa91262949c3fc4c"
      ],
      "author": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 20:49:20 2026 +0530"
      },
      "committer": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 20:49:20 2026 +0530"
      },
      "message": "feat: convert dialogs to ModalController and DialogService\n\nMaterial file count drops from 37 to 31.\n\nDialog components take their payload as an @Input rather than through\nMAT_DIALOG_DATA, since Ionic assigns componentProps straight onto the\ninstance, and they dismiss through ModalController. Callers move to\nDialogService, whose open() resolves with the dismiss payload, so\nafterClosed().subscribe() becomes .then().\n\nThe config object is read by balancing braces rather than by regex. A lazy\n`data: {...}` match ends at the first closing brace, which for\nclient-view.component.ts fell inside the template literal\n`ACTIONS.${command.toUpperCase()}_CLIENT` and silently truncated the call.\n\nBecause dialogs are now promise-based, onActivateHoliday, onViewDetails and\nonAddEntry return their promise so callers and tests can await the result;\nthe specs that assert on post-dialog behaviour would otherwise run their\nexpectations before the microtask resolved.\n\nclient-view.component.ts gains a ClientActionResult interface: DialogService\nis generic and the caller destructures the result, which was previously\nuntyped through MatDialogRef.\n\nAlso removes the `[mat-dialog-close]\u003d\"true\"` bindings that the directive\nstrip left behind as an empty `[]\u003d\"true\"` binding.\n"
    },
    {
      "commit": "91f29a0f40396e8a74f24534aa91262949c3fc4c",
      "tree": "c2d8be31376ec9ec3cdf710a913d067e1275e759",
      "parents": [
        "da0ac6d482bbe08f420f5e3e28238c1231226d6e"
      ],
      "author": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 20:26:54 2026 +0530"
      },
      "committer": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 20:26:54 2026 +0530"
      },
      "message": "feat: convert tab groups to ion-segment\n\nMaterial file count drops from 43 to 37.\n\nion-tabs is for routed, app-level navigation, so the in-page equivalent of a\nmat-tab-group is an ion-segment plus conditional content. mat-tab-group\ntracked the selected tab internally and ion-segment does not, so each\nconverted component gains a signal to hold it. Nested groups are converted\ninnermost-first.\n\nemail-messages.component.ts needed more than the mechanical rewrite: it\nlazy-loads each tab\u0027s data from onTabChange(), so its segment calls that\nmethod rather than setting the signal directly, and its existing numeric\nactiveTab field is folded into the new signal. Setting the signal alone\nwould have left every tab after the first empty.\n\nAlso adds the COMMON.SELECT_PAGE key, in en, hi and ko, which the paginator\nintroduced and npm run i18n:check flagged as missing.\n"
    },
    {
      "commit": "da0ac6d482bbe08f420f5e3e28238c1231226d6e",
      "tree": "97fc4368daf665f18079af9a7b6a0d984b34e84c",
      "parents": [
        "ff6189596c0bbc4b19a499b836c17a782eff1809"
      ],
      "author": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 20:21:31 2026 +0530"
      },
      "committer": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 20:21:31 2026 +0530"
      },
      "message": "feat: convert the form fields unblocked by the date picker pass\n\nMaterial file count drops from 74 to 43.\n\nThe first codemod skips any mat-form-field containing a matDatepicker,\nbecause a date picker is not a mechanical rewrite. Now that the pickers are\nion-datetime, those form fields convert like any other, so this is simply the\nfirst codemod run again over the same tree.\n\nBuild, lint and all 644 unit tests stay green.\n"
    },
    {
      "commit": "ff6189596c0bbc4b19a499b836c17a782eff1809",
      "tree": "135dfae47998983aef01289853083e36a4332b6c",
      "parents": [
        "0548f07bf18b4416d726f8a78ecc2e567fb635dc"
      ],
      "author": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 20:18:24 2026 +0530"
      },
      "committer": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 20:19:10 2026 +0530"
      },
      "message": "feat: convert date pickers to ion-datetime\n\nDate picker usage drops from 42 files to 6. The overall Material file count\nstays at 74, because those files still import form-field and input for their\nother fields.\n\nThis is the one conversion that changes a value\u0027s type: mat-datepicker binds\na Date, ion-datetime binds an ISO string, so the codemod migrates the\nconsequences too.\n\n- The hand-rolled `${d.getFullYear()}-${String(d.getMonth() + 1)...}`\n  formatting, repeated across the codebase, becomes toIsoDate(). Prettier had\n  wrapped many of these across lines, so matching them needed a\n  whitespace-tolerant pattern.\n- Date fields bound into an ion-datetime are retyped to string, and API\n  responses assigning `new Date(...)` into them are wrapped in toIsoDate().\n- Three components defined their own formatDate(date: Date) helper with a\n  private month-name array. Those duplicated formatDateToFineract and are\n  now deleted in favour of it.\n\nNot every date field moved: components migrated in the first pass bind\nion-datetime with [value] plus an (ionChange) handler and keep a Date\ninternally. Specs were realigned per component against the field\u0027s actual\ndeclared type rather than blanket-converted, after an over-eager pass showed\nwhy that distinction matters.\n"
    },
    {
      "commit": "0548f07bf18b4416d726f8a78ecc2e567fb635dc",
      "tree": "7d5fbd8e35630af2bd803372ea050fc4cbe90cac",
      "parents": [
        "864d55ff5569818b9f989dec40e719c857723380"
      ],
      "author": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 19:57:02 2026 +0530"
      },
      "committer": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 19:57:02 2026 +0530"
      },
      "message": "feat: convert snackbars to NotificationService and raw tables to CDK\n\nSecond codemod pass, taking the Material file count from 105 to 74.\n\n- 45 files move from MatSnackBar to NotificationService. Severity is inferred\n  from the message text, so every inferred call was audited afterwards\n  against the message content. Two were wrong and are fixed here: a\n  showError() helper that reported success because its argument was an\n  opaque translation key, and \u0027Task rejected successfully\u0027, which matched on\n  the word \"rejected\" but is a success.\n- 28 files move from mat-table to cdk-table. The engine is identical, only\n  the styling is lost, so _common.scss now carries base rules for\n  table[cdk-table] — applied globally rather than per component so every raw\n  table stays consistent.\n- run-report.component.ts held the last MatTableDataSource. Report results\n  arrive whole, so it now pages client-side over a signal with a computed\n  slice and the shared app-paginator.\n\nTwo collisions needed judgement rather than a rule:\n\n- notifications-list.component.ts already imported a NotificationService\n  from the generated API client and owns a `notifications` signal, so the\n  toast service is aliased to ToastService there.\n- external-events.component.ts used a snackbar with an action button as a\n  confirmation prompt. That is a dialog, not a notification, so it now uses\n  DialogService.confirm().\n\nSpec mocks updated to match.\n"
    },
    {
      "commit": "864d55ff5569818b9f989dec40e719c857723380",
      "tree": "b96843006cb80de82e062319d9e8a742c0640850",
      "parents": [
        "aa247b870a37e1be7f9d9f904ea08e28a9c9c829"
      ],
      "author": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 19:44:20 2026 +0530"
      },
      "committer": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 19:44:20 2026 +0530"
      },
      "message": "feat: convert the mechanical Material markup across all features\n\nApplies scripts/codemod-ionic.mjs to features/ and core/, taking the number\nof files importing @angular/material from 226 to 105. Build, lint, format\nand all 644 unit tests stay green.\n\nThe codemod handles only what is unambiguous: mat-form-field blocks become\nion-item + ion-label + ion-input/ion-textarea, selects become ion-select,\ncards/chips/spinners/progress bars/dividers get their Ionic counterparts,\nmat-icon ligatures resolve through the icon map, and matTooltip becomes a\ntitle attribute.\n\nThree details worth recording, each of which produced real breakage before\nbeing handled:\n\n- A Material module is only dropped from a file once no markup needing it\n  remains. Removing MatFormFieldModule while \u003cmat-form-field\u003e was still in\n  the template produced 841 compile errors on the first attempt.\n- Only \u003cbutton\u003e elements that actually carried a Material button directive\n  become \u003cion-button\u003e, matched to their closing tag through a nesting stack.\n  A blanket rename also caught plain buttons and mat-menu-item.\n- Event handlers are rewritten after the element renames, not before, and\n  Ionic\u0027s payload lives under detail: (change)\u003d\"f($event.checked)\" becomes\n  (ionChange)\u003d\"f($event.detail.checked)\".\n\nClosing tags are matched with trailing whitespace allowed, because Prettier\nwraps them as `\u003c/mat-option\\n  \u003e`.\n\nDate pickers, tab groups, menus, raw mat-table markup, dialogs, lists and\nsnackbars are deliberately untouched — 100 files still need a human, which\nthe codemod reports.\n"
    },
    {
      "commit": "aa247b870a37e1be7f9d9f904ea08e28a9c9c829",
      "tree": "e8c6f50ad116d6f68e046d63ea6642d1ad88dfb2",
      "parents": [
        "0067791788f570f775d20bda09dbd3fae472eef4"
      ],
      "author": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 19:31:26 2026 +0530"
      },
      "committer": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 19:31:26 2026 +0530"
      },
      "message": "fix: load Ionic\u0027s base CSS via angular.json instead of a Sass @import\n\nIonic components were rendering with no base styles at all. A Sass\n`@import \u0027@ionic/angular/css/core.css\u0027` is emitted as a plain CSS @import\nwith a bare package specifier, which the dev server could not resolve — it\nanswered index.html for every one of the ten files, and the browser then\nrefused them for having a text/html MIME type. Confirmed from the console:\n\n  Refused to apply style from \u0027.../@ionic/angular/css/core.css\u0027 because its\n  MIME type (\u0027text/html\u0027) is not a supported stylesheet MIME type\n\nThe base CSS now comes from the styles array in angular.json, where Angular\nresolves and bundles it, using the single ionic.bundle.css that covers core,\nnormalize, structure, typography and the utility layers. It is listed before\nsrc/styles.scss so the app\u0027s own theme overrides still win — verified in the\nbuilt bundle, where --ion-color-primary resolves to #3498db rather than\nIonic\u0027s stock #0054e9.\n\nApplies to both the build and test targets.\n"
    },
    {
      "commit": "0067791788f570f775d20bda09dbd3fae472eef4",
      "tree": "5d22167b1d32785814c95d6c3f76a8136a64d1cc",
      "parents": [
        "90e10096c2b8cf65e984f02ba7931e5ae898d61a"
      ],
      "author": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 19:17:26 2026 +0530"
      },
      "committer": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 19:17:26 2026 +0530"
      },
      "message": "feat: migrate the layout shell to Ionic\n\n- main-layout: mat-progress-bar -\u003e ion-progress-bar. The shell itself is a\n  hand-rolled flex layout rather than mat-sidenav, so no structural change\n  was needed and ion-app/ion-menu are not introduced.\n- sidebar: mat-icon -\u003e ion-icon, and navigation-config.service.ts now holds\n  ionicon names instead of Material ligatures. Names shared by several nav\n  items are hoisted into constants to satisfy sonarjs/no-duplicate-string.\n- header: the global search moves from mat-form-field + mat-autocomplete to\n  ion-searchbar with a results list. Ionic has no autocomplete, so the list\n  is rendered directly; hiding it on blur is deferred by a beat, otherwise\n  the list unmounts before the click that caused the blur reaches a result.\n  This also removes the only ::ng-deep in the codebase.\n- inactivity-dialog and idle.service move to ModalController. The warning is\n  created with backdropDismiss: false — ignoring it has to fall through to\n  the hard logout timer rather than silently cancelling the countdown.\n\nSpecs updated accordingly; the idle service test now drives the modal\nlifecycle through onWillDismiss, including the never-answered case.\n\nMaterial ratchet: 233 -\u003e 226 files.\n"
    },
    {
      "commit": "90e10096c2b8cf65e984f02ba7931e5ae898d61a",
      "tree": "563b65c6a7f373251174051665a583d8f992ebda",
      "parents": [
        "229e0956137a206bf888d98fce8b7737f20e586a"
      ],
      "author": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 19:08:04 2026 +0530"
      },
      "committer": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 19:08:04 2026 +0530"
      },
      "message": "feat: migrate remaining shared components and add migration guardrails\n\nShared components:\n- guidance-tour, create-office-dialog, datatable-entry-dialog and\n  entity-datatables move to Ionic. The two dialogs now dismiss through\n  ModalController and receive their data as an @Input rather than via\n  MAT_DIALOG_DATA, and datatable-entry-dialog reports failures through\n  NotificationService.\n- entity-datatables swaps mat-tab-group for ion-segment. ion-tabs is for\n  routed app-level navigation, so a segment is the right in-page control.\n- onAddEntry and addOffice return their promise so callers and tests can\n  await the dialog result.\n- Adds toIsoDate to date-formatter, replacing the yyyy-MM-dd string building\n  that was inlined at several call sites. It formats in local time rather\n  than via toISOString, which converts to UTC and can shift the date by a\n  day either side of Greenwich.\n\nGuardrails, so the migration cannot quietly regress:\n- scripts/check-icons.mjs fails when a template references an ion-icon name\n  missing from APP_ICONS. Ionic renders those as blank space with no error,\n  which is exactly the kind of bug that survives review.\n- scripts/check-material.mjs is a ratchet over the number of files importing\n  @angular/material. It fails if the count rises, so new code cannot bring\n  Material back, and the baseline is lowered as files migrate. A lint rule\n  was the obvious alternative but emits ~1200 warnings while the migration\n  is in flight and would drown the rest of the output; eslint.config.js\n  records the rule to enable once the ratchet reaches zero.\n- Both run in CI and are documented in CONTRIBUTING.md.\n"
    },
    {
      "commit": "229e0956137a206bf888d98fce8b7737f20e586a",
      "tree": "e2cc948046d631c304b7045b788d1f1d4b655c75",
      "parents": [
        "2eb620a90fd313cec1654b611d56227a3463e378"
      ],
      "author": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 18:51:22 2026 +0530"
      },
      "committer": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 18:51:22 2026 +0530"
      },
      "message": "feat: rebuild the shared data-table on CDK table with Ionic chrome\n\nReplaces MatTable/MatPaginator/MatSort/MatCard with @angular/cdk/table plus\nIonic chrome and the new app-paginator. The public API is unchanged -\nColumnDef, appCellTemplate, every @Input and @Output keep their names - so\nthe ~92 consumers need no edits. Only the sortChange/pageChange payload\ntypes move from Material\u0027s Sort/PageEvent to the local models.\n\nCDK has no MatTableDataSource, so filtering, sorting and pagination are\nreimplemented directly:\n\n- filtering matches case-insensitively across the displayed columns and\n  resets to the first page, since a narrower result set can leave the\n  current page out of range;\n- sorting cycles asc -\u003e desc -\u003e unsorted as mat-sort did, compares numbers\n  numerically, and pushes rows with a missing value last in both\n  directions so empty cells never lead the table;\n- the rendered rows, record total and sort state are signals, so the view\n  refreshes whenever derived state changes rather than depending on how\n  change detection was triggered.\n\nSortable headers now carry aria-sort. help-icon moves to ion-icon, with the\nhelp text on both title and aria-label because Ionic has no tooltip.\n\nThe 11 files that imported PageEvent/Sort from Material now use\nshared/models/table.model. client-search-v2 and run-report still render\ntheir own mat-paginator and are left for the feature sweep.\n"
    },
    {
      "commit": "2eb620a90fd313cec1654b611d56227a3463e378",
      "tree": "cc06222d64e93b707b70c2d6772d1e54351b4aa3",
      "parents": [
        "3735828a4beb0a959d3a31a36c8d12b70f434636"
      ],
      "author": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 18:36:32 2026 +0530"
      },
      "committer": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 18:36:32 2026 +0530"
      },
      "message": "docs: document the Ionic conventions and prune superseded docs\n\n- STYLE.md gains a UI Components section: the Material -\u003e Ionic component\n  mapping, the standalone import rule, the date-picker and CustomEvent\n  idioms, the icon-registry requirement, NotificationService/DialogService,\n  and the CSS-custom-property theming rules. Also corrects the test runner\n  (Karma, not Jest) and notes the sonarjs/void-use ban.\n- CONTRIBUTING.md states that Material must not be used in new code, points\n  at the two conventions that fail silently (unregistered icons,\n  provideIonicTesting), and records the Apache Category A license allowlist\n  that CI enforces.\n- AGENTS.md gains the same Ionic conventions for agent contributors.\n- README.md lists Ionic in the tech stack and fixes the Jest reference.\n- ARCHITECTURE_DECISIONS.md now tags each item Implemented / Partially\n  implemented / Planned, so aspirational entries are no longer readable as\n  current state, and records the Ionic decision and its rationale. Kept\n  rather than removed because AGENTS.md and security.md reference it.\n- Removes EXTENDED_PLAN.md and\n  fineract_backoffice_api_and_feature_gap_report.md. Both are unreferenced\n  point-in-time artifacts superseded by DOCS/UI_GAP_ANALYSIS.md and\n  DOCS/PENDING_APIS.md, and EXTENDED_PLAN.md prescribed matTooltip usage\n  that now contradicts the Ionic direction.\n\n"
    },
    {
      "commit": "3735828a4beb0a959d3a31a36c8d12b70f434636",
      "tree": "a9716f0f7c0a30ab60fbbcd205182f19c14a5731",
      "parents": [
        "b9d37485a6cfabefebfef350dd7d94742985ecb4"
      ],
      "author": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 18:33:01 2026 +0530"
      },
      "committer": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 18:33:01 2026 +0530"
      },
      "message": "feat: bridge Ionic theming to app tokens and align federation sharing\n\n- styles/_ionic-theme.scss maps --ion-color-* and the surface/text variables\n  onto the design tokens in _common.scss, so Ionic components render in the\n  Fineract palette rather than stock Ionic blue (#0054e9 -\u003e #3498db). Imported\n  after the Ionic CSS so the overrides win. Dark mode follows the existing\n  [data-theme\u003d\u0027dark\u0027] attribute driven by ThemeService, including Ionic\u0027s\n  neutral step scale, which otherwise renders near-white on dark surfaces.\n  Also styles the error/success toasts, with pre-wrap on the message part so\n  stacked validation errors keep their line breaks.\n- federation.config.js now shares the @ionic/angular package root as a strict\n  singleton, matching the remote\u0027s override. The secondary entry points were\n  already shared via shareAll, but the package root - the key the remote\n  shares under - was absent, so the two had no common key to dedupe on.\n\n"
    },
    {
      "commit": "b9d37485a6cfabefebfef350dd7d94742985ecb4",
      "tree": "7c458b4bf0830fdcf9789f8a41f29811f342b6ca",
      "parents": [
        "d2d37160cf720ede309670e2c08b74b31cfa77ef"
      ],
      "author": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 18:25:54 2026 +0530"
      },
      "committer": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 18:25:54 2026 +0530"
      },
      "message": "feat: add table models and Ionic paginator\n\nPhase 1 foundations, continued.\n\n- shared/models/table.model.ts defines local PageEvent and SortEvent so the\n  data-table API stops leaking Material types into its ~92 consumers.\n- shared/components/paginator carries over the behaviour of\n  CustomPaginatorIntl: translated labels that re-resolve on language change,\n  and the Fineract unknown-total range label. Fineract returns\n  offset + pageSize + 1 when it does not know the real total, so that case\n  renders \"of many\" instead of a number users would read as authoritative.\n  The range label carries a data-testid to replace the e2e suite\u0027s current\n  dependency on .mat-mdc-paginator-range-label.\n- Declares ionicons in package.json. It was already present transitively via\n  @ionic/angular, but core/icons.ts now imports it directly.\n\nLicense compliance verified: ionicons, @ionic/angular, @ionic/core and\n@stencil/core are all MIT (ASF Category A). The CI gates both pass —\nscripts/check-license.sh and license-checker against the allowlist.\n\n"
    },
    {
      "commit": "d2d37160cf720ede309670e2c08b74b31cfa77ef",
      "tree": "b15a9ff8448b803a2a8a04748d998112a5d41565",
      "parents": [
        "35a0a65838282b738141645d79be3d2e1d3c22d0"
      ],
      "author": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 18:20:00 2026 +0530"
      },
      "committer": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 18:20:00 2026 +0530"
      },
      "message": "feat: add icon registry, notification and dialog services\n\nPhase 1 foundations for the Material -\u003e Ionic migration.\n\n- core/icons.ts registers all 100 ionicons the app needs, mapped from the\n  141 Material ligatures in use, and addIcons() now runs in bootstrap.ts.\n  Previously addIcons() was never called, so every \u003cion-icon\u003e in the\n  already-migrated components silently failed to resolve at runtime.\n- core/services/notification.service.ts wraps Ionic ToastController and\n  replaces MatSnackBar in the global error interceptor, preserving the\n  multi-line stacked validation messages the Fineract API returns.\n- core/services/dialog.service.ts wraps ModalController; confirm() absorbs\n  ConfirmDialogComponent, which is now Ionic-based. All five call sites in\n  the loans feature are converted.\n- testing/ionic-testing.ts supplies provideIonicTesting() for TestBeds that\n  render components depending on Ionic overlays.\n\nAlso applies Prettier to the previously committed Ionic work, which was\nnot formatted.\n\n"
    },
    {
      "commit": "35a0a65838282b738141645d79be3d2e1d3c22d0",
      "tree": "13c4950fdd34d1e0fd3db565d76b8d069c806cb0",
      "parents": [
        "1ef8ebc47208edf91d86a69a869cd128cafbf18e"
      ],
      "author": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 18:05:32 2026 +0530"
      },
      "committer": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 18:05:32 2026 +0530"
      },
      "message": "feat: migrate 32 components from Angular Material to Ionic\n\nConverts components across products, tellers, transfers, clients/kyc,\nworking-capital and shared to @ionic/angular/standalone:\n\n- mat-icon-button + mat-icon -\u003e ion-button fill\u003d\"clear\" + ion-icon\n- mat-form-field/matInput -\u003e ion-item + ion-label + ion-input\n- mat-datepicker -\u003e ion-datetime-button + ion-modal + ion-datetime\n- matTooltip -\u003e [attr.title] / [attr.aria-label]\n\nPreserves id and data-testid on interactive elements; updates the\naffected e2e specs accordingly.\n\n"
    },
    {
      "commit": "42d9fd0b7f60b02576f38c4dc4b54d9027be44f0",
      "tree": "2ee06e5317ed9e34e608e1c7b898f5c6bc654612",
      "parents": [
        "1ef8ebc47208edf91d86a69a869cd128cafbf18e"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun Jul 26 11:43:47 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 26 11:43:47 2026 +0000"
      },
      "message": "chore(deps): bump actions/setup-java from 5.5.0 to 5.6.0\n\nBumps [actions/setup-java](https://github.com/actions/setup-java) from 5.5.0 to 5.6.0.\n- [Release notes](https://github.com/actions/setup-java/releases)\n- [Commits](https://github.com/actions/setup-java/compare/0f481fcb613427c0f801b606911222b5b6f3083a...03ad4de0992f5dab5e18fcb136590ce7c4a0ac95)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-java\n  dependency-version: 5.6.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "5eb7f8dda395c6ee919ec8d494ef0cba1b5a1dd4",
      "tree": "a3a4760912eb09b3c084d299a08c7ccbe6e24fb8",
      "parents": [
        "1ef8ebc47208edf91d86a69a869cd128cafbf18e"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun Jul 26 11:43:01 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 26 11:43:01 2026 +0000"
      },
      "message": "chore(deps-dev): bump @playwright/test from 1.59.1 to 1.61.1\n\nBumps [@playwright/test](https://github.com/microsoft/playwright) from 1.59.1 to 1.61.1.\n- [Release notes](https://github.com/microsoft/playwright/releases)\n- [Commits](https://github.com/microsoft/playwright/compare/v1.59.1...v1.61.1)\n\n---\nupdated-dependencies:\n- dependency-name: \"@playwright/test\"\n  dependency-version: 1.61.1\n  dependency-type: direct:development\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "5f735ff5c029ef57e3a987bc02ae756410bc94e5",
      "tree": "14df08a88967f05bb22a4286574b3a396295d870",
      "parents": [
        "1ef8ebc47208edf91d86a69a869cd128cafbf18e"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun Jul 26 11:42:16 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 26 11:42:16 2026 +0000"
      },
      "message": "chore(deps): bump zizmorcore/zizmor-action from 0.5.7 to 0.6.0\n\nBumps [zizmorcore/zizmor-action](https://github.com/zizmorcore/zizmor-action) from 0.5.7 to 0.6.0.\n- [Release notes](https://github.com/zizmorcore/zizmor-action/releases)\n- [Commits](https://github.com/zizmorcore/zizmor-action/compare/192e21d79ab29983730a13d1382995c2307fbcaa...6599ee8b7a49aef6a770f63d261d214911a7ce02)\n\n---\nupdated-dependencies:\n- dependency-name: zizmorcore/zizmor-action\n  dependency-version: 0.6.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "f3a1668239812e6babacc68a3534d3c4f0e633b7",
      "tree": "71856b92aa36fdc36d737b6a7c52960f0a16c253",
      "parents": [
        "1ef8ebc47208edf91d86a69a869cd128cafbf18e"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun Jul 26 11:42:13 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 26 11:42:13 2026 +0000"
      },
      "message": "chore(deps): bump actions/checkout from 7.0.0 to 7.0.1\n\nBumps [actions/checkout](https://github.com/actions/checkout) from 7.0.0 to 7.0.1.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0...3d3c42e5aac5ba805825da76410c181273ba90b1)\n\n---\nupdated-dependencies:\n- dependency-name: actions/checkout\n  dependency-version: 7.0.1\n  dependency-type: direct:production\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "1ef8ebc47208edf91d86a69a869cd128cafbf18e",
      "tree": "afbd97015fb7e146a91e3481a77de020238becec",
      "parents": [
        "4b27a9b8d421f044dabe826c35ea7e907e837286",
        "108e2ff4d686bac9764930689a42687a0bad5794"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Sun Jul 26 11:24:05 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 26 11:24:05 2026 +0530"
      },
      "message": "Merge pull request #147 from apache/dependabot/npm_and_yarn/multi-e62244ae03\n\nchore(deps): bump shell-quote and @openapitools/openapi-generator-cli"
    },
    {
      "commit": "4b27a9b8d421f044dabe826c35ea7e907e837286",
      "tree": "a59a433c23fb1e0a7f3e9c216c389230aa2fe4a4",
      "parents": [
        "5551d08e2467fdc21ba3ba9fb71b0c540fbc28b9",
        "c9b0c90cc9983ddf7aa49246e0456f343e38ff2a"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Sun Jul 26 11:21:32 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 26 11:21:32 2026 +0530"
      },
      "message": "Merge pull request #146 from apache/dependabot/npm_and_yarn/fast-uri-3.1.4\n\nchore(deps-dev): bump fast-uri from 3.1.2 to 3.1.4"
    },
    {
      "commit": "108e2ff4d686bac9764930689a42687a0bad5794",
      "tree": "4fc3cb51d40e82c356a958eb5c1d810658548440",
      "parents": [
        "5551d08e2467fdc21ba3ba9fb71b0c540fbc28b9"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun Jul 26 05:51:11 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 26 05:51:11 2026 +0000"
      },
      "message": "chore(deps): bump shell-quote and @openapitools/openapi-generator-cli\n\nBumps [shell-quote](https://github.com/ljharb/shell-quote) to 1.9.0 and updates ancestor dependency [@openapitools/openapi-generator-cli](https://github.com/OpenAPITools/openapi-generator-cli). These dependencies need to be updated together.\n\n\nUpdates `shell-quote` from 1.8.4 to 1.9.0\n- [Changelog](https://github.com/ljharb/shell-quote/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/ljharb/shell-quote/compare/v1.8.4...v1.9.0)\n\nUpdates `@openapitools/openapi-generator-cli` from 2.39.1 to 2.40.1\n- [Release notes](https://github.com/OpenAPITools/openapi-generator-cli/releases)\n- [Commits](https://github.com/OpenAPITools/openapi-generator-cli/compare/v2.39.1...v2.40.1)\n\n---\nupdated-dependencies:\n- dependency-name: \"@openapitools/openapi-generator-cli\"\n  dependency-version: 2.40.1\n  dependency-type: direct:development\n- dependency-name: shell-quote\n  dependency-version: 1.9.0\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "5551d08e2467fdc21ba3ba9fb71b0c540fbc28b9",
      "tree": "f729ee3a2aae482a36f74755d50cb122ad70a4d3",
      "parents": [
        "311cb244f9aa998304b1c526fdcac62cfaa11ee8",
        "c7cc823beaa16f5c24ca957a6d1611c98db1a88b"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Sun Jul 26 11:18:57 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 26 11:18:57 2026 +0530"
      },
      "message": "Merge pull request #148 from Aman-Mittal/feature/federation-ionic-upgrade\n\nchore: upgrade module federation and add angular ionic support"
    },
    {
      "commit": "c7cc823beaa16f5c24ca957a6d1611c98db1a88b",
      "tree": "f729ee3a2aae482a36f74755d50cb122ad70a4d3",
      "parents": [
        "1ffed5a1c7cd6c41b25d4371095ddc260d74de5d"
      ],
      "author": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 11:14:09 2026 +0530"
      },
      "committer": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 11:14:09 2026 +0530"
      },
      "message": "chore: remove deprecated @softarc/native-federation-node to pass license checks\n"
    },
    {
      "commit": "1ffed5a1c7cd6c41b25d4371095ddc260d74de5d",
      "tree": "a2ddcbb63908cc81f4ae701483a23daf33d8ce6c",
      "parents": [
        "311cb244f9aa998304b1c526fdcac62cfaa11ee8"
      ],
      "author": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 11:08:41 2026 +0530"
      },
      "committer": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 26 11:08:41 2026 +0530"
      },
      "message": "chore: upgrade module federation and add angular ionic support\n"
    },
    {
      "commit": "c9b0c90cc9983ddf7aa49246e0456f343e38ff2a",
      "tree": "e5f1f0638fd0a3db3843a2e92db1e326e523df85",
      "parents": [
        "311cb244f9aa998304b1c526fdcac62cfaa11ee8"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sat Jul 25 12:45:45 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 25 12:45:45 2026 +0000"
      },
      "message": "chore(deps-dev): bump fast-uri from 3.1.2 to 3.1.4\n\nBumps [fast-uri](https://github.com/fastify/fast-uri) from 3.1.2 to 3.1.4.\n- [Release notes](https://github.com/fastify/fast-uri/releases)\n- [Commits](https://github.com/fastify/fast-uri/compare/v3.1.2...v3.1.4)\n\n---\nupdated-dependencies:\n- dependency-name: fast-uri\n  dependency-version: 3.1.4\n  dependency-type: indirect\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "311cb244f9aa998304b1c526fdcac62cfaa11ee8",
      "tree": "fc14950558aae7bcf745072c076a803e526579d8",
      "parents": [
        "caedf00d01a96b122d7e653458f0d725e023adf0",
        "46444e4c5483eb58f7fc11bf2625fcddc6bddec5"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Tue Jul 21 11:39:52 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 11:39:52 2026 +0530"
      },
      "message": "Merge pull request #143 from paultofunmi/feature/142-gate-interop-campaigns-wc-transfer\n\nGate Interop, Campaigns, Working Capital, and Transfers nav items"
    },
    {
      "commit": "caedf00d01a96b122d7e653458f0d725e023adf0",
      "tree": "900db4b3d782a948e82bb463f59ce7d713ee1a71",
      "parents": [
        "acf80f4515f66a49ebede9fd3e8b322163c4d2db",
        "fc30434949ba1642a4bdda8c9f1f3f234c3033d2"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Tue Jul 21 11:38:30 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 21 11:38:30 2026 +0530"
      },
      "message": "Merge pull request #145 from paultofunmi/fix/trim-dedupe-backend-permissions\n\ntrim and dedupe backend permission codes at session ingestion"
    },
    {
      "commit": "fc30434949ba1642a4bdda8c9f1f3f234c3033d2",
      "tree": "7867dff723b3a1908fef293e80d4b700f02b2e2a",
      "parents": [
        "455c13ef6babbcbb42495d1a539cea3fb4f93405"
      ],
      "author": {
        "name": "Tofunmi Oguntibeju",
        "email": "paultofunmi01@gmail.com",
        "time": "Mon Jul 20 22:44:22 2026 +0100"
      },
      "committer": {
        "name": "Tofunmi Oguntibeju",
        "email": "paultofunmi01@gmail.com",
        "time": "Mon Jul 20 22:44:22 2026 +0100"
      },
      "message": "trim and dedupe backend permission codes at session ingestion - Fineract permission seed data has trailing-space duplicates (e.g. \"CREATE_X\" and \"CREATE_X \"), which broke exact-match permission checks whenever only the dirty variant was returned for a role.\n"
    },
    {
      "commit": "46444e4c5483eb58f7fc11bf2625fcddc6bddec5",
      "tree": "c11f798288363abb0f66349a5f933b7193f4b0cf",
      "parents": [
        "02a5b6c7e2b6ef6989588f2c5dd732aaf931d1f2"
      ],
      "author": {
        "name": "Tofunmi Oguntibeju",
        "email": "paultofunmi01@gmail.com",
        "time": "Mon Jul 20 22:25:27 2026 +0100"
      },
      "committer": {
        "name": "Tofunmi Oguntibeju",
        "email": "paultofunmi01@gmail.com",
        "time": "Mon Jul 20 22:25:27 2026 +0100"
      },
      "message": "Gate Interop, Campaigns, Working Capital, and Transfers nav items by permission (#142)\n"
    },
    {
      "commit": "acf80f4515f66a49ebede9fd3e8b322163c4d2db",
      "tree": "6fedcc1b91894bd191f6aeef95fcdfb6725bbc18",
      "parents": [
        "f32fcf3b69e39a243fd39e9adf996393751bd232",
        "65f503b7d6a405afadecdda37de859d5b310e315"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Mon Jul 20 22:04:58 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 22:04:58 2026 +0530"
      },
      "message": "Merge pull request #141 from paultofunmi/feature/117-sidebar-navigation-config-service\n\nUpdate sidebar to render from NavigationConfigService (#117)"
    },
    {
      "commit": "65f503b7d6a405afadecdda37de859d5b310e315",
      "tree": "c49278e492c5b11072b5d657ceffcdc5d1537f8b",
      "parents": [
        "7b4ab71c0f0fe4eee5ed5fe159c2f9fbb3645009"
      ],
      "author": {
        "name": "Tofunmi Oguntibeju",
        "email": "paultofunmi01@gmail.com",
        "time": "Mon Jul 20 12:10:42 2026 +0100"
      },
      "committer": {
        "name": "Tofunmi Oguntibeju",
        "email": "paultofunmi01@gmail.com",
        "time": "Mon Jul 20 12:10:42 2026 +0100"
      },
      "message": "fix format issues (#117)\n"
    },
    {
      "commit": "7b4ab71c0f0fe4eee5ed5fe159c2f9fbb3645009",
      "tree": "80f0b44eaa4d5489fac071f5efec598e3d26b266",
      "parents": [
        "02a5b6c7e2b6ef6989588f2c5dd732aaf931d1f2"
      ],
      "author": {
        "name": "Tofunmi Oguntibeju",
        "email": "paultofunmi01@gmail.com",
        "time": "Mon Jul 20 10:29:17 2026 +0100"
      },
      "committer": {
        "name": "Tofunmi Oguntibeju",
        "email": "paultofunmi01@gmail.com",
        "time": "Mon Jul 20 10:29:17 2026 +0100"
      },
      "message": "update sidebar to render from NavigationConfigService (#117)\n"
    },
    {
      "commit": "f32fcf3b69e39a243fd39e9adf996393751bd232",
      "tree": "59a650cd6030e73fc9f57a165f333dd6a5df5720",
      "parents": [
        "2419da9c89cf07cb82d00d98b3c08d8ef48259cd",
        "5b301ccc2662402861c7cb70890744416248bcb7"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Mon Jul 20 11:55:41 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 11:55:41 2026 +0530"
      },
      "message": "Merge pull request #133 from apache/dependabot/npm_and_yarn/zone.js-0.16.2\n\nchore(deps): bump zone.js from 0.15.1 to 0.16.2"
    },
    {
      "commit": "5b301ccc2662402861c7cb70890744416248bcb7",
      "tree": "59a650cd6030e73fc9f57a165f333dd6a5df5720",
      "parents": [
        "2419da9c89cf07cb82d00d98b3c08d8ef48259cd"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jul 20 06:22:26 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 06:22:26 2026 +0000"
      },
      "message": "chore(deps): bump zone.js from 0.15.1 to 0.16.2\n\nBumps [zone.js](https://github.com/angular/angular/tree/HEAD/packages/zone.js) from 0.15.1 to 0.16.2.\n- [Release notes](https://github.com/angular/angular/releases)\n- [Changelog](https://github.com/angular/angular/blob/main/packages/zone.js/CHANGELOG.md)\n- [Commits](https://github.com/angular/angular/commits/zone.js-0.16.2/packages/zone.js)\n\n---\nupdated-dependencies:\n- dependency-name: zone.js\n  dependency-version: 0.16.2\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "2419da9c89cf07cb82d00d98b3c08d8ef48259cd",
      "tree": "beb021e2cb478c8c1723db1b812b89226da539ba",
      "parents": [
        "b564ad9124454b9211cd7cfb6c04e37a4374f926",
        "0d1140810cd4c19665553a2431875497c9c58de4"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Mon Jul 20 11:52:02 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 11:52:02 2026 +0530"
      },
      "message": "Merge pull request #137 from apache/dependabot/github_actions/github/codeql-action/analyze-4.37.0\n\nchore(deps): bump github/codeql-action/analyze from 4.36.3 to 4.37.0"
    },
    {
      "commit": "b564ad9124454b9211cd7cfb6c04e37a4374f926",
      "tree": "b2c24f1de1279b4e8ef9743baaf967d4a89e1070",
      "parents": [
        "20b3b224b0eb9372836067a495d5e9e788295a37",
        "42620cadf69cd7ec5c21385dc12fd901779f43a7"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Mon Jul 20 11:51:48 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 20 11:51:48 2026 +0530"
      },
      "message": "Merge pull request #136 from apache/dependabot/github_actions/github/codeql-action/init-4.37.0\n\nchore(deps): bump github/codeql-action/init from 4.36.3 to 4.37.0"
    },
    {
      "commit": "20b3b224b0eb9372836067a495d5e9e788295a37",
      "tree": "04c0359942b8d9fa50641141b15bdefbd5685996",
      "parents": [
        "d2134e0e245ec7dbf1c571f003a015455e7ad6d8",
        "c0113377dc9a841aabb5b31083fccc3401729bbc"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Sun Jul 19 22:31:08 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 19 22:31:08 2026 +0530"
      },
      "message": "Merge pull request #135 from apache/dependabot/npm_and_yarn/emnapi/runtime-1.11.2\n\nchore(deps-dev): bump @emnapi/runtime from 1.11.1 to 1.11.2"
    },
    {
      "commit": "d2134e0e245ec7dbf1c571f003a015455e7ad6d8",
      "tree": "ca9af3069b2d7714d923ddeaa881589fab8a815d",
      "parents": [
        "1cb891a31f3b3674d1ac6511f6d08155bfe97fdf",
        "02a5b6c7e2b6ef6989588f2c5dd732aaf931d1f2"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Sun Jul 19 22:30:13 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 19 22:30:13 2026 +0530"
      },
      "message": "Merge pull request #129 from paultofunmi/feature/116-nav-item-config-service\n\nFeature/116 nav item config service"
    },
    {
      "commit": "1cb891a31f3b3674d1ac6511f6d08155bfe97fdf",
      "tree": "db7d852abf31396a70a0243c8f52312dec9967d3",
      "parents": [
        "455c13ef6babbcbb42495d1a539cea3fb4f93405",
        "d6d4b8f3c5cbd6dec5bb8e087a184db6338dc28a"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Sun Jul 19 22:26:52 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 19 22:26:52 2026 +0530"
      },
      "message": "Merge pull request #130 from apache/dependabot/github_actions/actions/setup-java-5.5.0\n\nchore(deps): bump actions/setup-java from 5.4.0 to 5.5.0"
    },
    {
      "commit": "0d1140810cd4c19665553a2431875497c9c58de4",
      "tree": "b282b699eba6b962e429760e21001d96570684fa",
      "parents": [
        "455c13ef6babbcbb42495d1a539cea3fb4f93405"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun Jul 19 11:44:57 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 19 11:44:57 2026 +0000"
      },
      "message": "chore(deps): bump github/codeql-action/analyze from 4.36.3 to 4.37.0\n\nBumps [github/codeql-action/analyze](https://github.com/github/codeql-action) from 4.36.3 to 4.37.0.\n- [Release notes](https://github.com/github/codeql-action/releases)\n- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/github/codeql-action/compare/54f647b7e1bb85c95cddabcd46b0c578ec92bc1a...99df26d4f13ea111d4ec1a7dddef6063f76b97e9)\n\n---\nupdated-dependencies:\n- dependency-name: github/codeql-action/analyze\n  dependency-version: 4.37.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "42620cadf69cd7ec5c21385dc12fd901779f43a7",
      "tree": "17f2cb796e06beee5b860711dd535ff902775fa5",
      "parents": [
        "455c13ef6babbcbb42495d1a539cea3fb4f93405"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun Jul 19 11:43:42 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 19 11:43:42 2026 +0000"
      },
      "message": "chore(deps): bump github/codeql-action/init from 4.36.3 to 4.37.0\n\nBumps [github/codeql-action/init](https://github.com/github/codeql-action) from 4.36.3 to 4.37.0.\n- [Release notes](https://github.com/github/codeql-action/releases)\n- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/github/codeql-action/compare/54f647b7e1bb85c95cddabcd46b0c578ec92bc1a...99df26d4f13ea111d4ec1a7dddef6063f76b97e9)\n\n---\nupdated-dependencies:\n- dependency-name: github/codeql-action/init\n  dependency-version: 4.37.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "c0113377dc9a841aabb5b31083fccc3401729bbc",
      "tree": "989aaacbe3afcdaada1a39626560e9838c8ecec6",
      "parents": [
        "455c13ef6babbcbb42495d1a539cea3fb4f93405"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun Jul 19 11:43:29 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 19 11:43:29 2026 +0000"
      },
      "message": "chore(deps-dev): bump @emnapi/runtime from 1.11.1 to 1.11.2\n\nBumps [@emnapi/runtime](https://github.com/toyobayashi/emnapi) from 1.11.1 to 1.11.2.\n- [Release notes](https://github.com/toyobayashi/emnapi/releases)\n- [Commits](https://github.com/toyobayashi/emnapi/compare/v1.11.1...v1.11.2)\n\n---\nupdated-dependencies:\n- dependency-name: \"@emnapi/runtime\"\n  dependency-version: 1.11.2\n  dependency-type: direct:development\n  update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "d6d4b8f3c5cbd6dec5bb8e087a184db6338dc28a",
      "tree": "db7d852abf31396a70a0243c8f52312dec9967d3",
      "parents": [
        "455c13ef6babbcbb42495d1a539cea3fb4f93405"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun Jul 19 11:42:26 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 19 11:42:26 2026 +0000"
      },
      "message": "chore(deps): bump actions/setup-java from 5.4.0 to 5.5.0\n\nBumps [actions/setup-java](https://github.com/actions/setup-java) from 5.4.0 to 5.5.0.\n- [Release notes](https://github.com/actions/setup-java/releases)\n- [Commits](https://github.com/actions/setup-java/compare/1bcf9fb12cf4aa7d266a90ae39939e61372fe520...0f481fcb613427c0f801b606911222b5b6f3083a)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-java\n  dependency-version: 5.5.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "02a5b6c7e2b6ef6989588f2c5dd732aaf931d1f2",
      "tree": "81ba0f58630fcad609fbd2155146c9e6adee8cc4",
      "parents": [
        "7be62287952279a5432573ccbd7e22f77b15e487"
      ],
      "author": {
        "name": "Tofunmi Oguntibeju",
        "email": "paultofunmi01@gmail.com",
        "time": "Sun Jul 19 12:10:55 2026 +0100"
      },
      "committer": {
        "name": "Tofunmi Oguntibeju",
        "email": "paultofunmi01@gmail.com",
        "time": "Sun Jul 19 12:10:55 2026 +0100"
      },
      "message": "added test for ALL_FUNCTIONS_READ satisfy a non-READ\n"
    },
    {
      "commit": "7be62287952279a5432573ccbd7e22f77b15e487",
      "tree": "bd7db897e1abc34a84b41f535ff592c132a1eec2",
      "parents": [
        "455c13ef6babbcbb42495d1a539cea3fb4f93405"
      ],
      "author": {
        "name": "Tofunmi Oguntibeju",
        "email": "paultofunmi01@gmail.com",
        "time": "Sun Jul 19 11:47:39 2026 +0100"
      },
      "committer": {
        "name": "Tofunmi Oguntibeju",
        "email": "paultofunmi01@gmail.com",
        "time": "Sun Jul 19 11:50:57 2026 +0100"
      },
      "message": "add NavItemConfig interface and NavigationConfigService (#116)\n"
    },
    {
      "commit": "455c13ef6babbcbb42495d1a539cea3fb4f93405",
      "tree": "08e3d719a9acc1a64d0b0f8a02db8588dcf898cd",
      "parents": [
        "90fa1021b6da23711b3b7596e1e82759b212f3a0",
        "df080e5d1fca8e8285859925a16ffbb7ce37582e"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Sun Jul 19 14:41:18 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 19 14:41:18 2026 +0530"
      },
      "message": "Merge pull request #127 from Aman-Mittal/mfe-angular-22\n\nConvert workspace to microfrontend architecture, upgrade to Angular 22, and fix E2E tests"
    },
    {
      "commit": "df080e5d1fca8e8285859925a16ffbb7ce37582e",
      "tree": "08e3d719a9acc1a64d0b0f8a02db8588dcf898cd",
      "parents": [
        "04252c22550f4be5c86fd20983bc4ea140b7669e"
      ],
      "author": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 19 14:38:24 2026 +0530"
      },
      "committer": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 19 14:38:24 2026 +0530"
      },
      "message": "chore(angular): update test builder to karma and add options\n\nUpdate the unit test builder from @angular/build:unit-test to @angular/build:karma and configure options including polyfills, tsConfig, assets, and styles to ensure proper test environment.\n"
    },
    {
      "commit": "04252c22550f4be5c86fd20983bc4ea140b7669e",
      "tree": "ef2509b4d76f12dfa0c1333667f590810785967a",
      "parents": [
        "90fa1021b6da23711b3b7596e1e82759b212f3a0"
      ],
      "author": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 19 14:27:08 2026 +0530"
      },
      "committer": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Sun Jul 19 14:32:33 2026 +0530"
      },
      "message": "Convert workspace to microfrontend architecture, upgrade to Angular 22, and fix E2E tests\n"
    },
    {
      "commit": "90fa1021b6da23711b3b7596e1e82759b212f3a0",
      "tree": "368e6ca6e44ee74a0cbb0ed7869d400b715d05d3",
      "parents": [
        "55ea9be7d07d26da625f2b8fda2f185b8d989141",
        "29c4da09246a752ca5ce30646581a763709aedb1"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Sun Jul 19 13:17:20 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 19 13:17:20 2026 +0530"
      },
      "message": "Merge pull request #126 from paultofunmi/feature/120-permission-directive-rbac-parity\n\nScope ALL_FUNCTIONS_READ to read-only permissions in AuthService (#120)"
    },
    {
      "commit": "29c4da09246a752ca5ce30646581a763709aedb1",
      "tree": "368e6ca6e44ee74a0cbb0ed7869d400b715d05d3",
      "parents": [
        "55ea9be7d07d26da625f2b8fda2f185b8d989141"
      ],
      "author": {
        "name": "Tofunmi Oguntibeju",
        "email": "paultofunmi01@gmail.com",
        "time": "Sat Jul 18 15:53:24 2026 +0100"
      },
      "committer": {
        "name": "Tofunmi Oguntibeju",
        "email": "paultofunmi01@gmail.com",
        "time": "Sat Jul 18 15:53:24 2026 +0100"
      },
      "message": "scope ALL_FUNCTIONS_READ to read-only permissions in AuthService (#120)\n"
    },
    {
      "commit": "55ea9be7d07d26da625f2b8fda2f185b8d989141",
      "tree": "11bd1c691f5659fe386b7f11ce365b6588615295",
      "parents": [
        "98a1b3d99ff8eba176733b8d7787ebd9362ca111",
        "c7e3956988fc275337face0739115d451a540021"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Sat Jul 18 18:24:43 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 18 18:24:43 2026 +0530"
      },
      "message": "Merge pull request #125 from paultofunmi/feature/113-rbac-feature-flag\n\nAdd rbacEnabled feature flag for gradual RBAC rollout (#113)"
    },
    {
      "commit": "c7e3956988fc275337face0739115d451a540021",
      "tree": "11bd1c691f5659fe386b7f11ce365b6588615295",
      "parents": [
        "321115e3cf02eea8daed89afcbad2f47cb2698bb"
      ],
      "author": {
        "name": "Tofunmi Oguntibeju",
        "email": "paultofunmi01@gmail.com",
        "time": "Sat Jul 18 11:08:03 2026 +0100"
      },
      "committer": {
        "name": "Tofunmi Oguntibeju",
        "email": "paultofunmi01@gmail.com",
        "time": "Sat Jul 18 11:08:03 2026 +0100"
      },
      "message": "Fix CI format:check failures by running prettier over files added in\nthe RBAC feature-flag work.\n"
    },
    {
      "commit": "321115e3cf02eea8daed89afcbad2f47cb2698bb",
      "tree": "f55cc03a1517cf85f11f58156b4a9d94c9a5abdb",
      "parents": [
        "b51abc8a5023cd09d9bd28d98d8def785d09a231",
        "98a1b3d99ff8eba176733b8d7787ebd9362ca111"
      ],
      "author": {
        "name": "Tofunmi Oguntibeju",
        "email": "paultofunmi01@gmail.com",
        "time": "Sat Jul 18 10:36:52 2026 +0100"
      },
      "committer": {
        "name": "Tofunmi Oguntibeju",
        "email": "paultofunmi01@gmail.com",
        "time": "Sat Jul 18 10:36:52 2026 +0100"
      },
      "message": "Merge branch \u0027main\u0027 into feature/113-rbac-feature-flag\n"
    },
    {
      "commit": "98a1b3d99ff8eba176733b8d7787ebd9362ca111",
      "tree": "a830fdc2a91ac46836f10f1ad483a45b9937fcc8",
      "parents": [
        "8bb827874ad3fba4f6d5a4896e44142a2e0f42a9",
        "9a98287134ff02f005b7cfd6bd3ae151d557a083"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Sat Jul 18 09:52:52 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Jul 18 09:52:52 2026 +0530"
      },
      "message": "Merge pull request #124 from paultofunmi/feature/119-institution-config-service\n\nadd InstitutionConfigService for mode-based feature toggles (#119)"
    },
    {
      "commit": "9a98287134ff02f005b7cfd6bd3ae151d557a083",
      "tree": "a830fdc2a91ac46836f10f1ad483a45b9937fcc8",
      "parents": [
        "fb2873dbd2f08920adb6439b74162a367fbd443a"
      ],
      "author": {
        "name": "Tofunmi Oguntibeju",
        "email": "paultofunmi01@gmail.com",
        "time": "Fri Jul 17 20:39:55 2026 +0100"
      },
      "committer": {
        "name": "Tofunmi Oguntibeju",
        "email": "paultofunmi01@gmail.com",
        "time": "Fri Jul 17 20:39:55 2026 +0100"
      },
      "message": "refactor: derive InstitutionType guard from featureMatrix keys (#119)\n"
    },
    {
      "commit": "b51abc8a5023cd09d9bd28d98d8def785d09a231",
      "tree": "c888b7c37b0f534d9fe28f9f982ab6bad2430bd0",
      "parents": [
        "fb2873dbd2f08920adb6439b74162a367fbd443a"
      ],
      "author": {
        "name": "Tofunmi Oguntibeju",
        "email": "paultofunmi01@gmail.com",
        "time": "Fri Jul 17 20:17:42 2026 +0100"
      },
      "committer": {
        "name": "Tofunmi Oguntibeju",
        "email": "paultofunmi01@gmail.com",
        "time": "Fri Jul 17 20:17:42 2026 +0100"
      },
      "message": "add rbacEnabled feature flag for gradual RBAC rollout (#113)\n"
    },
    {
      "commit": "fb2873dbd2f08920adb6439b74162a367fbd443a",
      "tree": "50519b8bab83c444fa53da3c862ddb6d40a0527c",
      "parents": [
        "8bb827874ad3fba4f6d5a4896e44142a2e0f42a9"
      ],
      "author": {
        "name": "Tofunmi Oguntibeju",
        "email": "paultofunmi01@gmail.com",
        "time": "Thu Jul 16 23:01:25 2026 +0100"
      },
      "committer": {
        "name": "Tofunmi Oguntibeju",
        "email": "paultofunmi01@gmail.com",
        "time": "Thu Jul 16 23:01:25 2026 +0100"
      },
      "message": "add InstitutionConfigService for mode-based feature toggles (#119)\n"
    },
    {
      "commit": "8bb827874ad3fba4f6d5a4896e44142a2e0f42a9",
      "tree": "7aab716d9fe6328b0c947622462f21daf280580b",
      "parents": [
        "827534b39100c7d8b593daa8ded00e9d27997afe",
        "deac145d9cdcf3da2c3270005724884c63b102a0"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Thu Jul 16 13:56:21 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 16 13:56:21 2026 +0530"
      },
      "message": "Merge pull request #121 from apache/Aman-Mittal-patch-1\n\nAdd issues notification to .asf.yaml"
    },
    {
      "commit": "deac145d9cdcf3da2c3270005724884c63b102a0",
      "tree": "7aab716d9fe6328b0c947622462f21daf280580b",
      "parents": [
        "827534b39100c7d8b593daa8ded00e9d27997afe"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Thu Jul 16 13:23:47 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 16 13:23:47 2026 +0530"
      },
      "message": "Add issues notification to .asf.yaml"
    },
    {
      "commit": "827534b39100c7d8b593daa8ded00e9d27997afe",
      "tree": "a76e3d3d5225e906f1765a36d70c8cf29de058c5",
      "parents": [
        "f2bc64463f02b0835d013c16c6003277a74a8933",
        "a58b227ede945f120c1210c55eadd3128d6ab8ef"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Thu Jul 16 10:14:38 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Jul 16 10:14:38 2026 +0530"
      },
      "message": "Merge pull request #93 from Aman-Mittal/feature/loan-module-enhancement\n\nFINERACT-2681: feat(loans): implement comprehensive loan module enhancements"
    },
    {
      "commit": "f2bc64463f02b0835d013c16c6003277a74a8933",
      "tree": "4b8916b674ddb6a1f2ee3fad320be3524df7fc54",
      "parents": [
        "56a55931432d1acd0dbd7caab7b009cdbfe80205",
        "47997558efdea4ffdd2563e9a21a753f858c921c"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Wed Jul 15 21:05:11 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 15 21:05:11 2026 +0530"
      },
      "message": "Merge pull request #107 from KRYSTALM7/feature/FINERACT-2681-asf-yaml-enable-issues\n\nFINERACT-2681: Enable GitHub issue tracking"
    },
    {
      "commit": "47997558efdea4ffdd2563e9a21a753f858c921c",
      "tree": "a8e256d4d5cabe3e476a4bc66965f5d617d4913d",
      "parents": [
        "fbaf9026edd33b801ba580940a0292cd2930a570"
      ],
      "author": {
        "name": "Sujan Kumar MV",
        "email": "sujankumar7702@gmail.com",
        "time": "Wed Jul 15 20:22:42 2026 +0530"
      },
      "committer": {
        "name": "Sujan Kumar MV",
        "email": "sujankumar7702@gmail.com",
        "time": "Wed Jul 15 20:22:42 2026 +0530"
      },
      "message": "FINERACT-2681: Enable GitHub issue tracking\n"
    },
    {
      "commit": "56a55931432d1acd0dbd7caab7b009cdbfe80205",
      "tree": "9e57f122c745d604f38b85ac8d7b855912c1a6be",
      "parents": [
        "548905ebf12295d6875fe35f15fd8a215790d285",
        "a742a7774ae284bb02f94ba75d6a8700363fe5a2"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Mon Jul 13 11:23:56 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 13 11:23:56 2026 +0530"
      },
      "message": "Merge pull request #100 from apache/dependabot/npm_and_yarn/openapitools/openapi-generator-cli-2.39.1\n\nchore(deps-dev): bump @openapitools/openapi-generator-cli from 2.38.0 to 2.39.1"
    },
    {
      "commit": "a742a7774ae284bb02f94ba75d6a8700363fe5a2",
      "tree": "9e57f122c745d604f38b85ac8d7b855912c1a6be",
      "parents": [
        "548905ebf12295d6875fe35f15fd8a215790d285"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Mon Jul 13 05:51:52 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 13 05:51:52 2026 +0000"
      },
      "message": "chore(deps-dev): bump @openapitools/openapi-generator-cli\n\nBumps [@openapitools/openapi-generator-cli](https://github.com/OpenAPITools/openapi-generator-cli) from 2.38.0 to 2.39.1.\n- [Release notes](https://github.com/OpenAPITools/openapi-generator-cli/releases)\n- [Commits](https://github.com/OpenAPITools/openapi-generator-cli/compare/v2.38.0...v2.39.1)\n\n---\nupdated-dependencies:\n- dependency-name: \"@openapitools/openapi-generator-cli\"\n  dependency-version: 2.39.1\n  dependency-type: direct:development\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "548905ebf12295d6875fe35f15fd8a215790d285",
      "tree": "3a69f722dc1131163e7707139f1a2a60ebc780b4",
      "parents": [
        "b78378d92205a13f938a35ae9934ec1c4fa524e8",
        "2484f44240cdfca0a02190f5ada97350e8b10604"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Mon Jul 13 11:20:04 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 13 11:20:04 2026 +0530"
      },
      "message": "Merge pull request #105 from apache/dependabot/github_actions/github/codeql-action/init-4.36.3\n\nchore(deps): bump github/codeql-action/init from 4.33.0 to 4.36.3"
    },
    {
      "commit": "b78378d92205a13f938a35ae9934ec1c4fa524e8",
      "tree": "9b0929230a53bd63b9f5c29e54e7a483298e2c7e",
      "parents": [
        "e175dc6d330206635cbd2b7d2985fd686a4f9b4e",
        "c7fcde7756f67ecd8f65fc7e1620a28979d1df96"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Mon Jul 13 11:19:37 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 13 11:19:37 2026 +0530"
      },
      "message": "Merge pull request #106 from apache/dependabot/github_actions/github/codeql-action/analyze-4.36.3\n\nchore(deps): bump github/codeql-action/analyze from 4.33.0 to 4.36.3"
    },
    {
      "commit": "e175dc6d330206635cbd2b7d2985fd686a4f9b4e",
      "tree": "344161a6dea9ba162b9353651b8b0a87bb65847c",
      "parents": [
        "fbaf9026edd33b801ba580940a0292cd2930a570",
        "875b4292e63edd702caa7e73d7fc0e18a03382d1"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Mon Jul 13 11:18:04 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Jul 13 11:18:04 2026 +0530"
      },
      "message": "Merge pull request #102 from apache/dependabot/npm_and_yarn/typescript-eslint-8.62.1\n\nchore(deps-dev): bump typescript-eslint from 8.59.2 to 8.62.1"
    },
    {
      "commit": "c7fcde7756f67ecd8f65fc7e1620a28979d1df96",
      "tree": "8a013747de28d071003efe60bfd6396efe3d83ed",
      "parents": [
        "fbaf9026edd33b801ba580940a0292cd2930a570"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun Jul 12 11:44:59 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 12 11:44:59 2026 +0000"
      },
      "message": "chore(deps): bump github/codeql-action/analyze from 4.33.0 to 4.36.3\n\nBumps [github/codeql-action/analyze](https://github.com/github/codeql-action) from 4.33.0 to 4.36.3.\n- [Release notes](https://github.com/github/codeql-action/releases)\n- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/github/codeql-action/compare/b1bff81932f5cdfc8695c7752dcee935dcd061c8...54f647b7e1bb85c95cddabcd46b0c578ec92bc1a)\n\n---\nupdated-dependencies:\n- dependency-name: github/codeql-action/analyze\n  dependency-version: 4.36.3\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "2484f44240cdfca0a02190f5ada97350e8b10604",
      "tree": "b6f4873d46d67c9680303538b0a5d8bd3fd20b1e",
      "parents": [
        "fbaf9026edd33b801ba580940a0292cd2930a570"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun Jul 12 11:43:39 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 12 11:43:39 2026 +0000"
      },
      "message": "chore(deps): bump github/codeql-action/init from 4.33.0 to 4.36.3\n\nBumps [github/codeql-action/init](https://github.com/github/codeql-action) from 4.33.0 to 4.36.3.\n- [Release notes](https://github.com/github/codeql-action/releases)\n- [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/github/codeql-action/compare/b1bff81932f5cdfc8695c7752dcee935dcd061c8...54f647b7e1bb85c95cddabcd46b0c578ec92bc1a)\n\n---\nupdated-dependencies:\n- dependency-name: github/codeql-action/init\n  dependency-version: 4.36.3\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "875b4292e63edd702caa7e73d7fc0e18a03382d1",
      "tree": "344161a6dea9ba162b9353651b8b0a87bb65847c",
      "parents": [
        "fbaf9026edd33b801ba580940a0292cd2930a570"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun Jul 12 11:42:59 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 12 11:42:59 2026 +0000"
      },
      "message": "chore(deps-dev): bump typescript-eslint from 8.59.2 to 8.62.1\n\nBumps [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) from 8.59.2 to 8.62.1.\n- [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases)\n- [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md)\n- [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.62.1/packages/typescript-eslint)\n\n---\nupdated-dependencies:\n- dependency-name: typescript-eslint\n  dependency-version: 8.62.1\n  dependency-type: direct:development\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "fbaf9026edd33b801ba580940a0292cd2930a570",
      "tree": "43f5704d801dd1864534ffae9a2a27c8e699f98b",
      "parents": [
        "0a0f7ad879c041c673e819b0d2f7c8dda17340fa",
        "fa092ac0fcf70e892dc7549e844b4d26f1203930"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Tue Jul 07 21:07:46 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jul 07 21:07:46 2026 +0530"
      },
      "message": "Merge pull request #99 from KRYSTALM7/feat/add-security-policy\n\nFINERACT-2677: Add SECURITY.md and frontend threat model"
    },
    {
      "commit": "fa092ac0fcf70e892dc7549e844b4d26f1203930",
      "tree": "43f5704d801dd1864534ffae9a2a27c8e699f98b",
      "parents": [
        "0a0f7ad879c041c673e819b0d2f7c8dda17340fa"
      ],
      "author": {
        "name": "Sujan Kumar MV",
        "email": "sujankumar7702@gmail.com",
        "time": "Mon Jul 06 20:52:09 2026 +0530"
      },
      "committer": {
        "name": "Sujan Kumar MV",
        "email": "sujankumar7702@gmail.com",
        "time": "Mon Jul 06 20:52:09 2026 +0530"
      },
      "message": "feat: add security policy and frontend threat model\n"
    },
    {
      "commit": "0a0f7ad879c041c673e819b0d2f7c8dda17340fa",
      "tree": "3de3d91deb149702e3dc48ca5e8874cd97e34566",
      "parents": [
        "7d097aa2b21e25957e90a9f48fea1a9273b721ba",
        "f1890e82f7c9b14a13f101134e482acbcfe648de"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Sun Jul 05 19:38:33 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 05 19:38:33 2026 +0530"
      },
      "message": "Merge pull request #90 from apache/dependabot/npm_and_yarn/jasmine-core-6.3.0\n\nchore(deps-dev): bump jasmine-core from 5.9.0 to 6.3.0"
    },
    {
      "commit": "f1890e82f7c9b14a13f101134e482acbcfe648de",
      "tree": "3de3d91deb149702e3dc48ca5e8874cd97e34566",
      "parents": [
        "7d097aa2b21e25957e90a9f48fea1a9273b721ba"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun Jul 05 12:19:36 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 05 12:19:36 2026 +0000"
      },
      "message": "chore(deps-dev): bump jasmine-core from 5.9.0 to 6.3.0\n\nBumps [jasmine-core](https://github.com/jasmine/jasmine) from 5.9.0 to 6.3.0.\n- [Release notes](https://github.com/jasmine/jasmine/releases)\n- [Changelog](https://github.com/jasmine/jasmine/blob/main/RELEASE.md)\n- [Commits](https://github.com/jasmine/jasmine/compare/v5.9.0...v6.3.0)\n\n---\nupdated-dependencies:\n- dependency-name: jasmine-core\n  dependency-version: 6.3.0\n  dependency-type: direct:development\n  update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "7d097aa2b21e25957e90a9f48fea1a9273b721ba",
      "tree": "3e52a3661b977ad2eaac290e9a5ee04afae62035",
      "parents": [
        "d46a7a9583eee8b765d53c278093ebbd734d8185",
        "1e62e55fdf3594681d940947a04de288cd0cfa6f"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Sun Jul 05 17:47:22 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 05 17:47:22 2026 +0530"
      },
      "message": "Merge pull request #94 from apache/dependabot/npm_and_yarn/karma-jasmine-html-reporter-2.2.0\n\nchore(deps-dev): bump karma-jasmine-html-reporter from 2.1.0 to 2.2.0"
    },
    {
      "commit": "d46a7a9583eee8b765d53c278093ebbd734d8185",
      "tree": "108c6054e30cf1b4532d9516e68c31daeb99a209",
      "parents": [
        "07bc35dd913d9e4ee29b6f29263cd3ce6cba57c1",
        "f94bc7ad435b5809c6153b807846614d24e3243b"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Sun Jul 05 17:31:00 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 05 17:31:00 2026 +0530"
      },
      "message": "Merge pull request #98 from apache/dependabot/github_actions/actions/setup-java-5.4.0\n\nchore(deps): bump actions/setup-java from 5.3.0 to 5.4.0"
    },
    {
      "commit": "f94bc7ad435b5809c6153b807846614d24e3243b",
      "tree": "108c6054e30cf1b4532d9516e68c31daeb99a209",
      "parents": [
        "07bc35dd913d9e4ee29b6f29263cd3ce6cba57c1"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun Jul 05 11:44:47 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 05 11:44:47 2026 +0000"
      },
      "message": "chore(deps): bump actions/setup-java from 5.3.0 to 5.4.0\n\nBumps [actions/setup-java](https://github.com/actions/setup-java) from 5.3.0 to 5.4.0.\n- [Release notes](https://github.com/actions/setup-java/releases)\n- [Commits](https://github.com/actions/setup-java/compare/ad2b38190b15e4d6bdf0c97fb4fca8412226d287...1bcf9fb12cf4aa7d266a90ae39939e61372fe520)\n\n---\nupdated-dependencies:\n- dependency-name: actions/setup-java\n  dependency-version: 5.4.0\n  dependency-type: direct:production\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "1e62e55fdf3594681d940947a04de288cd0cfa6f",
      "tree": "4d1b457fb95dff3f4abd712eacaf36312a48fbc3",
      "parents": [
        "07bc35dd913d9e4ee29b6f29263cd3ce6cba57c1"
      ],
      "author": {
        "name": "dependabot[bot]",
        "email": "49699333+dependabot[bot]@users.noreply.github.com",
        "time": "Sun Jul 05 11:42:40 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Jul 05 11:42:40 2026 +0000"
      },
      "message": "chore(deps-dev): bump karma-jasmine-html-reporter from 2.1.0 to 2.2.0\n\nBumps [karma-jasmine-html-reporter](https://github.com/dfederm/karma-jasmine-html-reporter) from 2.1.0 to 2.2.0.\n- [Release notes](https://github.com/dfederm/karma-jasmine-html-reporter/releases)\n- [Commits](https://github.com/dfederm/karma-jasmine-html-reporter/compare/v2.1.0...v2.2.0)\n\n---\nupdated-dependencies:\n- dependency-name: karma-jasmine-html-reporter\n  dependency-version: 2.2.0\n  dependency-type: direct:development\n  update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] \u003csupport@github.com\u003e"
    },
    {
      "commit": "a58b227ede945f120c1210c55eadd3128d6ab8ef",
      "tree": "7820af69d231750abdbc19dedeb0665e89915263",
      "parents": [
        "07bc35dd913d9e4ee29b6f29263cd3ce6cba57c1"
      ],
      "author": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Thu Jul 02 21:53:45 2026 +0530"
      },
      "committer": {
        "name": "Aman Mittal",
        "email": "aman.mittal3052000@gmail.com",
        "time": "Thu Jul 02 21:53:45 2026 +0530"
      },
      "message": "feat(loans): implement comprehensive loan module enhancements\n\nApplied the loan module improvements patch. Key enhancements include:\n- Added Cumulative vs Progressive loan schedule types.\n- Integrated a payment and credit allocation editor component.\n- Implemented new loan lifecycle actions (e.g., Undo Disbursal, Write Off).\n- Added loan transaction detail dialog, notes tab, documents tab, and collateral forms.\n- Replaced native confirm dialogs with custom Material confirm dialogs.\n- Created end-to-end tests for loan lifecycle, servicing, schedule types, and account actions.\n"
    },
    {
      "commit": "07bc35dd913d9e4ee29b6f29263cd3ce6cba57c1",
      "tree": "b1bb3d75eb52450e5dd90b90d2143861041491ca",
      "parents": [
        "a8c015ffb81126973353843f856c1fa8e1beb1c0",
        "d839f33851fb28c9e36a38883326cfd2d695b63a"
      ],
      "author": {
        "name": "Aman-Mittal",
        "email": "32237955+Aman-Mittal@users.noreply.github.com",
        "time": "Wed Jul 01 10:28:56 2026 +0530"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Jul 01 10:28:56 2026 +0530"
      },
      "message": "Merge pull request #87 from apache/dependabot/npm_and_yarn/emnapi/runtime-1.11.1\n\nchore(deps-dev): bump @emnapi/runtime from 1.10.0 to 1.11.1"
    }
  ],
  "next": "a8c015ffb81126973353843f856c1fa8e1beb1c0"
}
