{
  "_class" : "hudson.model.FreeStyleBuild",
  "actions" : [
    {
      "_class" : "hudson.model.CauseAction",
      "causes" : [
        {
          "_class" : "hudson.triggers.TimerTrigger$TimerTriggerCause",
          "shortDescription" : "Started by timer"
        }
      ]
    },
    {
      
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "refs/remotes/origin/add-school-self-service" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 66,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "0d4e5197d767c368defb5d0f94c325b1e6229287",
            "branch" : [
              {
                "SHA1" : "0d4e5197d767c368defb5d0f94c325b1e6229287",
                "name" : "refs/remotes/origin/add-school-self-service"
              }
            ]
          },
          "revision" : {
            "SHA1" : "0d4e5197d767c368defb5d0f94c325b1e6229287",
            "branch" : [
              {
                "SHA1" : "0d4e5197d767c368defb5d0f94c325b1e6229287",
                "name" : "refs/remotes/origin/add-school-self-service"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "0d4e5197d767c368defb5d0f94c325b1e6229287",
        "branch" : [
          {
            "SHA1" : "0d4e5197d767c368defb5d0f94c325b1e6229287",
            "name" : "refs/remotes/origin/add-school-self-service"
          }
        ]
      },
      "remoteUrls" : [
        "https://github.com/UstadMobile/Respect.git"
      ],
      "scmName" : ""
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
    }
  ],
  "artifacts" : [
    {
      "displayPath" : "respect-app-compose-debug.apk",
      "fileName" : "respect-app-compose-debug.apk",
      "relativePath" : "respect-app-compose/build/outputs/apk/debug/respect-app-compose-debug.apk"
    },
    {
      "displayPath" : "respect-app-compose-release.apk",
      "fileName" : "respect-app-compose-release.apk",
      "relativePath" : "respect-app-compose/build/outputs/apk/release/respect-app-compose-release.apk"
    },
    {
      "displayPath" : "respect-app-compose-debug.aab",
      "fileName" : "respect-app-compose-debug.aab",
      "relativePath" : "respect-app-compose/build/outputs/bundle/debug/respect-app-compose-debug.aab"
    },
    {
      "displayPath" : "respect-app-compose-release.aab",
      "fileName" : "respect-app-compose-release.aab",
      "relativePath" : "respect-app-compose/build/outputs/bundle/release/respect-app-compose-release.aab"
    },
    {
      "displayPath" : "mapping.txt",
      "fileName" : "mapping.txt",
      "relativePath" : "respect-app-compose/build/outputs/mapping/release/mapping.txt"
    },
    {
      "displayPath" : "respect-cli.zip",
      "fileName" : "respect-cli.zip",
      "relativePath" : "respect-cli/build/distributions/respect-cli.zip"
    },
    {
      "displayPath" : "respect-server-1.0.0.zip",
      "fileName" : "respect-server-1.0.0.zip",
      "relativePath" : "respect-server/build/distributions/respect-server-1.0.0.zip"
    },
    {
      "displayPath" : "respect-server-shadow-1.0.0.zip",
      "fileName" : "respect-server-shadow-1.0.0.zip",
      "relativePath" : "respect-server/build/distributions/respect-server-shadow-1.0.0.zip"
    }
  ],
  "building" : False,
  "description" : None,
  "displayName" : "#66",
  "duration" : 186469,
  "estimatedDuration" : 161863,
  "executor" : None,
  "fullDisplayName" : "RESPECT-add-school-self-service #66",
  "id" : "66",
  "inProgress" : False,
  "keepLog" : False,
  "number" : 66,
  "queueId" : 5551,
  "result" : "SUCCESS",
  "timestamp" : 1769674140948,
  "url" : "https://devserver3.ustadmobile.com/jenkins/job/RESPECT-add-school-self-service/66/",
  "builtOn" : "",
  "changeSet" : {
    "_class" : "hudson.plugins.git.GitChangeSetList",
    "items" : [
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/AGENTS.md",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ext/PersonExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/exceptions/UnauthorizedException.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolPermissionGrantDataSourceLocal.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/SchoolPermissionGrantEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/GetAuthenticatedPersonUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/PersonExt.kt",
          "respect-datalayer/build.gradle.kts",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/exceptions/ForbiddenException.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListItem.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/SchoolPermissionGrantAdapter.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/SchoolPermissionGrantDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/AssignmentDatasourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PermissionFlags.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/LocalModelDataSource.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/list/ClazzListViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLoadState.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolPermissionGrantDataSource.kt",
          "respect-datalayer-db/AGENTS.md",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolPermissionGrantDataSourceDb.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/changepassword/ChangePasswordViewModel.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/8.json",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt",
          "AGENTS.md",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/SchoolPermissionGrant.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
        ],
        "commitId" : "fb4cdd11f1d6441233f2531f788c52eb88a3e0b1",
        "timestamp" : 1761142573000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add permission management: work in progress.\u000a",
        "date" : "2025-10-22 18:16:13 +0400",
        "id" : "fb4cdd11f1d6441233f2531f788c52eb88a3e0b1",
        "msg" : "Add permission management: work in progress.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolPermissionGrantDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/list/ClazzListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolPermissionGrantDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/exceptions/UnauthorizedException.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolPermissionGrantDataSourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/SchoolPermissionGrant.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListItem.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/detail/ClazzDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/changepassword/ChangePasswordViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/SchoolPermissionGrantAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/SchoolPermissionGrantDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/PersonExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/AssignmentDatasourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PermissionFlags.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "AGENTS.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/LocalModelDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ext/PersonExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/AGENTS.md"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/exceptions/ForbiddenException.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/SchoolPermissionGrantEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/8.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/AGENTS.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLoadState.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/GetAuthenticatedPersonUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/AGENTS.md",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolPermissionGrantDataSourceHttp.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueUseCase.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolPermissionGrantDataSource.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolPermissionGrantDataSourceRepository.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt",
          "respect-datalayer-http/AGENTS.md",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolPermissionGrantDataSourceDb.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/WriteQueueItem.kt",
          "respect-datalayer-repository/AGENTS.md",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt"
        ],
        "commitId" : "d63a784ce84ad38f86491b031d6bad9bdf187dd5",
        "timestamp" : 1761204786000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add SchoolPermissionGrantDataSource implementations.\u000a",
        "date" : "2025-10-23 11:33:06 +0400",
        "id" : "d63a784ce84ad38f86491b031d6bad9bdf187dd5",
        "msg" : "Add SchoolPermissionGrantDataSource implementations.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/AGENTS.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/WriteQueueItem.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolPermissionGrantDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/SchoolPermissionGrantDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/AGENTS.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/AGENTS.md"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/SchoolPermissionGrantDataSourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolPermissionGrantDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/Application.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonExt.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/domain/TestCheckPersonPermissionUseCaseImpl.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestSchoolDb.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonRoleEnumExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/CheckPersonPermissionUseCase.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/AddDefaultSchoolPermissionGrantsUseCase.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/SchoolPermissionGrant.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/CheckPersonPermissionUseCaseDbImpl.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/add/AddSchoolUseCase.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/SchoolPermissionGrantDao.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestPersonStorage.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PermissionFlags.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolPermissionGrantRoute.kt"
        ],
        "commitId" : "d087ad04fa1983803a659a5cee2339fce1be58e5",
        "timestamp" : 1761227669000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial implementation of using CheckPersonPermissionUseCase\u000a",
        "date" : "2025-10-23 17:54:29 +0400",
        "id" : "d087ad04fa1983803a659a5cee2339fce1be58e5",
        "msg" : "Initial implementation of using CheckPersonPermissionUseCase",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/SchoolPermissionGrantDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/SchoolPermissionGrant.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/Application.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestSchoolDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/CheckPersonPermissionUseCaseDbImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonRoleEnumExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PermissionFlags.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestPersonStorage.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/domain/TestCheckPersonPermissionUseCaseImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolPermissionGrantRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/AddDefaultSchoolPermissionGrantsUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/add/AddSchoolUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/CheckPersonPermissionUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PersonRepositoryIntegrationTest.kt",
          "respect-lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/ClientServerDatasourceTest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt"
        ],
        "commitId" : "ae01d219481d0814d5c5e323cee98ad0aea3e4ab",
        "timestamp" : 1761230727000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fixes for PersonRepositoryIntegrationTest.kt (one test remaining)\u000a",
        "date" : "2025-10-23 18:45:27 +0400",
        "id" : "ae01d219481d0814d5c5e323cee98ad0aea3e4ab",
        "msg" : "Fixes for PersonRepositoryIntegrationTest.kt (one test remaining)",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/ClientServerDatasourceTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PersonRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PersonRepositoryIntegrationTest.kt",
          "respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationCallExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonRoleEnum.kt",
          "respect-lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/ClientServerDatasourceTest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/MapPagingSource.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/add/AddSchoolUseCase.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/PermissionCheckPagingSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PermissionFlags.kt"
        ],
        "commitId" : "6869dd8e50b4394a92548905d11560e18966dafc",
        "timestamp" : 1762179475000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Permission enforcement work in progress\u000a\u000aa) throw ForbiddenException / return status code 403 if a request for a person is made that the user is not authorized to see. Marking the response as forbidden, rather than returning an empty json allows fail2ban/throttling implementation when someone is up to no good.\u000ab) Fix usage of add default grants in add school use case.\u000a",
        "date" : "2025-11-03 18:17:55 +0400",
        "id" : "6869dd8e50b4394a92548905d11560e18966dafc",
        "msg" : "Permission enforcement work in progress",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PersonRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/ClientServerDatasourceTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonRoleEnum.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/PermissionCheckPagingSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/MapPagingSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationCallExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/add/AddSchoolUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PermissionFlags.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/edit/PersonEditScreen.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/8.json",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/list/EnrollmentListScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/detail/PersonDetailScreen.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/domain/TestCheckPersonPermissionUseCaseImpl.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolPermissionGrantDataSourceRepository.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/PermissionCheckPagingSource.kt"
        ],
        "commitId" : "bc306635b7538babc81b849bbdf473d47a802f9b",
        "timestamp" : 1764246578000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix compilation after merging main updates.\u000a",
        "date" : "2025-11-27 16:29:38 +0400",
        "id" : "bc306635b7538babc81b849bbdf473d47a802f9b",
        "msg" : "Fix compilation after merging main updates.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/enrollment/list/EnrollmentListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/domain/TestCheckPersonPermissionUseCaseImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/edit/PersonEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/detail/PersonDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolPermissionGrantDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/PermissionCheckPagingSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/8.json"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ClassDataSource.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/GetInviteInfoUseCaseClient.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/confirmation/ConfirmationScreen.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ClassEntityDao.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/list/PersonListScreen.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/InviteDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ClassDatasourceDb.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/CreateInviteUseCaseClient.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClassEntity.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/InviteDataSourceRepository.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/ClassAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Clazz.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/RespectRedeemInviteRequest.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/signup/CreateAccountViewModel.kt",
          "respect-server/src/main/kotlin/world/respect/server/account/invite/GetInviteInfoUseCaseServer.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/enterpasswordsignup/EnterPasswordSignUpViewModel.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/8.json",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/ClassDataSourceHttp.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroptionsignup/OtherOptionsSignupViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/InviteDataSourceDb.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/InviteRoute.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/InviteInfoRoute.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/InviteEntityDao.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/confirmation/ConfirmationViewModel.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/InviteDataSourceHttp.kt",
          "respect-lib-shared/src/jvmTest/kotlin/world/respect/domain/account/invite/RedeemInviteIntegrationTest.kt",
          "respect-server/src/main/kotlin/world/respect/server/account/invite/CreateInviteUseCaseServer.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/edit/ClazzEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/GetInviteInfoUseCase.kt"
        ],
        "commitId" : "b7f72b0ad3d99dee4331439e27d4892128fa9e67",
        "timestamp" : 1764585318000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "fixed classinvte changes\u000a",
        "date" : "2025-12-01 16:05:18 +0530",
        "id" : "b7f72b0ad3d99dee4331439e27d4892128fa9e67",
        "msg" : "fixed classinvte changes",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/signup/CreateAccountViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/ClassDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/GetInviteInfoUseCaseClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/account/invite/GetInviteInfoUseCaseServer.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/account/invite/CreateInviteUseCaseServer.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ClassDatasourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/edit/ClazzEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/GetInviteInfoUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/InviteEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/CreateInviteUseCaseClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/InviteDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/InviteDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/confirmation/ConfirmationScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmTest/kotlin/world/respect/domain/account/invite/RedeemInviteIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/InviteRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClassEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/RespectRedeemInviteRequest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/confirmation/ConfirmationViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/InviteInfoRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroptionsignup/OtherOptionsSignupViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/list/PersonListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ClassEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/ClassAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Clazz.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ClassDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/8.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/enterpasswordsignup/EnterPasswordSignUpViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/InviteDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/InviteDataSource.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/AddChildAccountRoute.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCaseDataSource.kt"
        ],
        "commitId" : "5d25406986d8d383f1dcbea9b186bb0d52a8472a",
        "timestamp" : 1764591584000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "changes for family invite\u000a",
        "date" : "2025-12-01 17:49:44 +0530",
        "id" : "5d25406986d8d383f1dcbea9b186bb0d52a8472a",
        "msg" : "changes for family invite",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/AddChildAccountRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCaseDataSource.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/InviteEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/InviteAdapter.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/8.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Invite.kt"
        ],
        "commitId" : "5d0da03b596554bd1c009f1c7903f731ccb1613c",
        "timestamp" : 1764662045000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "first user field added\u000a",
        "date" : "2025-12-02 13:24:05 +0530",
        "id" : "5d0da03b596554bd1c009f1c7903f731ccb1613c",
        "msg" : "first user field added",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/InviteAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/InviteEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/8.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Invite.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/confirmation/ConfirmationScreen.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/AddChildAccountRoute.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/confirmation/ConfirmationViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/edit/PersonEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCaseDataSource.kt"
        ],
        "commitId" : "635f174f580113c1a9b17fb4782b1591acfd3523",
        "timestamp" : 1764750258000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "changes for family invite\u000a",
        "date" : "2025-12-03 13:54:18 +0530",
        "id" : "635f174f580113c1a9b17fb4782b1591acfd3523",
        "msg" : "changes for family invite",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCaseDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/AddChildAccountRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/edit/PersonEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/confirmation/ConfirmationScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/confirmation/ConfirmationViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt",
          "respect-app-compose/src/androidMain/res/layout/activity_web_view.xml",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/build.gradle.kts",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt",
          "gradle/libs.versions.toml",
          "README.md"
        ],
        "commitId" : "658c852dc3099fd18d06f8ac190c8a735085b0c6",
        "timestamp" : 1764849003000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add build environment variable for default app list\u000aRemove non-functional try button\u000aLearning unit screen: remove non-functional sorter\u000aAdd progress bar to learning unit viewer.\u000a",
        "date" : "2025-12-04 15:50:03 +0400",
        "id" : "658c852dc3099fd18d06f8ac190c8a735085b0c6",
        "msg" : "Add build environment variable for default app list",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "README.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/res/layout/activity_web_view.xml"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/build.gradle.kts"
        ],
        "commitId" : "818bac34e158a86e3070b15c4b0daba5fd75b77a",
        "timestamp" : 1764849125000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Bump version for internal testing update.\u000a",
        "date" : "2025-12-04 15:52:05 +0400",
        "id" : "818bac34e158a86e3070b15c4b0daba5fd75b77a",
        "msg" : "Bump version for internal testing update.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/build.gradle.kts"
        ],
        "commitId" : "e02873c0819e3672b673b2d3cee5d2fb8b776245",
        "timestamp" : 1764849384000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update db names and pref names to avoid update conflict.\u000a",
        "date" : "2025-12-04 15:56:24 +0400",
        "id" : "e02873c0819e3672b673b2d3cee5d2fb8b776245",
        "msg" : "Update db names and pref names to avoid update conflict.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/build.gradle.kts"
        ],
        "commitId" : "3783e0acf065438ee393d92ec26fbb7d1d9f4486",
        "timestamp" : 1764851087000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Use default app list set by environment variable when provided.\u000a",
        "date" : "2025-12-04 16:24:47 +0400",
        "id" : "3783e0acf065438ee393d92ec26fbb7d1d9f4486",
        "msg" : "Use default app list set by environment variable when provided.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/build.gradle.kts"
        ],
        "commitId" : "226b44e24ee5a59444d951b4f33386e2da3d7b33",
        "timestamp" : 1764852911000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Set versions for public app store.\u000a",
        "date" : "2025-12-04 16:55:11 +0400",
        "id" : "226b44e24ee5a59444d951b4f33386e2da3d7b33",
        "msg" : "Set versions for public app store.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/SharedSchoolDeviceLoginSelectClassViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/settings/SharedDeviceSettingsViewModel.kt",
          "respect-app-compose/src/androidMain/AndroidManifest.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/EnterRollNumberViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/settings/SettingsScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/ScanQRCodeScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/SharedSchoolDeviceLoginSelectStudentViewModel.kt",
          "gradle/libs.versions.toml",
          "respect-app-compose/src/androidMain/kotlin/world/respect/RespectApp.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/SelectStudentScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/settings/SettingsViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/ScanQRCodeViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/build.gradle.kts",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/settings/SharedDeviceSettingsScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/SelectClassScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/EnterRollNumberScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
        ],
        "commitId" : "c65221f861f513f8bc13c401052072440dd29ab7",
        "timestamp" : 1764912074000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "add basic shared device login impl\u000a",
        "date" : "2025-12-05 10:51:14 +0530",
        "id" : "c65221f861f513f8bc13c401052072440dd29ab7",
        "msg" : "add basic shared device login impl",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/EnterRollNumberScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/RespectApp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/settings/SettingsViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/SharedSchoolDeviceLoginSelectClassViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/SelectStudentScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/settings/SettingsScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/settings/SharedDeviceSettingsScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/AndroidManifest.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/SharedSchoolDeviceLoginSelectStudentViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/settings/SharedDeviceSettingsViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/SelectClassScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/EnterRollNumberViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/ScanQRCodeViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/ScanQRCodeScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt"
        ],
        "commitId" : "6ef14002f9579c54d9ea01a0ea7d6bd6664d0a41",
        "timestamp" : 1764913428000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "connected family added in account list\u000a",
        "date" : "2025-12-05 11:13:48 +0530",
        "id" : "6ef14002f9579c54d9ea01a0ea7d6bd6664d0a41",
        "msg" : "connected family added in account list",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_browse_lessons_test.yaml"
        ],
        "commitId" : "15ae15e17a47e5d3d2d2d1fec3d38936a74712de",
        "timestamp" : 1764929126000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove assertVisible try it button which is often unused (and now will not be shown).\u000a",
        "date" : "2025-12-05 14:05:26 +0400",
        "id" : "15ae15e17a47e5d3d2d2d1fec3d38936a74712de",
        "msg" : "Remove assertVisible try it button which is often unused (and now will not be shown).",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/ClassAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Clazz.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClassEntityWithPermissions.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt",
          "respect-server/src/main/kotlin/world/respect/server/account/invite/GetInviteInfoUseCaseServer.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClassPermissionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ClassPermissionEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ClassEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/9.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ClassDatasourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/ClassPermission.kt"
        ],
        "commitId" : "a15f134552b8149b5d6d43b156454a15d6f1351f",
        "timestamp" : 1764942544000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add CLassPermission to model and datasources.\u000a",
        "date" : "2025-12-05 17:49:04 +0400",
        "id" : "a15f134552b8149b5d6d43b156454a15d6f1351f",
        "msg" : "Add CLassPermission to model and datasources.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/account/invite/GetInviteInfoUseCaseServer.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ClassDatasourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ClassPermissionEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/ClassPermission.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClassPermissionEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/ClassAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ClassEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Clazz.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/9.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClassEntityWithPermissions.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/biometric/CheckBiometricAvailableUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccount.kt",
          "respect-lib-shared/build.gradle.kts",
          "gradle/libs.versions.toml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/biometric/BiometricResult.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt"
        ],
        "commitId" : "e464a6386505b264f1e917b8ad4c1c775678141f",
        "timestamp" : 1765176383000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "app can start child session\u000a",
        "date" : "2025-12-08 12:16:23 +0530",
        "id" : "e464a6386505b264f1e917b8ad4c1c775678141f",
        "msg" : "app can start child session",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/biometric/CheckBiometricAvailableUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/biometric/BiometricResult.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccount.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/SharedSchoolDeviceLoginSelectClassViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/settings/SharedDeviceSettingsViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharedschooldevicelogin/SetSharedDeviceEnabledUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/acknowledgement/AcknowledgementViewModel.kt",
          "respect-app-compose/src/androidMain/AndroidManifest.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/EnterRollNumberViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/settings/SettingsScreen.kt",
          "gradle/libs.versions.toml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/SelectStudentScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/settings/SettingsViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectLazyItems.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/settings/SharedDeviceSettingsScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/SelectClassScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharedschooldevicelogin/GetSharedDeviceEnabledUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/EnterRollNumberScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
        ],
        "commitId" : "ea0c713fc9b4612e9d579ff5315d6ded353283c9",
        "timestamp" : 1765177002000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "add basic shared device login impl\u000a",
        "date" : "2025-12-08 12:26:42 +0530",
        "id" : "ea0c713fc9b4612e9d579ff5315d6ded353283c9",
        "msg" : "add basic shared device login impl",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/SharedSchoolDeviceLoginSelectClassViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharedschooldevicelogin/SetSharedDeviceEnabledUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/settings/SettingsScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharedschooldevicelogin/GetSharedDeviceEnabledUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/AndroidManifest.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/SelectStudentScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/settings/SharedDeviceSettingsScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/acknowledgement/AcknowledgementViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/settings/SharedDeviceSettingsViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectLazyItems.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/EnterRollNumberViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/EnterRollNumberScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/SelectClassScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/settings/SettingsViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js"
        ],
        "commitId" : "6d79f7a957c8e229cff05deeec88b6833c04f077",
        "timestamp" : 1765181087000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "added code to get screenshots\u000a",
        "date" : "2025-12-08 12:04:47 +0400",
        "id" : "6d79f7a957c8e229cff05deeec88b6833c04f077",
        "msg" : "added code to get screenshots",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js"
        ],
        "commitId" : "78e2ce37aeb3019f85234d42ba4992de41cc9eee",
        "timestamp" : 1765182258000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "added code to get screenshots\u000a",
        "date" : "2025-12-08 12:24:18 +0400",
        "id" : "78e2ce37aeb3019f85234d42ba4992de41cc9eee",
        "msg" : "added code to get screenshots",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js"
        ],
        "commitId" : "7c9ca8d63c88ece5b9e77179f5fec2e8aa3dfe88",
        "timestamp" : 1765187256000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated timeout\u000a",
        "date" : "2025-12-08 13:47:36 +0400",
        "id" : "7c9ca8d63c88ece5b9e77179f5fec2e8aa3dfe88",
        "msg" : "updated timeout",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/video-downloader/package-lock.json",
          ".maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js"
        ],
        "commitId" : "9f8df899112bd028bef7dd9178bddf3fcd20b8d8",
        "timestamp" : 1765192004000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated timeout\u000a",
        "date" : "2025-12-08 15:06:44 +0400",
        "id" : "9f8df899112bd028bef7dd9178bddf3fcd20b8d8",
        "msg" : "updated timeout",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/package-lock.json"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js"
        ],
        "commitId" : "a580e5743d26c09666111bf56ca0fbd6cb66b113",
        "timestamp" : 1765192119000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated timeout\u000a",
        "date" : "2025-12-08 15:08:39 +0400",
        "id" : "a580e5743d26c09666111bf56ca0fbd6cb66b113",
        "msg" : "updated timeout",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js"
        ],
        "commitId" : "834237da1f38d52b694f5d339e17165eba34e5d2",
        "timestamp" : 1765194123000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated timeout\u000a",
        "date" : "2025-12-08 15:42:03 +0400",
        "id" : "834237da1f38d52b694f5d339e17165eba34e5d2",
        "msg" : "updated timeout",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js"
        ],
        "commitId" : "62600830368f6b3cc6e721b49bc3a7a31c6cb6df",
        "timestamp" : 1765195337000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated timeout\u000a",
        "date" : "2025-12-08 16:02:17 +0400",
        "id" : "62600830368f6b3cc6e721b49bc3a7a31c6cb6df",
        "msg" : "updated timeout",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt"
        ],
        "commitId" : "cc7ef41804c7789e5490b90873e49f2a85046e40",
        "timestamp" : 1765197753000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update RespectAccountManager to use a shared hot flow to prevent lag.\u000a",
        "date" : "2025-12-08 16:42:33 +0400",
        "id" : "cc7ef41804c7789e5490b90873e49f2a85046e40",
        "msg" : "Update RespectAccountManager to use a shared hot flow to prevent lag.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js"
        ],
        "commitId" : "955e0d44a61af62af562257988e2fd0284cbe9eb",
        "timestamp" : 1765198460000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated flow\u000a",
        "date" : "2025-12-08 16:54:20 +0400",
        "id" : "955e0d44a61af62af562257988e2fd0284cbe9eb",
        "msg" : "updated flow",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/list/ClazzListViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/AddDefaultSchoolPermissionGrantsUseCase.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ClassEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/SchoolPermissionGrantDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PermissionFlags.kt",
          "respect-server/src/main/kotlin/world/respect/server/account/invite/GetInviteInfoUseCaseServer.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ClassDatasourceDb.kt"
        ],
        "commitId" : "1834bca60da831c327c95e30c4eba74544daf259",
        "timestamp" : 1765203505000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Enforce class view permissions including support for enrollment role-based permissions.\u000a",
        "date" : "2025-12-08 18:18:25 +0400",
        "id" : "1834bca60da831c327c95e30c4eba74544daf259",
        "msg" : "Enforce class view permissions including support for enrollment role-based permissions.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/SchoolPermissionGrantDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/AddDefaultSchoolPermissionGrantsUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ClassDatasourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ClassEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/account/invite/GetInviteInfoUseCaseServer.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/list/ClazzListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PermissionFlags.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthUseCaseAndroidChannelHost.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/biometric/CheckBiometricAvailableUseCase.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthManager.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthUseCase.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthUseCaseAndroidImpl.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthProcessor.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthJob.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/biometric/BiometricResult.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/MainActivity.kt"
        ],
        "commitId" : "5fe00cc8e7ce21c07262966b5bc10ce68c0daef5",
        "timestamp" : 1765258969000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "biometric auth added\u000a",
        "date" : "2025-12-09 11:12:49 +0530",
        "id" : "5fe00cc8e7ce21c07262966b5bc10ce68c0daef5",
        "msg" : "biometric auth added",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthProcessor.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthJob.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/MainActivity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthManager.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthUseCaseAndroidImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/biometric/CheckBiometricAvailableUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthUseCaseAndroidChannelHost.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/biometric/BiometricResult.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/video-downloader/package-lock.json",
          ".maestro/video-downloader/package.json"
        ],
        "commitId" : "20e86bc545d3e1766a4811e55025409f7dc86307",
        "timestamp" : 1765259555000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated flow\u000a",
        "date" : "2025-12-09 09:52:35 +0400",
        "id" : "20e86bc545d3e1766a4811e55025409f7dc86307",
        "msg" : "updated flow",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/package-lock.json"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/package.json"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js"
        ],
        "commitId" : "fc4211581e53710a39088f782c9cbdb4b8225de9",
        "timestamp" : 1765259745000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated timeouts\u000a",
        "date" : "2025-12-09 09:55:45 +0400",
        "id" : "fc4211581e53710a39088f782c9cbdb4b8225de9",
        "msg" : "updated timeouts",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/video-downloader/cypress/e2e/extract-maestro-video-urls.cy.js"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthProcessor.kt"
        ],
        "commitId" : "35151b21705a9a535234bea0407bf9b8b017665c",
        "timestamp" : 1765260360000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "biometric auth changes\u000a",
        "date" : "2025-12-09 11:36:00 +0530",
        "id" : "35151b21705a9a535234bea0407bf9b8b017665c",
        "msg" : "biometric auth changes",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthProcessor.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt",
          "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/RespectCredential.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccount.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/authwithpassword/GetTokenAndUserProfileWithCredentialDbImpl.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/gettokenanduser/GetTokenAndUserProfileWithCredentialUseCaseClient.kt"
        ],
        "commitId" : "298572a80d626b091f90da4984a09f5840d15886",
        "timestamp" : 1765354780000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update RespectCredential sealed class to add QR Code Badge credential type.\u000a",
        "date" : "2025-12-10 12:19:40 +0400",
        "id" : "298572a80d626b091f90da4984a09f5840d15886",
        "msg" : "Update RespectCredential sealed class to add QR Code Badge credential type.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/gettokenanduser/GetTokenAndUserProfileWithCredentialUseCaseClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/RespectCredential.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccount.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/authwithpassword/GetTokenAndUserProfileWithCredentialDbImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "e088b1a99844d11b63b1f1362d1c7582a0dddb4d",
        "timestamp" : 1765368972000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "added QR badge\u000a",
        "date" : "2025-12-10 16:16:12 +0400",
        "id" : "e088b1a99844d11b63b1f1362d1c7582a0dddb4d",
        "msg" : "added QR badge",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCaseDataSource.kt"
        ],
        "commitId" : "8e87db04904193c19df4a2f59599becf1648a38a",
        "timestamp" : 1765435868000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "biometric auth changes\u000a",
        "date" : "2025-12-11 12:21:08 +0530",
        "id" : "8e87db04904193c19df4a2f59599becf1648a38a",
        "msg" : "biometric auth changes",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCaseDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/passkeylist/PasskeyListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/RespectAccountExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/list/IndicatorListViewmodel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/detail/IndicatorDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/SetUsernameAndPasswordViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectSession.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/edit/IndictorEditViewmodel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/list/ClazzListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/waitingforapproval/WaitingForApprovalViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/acknowledgement/AcknowledgementViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/onboarding/OnboardingViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/list/ReportTemplateListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/edit/ReportEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/changepassword/ChangePasswordViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/detail/ReportDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/list/ReportListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/edit/PersonEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/edit/ClazzEditViewModel.kt"
        ],
        "commitId" : "a50000b798d4e0dea85977127445cd413d49771e",
        "timestamp" : 1765440245000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update RespectAccountManager model to handle sessions where the account and active user are different\u000a\u000aEg student sessions started using parent account, or student sessions started using shared school device.\u000a",
        "date" : "2025-12-11 12:04:05 +0400",
        "id" : "a50000b798d4e0dea85977127445cd413d49771e",
        "msg" : "Update RespectAccountManager model to handle sessions where the account and active user are different",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/edit/ReportEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/changepassword/ChangePasswordViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/list/AssignmentListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/edit/PersonEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/list/ClazzListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/list/EnrollmentListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/passkeylist/PasskeyListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/acknowledgement/AcknowledgementViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/edit/ClazzEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/onboarding/OnboardingViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/list/IndicatorListViewmodel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/enrollment/edit/EnrollmentEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/detail/IndicatorDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/list/ReportListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/RespectAccountExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/SetUsernameAndPasswordViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectSession.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/waitingforapproval/WaitingForApprovalViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/indictor/edit/IndictorEditViewmodel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/list/ReportTemplateListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/detail/ReportDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListItem.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/passkeylist/PasskeyListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectSessionAndPerson.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountAndPerson.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt"
        ],
        "commitId" : "6050b8fe15bfe7c2a53193f2400198c60e92d050",
        "timestamp" : 1765444244000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Further updates to RespectAccountManager and related to handle sessions where the active user is not the account holder eg parent of child\u000a",
        "date" : "2025-12-11 13:10:44 +0400",
        "id" : "6050b8fe15bfe7c2a53193f2400198c60e92d050",
        "msg" : "Further updates to RespectAccountManager and related to handle sessions where the active user is not the account holder eg parent of child",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectSessionAndPerson.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListItem.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/passkeylist/PasskeyListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountAndPerson.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-test-end-to-end/test-description/001_002_add_user_direct_test_description.md",
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "d4938cbb89b255c08b627ab3bc8391a4dec2a387",
        "timestamp" : 1765455995000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "added QR badge test\u000a",
        "date" : "2025-12-11 16:26:35 +0400",
        "id" : "d4938cbb89b255c08b627ab3bc8391a4dec2a387",
        "msg" : "added QR badge test",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-test-end-to-end/test-description/001_002_add_user_direct_test_description.md"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectSession.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectSessionAndPerson.kt"
        ],
        "commitId" : "3b0b56b65fa7356151029301a4e5bdea9f5bba4a",
        "timestamp" : 1765456282000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add relatedPersons to RespectSessionAndPerson.\u000a",
        "date" : "2025-12-11 16:31:22 +0400",
        "id" : "3b0b56b65fa7356151029301a4e5bdea9f5bba4a",
        "msg" : "Add relatedPersons to RespectSessionAndPerson.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectSession.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectSessionAndPerson.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/LastModifiedAndPermission.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ClassDatasourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ClassEntityDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/WritableDataSource.kt"
        ],
        "commitId" : "c2aadbfda36308b406464f90d050fa95e775c294",
        "timestamp" : 1765460539000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Enforce class write permission.\u000a",
        "date" : "2025-12-11 17:42:19 +0400",
        "id" : "c2aadbfda36308b406464f90d050fa95e775c294",
        "msg" : "Enforce class write permission.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ClassDatasourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ClassEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/LastModifiedAndPermission.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/WritableDataSource.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/list/ClazzListViewModel.kt"
        ],
        "commitId" : "ab1f830df858d5a9367b4500fdb738adcc22d711",
        "timestamp" : 1765461416000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Merge session changes from main.\u000a",
        "date" : "2025-12-11 17:56:56 +0400",
        "id" : "ab1f830df858d5a9367b4500fdb738adcc22d711",
        "msg" : "Merge session changes from main.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/list/ClazzListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ClassDatasourceDb.kt"
        ],
        "commitId" : "517121263286883aee09ecd77b95e570980cc5fb",
        "timestamp" : 1765727646000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial implementation of read person permission checks.\u000a",
        "date" : "2025-12-14 15:54:06 +0000",
        "id" : "517121263286883aee09ecd77b95e570980cc5fb",
        "msg" : "Initial implementation of read person permission checks.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ClassDatasourceDb.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PersonRepositoryIntegrationTest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt"
        ],
        "commitId" : "87132ca9c0b370017c9c8fea4ce97753b477161c",
        "timestamp" : 1765739839000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Handle permissions for parents based on class permissions of children.\u000a",
        "date" : "2025-12-14 19:17:19 +0000",
        "id" : "87132ca9c0b370017c9c8fea4ce97753b477161c",
        "msg" : "Handle permissions for parents based on class permissions of children.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PersonRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt",
          "respect-app-compose/src/androidMain/res/layout/activity_web_view.xml",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/build.gradle.kts",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt",
          "gradle/libs.versions.toml",
          "README.md"
        ],
        "commitId" : "a2789c89fbfca3b760138bae32c3569bef3abea6",
        "timestamp" : 1765782818000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "Add build environment variable for default app list\u000aRemove non-functional try button\u000aLearning unit screen: remove non-functional sorter\u000aAdd progress bar to learning unit viewer.\u000a",
        "date" : "2025-12-15 12:43:38 +0530",
        "id" : "a2789c89fbfca3b760138bae32c3569bef3abea6",
        "msg" : "Add build environment variable for default app list",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "README.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/res/layout/activity_web_view.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/build.gradle.kts"
        ],
        "commitId" : "31719f9b1309d45b39666e6c6310b6f6433d4184",
        "timestamp" : 1765782818000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "Bump version for internal testing update.\u000a",
        "date" : "2025-12-15 12:43:38 +0530",
        "id" : "31719f9b1309d45b39666e6c6310b6f6433d4184",
        "msg" : "Bump version for internal testing update.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/build.gradle.kts"
        ],
        "commitId" : "c158d4b024bf09fa01501715c72e34990c6d2e28",
        "timestamp" : 1765782818000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "Update db names and pref names to avoid update conflict.\u000a",
        "date" : "2025-12-15 12:43:38 +0530",
        "id" : "c158d4b024bf09fa01501715c72e34990c6d2e28",
        "msg" : "Update db names and pref names to avoid update conflict.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/build.gradle.kts"
        ],
        "commitId" : "dde844bb3148f88461ec1f118d4e83547e648428",
        "timestamp" : 1765782818000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "Use default app list set by environment variable when provided.\u000a",
        "date" : "2025-12-15 12:43:38 +0530",
        "id" : "dde844bb3148f88461ec1f118d4e83547e648428",
        "msg" : "Use default app list set by environment variable when provided.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/build.gradle.kts"
        ],
        "commitId" : "e1db52c32ec8bb3603273c78328c8fc3cce8efea",
        "timestamp" : 1765782818000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "Set versions for public app store.\u000a",
        "date" : "2025-12-15 12:43:38 +0530",
        "id" : "e1db52c32ec8bb3603273c78328c8fc3cce8efea",
        "msg" : "Set versions for public app store.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/002_browse_lessons_test.yaml"
        ],
        "commitId" : "32a0477b9a132f38b9d0d44c68480a192d8f2033",
        "timestamp" : 1765782818000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "Remove assertVisible try it button which is often unused (and now will not be shown).\u000a",
        "date" : "2025-12-15 12:43:38 +0530",
        "id" : "32a0477b9a132f38b9d0d44c68480a192d8f2033",
        "msg" : "Remove assertVisible try it button which is often unused (and now will not be shown).",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/authwithpassword/GetTokenAndUserProfileWithCredentialDbImpl.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccount.kt",
          "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/RespectCredential.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/gettokenanduser/GetTokenAndUserProfileWithCredentialUseCaseClient.kt"
        ],
        "commitId" : "4d3520fc26c23a560bd2b7c6b789a03d89822dc0",
        "timestamp" : 1765782818000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "Update RespectCredential sealed class to add QR Code Badge credential type.\u000a",
        "date" : "2025-12-15 12:43:38 +0530",
        "id" : "4d3520fc26c23a560bd2b7c6b789a03d89822dc0",
        "msg" : "Update RespectCredential sealed class to add QR Code Badge credential type.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/gettokenanduser/GetTokenAndUserProfileWithCredentialUseCaseClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/authwithpassword/GetTokenAndUserProfileWithCredentialDbImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccount.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/RespectCredential.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/authenticatepassword/AuthenticateQrBadgeUseCase.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonQrCode.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetPasswordViewModel.kt",
          "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueUseCase.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/authwithpassword/GetTokenAndUserProfileWithCredentialDbImpl.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/getstarted/GetStartedScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/getstarted/GetStartedViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PersonQrCodeAdapter.kt",
          "respect-app-compose/src/androidMain/res/drawable/fingerprint.png",
          "respect-app-compose/src/commonMain/kotlin/world/respect/images/RespectImage.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/ScanQRCodeViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/9.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/WriteQueueItem.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/settings/SharedDeviceSettingsScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrBadgeDataSourceExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/SetUsernameAndPasswordViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt",
          "respect-server/src/main/kotlin/world/respect/server/Application.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/SharedSchoolDeviceLoginSelectClassViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonQrDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonQrBadgeEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/ScanQRCodeScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/setusernameandpassword/CreateAccountSetPasswordScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/setusernameandpassword/SetUsernameAndPasswordScreen.kt",
          "respect-lib-shared-se/src/commonMain/kotlin/world/respect/sharedse/domain/account/authenticatepassword/AuthenticateQrBadgeUseCaseDbImpl.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/8.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrCodeDataSourceLocal.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonQrCodeEntity.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeDataSourceRepository.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/qrcode/QrCodeRoute.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/images/RespectImage.android.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrDataSourceHttp.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt"
        ],
        "commitId" : "028b9f680bac8c4dee6cc32963d82ef1b35d3188",
        "timestamp" : 1765782818000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "add shared device login impl\u000a",
        "date" : "2025-12-15 12:43:38 +0530",
        "id" : "028b9f680bac8c4dee6cc32963d82ef1b35d3188",
        "msg" : "add shared device login impl",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonQrDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonQrCode.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/setusernameandpassword/CreateAccountSetPasswordScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/ScanQRCodeScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/WriteQueueItem.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/authenticatepassword/AuthenticateQrBadgeUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/SharedSchoolDeviceLoginSelectClassViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/images/RespectImage.android.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/setusernameandpassword/SetUsernameAndPasswordScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/getstarted/GetStartedViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/8.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared-se/src/commonMain/kotlin/world/respect/sharedse/domain/account/authenticatepassword/AuthenticateQrBadgeUseCaseDbImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/qrcode/QrCodeRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/images/RespectImage.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrBadgeDataSourceExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/ScanQRCodeViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonQrCodeEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/res/drawable/fingerprint.png"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetPasswordViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PersonQrCodeAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/settings/SharedDeviceSettingsScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonQrBadgeEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/SetUsernameAndPasswordViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrCodeDataSourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/Application.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/authwithpassword/GetTokenAndUserProfileWithCredentialDbImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/getstarted/GetStartedScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/9.json"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/SharedSchoolDeviceLoginSelectClassViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/settings/SharedDeviceSettingsViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/acknowledgement/AcknowledgementViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/EnterRollNumberViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/settings/SettingsScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/SharedSchoolDeviceLoginSelectStudentViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/SelectStudentScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/settings/SettingsViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/settings/SharedDeviceSettingsScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/SelectClassScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/EnterRollNumberScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
        ],
        "commitId" : "958231c52c70ca0f09ac855fc71cc828f1f3dd19",
        "timestamp" : 1765784945000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "remove shared device/settings screen changes from assign badge to a student flow\u000a",
        "date" : "2025-12-15 13:19:05 +0530",
        "id" : "958231c52c70ca0f09ac855fc71cc828f1f3dd19",
        "msg" : "remove shared device/settings screen changes from assign badge to a student flow",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/SharedSchoolDeviceLoginSelectClassViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/acknowledgement/AcknowledgementViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/settings/SettingsScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/settings/SharedDeviceSettingsViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/EnterRollNumberScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/settings/SharedDeviceSettingsScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/settings/SettingsViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/SharedSchoolDeviceLoginSelectStudentViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/SelectClassScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/EnterRollNumberViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/SelectStudentScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharedschooldevicelogin/SetSharedDeviceEnabledUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/acknowledgement/AcknowledgementViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharedschooldevicelogin/GetSharedDeviceEnabledUseCase.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/RespectApp.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectLazyItems.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
        ],
        "commitId" : "2ef2f3c9d9caaaa71a9d86d100ea73a55af6a61c",
        "timestamp" : 1765786488000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "remove shared device/settings screen changes from assign badge to a student flow\u000a",
        "date" : "2025-12-15 13:44:48 +0530",
        "id" : "2ef2f3c9d9caaaa71a9d86d100ea73a55af6a61c",
        "msg" : "remove shared device/settings screen changes from assign badge to a student flow",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharedschooldevicelogin/GetSharedDeviceEnabledUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharedschooldevicelogin/SetSharedDeviceEnabledUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/acknowledgement/AcknowledgementViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/RespectApp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectLazyItems.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonQrCode.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetPasswordViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonQrDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonQrBadgeEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PersonQrCodeAdapter.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/setusernameandpassword/SetUsernameAndPasswordScreen.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/8.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrCodeDataSourceLocal.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/ScanQRCodeViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonQrCodeEntity.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeDataSourceRepository.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrDataSourceHttp.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrBadgeDataSourceExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/SetUsernameAndPasswordViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonBadge.kt"
        ],
        "commitId" : "e5e64097b8d212d870fb079e6031779581bc9494",
        "timestamp" : 1765799935000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "add refactor\u000a",
        "date" : "2025-12-15 17:28:55 +0530",
        "id" : "e5e64097b8d212d870fb079e6031779581bc9494",
        "msg" : "add refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/8.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/setusernameandpassword/SetUsernameAndPasswordScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonQrCodeEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrBadgeDataSourceExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonBadge.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/SetUsernameAndPasswordViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PersonQrCodeAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/ScanQRCodeViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrDataSourceHttp.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonQrCode.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonQrDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetPasswordViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrCodeDataSourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonQrBadgeEntityDao.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectSessionAndPerson.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCaseDataSource.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt"
        ],
        "commitId" : "3b3314b796e2b963ba1476fa09a502aa2bc32e33",
        "timestamp" : 1765862141000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "switch profile funtion added\u000a",
        "date" : "2025-12-16 10:45:41 +0530",
        "id" : "3b3314b796e2b963ba1476fa09a502aa2bc32e33",
        "msg" : "switch profile funtion added",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectSessionAndPerson.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCaseDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonQrDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonQrBadgeEntityDao.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/ScanQRCodeScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/setusernameandpassword/SetUsernameAndPasswordScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/ScanQRCodeViewModel.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeDataSourceRepository.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppUiState.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/SetUsernameAndPasswordViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt"
        ],
        "commitId" : "4c8a97ce2e5ee958258b2bf34ff5cfefaf9c5309",
        "timestamp" : 1765883598000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "add qr login flow\u000a",
        "date" : "2025-12-16 16:43:18 +0530",
        "id" : "4c8a97ce2e5ee958258b2bf34ff5cfefaf9c5309",
        "msg" : "add qr login flow",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppUiState.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/ScanQRCodeViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/setusernameandpassword/SetUsernameAndPasswordScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonQrDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/SetUsernameAndPasswordViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/ScanQRCodeScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonQrBadgeEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/EnrollmentRoleEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ClassEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/EnrollmentDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PermissionFlags.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/EnrollmentEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/LastModifiedAndPermission.kt"
        ],
        "commitId" : "e49f7dd1f03c83732a47062c9b31bc4c18837b2e",
        "timestamp" : 1765884380000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add permission enforcement/checks to enrollment entities.\u000a",
        "date" : "2025-12-16 15:26:20 +0400",
        "id" : "e49f7dd1f03c83732a47062c9b31bc4c18837b2e",
        "msg" : "Add permission enforcement/checks to enrollment entities.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PermissionFlags.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/EnrollmentDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/EnrollmentEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ClassEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/EnrollmentRoleEnum.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/LastModifiedAndPermission.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "3cd334d0e2d9e89a3e9729fdad3d17977e1c127c",
        "timestamp" : 1765890286000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated e2e test\u000a",
        "date" : "2025-12-16 17:04:46 +0400",
        "id" : "3cd334d0e2d9e89a3e9729fdad3d17977e1c127c",
        "msg" : "updated e2e test",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/ScanQRCodeScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/SetUsernameAndPasswordViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/setusernameandpassword/SetUsernameAndPasswordScreen.kt"
        ],
        "commitId" : "06177cda745f0ee48093d9a5c9cac22a10eb5ad4",
        "timestamp" : 1765950596000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "add refactor\u000a",
        "date" : "2025-12-17 11:19:56 +0530",
        "id" : "06177cda745f0ee48093d9a5c9cac22a10eb5ad4",
        "msg" : "add refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/SetUsernameAndPasswordViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/setusernameandpassword/SetUsernameAndPasswordScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/ScanQRCodeScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "622b6192dabf8ba0143533cac48f1f9df055221d",
        "timestamp" : 1765952129000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated e2e test\u000a",
        "date" : "2025-12-17 10:15:29 +0400",
        "id" : "622b6192dabf8ba0143533cac48f1f9df055221d",
        "msg" : "updated e2e test",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/acknowledgement/AcknowledgementViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt"
        ],
        "commitId" : "7af0113a974e7f769bc7530f76c68c78b0fcfcec",
        "timestamp" : 1765953180000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "commit\u000a",
        "date" : "2025-12-17 12:03:00 +0530",
        "id" : "7af0113a974e7f769bc7530f76c68c78b0fcfcec",
        "msg" : "commit",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/acknowledgement/AcknowledgementViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "657204242bd30a9935886924586be22cac2337fc",
        "timestamp" : 1765955336000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated e2e test\u000a",
        "date" : "2025-12-17 11:08:56 +0400",
        "id" : "657204242bd30a9935886924586be22cac2337fc",
        "msg" : "updated e2e test",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/000_000_hello_world.yaml",
          ".maestro/flows/001_001_invite_using_invite_code_test.yaml",
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "83934e7f6016c5e832687d8f1937fa4ee1bff420",
        "timestamp" : 1765957853000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated e2e test\u000a",
        "date" : "2025-12-17 11:50:53 +0400",
        "id" : "83934e7f6016c5e832687d8f1937fa4ee1bff420",
        "msg" : "updated e2e test",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_using_invite_code_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/000_000_hello_world.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/ScanQRCodeViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/ScanQRCodeScreen.kt"
        ],
        "commitId" : "927249d97cb11757ef2ab8515c702151139f6ddf",
        "timestamp" : 1765960375000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "add refactor\u000a",
        "date" : "2025-12-17 14:02:55 +0530",
        "id" : "927249d97cb11757ef2ab8515c702151139f6ddf",
        "msg" : "add refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/ScanQRCodeViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/ScanQRCodeScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetPasswordViewModel.kt"
        ],
        "commitId" : "c6286a14b10de2fdd132e3d3f1db89bf55082703",
        "timestamp" : 1765961069000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "add refactor\u000a",
        "date" : "2025-12-17 14:14:29 +0530",
        "id" : "c6286a14b10de2fdd132e3d3f1db89bf55082703",
        "msg" : "add refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetPasswordViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/login/LoginViewModel.kt"
        ],
        "commitId" : "89efd626539452681223d5705eb9a269324e7bb1",
        "timestamp" : 1765966662000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "commit\u000a",
        "date" : "2025-12-17 15:47:42 +0530",
        "id" : "89efd626539452681223d5705eb9a269324e7bb1",
        "msg" : "commit",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/login/LoginViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/login/LoginViewModel.kt"
        ],
        "commitId" : "285e74df888507d751807a3580b1d409f4f18084",
        "timestamp" : 1765972069000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "commit\u000a",
        "date" : "2025-12-17 17:17:49 +0530",
        "id" : "285e74df888507d751807a3580b1d409f4f18084",
        "msg" : "commit",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/login/LoginViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/9.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClassPermissionEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/EnrollmentEntityDao.kt"
        ],
        "commitId" : "0e6dd7db5e356d4ee99e8669bc7809eef38ba359",
        "timestamp" : 1765975040000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix ClassPermissionEntity to use autoincrement primary key\u000aUpdate PersonDataSource permission checks to add a CTE to get the permission personuid list (active user plus any children personuids in the case of a parent user).\u000a",
        "date" : "2025-12-17 16:37:20 +0400",
        "id" : "0e6dd7db5e356d4ee99e8669bc7809eef38ba359",
        "msg" : "Fix ClassPermissionEntity to use autoincrement primary key",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/EnrollmentEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/9.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/ClassPermissionEntity.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "bc3cd41b46b9653bec8ba58daa6486d3af48065f",
        "timestamp" : 1765977119000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "test added\u000a",
        "date" : "2025-12-17 17:11:59 +0400",
        "id" : "bc3cd41b46b9653bec8ba58daa6486d3af48065f",
        "msg" : "test added",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/ScanQRCodeScreen.kt"
        ],
        "commitId" : "1fcd7d7b84fabaa4f9aaa23be185111091cecdc2",
        "timestamp" : 1766032890000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2025-12-18 10:11:30 +0530",
        "id" : "1fcd7d7b84fabaa4f9aaa23be185111091cecdc2",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/ScanQRCodeScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/jvmTest/kotlin/world/respect/shared/domain/account/AuthWithPasswordIntegrationTest.kt",
          "respect-lib-shared/src/jvmTest/kotlin/world/respect/domain/account/invite/RedeemInviteIntegrationTest.kt"
        ],
        "commitId" : "ca337fc7b5a15bc77acf07d22b9a4acad2220ec7",
        "timestamp" : 1766037854000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2025-12-18 11:34:14 +0530",
        "id" : "ca337fc7b5a15bc77acf07d22b9a4acad2220ec7",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmTest/kotlin/world/respect/shared/domain/account/AuthWithPasswordIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmTest/kotlin/world/respect/domain/account/invite/RedeemInviteIntegrationTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt"
        ],
        "commitId" : "43aef2590b7bf09fc5b1a9afadfa75b88ad31ee1",
        "timestamp" : 1766038149000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2025-12-18 11:39:09 +0530",
        "id" : "43aef2590b7bf09fc5b1a9afadfa75b88ad31ee1",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetPasswordViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt"
        ],
        "commitId" : "0f64b6c13a531e14248ae1a72976e55b341ca09d",
        "timestamp" : 1766043418000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "add test tags\u000a",
        "date" : "2025-12-18 13:06:58 +0530",
        "id" : "0f64b6c13a531e14248ae1a72976e55b341ca09d",
        "msg" : "add test tags",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetPasswordViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-test-end-to-end/test-description/001_002_add_user_direct_test_description.md",
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "0435f8245268784797f47af88f4ccc698db9000e",
        "timestamp" : 1766048060000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated e2e test description\u000a",
        "date" : "2025-12-18 12:54:20 +0400",
        "id" : "0435f8245268784797f47af88f4ccc698db9000e",
        "msg" : "updated e2e test description",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-test-end-to-end/test-description/001_002_add_user_direct_test_description.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "801fbc412e67e6e913aba7abb3ec52ee3c2da050",
        "timestamp" : 1766056842000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "test added\u000a",
        "date" : "2025-12-18 15:20:42 +0400",
        "id" : "801fbc412e67e6e913aba7abb3ec52ee3c2da050",
        "msg" : "test added",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/CheckPersonPermissionUseCase.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/CheckPersonPermissionUseCaseDbImpl.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ClassDatasourceDb.kt"
        ],
        "commitId" : "8e1628f9325ca674d471b5c23fcc5391ba7f15cb",
        "timestamp" : 1766060857000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update CheckPersonPermissionUseCase: can be used before person is saved to db or after saved to db without needing to lookup role.\u000a",
        "date" : "2025-12-18 16:27:37 +0400",
        "id" : "8e1628f9325ca674d471b5c23fcc5391ba7f15cb",
        "msg" : "Update CheckPersonPermissionUseCase: can be used before person is saved to db or after saved to db without needing to lookup role.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/CheckPersonPermissionUseCaseDbImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ClassDatasourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/CheckPersonPermissionUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "5fe4ed0469cee929c4f86592f3cce33831408a1b",
        "timestamp" : 1766065558000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test\u000a",
        "date" : "2025-12-18 17:45:58 +0400",
        "id" : "5fe4ed0469cee929c4f86592f3cce33831408a1b",
        "msg" : "updated test",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt"
        ],
        "commitId" : "2ae2abfd160d041c9ab2d362775b8e0043f90180",
        "timestamp" : 1766066355000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix person entity list permission check to include viewing related persons for the authenticated user.\u000a",
        "date" : "2025-12-18 17:59:15 +0400",
        "id" : "2ae2abfd160d041c9ab2d362775b8e0043f90180",
        "msg" : "Fix person entity list permission check to include viewing related persons for the authenticated user.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonQrDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonQrBadgeEntityDao.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/ScanQRCodeScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/ScanQRCodeViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeDataSourceRepository.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrDataSourceHttp.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/validateqrbadge/ValidateQrCodeUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/SetUsernameAndPasswordViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt"
        ],
        "commitId" : "dc9039a15e7e5133d869b29d6decd680f864d290",
        "timestamp" : 1766121689000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "add validation\u000a",
        "date" : "2025-12-19 10:51:29 +0530",
        "id" : "dc9039a15e7e5133d869b29d6decd680f864d290",
        "msg" : "add validation",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/ScanQRCodeViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonQrBadgeEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/validateqrbadge/ValidateQrCodeUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/ScanQRCodeScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/SetUsernameAndPasswordViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonQrDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "fe768937b2f1a37d63e1c2311b0c5405bec4029b",
        "timestamp" : 1766134838000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test\u000a",
        "date" : "2025-12-19 13:00:38 +0400",
        "id" : "fe768937b2f1a37d63e1c2311b0c5405bec4029b",
        "msg" : "updated test",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "b8e3fa446ecd648b5b733c7cfea5dcad551c8f31",
        "timestamp" : 1766136215000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test\u000a",
        "date" : "2025-12-19 13:23:35 +0400",
        "id" : "b8e3fa446ecd648b5b733c7cfea5dcad551c8f31",
        "msg" : "updated test",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/LocalModelDataSource.kt",
          "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonPasswordEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonPasswordDataSourceDb.kt"
        ],
        "commitId" : "63f5ea635a01235f174d8e760dcadc8c30425589",
        "timestamp" : 1766144945000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update SQL to enforce password entity permissions\u000a",
        "date" : "2025-12-19 15:49:05 +0400",
        "id" : "63f5ea635a01235f174d8e760dcadc8c30425589",
        "msg" : "Update SQL to enforce password entity permissions",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonPasswordDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/LocalModelDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonPasswordEntityDao.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/daos/PersonPasskeyEntityDao.kt"
        ],
        "commitId" : "a2a843193719003af2e543ad2c191dda17806def",
        "timestamp" : 1766145521000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove unused PersonPasskeyEntityDao functions.\u000a",
        "date" : "2025-12-19 15:58:41 +0400",
        "id" : "a2a843193719003af2e543ad2c191dda17806def",
        "msg" : "Remove unused PersonPasskeyEntityDao functions.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/daos/PersonPasskeyEntityDao.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonPasskeyDataSourceDb.kt"
        ],
        "commitId" : "f024121520d5998e74f73092cca2d9064ac1fbf6",
        "timestamp" : 1766146428000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update PersonDataSourceDb to follow same function name pattern as other DAOs and split store/updateLocal\u000a",
        "date" : "2025-12-19 16:13:48 +0400",
        "id" : "f024121520d5998e74f73092cca2d9064ac1fbf6",
        "msg" : "Update PersonDataSourceDb to follow same function name pattern as other DAOs and split store/updateLocal",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonPasskeyDataSourceDb.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/ScanQRCodeViewModel.kt",
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "e7eacd53a2a7388fbcb6d85d2502049cae6f8e9a",
        "timestamp" : 1766152752000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "fix test\u000a",
        "date" : "2025-12-19 19:29:12 +0530",
        "id" : "e7eacd53a2a7388fbcb6d85d2502049cae6f8e9a",
        "msg" : "fix test",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/ScanQRCodeViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthManager.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt"
        ],
        "commitId" : "fa88abdd06c1dd02401086f702c13108dab093dd",
        "timestamp" : 1766154259000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "commit\u000a",
        "date" : "2025-12-19 19:54:19 +0530",
        "id" : "fa88abdd06c1dd02401086f702c13108dab093dd",
        "msg" : "commit",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthManager.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ClassEntityDao.kt"
        ],
        "commitId" : "b5d3d5ccb23cd53f30c116ce775afb033c33b034",
        "timestamp" : 1766396276000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update class permission queries to include permissions for parents to see child's classes.\u000aUpdate use of select AuthenticatedPermissionPersonUids to use constant.\u000a",
        "date" : "2025-12-22 13:37:56 +0400",
        "id" : "b5d3d5ccb23cd53f30c116ce775afb033c33b034",
        "msg" : "Update class permission queries to include permissions for parents to see child's classes.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/ClassEntityDao.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/list/ClazzListViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/SchoolPermissionGrantExt.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolPermissionGrantDataSourceRepository.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/domain/TestCheckPersonPermissionUseCaseImpl.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestSchoolDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolPermissionGrantDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/CheckPersonPermissionUseCase.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/ClientServerDatasourceTest.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/permissions/CheckSchoolPermissionsUseCase.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestPersonStorage.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/SchoolPermissionGrantDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ClassDatasourceDb.kt"
        ],
        "commitId" : "417df627dae1a87979c76f7cf53bdf84c2b70d29",
        "timestamp" : 1766408696000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add CheckSchoolPermissionsUseCase and use it in PersonList and ClassList to control the visibility of add button.\u000aUpdate junit tests to handle permissions\u000a",
        "date" : "2025-12-22 17:04:56 +0400",
        "id" : "417df627dae1a87979c76f7cf53bdf84c2b70d29",
        "msg" : "Add CheckSchoolPermissionsUseCase and use it in PersonList and ClassList to control the visibility of add button.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/SchoolPermissionGrantDataSourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/permissions/CheckSchoolPermissionsUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/SchoolPermissionGrantDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/ClassDatasourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestSchoolDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/list/ClazzListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestPersonStorage.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-test/src/jvmMain/kotlin/world/respect/lib/test/clientservertest/ClientServerDatasourceTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/CheckPersonPermissionUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/domain/TestCheckPersonPermissionUseCaseImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/SchoolPermissionGrantExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/SchoolPermissionGrantDao.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/SetUsernameAndPasswordViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt"
        ],
        "commitId" : "8c8cb0e0252a8fc97a574ccb99271d58650b5e51",
        "timestamp" : 1766462314000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "add validation\u000a",
        "date" : "2025-12-23 09:28:34 +0530",
        "id" : "8c8cb0e0252a8fc97a574ccb99271d58650b5e51",
        "msg" : "add validation",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/SetUsernameAndPasswordViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml",
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/flows/scripts/setDate.js",
          ".maestro/flows/001_001_invite_using_invite_code_test.yaml"
        ],
        "commitId" : "b97c8445c1ea7a345c6686741030d1aa75c47ab7",
        "timestamp" : 1766480446000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated date from tomorrow to a future date\u000a",
        "date" : "2025-12-23 13:00:46 +0400",
        "id" : "b97c8445c1ea7a345c6686741030d1aa75c47ab7",
        "msg" : "updated date from tomorrow to a future date",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/scripts/setDate.js"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_using_invite_code_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "a5d3f615d74cd3d71356bed9841b5eb7ab9bd091",
        "timestamp" : 1766576027000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test flow\u000a",
        "date" : "2025-12-24 15:33:47 +0400",
        "id" : "a5d3f615d74cd3d71356bed9841b5eb7ab9bd091",
        "msg" : "updated test flow",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "b0696c8d850af3f0f5751183fecfae8caec5f1a9",
        "timestamp" : 1766577508000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test\u000a",
        "date" : "2025-12-24 15:58:28 +0400",
        "id" : "b0696c8d850af3f0f5751183fecfae8caec5f1a9",
        "msg" : "updated test",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthUseCase.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthManager.kt"
        ],
        "commitId" : "cf363cf364babee1c37632e361cf84f4ec2a7b65",
        "timestamp" : 1766983920000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "commit\u000a",
        "date" : "2025-12-29 10:22:00 +0530",
        "id" : "cf363cf364babee1c37632e361cf84f4ec2a7b65",
        "msg" : "commit",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthManager.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "cffbd3d7479670186f9413fb18ecc4a27d8d81f9",
        "timestamp" : 1766999480000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test flow\u000a",
        "date" : "2025-12-29 13:11:20 +0400",
        "id" : "cffbd3d7479670186f9413fb18ecc4a27d8d81f9",
        "msg" : "updated test flow",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "031551ddf6d969b3672e2aac96b6c0894ad4662d",
        "timestamp" : 1767018289000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test flow\u000a",
        "date" : "2025-12-29 18:24:49 +0400",
        "id" : "031551ddf6d969b3672e2aac96b6c0894ad4662d",
        "msg" : "updated test flow",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationCallExt.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/EnrollmentDataSourceRepository.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/networkvalidation/entities/NetworkValidationInfoEntity.kt",
          "respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/RepoWorkerConstants.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpHeadersExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/EnrollmentEntityDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/EnqueueRunPullSyncUseCase.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PullSyncStatusEntity.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PersonRepositoryIntegrationTest.kt",
          "respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/pullsync/EnqueueRunPullSyncUseCaseAndroidImpl.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonDataSourceRepository.kt",
          "respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/pullsync/RunPullSyncWorker.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/networkvalidation/NetworkValidationInfo.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PullSyncStatus.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PullSyncStatusAdapter.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestPersonStorage.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/2.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/PullSyncTracker.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/list/ClazzListViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLoadMetaInfo.kt",
          "respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/writequeue/EnqueueDrainRemoteWriteQueueUseCaseAndroidImpl.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/EnrollmentDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PullSyncStatusEntityDao.kt",
          "respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueWorker.kt",
          "respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/worker/DataBuilderExt.kt",
          "respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/worker/WorkerExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/pullsync/RunPullSyncUseCase.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/DataLoadStateExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/EnqueueDrainRemoteWriteQueueUseCase.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/10.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/PullSyncTrackerDbImpl.kt"
        ],
        "commitId" : "e08156910ebb699221cc9ebc660c9c728879bb6d",
        "timestamp" : 1767018672000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Implement pulling enrollment entities using a worker.\u000a\u000aRequired to ensure permissions are resolved as expected.\u000a",
        "date" : "2025-12-29 18:31:12 +0400",
        "id" : "e08156910ebb699221cc9ebc660c9c728879bb6d",
        "msg" : "Implement pulling enrollment entities using a worker.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/EnqueueDrainRemoteWriteQueueUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PullSyncStatusEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/PullSyncTracker.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/EnqueueRunPullSyncUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/10.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/list/ClazzListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLoadMetaInfo.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpHeadersExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/networkvalidation/NetworkValidationInfo.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/worker/DataBuilderExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/worker/WorkerExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/writequeue/EnqueueDrainRemoteWriteQueueUseCaseAndroidImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PullSyncStatus.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectAppDatabase/2.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationCallExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/EnrollmentDataSourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/pullsync/RunPullSyncUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/PullSyncTrackerDbImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PullSyncStatusAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/pullsync/EnqueueRunPullSyncUseCaseAndroidImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/DataLoadStateExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/EnrollmentEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PullSyncStatusEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/school/PersonRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/EnrollmentDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueWorker.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/networkvalidation/entities/NetworkValidationInfoEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/pullsync/RunPullSyncWorker.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/src/androidMain/kotlin/world/respect/datalayer/repository/school/RepoWorkerConstants.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/school/TestPersonStorage.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccount.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/acknowledgement/AcknowledgementViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/login/LoginViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/MainActivity.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthUseCaseAndroidImpl.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectSessionAndPerson.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthProcessor.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt"
        ],
        "commitId" : "fb2e1409761be68465ccc049d7cdd9e745d8e3a7",
        "timestamp" : 1767096774000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "commit\u000a",
        "date" : "2025-12-30 17:42:54 +0530",
        "id" : "fb2e1409761be68465ccc049d7cdd9e745d8e3a7",
        "msg" : "commit",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccount.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/login/LoginViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectSessionAndPerson.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/MainActivity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthProcessor.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthUseCaseAndroidImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/acknowledgement/AcknowledgementViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetPasswordViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/SetUsernameAndPasswordViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/validateqrbadge/ValidateQrCodeUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/ScanQRCodeViewModel.kt"
        ],
        "commitId" : "a69c326e6ffa95d60aa1ceb9712de338142d57bf",
        "timestamp" : 1767097156000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "update create accound screen\u000a",
        "date" : "2025-12-30 17:49:16 +0530",
        "id" : "a69c326e6ffa95d60aa1ceb9712de338142d57bf",
        "msg" : "update create accound screen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/SetUsernameAndPasswordViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/validateqrbadge/ValidateQrCodeUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/ScanQRCodeViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetPasswordViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListScreen.kt"
        ],
        "commitId" : "fde66d9bf7789cb425b988450a375257cd91340b",
        "timestamp" : 1767102961000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "commit\u000a",
        "date" : "2025-12-30 19:26:01 +0530",
        "id" : "fde66d9bf7789cb425b988450a375257cd91340b",
        "msg" : "commit",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationCallExt.kt",
          "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpHeadersExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/GetPermissionLastModifiedUseCase.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/GetPermissionLastModifiedUseCaseDbImpl.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/EnrollmentEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PullSyncStatusEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/params/GetListCommonParams.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/pullsync/PullSyncTracker.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PullSyncStatus.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PullSyncStatusAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLayerParams.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/PullSyncTracker.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/ext/ParametersBuilderExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLoadMetaInfo.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/params/OrderOption.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/EnrollmentRoute.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/EnrollmentDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/pullsync/RunPullSyncUseCase.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/EnrollmentDataSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLayerHeaders.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/EnrollmentDataSourceHttp.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/10.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/PullSyncTrackerDbImpl.kt"
        ],
        "commitId" : "75fc244fba28cda004d8274bd698f53cf9761e31",
        "timestamp" : 1767114370000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add sinceIfPermissionsNotChangedSince parameter support.\u000a\u000aUsed to ensure that when permissions change (eg. as a result of a person joining a class) that the user does not miss out on updates being retrieved via pull sync runs.\u000a",
        "date" : "2025-12-30 21:06:10 +0400",
        "id" : "75fc244fba28cda004d8274bd698f53cf9761e31",
        "msg" : "Add sinceIfPermissionsNotChangedSince parameter support.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/EnrollmentDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/10.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/util/ext/ApplicationCallExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/PullSyncTracker.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpHeadersExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/pullsync/RunPullSyncUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/EnrollmentEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/params/OrderOption.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PullSyncStatusAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/PullSyncTrackerDbImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLoadMetaInfo.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/EnrollmentRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/ext/ParametersBuilderExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLayerParams.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/pullsync/PullSyncTracker.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/EnrollmentDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLayerHeaders.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PullSyncStatus.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PullSyncStatusEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/GetPermissionLastModifiedUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/params/GetListCommonParams.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/domain/GetPermissionLastModifiedUseCaseDbImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/EnrollmentDataSourceHttp.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/PersonExt.kt",
          ".maestro/flows/001_002_add_user_direct_test.yaml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/setusernameandpassword/SetUsernameAndPasswordScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/SetUsernameAndPasswordViewModel.kt"
        ],
        "commitId" : "1c7437aeb7b9e39fbb417811c0456ce259ddbecc",
        "timestamp" : 1767114487000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "fix test\u000a",
        "date" : "2025-12-30 22:38:07 +0530",
        "id" : "1c7437aeb7b9e39fbb417811c0456ce259ddbecc",
        "msg" : "fix test",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/setusernameandpassword/SetUsernameAndPasswordScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/SetUsernameAndPasswordViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/PersonExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/SetUsernameAndPasswordViewModel.kt"
        ],
        "commitId" : "6ed681d79f66132537e4de61f288e0ac7165f195",
        "timestamp" : 1767115767000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "fix test\u000a",
        "date" : "2025-12-30 22:59:27 +0530",
        "id" : "6ed681d79f66132537e4de61f288e0ac7165f195",
        "msg" : "fix test",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/SetUsernameAndPasswordViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "2521e0f65acb48b2b7e2be3b416a6296bb1bedd8",
        "timestamp" : 1767159445000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "fix test\u000a",
        "date" : "2025-12-31 11:07:25 +0530",
        "id" : "2521e0f65acb48b2b7e2be3b416a6296bb1bedd8",
        "msg" : "fix test",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/setusernameandpassword/SetUsernameAndPasswordScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/ScanQRCodeScreen.kt"
        ],
        "commitId" : "915278ea88ae8a0d867fbc5e0c114ab17ec35fd2",
        "timestamp" : 1767160227000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "fix test\u000a",
        "date" : "2025-12-31 11:20:27 +0530",
        "id" : "915278ea88ae8a0d867fbc5e0c114ab17ec35fd2",
        "msg" : "fix test",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/ScanQRCodeScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/setusernameandpassword/SetUsernameAndPasswordScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/ScanQRCodeScreen.kt"
        ],
        "commitId" : "670d57b479c56cfb52fa2c38dcee8cedb808b45f",
        "timestamp" : 1767161107000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "fix test\u000a",
        "date" : "2025-12-31 11:35:07 +0530",
        "id" : "670d57b479c56cfb52fa2c38dcee8cedb808b45f",
        "msg" : "fix test",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/ScanQRCodeScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "65573370e9537b24bc17e332ab85dab78d978214",
        "timestamp" : 1767170003000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test flow\u000a",
        "date" : "2025-12-31 12:33:23 +0400",
        "id" : "65573370e9537b24bc17e332ab85dab78d978214",
        "msg" : "updated test flow",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetPasswordViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/ScanQRCodeScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/SetUsernameAndPasswordViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/ScanQRCodeViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt"
        ],
        "commitId" : "7bc84b4016c26b3475f00c60d496996a24cc1582",
        "timestamp" : 1767172523000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "fix  popup menu\u000a",
        "date" : "2025-12-31 14:45:23 +0530",
        "id" : "7bc84b4016c26b3475f00c60d496996a24cc1582",
        "msg" : "fix  popup menu",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetPasswordViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/SetUsernameAndPasswordViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/ScanQRCodeViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/ScanQRCodeScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/routes/qrcode/QrCodeRoute.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/WriteQueueItem.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueUseCase.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrDataSourceHttp.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeDataSourceRepository.kt"
        ],
        "commitId" : "4432768f4f73f3bd437dbeb7a75ee64c1220cb84",
        "timestamp" : 1767174384000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "fix revoke qr\u000a",
        "date" : "2025-12-31 15:16:24 +0530",
        "id" : "4432768f4f73f3bd437dbeb7a75ee64c1220cb84",
        "msg" : "fix revoke qr",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/qrcode/QrCodeRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/WriteQueueItem.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetPasswordViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/ScanQRCodeViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/ScanQRCodeScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/SetUsernameAndPasswordViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt"
        ],
        "commitId" : "881292056fd4a1fa40e64208b83ccacf6db7469b",
        "timestamp" : 1767181334000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "code refactor\u000a",
        "date" : "2025-12-31 17:12:14 +0530",
        "id" : "881292056fd4a1fa40e64208b83ccacf6db7469b",
        "msg" : "code refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetPasswordViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/ScanQRCodeViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/ScanQRCodeScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/SetUsernameAndPasswordViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/subflows/assign_qr_badge_flow.yaml",
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "2bc1067f6c9cbcb0a00a46ddfb37dceea8ff48b1",
        "timestamp" : 1767187547000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test as per comments\u000a",
        "date" : "2025-12-31 17:25:47 +0400",
        "id" : "2bc1067f6c9cbcb0a00a46ddfb37dceea8ff48b1",
        "msg" : "updated test as per comments",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/subflows/assign_qr_badge_flow.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/subflows/assign_qr_badge_flow.yaml",
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "ae9c33681028799ef1e4f0e77896dd9a299cc7ed",
        "timestamp" : 1767187838000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test as per comments\u000a",
        "date" : "2025-12-31 17:30:38 +0400",
        "id" : "ae9c33681028799ef1e4f0e77896dd9a299cc7ed",
        "msg" : "updated test as per comments",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/assign_qr_badge_flow.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/AssignmentAssigneeRefEntityDao.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Assignment.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/AssignmentEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/AssignmentAdapter.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/10.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/AssignmentDatasourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/AssignmentAssigneeRef.kt"
        ],
        "commitId" : "bddb16ab6a058c879b320758a100a856d8296176",
        "timestamp" : 1767197488000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Refactor assignment to link one assignment to one class.\u000a",
        "date" : "2025-12-31 20:11:28 +0400",
        "id" : "bddb16ab6a058c879b320758a100a856d8296176",
        "msg" : "Refactor assignment to link one assignment to one class.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/detail/AssignmentDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/detail/AssignmentDetailScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/AssignmentAssigneeRef.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignment/edit/AssignmentEditViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/AssignmentAssigneeRefEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/AssignmentAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/AssignmentEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Assignment.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/10.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/AssignmentDatasourceDb.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/AssignmentEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/AssignmentAssigneeRefEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/AssignmentDatasourceDb.kt"
        ],
        "commitId" : "729a6eaf049d5d8ef25eb567613d23b4ee963184",
        "timestamp" : 1767200016000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial permission check for assignment read.\u000a",
        "date" : "2025-12-31 20:53:36 +0400",
        "id" : "729a6eaf049d5d8ef25eb567613d23b4ee963184",
        "msg" : "Initial permission check for assignment read.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/AssignmentAssigneeRefEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/AssignmentEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/AssignmentDatasourceDb.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "73de0e585e195e4d8bb9de8cb0a0b1a7a13f702e",
        "timestamp" : 1767333315000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test- added assignment flow\u000a",
        "date" : "2026-01-02 09:55:15 +0400",
        "id" : "73de0e585e195e4d8bb9de8cb0a0b1a7a13f702e",
        "msg" : "updated test- added assignment flow",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "d426a7f2c5c787142555e4fc3c042bf3c07c273b",
        "timestamp" : 1767334848000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test- added assignment flow\u000a",
        "date" : "2026-01-02 10:20:48 +0400",
        "id" : "d426a7f2c5c787142555e4fc3c042bf3c07c273b",
        "msg" : "updated test- added assignment flow",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthUseCaseAndroidChannelHost.kt"
        ],
        "commitId" : "ab7c9a77fad88a96c880c7f2dbb7259ca90bcb05",
        "timestamp" : 1767349644000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "BiometricAuthUseCaseAndroidChannelHost removed\u000a",
        "date" : "2026-01-02 15:57:24 +0530",
        "id" : "ab7c9a77fad88a96c880c7f2dbb7259ca90bcb05",
        "msg" : "BiometricAuthUseCaseAndroidChannelHost removed",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthUseCaseAndroidChannelHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/acknowledgement/AcknowledgementViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt"
        ],
        "commitId" : "a870d6f5516d538381636b569145d8837579b4da",
        "timestamp" : 1767357322000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "commit\u000a",
        "date" : "2026-01-02 18:05:22 +0530",
        "id" : "a870d6f5516d538381636b569145d8837579b4da",
        "msg" : "commit",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/acknowledgement/AcknowledgementViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/LocalModelDataSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/CacheableHttpPagingSource.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/list/ClazzListViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLoadState.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/EnrollmentDataSourceDb.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/shared/paging/OffsetLimitHttpPagingSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/EnrollmentRoleEnum.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/pullsync/RunPullSyncUseCase.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/DataLoadStateExt.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonDataSourceRepository.kt",
          ".maestro/flows/001_001_invite_using_invite_code_test.yaml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt"
        ],
        "commitId" : "9036fcffa2b121cab5d6ba66660b96661e8785ce",
        "timestamp" : 1767544118000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Run pull sync fixes:\u000a\u000aa) Handle not-modified http response status\u000ab) Ensure not-modified http dataloadstate preserves metadata\u000ac) Update ClazzViewModel to use only enqueue run pull sync to update enrollments.\u000a",
        "date" : "2026-01-04 20:28:38 +0400",
        "id" : "9036fcffa2b121cab5d6ba66660b96661e8785ce",
        "msg" : "Run pull sync fixes:",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/DataLoadStateExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/EnrollmentDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/LocalModelDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/paging/CacheableHttpPagingSource.kt"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_using_invite_code_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/EnrollmentRoleEnum.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/pullsync/RunPullSyncUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/list/ClazzListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/shared/paging/OffsetLimitHttpPagingSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLoadState.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCaseDataSource.kt"
        ],
        "commitId" : "b7e0f98a0418c132f169f6e245a7ecc96de2ec31",
        "timestamp" : 1767545996000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update SignupViewModel: remove unnecessary scope.launc that should not be there.\u000a",
        "date" : "2026-01-04 20:59:56 +0400",
        "id" : "b7e0f98a0418c132f169f6e245a7ecc96de2ec31",
        "msg" : "Update SignupViewModel: remove unnecessary scope.launc that should not be there.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCaseDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt"
        ],
        "commitId" : "67c2d84be6085b3af5016c63ef358f741bc375f4",
        "timestamp" : 1767547604000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add debugging logs to SignupViewModel.\u000aRemove signupviewmodel async launch functions setting app uistate that was not necessary.\u000a",
        "date" : "2026-01-04 21:26:44 +0400",
        "id" : "67c2d84be6085b3af5016c63ef358f741bc375f4",
        "msg" : "Add debugging logs to SignupViewModel.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/ProfileType.kt"
        ],
        "commitId" : "fdb330302942df56686f26d34554ec40158a02dd",
        "timestamp" : 1767550670000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add more debugging logs to SignupViewModel.\u000aFix ProfileType enum to use serialization as per pattern (using a string constant) to avoid potential discrepency between minified and non minified versions.\u000a",
        "date" : "2026-01-04 22:17:50 +0400",
        "id" : "fdb330302942df56686f26d34554ec40158a02dd",
        "msg" : "Add more debugging logs to SignupViewModel.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/ProfileType.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/000_000_hello_world.yaml",
          ".maestro/flows/001_001_invite_using_invite_code_test.yaml"
        ],
        "commitId" : "b7676667f0a9cf5bd27160cfb25a08e236734121",
        "timestamp" : 1767552139000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove hello world maestro flow\u000aTweak 001_001 to try and avoid maestro flakey tap\u000a",
        "date" : "2026-01-04 22:42:19 +0400",
        "id" : "b7676667f0a9cf5bd27160cfb25a08e236734121",
        "msg" : "Remove hello world maestro flow",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_using_invite_code_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/000_000_hello_world.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_001_invite_using_invite_code_test.yaml"
        ],
        "commitId" : "1984e6061772b1f7ee97c21753e3852c7b84b8e4",
        "timestamp" : 1767552389000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add retryTapIfNoChange to 001_001.\u000a",
        "date" : "2026-01-04 22:46:29 +0400",
        "id" : "1984e6061772b1f7ee97c21753e3852c7b84b8e4",
        "msg" : "Add retryTapIfNoChange to 001_001.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_using_invite_code_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_001_invite_using_invite_code_test.yaml"
        ],
        "commitId" : "e0d6182b066450057da81bbd834f21746f729626",
        "timestamp" : 1767553784000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove action bar id parameter from 001_001\u000a",
        "date" : "2026-01-04 23:09:44 +0400",
        "id" : "e0d6182b066450057da81bbd834f21746f729626",
        "msg" : "Remove action bar id parameter from 001_001",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_using_invite_code_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/subflows/tap_done_again.yaml",
          ".maestro/flows/001_001_invite_using_invite_code_test.yaml"
        ],
        "commitId" : "45071e76474e3dccbea467bb5da8fb19db44369f",
        "timestamp" : 1767555668000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add repeat loop workaround for waiting Maestro cloud error.\u000a",
        "date" : "2026-01-04 23:41:08 +0400",
        "id" : "45071e76474e3dccbea467bb5da8fb19db44369f",
        "msg" : "Add repeat loop workaround for waiting Maestro cloud error.",
        "paths" : [
          {
            "editType" : "add",
            "file" : ".maestro/flows/subflows/tap_done_again.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_using_invite_code_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_001_invite_using_invite_code_test.yaml"
        ],
        "commitId" : "73c7dc12bb5b15ea41adc790e939f933c63749de",
        "timestamp" : 1767556723000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Another attempt for 001_001 maestro workaround.\u000a",
        "date" : "2026-01-04 23:58:43 +0400",
        "id" : "73c7dc12bb5b15ea41adc790e939f933c63749de",
        "msg" : "Another attempt for 001_001 maestro workaround.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_using_invite_code_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/util/ext/AppStateIconExtensions.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/getstarted/GetStartedScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/ScanQRCodeScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppStateIcon.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/setusernameandpassword/SetUsernameAndPasswordScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/images/RespectImage.kt",
          "respect-lib-shared/src/commonMain/composeResources/drawable/fingerprint.png",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppActionButton.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/ScanQRCodeViewModel.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeDataSourceRepository.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/qrcode/QrCodeRoute.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/WriteQueueItem.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/images/RespectImage.android.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrDataSourceHttp.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppUiState.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/UrlParser.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonBadge.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt"
        ],
        "commitId" : "bafc6e0046c1ab9aba0a85b70b8252cfe17c61b2",
        "timestamp" : 1767595712000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "fix comments\u000a",
        "date" : "2026-01-05 12:18:32 +0530",
        "id" : "bafc6e0046c1ab9aba0a85b70b8252cfe17c61b2",
        "msg" : "fix comments",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonBadge.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/composeResources/drawable/fingerprint.png"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppUiState.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/images/RespectImage.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/ScanQRCodeScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeDataSourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/util/ext/AppStateIconExtensions.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppActionButton.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/WriteQueueItem.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/getstarted/GetStartedScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/qrcode/QrCodeRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/images/RespectImage.android.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/UrlParser.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppStateIcon.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/setusernameandpassword/SetUsernameAndPasswordScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/ScanQRCodeViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListScreen.kt"
        ],
        "commitId" : "0816cc742f6e9cac1688a0c9b0f16225ec963c41",
        "timestamp" : 1767596154000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "full name error fix\u000a",
        "date" : "2026-01-05 12:25:54 +0530",
        "id" : "0816cc742f6e9cac1688a0c9b0f16225ec963c41",
        "msg" : "full name error fix",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "ci-run-maestro.sh"
        ],
        "commitId" : "10e246ce0a7a67849183bfdebeb549643f5c9aee",
        "timestamp" : 1767597373000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "removed 000 test name from maestro.sh\u000a",
        "date" : "2026-01-05 11:16:13 +0400",
        "id" : "10e246ce0a7a67849183bfdebeb549643f5c9aee",
        "msg" : "removed 000 test name from maestro.sh",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "ci-run-maestro.sh"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/SetUsernameAndPasswordViewModel.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/10.json",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
        ],
        "commitId" : "524ea1e54058c099fb28a472a8f1cc99203713ec",
        "timestamp" : 1767597629000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "fix cconflict\u000a",
        "date" : "2026-01-05 12:50:29 +0530",
        "id" : "524ea1e54058c099fb28a472a8f1cc99203713ec",
        "msg" : "fix cconflict",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/SetUsernameAndPasswordViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/10.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/000_000_hello_world.yaml"
        ],
        "commitId" : "f2446429b59d7e81627a064eebc9f8216b7e7982",
        "timestamp" : 1767598059000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "removed 000 test\u000a",
        "date" : "2026-01-05 11:27:39 +0400",
        "id" : "f2446429b59d7e81627a064eebc9f8216b7e7982",
        "msg" : "removed 000 test",
        "paths" : [
          {
            "editType" : "delete",
            "file" : ".maestro/flows/000_000_hello_world.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "8b7699c21ad2e470732a33af39e46256c9010702",
        "timestamp" : 1767605605000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test- added assignment flow\u000a",
        "date" : "2026-01-05 13:33:25 +0400",
        "id" : "8b7699c21ad2e470732a33af39e46256c9010702",
        "msg" : "updated test- added assignment flow",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "da71fdb6b3c7b5b69cf9476dbf48e4c6d8e8cea6",
        "timestamp" : 1767605615000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test- added assignment flow\u000a",
        "date" : "2026-01-05 13:33:35 +0400",
        "id" : "da71fdb6b3c7b5b69cf9476dbf48e4c6d8e8cea6",
        "msg" : "updated test- added assignment flow",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonQrDataSourceDb.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonQrBadgeEntityDao.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/ScanQRCodeScreen.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PersonQrCodeAdapter.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/setusernameandpassword/SetUsernameAndPasswordScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/ScanQRCodeViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonQrCodeEntity.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeDataSourceRepository.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/NextAfterScan.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrDataSourceHttp.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/10.json",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/SetUsernameAndPasswordViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrBadgeDataSourceExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/validateqrbadge/ValidateQrCodeUseCase.kt"
        ],
        "commitId" : "4099456112d4f4031b062831015499aad6f19fd4",
        "timestamp" : 1767699201000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "fix qr code delete function\u000a",
        "date" : "2026-01-06 17:03:21 +0530",
        "id" : "4099456112d4f4031b062831015499aad6f19fd4",
        "msg" : "fix qr code delete function",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/ScanQRCodeScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/NextAfterScan.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/detail/PersonDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/setusernameandpassword/SetUsernameAndPasswordScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/10.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/ScanQRCodeViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PersonQrCodeAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonQrDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/SetUsernameAndPasswordViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrBadgeDataSourceExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonQrBadgeEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/validateqrbadge/ValidateQrCodeUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonQrCodeEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrDataSource.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "gradle/libs.versions.toml"
        ],
        "commitId" : "4b9bb703ecc684b105316be3750cdc1c025bf225",
        "timestamp" : 1767701543000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update AGP plugin version\u000a",
        "date" : "2026-01-06 16:12:23 +0400",
        "id" : "4b9bb703ecc684b105316be3750cdc1c025bf225",
        "msg" : "Update AGP plugin version",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/routes/qrcode/QrCodeRoute.kt"
        ],
        "commitId" : "e3dcdaef343f0931eb2016fdf55f1365b0748c04",
        "timestamp" : 1767760527000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "fix build failure\u000a",
        "date" : "2026-01-07 10:05:27 +0530",
        "id" : "e3dcdaef343f0931eb2016fdf55f1365b0748c04",
        "msg" : "fix build failure",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/qrcode/QrCodeRoute.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/NextAfterScan.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/ScanQRCodeScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/ScanQRCodeViewModel.kt"
        ],
        "commitId" : "9fdd846dd8c1d7a915e7856ce5083941ffb75fa0",
        "timestamp" : 1767765086000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-01-07 11:21:26 +0530",
        "id" : "9fdd846dd8c1d7a915e7856ce5083941ffb75fa0",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/NextAfterScan.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/ScanQRCodeViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/ScanQRCodeScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/10.json",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/copycode/CopyInviteCodeViewModel.kt"
        ],
        "commitId" : "0a7d500df557d2c5c15dd0310c50171d98f215d9",
        "timestamp" : 1767781942000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : " invite flow updates\u000a",
        "date" : "2026-01-07 16:02:22 +0530",
        "id" : "0a7d500df557d2c5c15dd0310c50171d98f215d9",
        "msg" : "invite flow updates",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/10.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/copycode/CopyInviteCodeViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/account/invite/GetInviteInfoUseCaseServer.kt"
        ],
        "commitId" : "211ac614ff7370e0764ff4c66a7dbe78986fc33c",
        "timestamp" : 1767870423000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "commit\u000a",
        "date" : "2026-01-08 16:37:03 +0530",
        "id" : "211ac614ff7370e0764ff4c66a7dbe78986fc33c",
        "msg" : "commit",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/account/invite/GetInviteInfoUseCaseServer.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/subflows/message_paste_invite_link.yaml",
          ".maestro/flows/subflows/message_open_invite_link.yaml",
          ".maestro/flows/subflows/admin_add_class.yaml",
          ".maestro/flows/001_001b_invite_using_invitelink_qrcode_test.yaml"
        ],
        "commitId" : "e9e612b8eb6129ebc3d6a2ac28c70fa9cab119db",
        "timestamp" : 1767874784000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "added test\u000a",
        "date" : "2026-01-08 16:19:44 +0400",
        "id" : "e9e612b8eb6129ebc3d6a2ac28c70fa9cab119db",
        "msg" : "added test",
        "paths" : [
          {
            "editType" : "add",
            "file" : ".maestro/flows/subflows/message_paste_invite_link.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/001_001b_invite_using_invitelink_qrcode_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_class.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/subflows/message_open_invite_link.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/enterpasswordsignup/EnterPasswordSignUpViewModel.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt",
          "respect-server/src/main/kotlin/world/respect/server/account/invite/GetInviteInfoUseCaseServer.kt"
        ],
        "commitId" : "6c4185e3cc62dd3a29a56dde4348db78c26445c4",
        "timestamp" : 1767887299000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "commit\u000a",
        "date" : "2026-01-08 21:18:19 +0530",
        "id" : "6c4185e3cc62dd3a29a56dde4348db78c26445c4",
        "msg" : "commit",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/enterpasswordsignup/EnterPasswordSignUpViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/account/invite/GetInviteInfoUseCaseServer.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt"
        ],
        "commitId" : "b68b09e5e766d0a5b1962647faa256057cfae0ac",
        "timestamp" : 1768149176000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "commit\u000a",
        "date" : "2026-01-11 22:02:56 +0530",
        "id" : "b68b09e5e766d0a5b1962647faa256057cfae0ac",
        "msg" : "commit",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_001b_invite_using_invitelink_qrcode_test.yaml"
        ],
        "commitId" : "c136360c9bf8fe20b1c1c3fbf5fef73be2ecc8e9",
        "timestamp" : 1768218905000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test flow\u000a",
        "date" : "2026-01-12 15:55:05 +0400",
        "id" : "c136360c9bf8fe20b1c1c3fbf5fef73be2ecc8e9",
        "msg" : "updated test flow",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001b_invite_using_invitelink_qrcode_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/acknowledgement/AcknowledgementViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthManager.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/MainActivity.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectSessionAndPerson.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt"
        ],
        "commitId" : "856ef1ded6f832f9c102d18a0248f54742a721e0",
        "timestamp" : 1768303824000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Tidyup\u000a\u000aa) Remove use of KoinScopeComponent from AccountListViewModel : it does not use any scoped dependencies and does not need it.\u000ab) Tidyup AccountListScreen to use LazyListScope items as appropriate and add key\u000ac) Tidyup AcknowledgementViewModel: remove isChild from UiState. It is not used as part of the UiState. Whether or not the user is a child is used by the viewmodel to decide where to navigate. It is not used as part of the UI. Remove familyPersons from UiState. This created duplicated data that did not respect single point of truth (it is always selectedAccount.relatedPersons).\u000a\u000ad) Change text for biometric prompt to be clearer: explicitly state its for a parents only section instead of \"biometric login\"\u000ae) Minor tidyup of how App.kt handles different top level navigation items for child/\"normal\" mode\u000af) BiometricAuthManager.kt: remove unnecessary if deferred.isCompleted checks: CompleteableDeferred already handles this itself.\u000a",
        "date" : "2026-01-13 15:30:24 +0400",
        "id" : "856ef1ded6f832f9c102d18a0248f54742a721e0",
        "msg" : "Tidyup",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/accountlist/AccountListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/MainActivity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/accountlist/AccountListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectSessionAndPerson.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/acknowledgement/AcknowledgementViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/biometric/BiometricAuthManager.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/ScanQRCodeScreen.kt"
        ],
        "commitId" : "9f0fe133650f50d8cd964d813f69a142a3fd61cc",
        "timestamp" : 1768310001000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove gap on top of Scan QR code screen that should not have been there.\u000a",
        "date" : "2026-01-13 17:13:21 +0400",
        "id" : "9f0fe133650f50d8cd964d813f69a142a3fd61cc",
        "msg" : "Remove gap on top of Scan QR code screen that should not have been there.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/ScanQRCodeScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "4ff80d2eb7dd31b51c9cd9bf12737884a56be83e",
        "timestamp" : 1768313739000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test-resolved merge conflicts\u000a",
        "date" : "2026-01-13 18:15:39 +0400",
        "id" : "4ff80d2eb7dd31b51c9cd9bf12737884a56be83e",
        "msg" : "updated test-resolved merge conflicts",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/ScanQRCodeViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/build.gradle.kts",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/scanqrcode/ScanQRCodeScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/ScanQRCodeScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/scanqrcode/ScanQRCodeViewModel.kt"
        ],
        "commitId" : "092160e5fb042cf2df38f1c989f128c5505e2099",
        "timestamp" : 1768316270000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Minor tidyups:\u000a\u000aa) Rename QR code screen and viewmodel package to scanqrcode (not shareddevicelogin) because the Scan QR code function will be used for more than just badge login\u000ab) Minor formatting fixes for AppBar (avoid line overrun)\u000a",
        "date" : "2026-01-13 18:57:50 +0400",
        "id" : "092160e5fb042cf2df38f1c989f128c5505e2099",
        "msg" : "Minor tidyups:",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/shareddevicelogin/ScanQRCodeScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/scanqrcode/ScanQRCodeScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/sharedschooldevicelogin/ScanQRCodeViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/scanqrcode/ScanQRCodeViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/scanqrcode/ScanQRCodeScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/scanqrcode/ScanQRCodeViewModel.kt"
        ],
        "commitId" : "92d7f8189d0243896b73fbd7358647678fee19ce",
        "timestamp" : 1768317223000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "ScanQRCodeViewModel: should accept account manager as a normal dependency\u000aRemove duplicate error messages from uistate. Should have only one error message.\u000aRemove UiStates isloading - this should use launchWithLoadingIndicator and appstate's loading state (which is connected to the appbar and will automatically show a progress indicator accordingly).\u000a",
        "date" : "2026-01-13 19:13:43 +0400",
        "id" : "92d7f8189d0243896b73fbd7358647678fee19ce",
        "msg" : "ScanQRCodeViewModel: should accept account manager as a normal dependency",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/scanqrcode/ScanQRCodeScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/scanqrcode/ScanQRCodeViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/validateqrbadge/ValidateQrCodeUseCase.kt"
        ],
        "commitId" : "7c1bbd436075fe605b8e363b9e80b255ad1e2d8f",
        "timestamp" : 1768368838000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "fix test\u000a",
        "date" : "2026-01-14 11:03:58 +0530",
        "id" : "7c1bbd436075fe605b8e363b9e80b255ad1e2d8f",
        "msg" : "fix test",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/validateqrbadge/ValidateQrCodeUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_001_invite_users_using_code_or_link_test.yaml",
          ".maestro/flows/001_002_add_user_direct_test.yaml",
          ".maestro/flows/subflows/admin_add_app_and_teacher.yaml",
          ".maestro/flows/001_001b_invite_using_invitelink_qrcode_test.yaml",
          ".maestro/flows/001_001_invite_using_invite_code_test.yaml"
        ],
        "commitId" : "23f299a120b1cdd5f27576ba008a135f64690d82",
        "timestamp" : 1768380953000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test with latest changes\u000a",
        "date" : "2026-01-14 12:55:53 +0400",
        "id" : "23f299a120b1cdd5f27576ba008a135f64690d82",
        "msg" : "updated test with latest changes",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_using_invite_code_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/001_001_invite_users_using_code_or_link_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_app_and_teacher.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/001_001b_invite_using_invitelink_qrcode_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/scanqrcode/ScanQRCodeScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/validateqrbadge/ValidateQrCodeUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/scanqrcode/ScanQRCodeViewModel.kt"
        ],
        "commitId" : "9901224b918beca894e77668cd4e7eb703236e35",
        "timestamp" : 1768382915000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "add invalid qr code ui part\u000a",
        "date" : "2026-01-14 14:58:35 +0530",
        "id" : "9901224b918beca894e77668cd4e7eb703236e35",
        "msg" : "add invalid qr code ui part",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/scanqrcode/ScanQRCodeScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/validateqrbadge/ValidateQrCodeUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/scanqrcode/ScanQRCodeViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/scanqrcode/ScanQRCodeViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
        ],
        "commitId" : "6715826b1773888a4cd4a22d5fea65cac73ee927",
        "timestamp" : 1768384040000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "remove qrCodeBadgeError from manageaccountviewmodel\u000a",
        "date" : "2026-01-14 15:17:20 +0530",
        "id" : "6715826b1773888a4cd4a22d5fea65cac73ee927",
        "msg" : "remove qrCodeBadgeError from manageaccountviewmodel",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/scanqrcode/ScanQRCodeViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_001_invite_users_using_code_or_link_test.yaml"
        ],
        "commitId" : "0e7acc2b6343aa775ad5039fca4255e119d2a0a8",
        "timestamp" : 1768385067000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test command\u000a",
        "date" : "2026-01-14 14:04:27 +0400",
        "id" : "0e7acc2b6343aa775ad5039fca4255e119d2a0a8",
        "msg" : "updated test command",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_users_using_code_or_link_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/enterpasswordsignup/EnterPasswordSignUpViewModel.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCaseDataSource.kt"
        ],
        "commitId" : "2be2eed543ebdf7e251e6705da0b471c825d4fb3",
        "timestamp" : 1768385510000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "redeem invite changes\u000a",
        "date" : "2026-01-14 15:41:50 +0530",
        "id" : "2be2eed543ebdf7e251e6705da0b471c825d4fb3",
        "msg" : "redeem invite changes",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/child/AddChildAccountUseCaseDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/enterpasswordsignup/EnterPasswordSignUpViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/copycode/CopyInviteCodeScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt"
        ],
        "commitId" : "303462d66f3caf846755753e8867590c5c11fae3",
        "timestamp" : 1768388183000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : " invite screen changes\u000a",
        "date" : "2026-01-14 16:26:23 +0530",
        "id" : "303462d66f3caf846755753e8867590c5c11fae3",
        "msg" : "invite screen changes",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/copycode/CopyInviteCodeScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "c9dde0b32fa524fed1012727692aef84380f7ca8",
        "timestamp" : 1768392736000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test - error\u000a",
        "date" : "2026-01-14 16:12:16 +0400",
        "id" : "c9dde0b32fa524fed1012727692aef84380f7ca8",
        "msg" : "updated test - error",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/scanqrcode/ScanQRCodeScreen.kt"
        ],
        "commitId" : "8ea3a38b49b9ec887cd96c545a182ac905d99a64",
        "timestamp" : 1768456145000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "fix landscape mode\u000a",
        "date" : "2026-01-15 11:19:05 +0530",
        "id" : "8ea3a38b49b9ec887cd96c545a182ac905d99a64",
        "msg" : "fix landscape mode",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/scanqrcode/ScanQRCodeScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/scanqrcode/ScanQRCodeViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppActionButton.kt"
        ],
        "commitId" : "6659bccefdd6c8491d9e1779eef88466b26981ea",
        "timestamp" : 1768564544000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Change AppActionButton contentDescription to use UiText instead of string.\u000a",
        "date" : "2026-01-16 15:55:44 +0400",
        "id" : "6659bccefdd6c8491d9e1779eef88466b26981ea",
        "msg" : "Change AppActionButton contentDescription to use UiText instead of string.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/scanqrcode/ScanQRCodeViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppActionButton.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt"
        ],
        "commitId" : "5f533721228a5e8deb87303bde33bd1f39adf00f",
        "timestamp" : 1768565527000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix ManageAccountViewModel : remove race condition created by calling .launch twice for a single operation.\u000a",
        "date" : "2026-01-16 16:12:07 +0400",
        "id" : "5f533721228a5e8deb87303bde33bd1f39adf00f",
        "msg" : "Fix ManageAccountViewModel : remove race condition created by calling .launch twice for a single operation.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PersonQrBadgeAdapter.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PersonQrCodeAdapter.kt",
          "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/RespectCredential.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonQrBadgeDataSourceDb.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonQrBadge.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonQrBadgeEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrBadgeDataSourceExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt",
          "respect-server/src/main/kotlin/world/respect/server/Application.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrCodeBadgeDataSourceLocal.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrBadgeDataSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonQrDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonQrBadgeEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrBadgeDataSourceHttp.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrCodeDataSourceLocal.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeBadgeDataSourceRepository.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonQrCodeEntity.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeDataSourceRepository.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/qrcode/QrCodeRoute.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrDataSourceHttp.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/qrcode/PersonQrBadgeRoute.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonBadge.kt"
        ],
        "commitId" : "435971fd8d72873ad2551abbbe65d3de97c5f230",
        "timestamp" : 1768568786000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Refactor for consistent naming on PersonQrBadge entity.\u000a\u000aPreviously some parts were called PersonBadge, some PersonQr. Needs to be consistent.\u000a",
        "date" : "2026-01-16 17:06:26 +0400",
        "id" : "435971fd8d72873ad2551abbbe65d3de97c5f230",
        "msg" : "Refactor for consistent naming on PersonQrBadge entity.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PersonQrCodeAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/SchoolDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-credentials/src/commonMain/kotlin/world/respect/credentials/passkey/RespectCredential.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrBadgeDataSourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonQrBadge.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/SchoolDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonQrBadgeEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonBadge.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/Application.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectSchoolDatabase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/qrcode/PersonQrBadgeRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/qrcode/QrCodeRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonQrBadgeEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrDataSourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrBadgeDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrCodeDataSourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeDataSourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrCodeBadgeDataSourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonQrCodeEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonQrDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeBadgeDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrBadgeDataSourceExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonQrBadgeDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PersonQrBadgeAdapter.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/scanqrcode/ScanQRCodeScreen.kt",
          "gradle/libs.versions.toml",
          "respect-app-compose/src/androidMain/AndroidManifest.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/scanqrcode/ScanQRCodeViewModel.kt",
          "respect-app-compose/build.gradle.kts"
        ],
        "commitId" : "adc7e7c2768e5bfdfa4c32deee8928f2e6f828bd",
        "timestamp" : 1768627428000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "change qr code library\u000a",
        "date" : "2026-01-17 10:53:48 +0530",
        "id" : "adc7e7c2768e5bfdfa4c32deee8928f2e6f828bd",
        "msg" : "change qr code library",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/scanqrcode/ScanQRCodeScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/AndroidManifest.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/scanqrcode/ScanQRCodeViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PersonQrBadgeAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrBadgeDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonQrBadgeEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/StringBuilderExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonQrBadgeDataSourceDb.kt",
          "respect-lib-shared-se/src/commonMain/kotlin/world/respect/sharedse/domain/account/authenticatepassword/AuthenticateQrBadgeUseCaseDbImpl.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeBadgeDataSourceRepository.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonQrBadge.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonQrBadgeEntity.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/UrlParser.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/10.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrBadgeDataSourceExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt"
        ],
        "commitId" : "1ff4f69aa944f87e8ba11f0cff66b2e60d2601cd",
        "timestamp" : 1768740026000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Tidyup ManageAccountScreen: if password not set, still use the same ListItem.\u000aRemove includeDeleted from PersonQrBadgeDataSource.GetListParams - this is already available in common\u000aChange PersonQrBadgeEntity Url field to use Url type.\u000aImplement permission enforcement in PersonQrBadgeDataSourceDb\u000a",
        "date" : "2026-01-18 16:40:26 +0400",
        "id" : "1ff4f69aa944f87e8ba11f0cff66b2e60d2601cd",
        "msg" : "Tidyup ManageAccountScreen: if password not set, still use the same ListItem.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonQrBadgeEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeBadgeDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonQrBadgeDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonQrBadgeEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/UrlParser.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonQrBadge.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared-se/src/commonMain/kotlin/world/respect/sharedse/domain/account/authenticatepassword/AuthenticateQrBadgeUseCaseDbImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/10.json"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/StringBuilderExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PersonQrBadgeAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrBadgeDataSourceExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrBadgeDataSource.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectQrBadgeInfoBox.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/scanqrcode/ScanQRCodeScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/setusernameandpassword/SetUsernameAndPasswordScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/scanqrcode/ScanQRCodeViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt"
        ],
        "commitId" : "32a89ebad88b2143a3dd64fbc8209d27de0ee5cc",
        "timestamp" : 1768745882000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Further tidyup:\u000aEnsure event functions are named onEventName eg onClickButton\u000aMove Badge Info box into its own function\u000a",
        "date" : "2026-01-18 18:18:02 +0400",
        "id" : "32a89ebad88b2143a3dd64fbc8209d27de0ee5cc",
        "msg" : "Further tidyup:",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/setusernameandpassword/SetUsernameAndPasswordScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/scanqrcode/ScanQRCodeScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectQrBadgeInfoBox.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/manageaccount/ManageAccountScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/scanqrcode/ScanQRCodeViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/scanqrcode/ScanQRCodeScreen.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/WriteQueueItem.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueUseCase.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeBadgeDataSourceRepository.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/scanqrcode/ScanQRCodeViewModel.kt"
        ],
        "commitId" : "fa0dc13b9d7b3c51f4da208fcbb59500af1150c5",
        "timestamp" : 1768749707000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Tidyup ScanQRCodeViewModel:\u000a\u000aa) Remove unnecessary try-catch statements: multiple try catch statements were all the same: if an exception is caught, set uiState error text to .uiTextOrGeneric\u000ab) Remove unnecessary extra launch statements.\u000a",
        "date" : "2026-01-18 19:21:47 +0400",
        "id" : "fa0dc13b9d7b3c51f4da208fcbb59500af1150c5",
        "msg" : "Tidyup ScanQRCodeViewModel:",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/writequeue/DrainRemoteWriteQueueUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/writequeue/WriteQueueItem.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeBadgeDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/scanqrcode/ScanQRCodeScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/scanqrcode/ScanQRCodeViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt"
        ],
        "commitId" : "9b3e623660d98887adcb09ef0dfbf1bc5647423e",
        "timestamp" : 1768801521000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "refactor\u000a",
        "date" : "2026-01-19 11:15:21 +0530",
        "id" : "9b3e623660d98887adcb09ef0dfbf1bc5647423e",
        "msg" : "refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/subflows/assign_qr_badge_flow.yaml",
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "cc8ef7c83589eabd78ff74253913132347774d74",
        "timestamp" : 1768809560000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test - More Options\u000a",
        "date" : "2026-01-19 11:59:20 +0400",
        "id" : "cc8ef7c83589eabd78ff74253913132347774d74",
        "msg" : "updated test - More Options",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/assign_qr_badge_flow.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrBadgeDataSource.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrBadgeDataSourceHttp.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeBadgeDataSourceRepository.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonQrBadgeDataSourceDb.kt"
        ],
        "commitId" : "9217f81d1821ad8c20e94aaa91a66f8ce2debbcb",
        "timestamp" : 1768809675000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove PersonQrBadge existsByUrl: looking for a badge by URL needs to be done by using the list function.\u000a",
        "date" : "2026-01-19 12:01:15 +0400",
        "id" : "9217f81d1821ad8c20e94aaa91a66f8ce2debbcb",
        "msg" : "Remove PersonQrBadge existsByUrl: looking for a badge by URL needs to be done by using the list function.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/PersonQrCodeBadgeDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrBadgeDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonQrBadgeDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrBadgeDataSourceHttp.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonQrBadgeEntityDao.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrBadgeDataSourceHttp.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrBadgeDataSourceExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonQrBadgeEntity.kt"
        ],
        "commitId" : "f3d7f8fc88945ec5e072c433938796cc9e8567d6",
        "timestamp" : 1768812372000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Further qr badge datasource tidyup:\u000a1) Remove unnecessary extension function (even though it was following the same pattern we had used for password)\u000a2) Remove unused DAO query function\u000a3) Add index for QR code url\u000a",
        "date" : "2026-01-19 12:46:12 +0400",
        "id" : "f3d7f8fc88945ec5e072c433938796cc9e8567d6",
        "msg" : "Further qr badge datasource tidyup:",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonQrBadgeDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonQrBadgeEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonQrBadgeDataSourceExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/SchoolDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonQrBadgeEntity.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_001_invite_users_using_code_or_link_test.yaml"
        ],
        "commitId" : "1c0cc68aced91adcff1d05d633326f0887dfa632",
        "timestamp" : 1768812921000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test\u000a",
        "date" : "2026-01-19 12:55:21 +0400",
        "id" : "1c0cc68aced91adcff1d05d633326f0887dfa632",
        "msg" : "updated test",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_users_using_code_or_link_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/setusernameandpassword/SetUsernameAndPasswordScreen.kt"
        ],
        "commitId" : "f6103410abc1b55e0f2bc36477e51433c12e78a3",
        "timestamp" : 1768813679000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Minor tidyup on SetUsernameAndPassword:\u000a1) Remove unused ui state property isQrAlreadyAssigned\u000a2) Rename uistate property: not isStudent, should be showQrBadgeInfoBox\u000a",
        "date" : "2026-01-19 13:07:59 +0400",
        "id" : "f6103410abc1b55e0f2bc36477e51433c12e78a3",
        "msg" : "Minor tidyup on SetUsernameAndPassword:",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/setusernameandpassword/SetUsernameAndPasswordScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared-se/src/commonMain/kotlin/world/respect/sharedse/domain/account/authenticatepassword/AuthenticateQrBadgeUseCaseDbImpl.kt"
        ],
        "commitId" : "5882c8eed7695c5777994d7aa8d86e6b87612c68",
        "timestamp" : 1768814421000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "AuthenticateQrBadgeUseCaseDbImpl: remove useless if statement that could never be true\u000a\u000aqrCodeEntity.pqrQrCodeUrl != credential.qrCodeUrl would never be - it was found by searching the database by Url.\u000a",
        "date" : "2026-01-19 13:20:21 +0400",
        "id" : "5882c8eed7695c5777994d7aa8d86e6b87612c68",
        "msg" : "AuthenticateQrBadgeUseCaseDbImpl: remove useless if statement that could never be true",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared-se/src/commonMain/kotlin/world/respect/sharedse/domain/account/authenticatepassword/AuthenticateQrBadgeUseCaseDbImpl.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/10.json",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
        ],
        "commitId" : "c0dd4e4deb4fde98ff0b521d8ec1778c4286a182",
        "timestamp" : 1768815721000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "Remove hardcoded english from ui text strings\u000a",
        "date" : "2026-01-19 15:12:01 +0530",
        "id" : "c0dd4e4deb4fde98ff0b521d8ec1778c4286a182",
        "msg" : "Remove hardcoded english from ui text strings",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/10.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
        ],
        "commitId" : "ad35e73e8c202735f82cc0cb64c8e8d106eae99f",
        "timestamp" : 1768817989000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "add automatic username suggestion\u000a",
        "date" : "2026-01-19 15:49:49 +0530",
        "id" : "ad35e73e8c202735f82cc0cb64c8e8d106eae99f",
        "msg" : "add automatic username suggestion",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/UrlExt.kt",
          "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/StringExt.kt"
        ],
        "commitId" : "f0be4dd07f9abc0fd6e3c4bfd9470ade4add3009",
        "timestamp" : 1768819323000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add UrlExt function to separate a school endpoint url from the rest of any link.\u000a",
        "date" : "2026-01-19 14:42:03 +0400",
        "id" : "f0be4dd07f9abc0fd6e3c4bfd9470ade4add3009",
        "msg" : "Add UrlExt function to separate a school endpoint url from the rest of any link.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/StringExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/UrlExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonQrBadgeEntityDao.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
        ],
        "commitId" : "5748955401b96196a48a88d986e2b5a24bbdf97a",
        "timestamp" : 1768820871000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "fix revoke issue\u000a",
        "date" : "2026-01-19 16:37:51 +0530",
        "id" : "5748955401b96196a48a88d986e2b5a24bbdf97a",
        "msg" : "fix revoke issue",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonQrBadgeEntityDao.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_003_login_using_school_link_test.yaml",
          ".maestro/flows/001_002_add_user_direct_test.yaml",
          ".maestro/flows/002_browse_lessons_test.yaml",
          ".maestro/flows/subflows/erase_text.yaml",
          ".maestro/flows/001_001_invite_using_invite_code_test.yaml"
        ],
        "commitId" : "9860e9bc7594551c16b7f4ddbd15c531b25f9797",
        "timestamp" : 1768821269000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated eraseText\u000a",
        "date" : "2026-01-19 15:14:29 +0400",
        "id" : "9860e9bc7594551c16b7f4ddbd15c531b25f9797",
        "msg" : "updated eraseText",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_using_invite_code_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_003_login_using_school_link_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/subflows/erase_text.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "626f643f39ba0cb381fb00f7525a2aea8811a592",
        "timestamp" : 1768821408000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test - automated username field\u000a",
        "date" : "2026-01-19 15:16:48 +0400",
        "id" : "626f643f39ba0cb381fb00f7525a2aea8811a592",
        "msg" : "updated test - automated username field",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "29a192823296d7934f48ebb62acbbc8d30513252",
        "timestamp" : 1768821530000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test - automated username field\u000a",
        "date" : "2026-01-19 15:18:50 +0400",
        "id" : "29a192823296d7934f48ebb62acbbc8d30513252",
        "msg" : "updated test - automated username field",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-repository/README.md",
          "respect-datalayer/README.md"
        ],
        "commitId" : "a4bb1f65ab87994871bf3899241b71902a49f67e",
        "timestamp" : 1768822659000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update datalayer README to add conceptual notes on data deletion.\u000a",
        "date" : "2026-01-19 15:37:39 +0400",
        "id" : "a4bb1f65ab87994871bf3899241b71902a49f67e",
        "msg" : "Update datalayer README to add conceptual notes on data deletion.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/README.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/README.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/UrlExt.kt"
        ],
        "commitId" : "40e96524b4e4c0fa3d6da36839f3208662b1e072",
        "timestamp" : 1768824961000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix UrlExt.schoolUrlOrNull function.\u000a",
        "date" : "2026-01-19 16:16:01 +0400",
        "id" : "40e96524b4e4c0fa3d6da36839f3208662b1e072",
        "msg" : "Fix UrlExt.schoolUrlOrNull function.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/UrlExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-repository/README.md",
          "respect-datalayer/README.md"
        ],
        "commitId" : "8db274da685d982c6446ebda0d041793ae05df32",
        "timestamp" : 1768825559000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "Update datalayer README to add conceptual notes on data deletion.\u000a",
        "date" : "2026-01-19 17:55:59 +0530",
        "id" : "8db274da685d982c6446ebda0d041793ae05df32",
        "msg" : "Update datalayer README to add conceptual notes on data deletion.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/README.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/README.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_003_login_using_school_link_test.yaml",
          ".maestro/flows/001_002_add_user_direct_test.yaml",
          ".maestro/flows/002_browse_lessons_test.yaml",
          ".maestro/flows/subflows/erase_text.yaml",
          ".maestro/flows/001_001_invite_using_invite_code_test.yaml"
        ],
        "commitId" : "5d2f9461c1b913d096c0e3bf86dc58a96b7b31e4",
        "timestamp" : 1768825642000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "updated eraseText\u000a",
        "date" : "2026-01-19 17:57:22 +0530",
        "id" : "5d2f9461c1b913d096c0e3bf86dc58a96b7b31e4",
        "msg" : "updated eraseText",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/002_browse_lessons_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_003_login_using_school_link_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/subflows/erase_text.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_using_invite_code_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/UrlExt.kt"
        ],
        "commitId" : "da316f2f3d5146e9ade72aa0140596e59b219312",
        "timestamp" : 1768825653000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "Fix UrlExt.schoolUrlOrNull function.\u000a",
        "date" : "2026-01-19 17:57:33 +0530",
        "id" : "da316f2f3d5146e9ade72aa0140596e59b219312",
        "msg" : "Fix UrlExt.schoolUrlOrNull function.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/UrlExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/validateqrbadge/ValidateQrCodeUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/UrlParser.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/scanqrcode/ScanQRCodeViewModel.kt"
        ],
        "commitId" : "b672c46c339df2ef1e78bdabaf7f8510414cfe55",
        "timestamp" : 1768825653000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "remove other custom logic for schoolurl\u000a",
        "date" : "2026-01-19 17:57:33 +0530",
        "id" : "b672c46c339df2ef1e78bdabaf7f8510414cfe55",
        "msg" : "remove other custom logic for schoolurl",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/validateqrbadge/ValidateQrCodeUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/scanqrcode/ScanQRCodeViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/UrlParser.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "0726c29208a0b19d6e9fc170e00db06b1abe2bc8",
        "timestamp" : 1768829659000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test - automated username field\u000a",
        "date" : "2026-01-19 17:34:19 +0400",
        "id" : "0726c29208a0b19d6e9fc170e00db06b1abe2bc8",
        "msg" : "updated test - automated username field",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroption/OtherOptionsViewModel.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/add/AddSchoolUseCase.kt",
          "respect-lib-util/src/jvmTest/kotlin/world/respect/libutil/ext/UrlResolveTest.kt",
          "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/UrlExt.kt"
        ],
        "commitId" : "fe3208ef8f17bf71f492b677e2284f1ced80d1c7",
        "timestamp" : 1768830866000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add normalization for school endpoint URL.\u000a",
        "date" : "2026-01-19 17:54:26 +0400",
        "id" : "fe3208ef8f17bf71f492b677e2284f1ced80d1c7",
        "msg" : "Add normalization for school endpoint URL.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/UrlExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-util/src/jvmTest/kotlin/world/respect/libutil/ext/UrlResolveTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroption/OtherOptionsViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/add/AddSchoolUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonQrBadgeEntityDao.kt"
        ],
        "commitId" : "12088ad3df17ed4f6d79dd4b986b121350e217ec",
        "timestamp" : 1768831977000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix PersonQrBadgeEntityDao LIST_SQL query: the WHERE clause was not handling guidNum = 0 correctly.\u000a",
        "date" : "2026-01-19 18:12:57 +0400",
        "id" : "12088ad3df17ed4f6d79dd4b986b121350e217ec",
        "msg" : "Fix PersonQrBadgeEntityDao LIST_SQL query: the WHERE clause was not handling guidNum = 0 correctly.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonQrBadgeEntityDao.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "f0a8c73c3497f110b72458e49adb808fb2719365",
        "timestamp" : 1768884536000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "updated eraseText\u000a",
        "date" : "2026-01-20 10:18:56 +0530",
        "id" : "f0a8c73c3497f110b72458e49adb808fb2719365",
        "msg" : "updated eraseText",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroption/OtherOptionsViewModel.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/add/AddSchoolUseCase.kt",
          "respect-lib-util/src/jvmTest/kotlin/world/respect/libutil/ext/UrlResolveTest.kt",
          "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/UrlExt.kt"
        ],
        "commitId" : "6a4dea3826b5bbee639badcad4e04a963e7d62e7",
        "timestamp" : 1768884540000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "Add normalization for school endpoint URL.\u000a",
        "date" : "2026-01-20 10:19:00 +0530",
        "id" : "6a4dea3826b5bbee639badcad4e04a963e7d62e7",
        "msg" : "Add normalization for school endpoint URL.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/UrlExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/add/AddSchoolUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroption/OtherOptionsViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-util/src/jvmTest/kotlin/world/respect/libutil/ext/UrlResolveTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/drawable/undraw_qr_code_scan_bewe.xml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectQrBadgeInfoBox.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/images/RespectImage.android.kt",
          "respect-app-compose/src/androidMain/res/drawable/fingerprint.png"
        ],
        "commitId" : "f01aea6265748d566589af4ba8c85a1a5324a508",
        "timestamp" : 1768887431000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "add qr code image\u000a",
        "date" : "2026-01-20 11:07:11 +0530",
        "id" : "f01aea6265748d566589af4ba8c85a1a5324a508",
        "msg" : "add qr code image",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/drawable/fingerprint.png"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectQrBadgeInfoBox.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/images/RespectImage.android.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/composeResources/drawable/undraw_qr_code_scan_bewe.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/images/RespectImage.kt"
        ],
        "commitId" : "6ecaa887d61eceebac5d9362620754a32c3f1570",
        "timestamp" : 1768887699000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "code refactor\u000a",
        "date" : "2026-01-20 11:11:39 +0530",
        "id" : "6ecaa887d61eceebac5d9362620754a32c3f1570",
        "msg" : "code refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/images/RespectImage.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "b1c48b8af1ec1fcafac7c46674133e230d6bc9b7",
        "timestamp" : 1768888353000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test - automated username field\u000a",
        "date" : "2026-01-20 09:52:33 +0400",
        "id" : "b1c48b8af1ec1fcafac7c46674133e230d6bc9b7",
        "msg" : "updated test - automated username field",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/scanqrcode/ScanQRCodeViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
        ],
        "commitId" : "fcbfb6581579024f495c6b2dff2d9163fa54ed48",
        "timestamp" : 1768889640000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "code refactor\u000a",
        "date" : "2026-01-20 11:44:00 +0530",
        "id" : "fcbfb6581579024f495c6b2dff2d9163fa54ed48",
        "msg" : "code refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/scanqrcode/ScanQRCodeViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "42623e066a548bc385ecc1822c018857d79a12b7",
        "timestamp" : 1768890869000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test - automated username flow\u000a",
        "date" : "2026-01-20 10:34:29 +0400",
        "id" : "42623e066a548bc385ecc1822c018857d79a12b7",
        "msg" : "updated test - automated username flow",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/scanqrcode/ScanQRCodeViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
        ],
        "commitId" : "fb0aab95d9603de66cf4a109636f01f741484819",
        "timestamp" : 1768894131000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Rename ManageAccount route parameters and add property KDocs.\u000a",
        "date" : "2026-01-20 11:28:51 +0400",
        "id" : "fb0aab95d9603de66cf4a109636f01f741484819",
        "msg" : "Rename ManageAccount route parameters and add property KDocs.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/scanqrcode/ScanQRCodeViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
        ],
        "commitId" : "1467d9165cae49927852f92a09af6a29f59ff95e",
        "timestamp" : 1768896352000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "remove authenticateqrbadgeusecase from client di\u000a",
        "date" : "2026-01-20 13:35:52 +0530",
        "id" : "1467d9165cae49927852f92a09af6a29f59ff95e",
        "msg" : "remove authenticateqrbadgeusecase from client di",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt"
        ],
        "commitId" : "cbc8484d1ceab349b644f1dc57710bcf96599e1e",
        "timestamp" : 1768912979000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update CreateAccountSetUserNameViewModel:\u000a\u000a1) Simplify use of suggestedUsername: ensure that the use case is only invoked once. Because it can connect to the server, put the personDataSource collection into collectLatest so it can be cancelled.\u000a\u000a2) Use existing validatepasswordusecase.\u000a",
        "date" : "2026-01-20 16:42:59 +0400",
        "id" : "cbc8484d1ceab349b644f1dc57710bcf96599e1e",
        "msg" : "Update CreateAccountSetUserNameViewModel:",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetPasswordViewModel.kt"
        ],
        "commitId" : "f9a00ae83433feb5c27bd5bf76393ae3f8e9ade1",
        "timestamp" : 1768917605000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "remove validatepassword fun\u000a",
        "date" : "2026-01-20 19:30:05 +0530",
        "id" : "f9a00ae83433feb5c27bd5bf76393ae3f8e9ade1",
        "msg" : "remove validatepassword fun",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetPasswordViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/InviteEntity.kt",
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PersonAdapter.kt",
          "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/sendinvite/SmsLinkLauncherAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/SmsLinkLauncher.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/sendinvite/ShareLinkLauncherAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/LaunchSendEmailUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/LaunchSendSmsUseCase.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/sendinvite/LaunchShareLinkAndroid.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonDataSource.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/sendinvite/EmailLinkLauncherAndroid.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/list/PersonListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/ApproveOrDeclineInviteRequestUseCase.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/InviteDataSource.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/CreateInviteUseCaseDataSource.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonDataSourceHttp.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AbstractAppActivity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLayerParams.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/EmailLinkLauncher.kt",
          "respect-server/src/main/kotlin/world/respect/server/Application.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/CreateInviteUseCaseClient.kt",
          "respect-lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/InstantAsISO8601Extensions.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/sendinvite/LaunchSendEmailAndroid.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/RespectApp.kt",
          "respect-server/src/main/kotlin/world/respect/server/account/invite/GetInviteInfoUseCaseServer.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/InviteCreateRoute.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/InviteStatusEnum.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/InviteAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/InviteDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/InviteEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/InviteDataSourceHttp.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/LaunchShareLinkUseCase.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Invite.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/10.json",
          "respect-server/src/main/kotlin/world/respect/server/account/invite/CreateInviteUseCaseServer.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/ShareLinkLauncher.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/sendinvite/LaunchSendSmsAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/edit/ClazzEditViewModel.kt"
        ],
        "commitId" : "ba6545b83f356bc88ecda42b9d1bcb562ed0cdea",
        "timestamp" : 1768927420000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "The invite launcher name change.Create invite, client and server side use case removed and data source added.and changes related to pull request comments.\u000a",
        "date" : "2026-01-20 22:13:40 +0530",
        "id" : "ba6545b83f356bc88ecda42b9d1bcb562ed0cdea",
        "msg" : "The invite launcher name change.Create invite, client and server side use case removed and data source added.and changes related to pull request comments.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/CreateInviteUseCaseClient.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/sendinvite/LaunchSendSmsAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/PersonDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/sendinvite/SmsLinkLauncherAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/list/PersonListScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/sendinvite/ShareLinkLauncherAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/InviteDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/RespectApp.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/InviteCreateRoute.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/LaunchSendEmailUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AbstractAppActivity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/sendinvite/LaunchShareLinkAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/LaunchShareLinkUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLayerParams.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/account/invite/GetInviteInfoUseCaseServer.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/10.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/InviteDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-server/src/main/kotlin/world/respect/server/account/invite/CreateInviteUseCaseServer.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/EmailLinkLauncher.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Invite.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/ApproveOrDeclineInviteRequestUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-serializers/src/commonMain/kotlin/world/respect/lib/serializers/InstantAsISO8601Extensions.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/InviteAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/InviteDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/InviteEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/SmsLinkLauncher.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PersonAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/InviteStatusEnum.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/Application.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/sendinvite/EmailLinkLauncherAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/InviteEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/PersonEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/CreateInviteUseCaseDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/ShareLinkLauncher.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/PersonDataSourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/sendinvite/LaunchSendEmailAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/LaunchSendSmsUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/edit/ClazzEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "66dd3fb9d8cdeb3e0f4800bd4e8087ca612efc69",
        "timestamp" : 1768968076000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Updated password error\u000a",
        "date" : "2026-01-21 08:01:16 +0400",
        "id" : "66dd3fb9d8cdeb3e0f4800bd4e8087ca612efc69",
        "msg" : "Updated password error",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/subflows/admin_add_app_and_teacher.yaml",
          ".maestro/flows/001_001_invite_using_invite_code_test.yaml"
        ],
        "commitId" : "4426c9a5ed6ee673092cea38db9c03a7b59b417e",
        "timestamp" : 1768968964000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test codes\u000a",
        "date" : "2026-01-21 08:16:04 +0400",
        "id" : "4426c9a5ed6ee673092cea38db9c03a7b59b417e",
        "msg" : "updated test codes",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_using_invite_code_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_app_and_teacher.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "53fa07ed6b876b56ec1933e1417b7d43da1ac7c3",
        "timestamp" : 1768970015000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Updated password error\u000a",
        "date" : "2026-01-21 08:33:35 +0400",
        "id" : "53fa07ed6b876b56ec1933e1417b7d43da1ac7c3",
        "msg" : "Updated password error",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_001_invite_users_using_code_or_link_test.yaml"
        ],
        "commitId" : "73eb03175417317caf874a256b6da225c4210e76",
        "timestamp" : 1768971410000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test - Invite user\u000a",
        "date" : "2026-01-21 08:56:50 +0400",
        "id" : "73eb03175417317caf874a256b6da225c4210e76",
        "msg" : "updated test - Invite user",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_users_using_code_or_link_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt"
        ],
        "commitId" : "af965e4459675fe7edd91536a6c616ebe5dfa7d8",
        "timestamp" : 1768971564000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "code refactor\u000a",
        "date" : "2026-01-21 10:29:24 +0530",
        "id" : "af965e4459675fe7edd91536a6c616ebe5dfa7d8",
        "msg" : "code refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/jvmTest/kotlin/world/respect/domain/account/invite/RedeemInviteIntegrationTest.kt"
        ],
        "commitId" : "f9734853454106d072be08b7008961690ca7d655",
        "timestamp" : 1768975888000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "changes related RedeemInviteIntegrationTest\u000a",
        "date" : "2026-01-21 11:41:28 +0530",
        "id" : "f9734853454106d072be08b7008961690ca7d655",
        "msg" : "changes related RedeemInviteIntegrationTest",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmTest/kotlin/world/respect/domain/account/invite/RedeemInviteIntegrationTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_001_invite_using_invite_code_test.yaml"
        ],
        "commitId" : "82e79d88bbccf0012e86f23914506f76e7bc91a0",
        "timestamp" : 1768978921000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test - missing appId\u000a",
        "date" : "2026-01-21 11:02:01 +0400",
        "id" : "82e79d88bbccf0012e86f23914506f76e7bc91a0",
        "msg" : "updated test - missing appId",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_using_invite_code_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_001_invite_users_using_code_or_link_test.yaml"
        ],
        "commitId" : "767a7637bd8a89cdb8a54b311b8dbd734fe3c74c",
        "timestamp" : 1768979612000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test - mistyped variable\u000a",
        "date" : "2026-01-21 11:13:32 +0400",
        "id" : "767a7637bd8a89cdb8a54b311b8dbd734fe3c74c",
        "msg" : "updated test - mistyped variable",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_users_using_code_or_link_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroption/OtherOptionsViewModel.kt"
        ],
        "commitId" : "1e939cfb01b872fb3534901d9747100004a893a5",
        "timestamp" : 1768982317000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix OtherOptionsViewModel to use normalized endpoint URL string when URL entered manually.\u000a",
        "date" : "2026-01-21 11:58:37 +0400",
        "id" : "1e939cfb01b872fb3534901d9747100004a893a5",
        "msg" : "Fix OtherOptionsViewModel to use normalized endpoint URL string when URL entered manually.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroption/OtherOptionsViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_001_invite_users_using_code_or_link_test.yaml",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
        ],
        "commitId" : "5d68ab582e10aeffb505d39fdcc9aac2799cde47",
        "timestamp" : 1768986436000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test - name\u000a",
        "date" : "2026-01-21 13:07:16 +0400",
        "id" : "5d68ab582e10aeffb505d39fdcc9aac2799cde47",
        "msg" : "updated test - name",
        "paths" : [
          {
            "editType" : "delete",
            "file" : ".maestro/flows/001_001_invite_users_using_code_or_link_test.yaml"
          },
          {
            "editType" : "add",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetPasswordViewModel.kt"
        ],
        "commitId" : "e9967b71a295c34febcdccf3cce3e559502ab1fd",
        "timestamp" : 1768989202000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "code refactor\u000a",
        "date" : "2026-01-21 15:23:22 +0530",
        "id" : "e9967b71a295c34febcdccf3cce3e559502ab1fd",
        "msg" : "code refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetPasswordViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/edit/ClazzEditScreen.kt"
        ],
        "commitId" : "da7cc819229bec7b4b34f1e2b2bf80b75362e925",
        "timestamp" : 1768990905000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Terminology change: class edit screen to show 'class name', assignment edit screen to show 'assignment name'.\u000a",
        "date" : "2026-01-21 14:21:45 +0400",
        "id" : "da7cc819229bec7b4b34f1e2b2bf80b75362e925",
        "msg" : "Terminology change: class edit screen to show 'class name', assignment edit screen to show 'assignment name'.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/edit/ClazzEditScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt"
        ],
        "commitId" : "b31a3399147b740b729469521d48ad2eff43fa4d",
        "timestamp" : 1768991246000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Terminology change: class edit screen to show 'class name', assignment edit screen to show 'assignment name'.\u000a",
        "date" : "2026-01-21 14:27:26 +0400",
        "id" : "b31a3399147b740b729469521d48ad2eff43fa4d",
        "msg" : "Terminology change: class edit screen to show 'class name', assignment edit screen to show 'assignment name'.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignment/edit/AssignmentEditScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/subflows/admin_add_class.yaml",
          ".maestro/flows/subflows/admin_add_app_and_teacher.yaml",
          ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml",
          ".maestro/flows/001_001_invite_using_invite_code_test.yaml"
        ],
        "commitId" : "0bde3ec630d282513020dba81483a8600f6051a0",
        "timestamp" : 1768991904000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Updated Name* to Class name* /Assignment name*\u000a",
        "date" : "2026-01-21 14:38:24 +0400",
        "id" : "0bde3ec630d282513020dba81483a8600f6051a0",
        "msg" : "Updated Name* to Class name* /Assignment name*",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_class.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_app_and_teacher.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_using_invite_code_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/003_admin_user_assigns_assignment_to_a_class_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/subflows/message_open_invite_link.yaml",
          ".maestro/flows/subflows/message_paste_invite_link.yaml",
          ".maestro/flows/001_001_invite_using_invite_code_test.yaml",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
        ],
        "commitId" : "7688d6f51dd88509b4097104e349b3ae84020d25",
        "timestamp" : 1768992317000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test - invite_code_field\u000a",
        "date" : "2026-01-21 14:45:17 +0400",
        "id" : "7688d6f51dd88509b4097104e349b3ae84020d25",
        "msg" : "updated test - invite_code_field",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/subflows/message_open_invite_link.yaml"
          },
          {
            "editType" : "delete",
            "file" : ".maestro/flows/subflows/message_paste_invite_link.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_using_invite_code_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/subflows/admin_add_app_and_teacher.yaml"
        ],
        "commitId" : "c0be81dea469bce208dea29ad35a8935762e3a8c",
        "timestamp" : 1768992359000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test - invite_code_field\u000a",
        "date" : "2026-01-21 14:45:59 +0400",
        "id" : "c0be81dea469bce208dea29ad35a8935762e3a8c",
        "msg" : "updated test - invite_code_field",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_app_and_teacher.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-server/src/main/kotlin/world/respect/server/Application.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/CreateInviteUseCaseClient.kt",
          "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt",
          "respect-lib-shared/build.gradle.kts",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt",
          "gradle/libs.versions.toml",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/InviteCreateRoute.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/qrcode/InviteQrViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/qrcode/InviteQrScreen.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/build.gradle.kts",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
        ],
        "commitId" : "b83638792756b0fe942810eae530e28753f4672c",
        "timestamp" : 1768993393000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "qrcode screen added\u000a",
        "date" : "2026-01-21 16:33:13 +0530",
        "id" : "b83638792756b0fe942810eae530e28753f4672c",
        "msg" : "qrcode screen added",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/CreateInviteUseCaseClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/qrcode/InviteQrViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/InviteCreateRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/Application.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/qrcode/InviteQrScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/qrcode/InviteQrScreen.kt"
        ],
        "commitId" : "b656051132c9a6115954f0264532458826da5d09",
        "timestamp" : 1768996568000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "invite_qr_link added\u000a",
        "date" : "2026-01-21 17:26:08 +0530",
        "id" : "b656051132c9a6115954f0264532458826da5d09",
        "msg" : "invite_qr_link added",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/qrcode/InviteQrScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/subflows/admin_add_class.yaml",
          ".maestro/flows/subflows/admin_add_app_and_teacher.yaml",
          ".maestro/flows/001_001_invite_using_invite_code_test.yaml",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
        ],
        "commitId" : "a329b905669268994fc7f574347e8ffcb1bb9171",
        "timestamp" : 1768996708000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test - name\u000a",
        "date" : "2026-01-21 15:58:28 +0400",
        "id" : "a329b905669268994fc7f574347e8ffcb1bb9171",
        "msg" : "updated test - name",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_class.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_app_and_teacher.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_using_invite_code_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/subflows/admin_add_class.yaml"
        ],
        "commitId" : "b5132c9b3affba1dea56d20e9d807e7c02fa7358",
        "timestamp" : 1768997042000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test - name\u000a",
        "date" : "2026-01-21 16:04:02 +0400",
        "id" : "b5132c9b3affba1dea56d20e9d807e7c02fa7358",
        "msg" : "updated test - name",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_class.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
        ],
        "commitId" : "901435ff66d16475873da1f29a4496f47cf7a56c",
        "timestamp" : 1768998088000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test - added qr_link id\u000a",
        "date" : "2026-01-21 16:21:28 +0400",
        "id" : "901435ff66d16475873da1f29a4496f47cf7a56c",
        "msg" : "updated test - added qr_link id",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
        ],
        "commitId" : "5bd21abbb602d56ae6544079b860db4dab398c9a",
        "timestamp" : 1768998898000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test - added invitation\u000a",
        "date" : "2026-01-21 16:34:58 +0400",
        "id" : "5bd21abbb602d56ae6544079b860db4dab398c9a",
        "msg" : "updated test - added invitation",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/RespectViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonQrBadge.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/10.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonQrBadgeEntity.kt",
          "respect-lib-shared-se/src/commonMain/kotlin/world/respect/sharedse/domain/account/authenticatepassword/AuthenticateQrBadgeUseCaseDbImpl.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/scanqrcode/ScanQRCodeViewModel.kt"
        ],
        "commitId" : "2b439a06c73b4593a8e3072f12d785ca79e0261c",
        "timestamp" : 1769001379000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Tidyup:\u000aa) Make PersonQrBadge qrUrl nullable: if no QR badge is assigned, we don't want to delete the PersonQrBadge itself. The Url should be set as null.\u000ab) Tidyup ManageAccountViewModel\u000a",
        "date" : "2026-01-21 17:16:19 +0400",
        "id" : "2b439a06c73b4593a8e3072f12d785ca79e0261c",
        "msg" : "Tidyup:",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/10.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/PersonQrBadgeEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared-se/src/commonMain/kotlin/world/respect/sharedse/domain/account/authenticatepassword/AuthenticateQrBadgeUseCaseDbImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/manageaccount/ManageAccountViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/scanqrcode/ScanQRCodeViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/RespectViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/PersonQrBadge.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/scanqrcode/ScanQRCodeViewModel.kt",
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "ea6042d39766b0524933983eab99d6344228aa3c",
        "timestamp" : 1769013545000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Temporarily disable checking invalid QR code scanned: this check should be in manage account screen.\u000aFix refactored ScanQRCodeViewModel (incorrectly had ! before sendResultIfExpected)\u000a",
        "date" : "2026-01-21 20:39:05 +0400",
        "id" : "ea6042d39766b0524933983eab99d6344228aa3c",
        "msg" : "Temporarily disable checking invalid QR code scanned: this check should be in manage account screen.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/scanqrcode/ScanQRCodeViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt"
        ],
        "commitId" : "90fd361a3b462e064efacc2f2fbde3ba01b7ddac",
        "timestamp" : 1769015037000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add try/catch to avoid CreateAccountSetUserNameViewModel crashing if offline.\u000a",
        "date" : "2026-01-21 21:03:57 +0400",
        "id" : "90fd361a3b462e064efacc2f2fbde3ba01b7ddac",
        "msg" : "Add try/catch to avoid CreateAccountSetUserNameViewModel crashing if offline.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/setusernameandpassword/CreateAccountSetUserNameViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/10.json",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
        ],
        "commitId" : "376eabbdac4f607c7b2332ea0644efd1b85d29ce",
        "timestamp" : 1769067799000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix merge of main branch NavHost imports.\u000a",
        "date" : "2026-01-22 11:43:19 +0400",
        "id" : "376eabbdac4f607c7b2332ea0644efd1b85d29ce",
        "msg" : "Fix merge of main branch NavHost imports.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/10.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_002_add_user_direct_test.yaml"
        ],
        "commitId" : "9a9a526c1ae6d5f22400ace5399f30216e4bfe09",
        "timestamp" : 1769071726000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test - added add new person btn\u000a",
        "date" : "2026-01-22 12:48:46 +0400",
        "id" : "9a9a526c1ae6d5f22400ace5399f30216e4bfe09",
        "msg" : "updated test - added add new person btn",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_002_add_user_direct_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
        ],
        "commitId" : "8a8a937520f48008abab95fc39781ee65682ba09",
        "timestamp" : 1769071942000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test - scan qr btn\u000a",
        "date" : "2026-01-22 12:52:22 +0400",
        "id" : "8a8a937520f48008abab95fc39781ee65682ba09",
        "msg" : "updated test - scan qr btn",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/util/scanqrcode/PermissionsManager.android.kt",
          "respect-app-compose/build.gradle.kts",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/util/scanqrcode/PermissionsManager.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/scanqrcode/ScanQRCodeScreen.kt",
          "respect-app-compose/src/desktopMain/kotlin/world/respect/app/util/scanqrcode/PermissionsManager.desktop.kt",
          "gradle/libs.versions.toml"
        ],
        "commitId" : "05352ad69b934b033f37bad94032aaa6502b35ee",
        "timestamp" : 1769083671000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "add qr code camera permission\u000a",
        "date" : "2026-01-22 17:37:51 +0530",
        "id" : "05352ad69b934b033f37bad94032aaa6502b35ee",
        "msg" : "add qr code camera permission",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/util/scanqrcode/PermissionsManager.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/desktopMain/kotlin/world/respect/app/util/scanqrcode/PermissionsManager.desktop.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/scanqrcode/ScanQRCodeScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/util/scanqrcode/PermissionsManager.android.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/InviteEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/InviteDataSourceLocal.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/CreateInviteUseCaseClient.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/InviteAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/InviteDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/InviteEntityDao.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/InviteDataSourceHttp.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/InviteDataSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Invite.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/10.json"
        ],
        "commitId" : "8e89f2806aec1c132da8be98d2cdfd8651d97557",
        "timestamp" : 1769088354000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Refactor to use sealed interface for invite.\u000a",
        "date" : "2026-01-22 17:25:54 +0400",
        "id" : "8e89f2806aec1c132da8be98d2cdfd8651d97557",
        "msg" : "Refactor to use sealed interface for invite.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/InviteAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/InviteDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/InviteDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/entities/InviteEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/CreateInviteUseCaseClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectSchoolDatabase/10.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/InviteDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/daos/InviteEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Invite.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/InviteDataSourceLocal.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/scanqrcode/ScanQRCodeScreen.kt"
        ],
        "commitId" : "dd390e419ee87a43bef23780ccf949b354341e0a",
        "timestamp" : 1769147920000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "code refactor\u000a",
        "date" : "2026-01-23 11:28:40 +0530",
        "id" : "dd390e419ee87a43bef23780ccf949b354341e0a",
        "msg" : "code refactor",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/scanqrcode/ScanQRCodeScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/Application.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/InviteDataSourceRepository.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/RespectInviteInfo.kt",
          "respect-server/src/main/kotlin/world/respect/server/account/invite/GetInviteInfoUseCaseServer.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/EnrollmentRoleEnumExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/EnrollmentRoleEnumExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/InviteCreateRoute.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/confirmation/ConfirmationScreen.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/InviteDataSourceDb.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/InviteRoute.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/confirmation/ConfirmationViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/InviteDataSourceHttp.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/CreateInviteUseCaseDataSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Invite.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/CreateInviteUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/edit/ClazzEditViewModel.kt"
        ],
        "commitId" : "77b176674ceb9a2e66eec5ef41fe5beaeafdeb58",
        "timestamp" : 1769175912000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "More refactoring work in progress.\u000a",
        "date" : "2026-01-23 17:45:12 +0400",
        "id" : "77b176674ceb9a2e66eec5ef41fe5beaeafdeb58",
        "msg" : "More refactoring work in progress.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/edit/ClazzEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/confirmation/ConfirmationViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/PersonDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/confirmation/ConfirmationScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Invite.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/CreateInviteUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/InviteDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/InviteRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/InviteDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/account/invite/GetInviteInfoUseCaseServer.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/EnrollmentRoleEnumExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/ext/EnrollmentRoleEnumExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/SchoolDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/InviteDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/InviteCreateRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/RespectInviteInfo.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/CreateInviteUseCaseDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/Application.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/InviteDataSourceRepository.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt",
          "respect-datalayer-db/build.gradle.kts",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/CreateInviteUseCaseDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonRoleEnumExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/InviteDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/GetWritableRolesListUseCase.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/GetWritableRolesListUseCaseImpl.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/InviteDataSourceHttp.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/add/AddSchoolUseCase.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/InviteDataSource.kt",
          "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/RandomString.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/CreateInviteUseCaseDataSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Invite.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/edit/PersonEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/CreateInviteUseCase.kt"
        ],
        "commitId" : "7b0495538d0135182c3fbbd66d40b235679facc3",
        "timestamp" : 1769347425000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "More refactoring work in progress.\u000a",
        "date" : "2026-01-25 17:23:45 +0400",
        "id" : "7b0495538d0135182c3fbbd66d40b235679facc3",
        "msg" : "More refactoring work in progress.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/InviteDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/GetWritableRolesListUseCaseImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/domain/GetWritableRolesListUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/PersonRoleEnumExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/CreateInviteUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/CreateInviteUseCaseDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/RandomString.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/edit/PersonEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/InviteDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/add/AddSchoolUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/InviteDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/school/InviteDataSourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/CreateInviteUseCaseDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Invite.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/createlink/CreateInviteLinkUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/urltonavcommand/ResolveUrlToNavCommandUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/createlink/CreateLinkUseCase.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
        ],
        "commitId" : "55e883b895539e1f964fc6b33c57718fb89faee0",
        "timestamp" : 1769348585000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "More refactoring work in progress.\u000a\u000aInitial re-implementation of InvitePersonViewModel.\u000a",
        "date" : "2026-01-25 17:43:05 +0400",
        "id" : "55e883b895539e1f964fc6b33c57718fb89faee0",
        "msg" : "More refactoring work in progress.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/createlink/CreateLinkUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/createlink/CreateInviteLinkUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/urltonavcommand/ResolveUrlToNavCommandUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/LaunchSendEmailUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/createlink/CreateInviteLinkUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/LaunchSendSmsUseCase.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/sendinvite/LaunchShareLinkAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/sendinvite/LaunchSendEmailAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/LaunchShareLinkUseCase.kt",
          "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/UrlExt.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/sendinvite/LaunchSendSmsAndroid.kt"
        ],
        "commitId" : "a755c4a08c66faa06a7fc131026820942a89d941",
        "timestamp" : 1769350737000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "More refactoring work in progress.\u000a\u000aGenerate accept invite link that follows the school link pattern and make code accessible via copy options etc.\u000a",
        "date" : "2026-01-25 18:18:57 +0400",
        "id" : "a755c4a08c66faa06a7fc131026820942a89d941",
        "msg" : "More refactoring work in progress.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/sendinvite/LaunchShareLinkAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/UrlExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/LaunchSendSmsUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/LaunchSendEmailUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/sendinvite/LaunchSendSmsAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/sendinvite/LaunchSendEmailAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/createlink/CreateInviteLinkUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/sharelink/LaunchShareLinkUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/joinclazzwithcode/JoinClazzWithCodeScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/joinclazzwithcode/JoinClazzWithCodeViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/enterinvitecode/EnterInviteCodeScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/login/LoginViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/enterinvitecode/EnterInviteCodeViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
        ],
        "commitId" : "b4d279d6a141f929b409e4a01b0b999c09dd0401",
        "timestamp" : 1769351359000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Rename JoinClazzWithCode to EnterInviteCode\u000a",
        "date" : "2026-01-25 18:29:19 +0400",
        "id" : "b4d279d6a141f929b409e4a01b0b999c09dd0401",
        "msg" : "Rename JoinClazzWithCode to EnterInviteCode",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/joinclazzwithcode/JoinClazzWithCodeScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/enterinvitecode/EnterInviteCodeScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/enterinvitecode/EnterInviteCodeViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/joinclazzwithcode/JoinClazzWithCodeViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/login/LoginViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/getstarted/GetStartedScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/acknowledgement/AcknowledgementViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/RespectRedeemInviteRequest.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/enterinvitecode/EnterInviteCodeViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/SchoolPrimaryKeyGenerator.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/RespectInviteInfo.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/signup/CreateAccountViewModel.kt",
          "respect-server/src/main/kotlin/world/respect/server/account/invite/GetInviteInfoUseCaseServer.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/enterpasswordsignup/EnterPasswordSignUpViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/confirmation/ConfirmationScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroptionsignup/OtherOptionsSignupViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/confirmation/ConfirmationViewModel.kt",
          "respect-lib-shared/src/jvmTest/kotlin/world/respect/domain/account/invite/RedeemInviteIntegrationTest.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Invite.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/edit/ClazzEditViewModel.kt"
        ],
        "commitId" : "b3d0cd381b530e2255fa0fc54d7c907d5f4b8e05",
        "timestamp" : 1769358259000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Invite refactor work in progress.\u000a",
        "date" : "2026-01-25 20:24:19 +0400",
        "id" : "b3d0cd381b530e2255fa0fc54d7c907d5f4b8e05",
        "msg" : "Invite refactor work in progress.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/RespectRedeemInviteRequest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/confirmation/ConfirmationScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmTest/kotlin/world/respect/domain/account/invite/RedeemInviteIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroptionsignup/OtherOptionsSignupViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/RespectInviteInfo.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Invite.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/school/SchoolPrimaryKeyGenerator.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/signup/CreateAccountViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/account/invite/GetInviteInfoUseCaseServer.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/enterinvitecode/EnterInviteCodeViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/confirmation/ConfirmationViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/getstarted/GetStartedScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/enterpasswordsignup/EnterPasswordSignUpViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/edit/ClazzEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/acknowledgement/AcknowledgementViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/RememberFormattedTime.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/util/RememberFormattedTime.jvm.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/util/RememberFormattedTime.android.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Invite.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/InviteExt.kt"
        ],
        "commitId" : "62c274ed097ae7dde0193752a2fd51b827656f09",
        "timestamp" : 1769420394000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Invite refactor work in progress.\u000a\u000aImplement approval required on/off support based on 15 min interval.\u000aUpdate invite screen to ensure nothing is clickable when loading is ongoing (avoid potential for flakey test)\u000a",
        "date" : "2026-01-26 13:39:54 +0400",
        "id" : "62c274ed097ae7dde0193752a2fd51b827656f09",
        "msg" : "Invite refactor work in progress.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Invite.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/util/RememberFormattedTime.android.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/InviteExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/util/RememberFormattedTime.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/util/RememberFormattedTime.jvm.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/InviteExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt"
        ],
        "commitId" : "33f93c4f712ca19a689fc519d46a8c997fab0ee1",
        "timestamp" : 1769424597000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Updated invite screen\u000a\u000aAdd QR code, invite code, and link directly to screen itself\u000aAdd reset code option\u000a",
        "date" : "2026-01-26 14:49:57 +0400",
        "id" : "33f93c4f712ca19a689fc519d46a8c997fab0ee1",
        "msg" : "Updated invite screen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/InviteExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt"
        ],
        "commitId" : "ca8b7ddc609f11d680aa270855bbd7660dcd62b7",
        "timestamp" : 1769424900000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove * from invitepersonscreen role dropdown.\u000a",
        "date" : "2026-01-26 14:55:00 +0400",
        "id" : "ca8b7ddc609f11d680aa270855bbd7660dcd62b7",
        "msg" : "Remove * from invitepersonscreen role dropdown.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt"
        ],
        "commitId" : "e050b2eb5353e0b16da31326c26489149d3e9344",
        "timestamp" : 1769424987000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add test tag for invite code.\u000a",
        "date" : "2026-01-26 14:56:27 +0400",
        "id" : "e050b2eb5353e0b16da31326c26489149d3e9344",
        "msg" : "Add test tag for invite code.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/InviteExt.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt"
        ],
        "commitId" : "dde312cd6f6d4f6363cac2c82547a6fac38fc28f",
        "timestamp" : 1769426314000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update InvitePerson screen to update automatically when approval required time expires.\u000a",
        "date" : "2026-01-26 15:18:34 +0400",
        "id" : "dde312cd6f6d4f6363cac2c82547a6fac38fc28f",
        "msg" : "Update InvitePerson screen to update automatically when approval required time expires.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/InviteExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt"
        ],
        "commitId" : "ff60c4446c23fb5bb3ef2f9aa05f740941cee369",
        "timestamp" : 1769426795000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update invite code to be in its own text field for easier testing. Copy on click.\u000a",
        "date" : "2026-01-26 15:26:35 +0400",
        "id" : "ff60c4446c23fb5bb3ef2f9aa05f740941cee369",
        "msg" : "Update invite code to be in its own text field for easier testing. Copy on click.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/inviteperson/InvitePersonViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt",
          "respect-lib-shared/src/jvmTest/kotlin/world/respect/domain/account/invite/RedeemInviteIntegrationTest.kt"
        ],
        "commitId" : "d752dcad8ebf1590f6b7b0a15b3b40c0ae16c05f",
        "timestamp" : 1769427066000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove obsolete invite redemption integration test.\u000a",
        "date" : "2026-01-26 15:31:06 +0400",
        "id" : "d752dcad8ebf1590f6b7b0a15b3b40c0ae16c05f",
        "msg" : "Remove obsolete invite redemption integration test.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/jvmTest/kotlin/world/respect/domain/account/invite/RedeemInviteIntegrationTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt"
        ],
        "commitId" : "06daf8744f865d8a13194a87af518cc9c0a9694b",
        "timestamp" : 1769428100000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update link style on invite screen.\u000a",
        "date" : "2026-01-26 15:48:20 +0400",
        "id" : "06daf8744f865d8a13194a87af518cc9c0a9694b",
        "msg" : "Update link style on invite screen.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/inviteperson/InvitePersonScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/subflows/admin_add_app_and_teacher.yaml",
          ".maestro/flows/001_001_invite_using_invite_code_test.yaml",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
        ],
        "commitId" : "872a1d29352c5ffe210f2f64dd79032393550dcb",
        "timestamp" : 1769428490000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test - updated design\u000a",
        "date" : "2026-01-26 15:54:50 +0400",
        "id" : "872a1d29352c5ffe210f2f64dd79032393550dcb",
        "msg" : "updated test - updated design",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_using_invite_code_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_app_and_teacher.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
        ],
        "commitId" : "cadb64c945589627625ae7b9edb78f14426e2870",
        "timestamp" : 1769430280000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test - test id\u000a",
        "date" : "2026-01-26 16:24:40 +0400",
        "id" : "cadb64c945589627625ae7b9edb78f14426e2870",
        "msg" : "updated test - test id",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroption/OtherOptionsViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/acknowledgement/AcknowledgementViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/enterinvitecode/EnterInviteCodeViewModel.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/urltonavcommand/ResolveUrlToNavCommandUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/acceptinvite/AcceptInviteViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/scanqrcode/ScanQRCodeViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/urltonavcommand/ResolveUrlToNavCommandUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/confirmation/ConfirmationScreen.kt",
          "respect-lib-util/src/androidMain/kotlin/world/respect/libutil/util/PutDebugCrashCustomData.android.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/acceptinvite/AcceptInviteScreen.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/confirmation/ConfirmationViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
        ],
        "commitId" : "fdbaab74c246ff91577fa6c794547103580e5d06",
        "timestamp" : 1769431615000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Invite refactor work in progress: make invite link take user to accept invite screen when pasted directly into url text field and when scanned as a QR code.\u000a",
        "date" : "2026-01-26 16:46:55 +0400",
        "id" : "fdbaab74c246ff91577fa6c794547103580e5d06",
        "msg" : "Invite refactor work in progress: make invite link take user to accept invite screen when pasted directly into url text field and when scanned as a QR code.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/enterinvitecode/EnterInviteCodeViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/confirmation/ConfirmationScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-util/src/androidMain/kotlin/world/respect/libutil/util/PutDebugCrashCustomData.android.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/acceptinvite/AcceptInviteScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/urltonavcommand/ResolveUrlToNavCommandUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/urltonavcommand/ResolveUrlToNavCommandUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/scanqrcode/ScanQRCodeViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/otheroption/OtherOptionsViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/acknowledgement/AcknowledgementViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/confirmation/ConfirmationViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/acceptinvite/AcceptInviteViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
        ],
        "commitId" : "147e7c24fa6f4193f57806107ea8eb476098ae63",
        "timestamp" : 1769436683000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test - test changes\u000a",
        "date" : "2026-01-26 18:11:23 +0400",
        "id" : "147e7c24fa6f4193f57806107ea8eb476098ae63",
        "msg" : "updated test - test changes",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/acknowledgement/AcknowledgementViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/navigation/deeplink/InitDeepLinkUriProviderUseCaseAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/acceptinvite/AcceptInviteViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/navigation/deeplink/InitDeepLinkUriProviderUseCase.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AbstractAppActivity.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/urltonavcommand/ResolveUrlToNavCommandUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/NavCommandExt.kt"
        ],
        "commitId" : "ee924d4e61cb215330f32c03bda92b117455c3cf",
        "timestamp" : 1769438412000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Invite refactor work in progress: handle start app from intent (eg opening a link from another app).\u000a",
        "date" : "2026-01-26 18:40:12 +0400",
        "id" : "ee924d4e61cb215330f32c03bda92b117455c3cf",
        "msg" : "Invite refactor work in progress: handle start app from intent (eg opening a link from another app).",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/urltonavcommand/ResolveUrlToNavCommandUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/navigation/deeplink/InitDeepLinkUriProviderUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/navigation/deeplink/InitDeepLinkUriProviderUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/acceptinvite/AcceptInviteViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AbstractAppActivity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/NavCommandExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/acknowledgement/AcknowledgementViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/androidMain/kotlin/world/respect/AbstractAppActivity.kt",
          "respect-app-compose/src/androidMain/AndroidManifest.xml",
          "respect-app-compose/README.md",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/navigation/deeplink/InitDeepLinkUriProviderUseCaseAndroid.kt"
        ],
        "commitId" : "d069bb98f35f46368928488d982849622a70f656",
        "timestamp" : 1769440336000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add support for opening a link using Maestro bundle argument.\u000a\u000aAdd documentation to README.\u000a",
        "date" : "2026-01-26 19:12:16 +0400",
        "id" : "d069bb98f35f46368928488d982849622a70f656",
        "msg" : "Add support for opening a link using Maestro bundle argument.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/navigation/deeplink/InitDeepLinkUriProviderUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/AndroidManifest.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/README.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AbstractAppActivity.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/subflows/admin_add_app_and_teacher.yaml",
          ".maestro/flows/001_001_invite_using_invite_code_test.yaml",
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
        ],
        "commitId" : "b265cb94f19c778db0838ceb021b42b0e6eca78e",
        "timestamp" : 1769494534000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test - test changes\u000a",
        "date" : "2026-01-27 10:15:34 +0400",
        "id" : "b265cb94f19c778db0838ceb021b42b0e6eca78e",
        "msg" : "updated test - test changes",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_using_invite_code_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : ".maestro/flows/subflows/admin_add_app_and_teacher.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/termsandcondition/TermsAndConditionScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/RespectRedeemInviteRequest.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/acceptinvite/AcceptInviteViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/enterpasswordsignup/EnterPasswordSignUpViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/acceptinvite/AcceptInviteScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/RespectConstants.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/ApproveOrDeclineInviteRequestUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/termsandcondition/TermsAndConditionViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/signup/SignUpScreen.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/InviteExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt"
        ],
        "commitId" : "f446a003c00937acc056b7b0a269b8f1133c1de6",
        "timestamp" : 1769511946000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial implementation of redeeming a new user invite.\u000a",
        "date" : "2026-01-27 15:05:46 +0400",
        "id" : "f446a003c00937acc056b7b0a269b8f1133c1de6",
        "msg" : "Initial implementation of redeeming a new user invite.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/termsandcondition/TermsAndConditionViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/account/invite/RedeemInviteUseCaseDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/acceptinvite/AcceptInviteScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/enterpasswordsignup/EnterPasswordSignUpViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/signup/SignUpScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/detail/ClazzDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/RespectConstants.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/ext/InviteExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/acceptinvite/AcceptInviteViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/manageuser/termsandcondition/TermsAndConditionScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/ApproveOrDeclineInviteRequestUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/profile/SignupViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/RespectRedeemInviteRequest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/InviteCreateRoute.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PersonAdapter.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/InviteDataSourceHttp.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Invite.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/InviteRoute.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/edit/ClazzEditViewModel.kt"
        ],
        "commitId" : "1353fb2d7646f9cf74c4989619d8757b6848d106",
        "timestamp" : 1769512483000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove old Invite model.\u000a",
        "date" : "2026-01-27 15:14:43 +0400",
        "id" : "1353fb2d7646f9cf74c4989619d8757b6848d106",
        "msg" : "Remove old Invite model.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/school/adapters/PersonAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/school/model/Invite.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/InviteRoute.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/school/InviteDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/edit/ClazzEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/InviteCreateRoute.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt"
        ],
        "commitId" : "34022c402dcb0b453ecbdce15221ee76e0706599",
        "timestamp" : 1769512956000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove old Invite model import line\u000a",
        "date" : "2026-01-27 15:22:36 +0400",
        "id" : "34022c402dcb0b453ecbdce15221ee76e0706599",
        "msg" : "Remove old Invite model import line",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/acceptinvite/AcceptInviteViewModel.kt"
        ],
        "commitId" : "58e171a60b13bacb6d8c7eaa5d8476867e231a03",
        "timestamp" : 1769513413000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix logic for showing terms/conditions.\u000a",
        "date" : "2026-01-27 15:30:13 +0400",
        "id" : "58e171a60b13bacb6d8c7eaa5d8476867e231a03",
        "msg" : "Fix logic for showing terms/conditions.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/acceptinvite/AcceptInviteViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/build.gradle.kts",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/getplaystorereferrer/GetPlayStoreReferrer.kt",
          "gradle/libs.versions.toml",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/getplaystorereferrer/GetPlayStoreReferrerAndroid.kt"
        ],
        "commitId" : "3ddec4e29a4fe2bab2871476320182b4c3f9f844",
        "timestamp" : 1769514055000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "GetPlayStoreReferrer added\u000a",
        "date" : "2026-01-27 17:10:55 +0530",
        "id" : "3ddec4e29a4fe2bab2871476320182b4c3f9f844",
        "msg" : "GetPlayStoreReferrer added",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/getplaystorereferrer/GetPlayStoreReferrer.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/getplaystorereferrer/GetPlayStoreReferrerAndroid.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/RespectViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/enterpasswordsignup/EnterPasswordSignUpViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/signup/CreateAccountViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/navigateonaccountcreated/NavigateOnAccountCreatedUseCase.kt"
        ],
        "commitId" : "c5c4c70332a0f11b16d2134d0f731fafd5e68210",
        "timestamp" : 1769514428000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Move navigation on account creation logic to a domain UseCase.\u000a",
        "date" : "2026-01-27 15:47:08 +0400",
        "id" : "c5c4c70332a0f11b16d2134d0f731fafd5e68210",
        "msg" : "Move navigation on account creation logic to a domain UseCase.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/enterpasswordsignup/EnterPasswordSignUpViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/navigateonaccountcreated/NavigateOnAccountCreatedUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/RespectViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/manageuser/signup/CreateAccountViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/list/PersonListScreen.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt"
        ],
        "commitId" : "2c0fff20f20dae14e0bfc380722400cdcdae2169",
        "timestamp" : 1769515878000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add navigate on account creation to app di\u000aHandle reject invite.\u000a",
        "date" : "2026-01-27 16:11:18 +0400",
        "id" : "2c0fff20f20dae14e0bfc380722400cdcdae2169",
        "msg" : "Add navigate on account creation to app di",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/person/list/PersonListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/person/list/PersonListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/build.gradle.kts"
        ],
        "commitId" : "cfece24743f992e96cc3f29e3c844a375e07c6f2",
        "timestamp" : 1769515937000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Bump version number.\u000a",
        "date" : "2026-01-27 16:12:17 +0400",
        "id" : "cfece24743f992e96cc3f29e3c844a375e07c6f2",
        "msg" : "Bump version number.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
        ],
        "commitId" : "d18f7e6e9951dcc89a5cb1a60f7b9d4799f17e47",
        "timestamp" : 1769516002000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test -terms added\u000a",
        "date" : "2026-01-27 16:13:22 +0400",
        "id" : "d18f7e6e9951dcc89a5cb1a60f7b9d4799f17e47",
        "msg" : "updated test -terms added",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/getplaystorereferrer/GetPlayStoreReferrerUseCase.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/getplaystorereferrer/GetPlayStoreReferrerUseCaseAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/getplaystorereferrer/GetPlayStoreReferrer.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/getplaystorereferrer/GetPlayStoreReferrerAndroid.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
        ],
        "commitId" : "f50464039e5eb803b79a8e6bb657b6397a02cb5f",
        "timestamp" : 1769516369000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
          "fullName" : "nikunj.sharma"
        },
        "authorEmail" : "nikunj.sharma@sutara.org",
        "comment" : "GetPlayStoreReferrer handled exception\u000a",
        "date" : "2026-01-27 17:49:29 +0530",
        "id" : "f50464039e5eb803b79a8e6bb657b6397a02cb5f",
        "msg" : "GetPlayStoreReferrer handled exception",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/getplaystorereferrer/GetPlayStoreReferrerUseCaseAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/getplaystorereferrer/GetPlayStoreReferrerAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/getplaystorereferrer/GetPlayStoreReferrer.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/getplaystorereferrer/GetPlayStoreReferrerUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
        ],
        "commitId" : "ed93ba854d32344a8beebaf2bf31d51dc8c5a489",
        "timestamp" : 1769516543000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "updated test -terms added\u000a",
        "date" : "2026-01-27 16:22:23 +0400",
        "id" : "ed93ba854d32344a8beebaf2bf31d51dc8c5a489",
        "msg" : "updated test -terms added",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/build.gradle.kts"
        ],
        "commitId" : "fe93ba18392bc49f32376d74d9d774d67bdaadab",
        "timestamp" : 1769516740000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Bump version code.\u000a",
        "date" : "2026-01-27 16:25:40 +0400",
        "id" : "fe93ba18392bc49f32376d74d9d774d67bdaadab",
        "msg" : "Bump version code.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
        ],
        "commitId" : "e4e21d060c6788dde9dcb8d95904ced4be0a3f7b",
        "timestamp" : 1769517322000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "your date of birth updated - test\u000a",
        "date" : "2026-01-27 16:35:22 +0400",
        "id" : "e4e21d060c6788dde9dcb8d95904ced4be0a3f7b",
        "msg" : "your date of birth updated - test",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
        ],
        "commitId" : "021dc5c03feaf80df96073445ab28cf84d26a940",
        "timestamp" : 1769519356000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "your date of birth updated - test\u000a",
        "date" : "2026-01-27 17:09:16 +0400",
        "id" : "021dc5c03feaf80df96073445ab28cf84d26a940",
        "msg" : "your date of birth updated - test",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".maestro/flows/001_001_invite_users_using_qr_code_or_link_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/Application.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/getplaystorereferrer/GetPlayStoreReferrerUseCase.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/getplaystorereferrer/GetPlayStoreReferrerUseCaseAndroid.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/getplaystorereferrer/GetDeferredDeepLinkUseCaseAndroid.kt",
          "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolLinkRoute.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/acknowledgement/AcknowledgementViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/RespectConstants.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/getplaystorereferrer/GetDeferredDeepLinkUseCase.kt"
        ],
        "commitId" : "d93ae13b7d3847dfa5e9459db431281f21be2123",
        "timestamp" : 1769532103000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Handle deferred deep link: initial attempt.\u000a",
        "date" : "2026-01-27 20:41:43 +0400",
        "id" : "d93ae13b7d3847dfa5e9459db431281f21be2123",
        "msg" : "Handle deferred deep link: initial attempt.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/getplaystorereferrer/GetPlayStoreReferrerUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/server/routes/school/respect/SchoolLinkRoute.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/getplaystorereferrer/GetPlayStoreReferrerUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/getplaystorereferrer/GetDeferredDeepLinkUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/acknowledgement/AcknowledgementViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/Application.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/getplaystorereferrer/GetDeferredDeepLinkUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/RespectConstants.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/build.gradle.kts"
        ],
        "commitId" : "be871ae8954328a2082f72e95306ebedc8b820c5",
        "timestamp" : 1769532154000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Bump version.\u000a",
        "date" : "2026-01-27 20:42:34 +0400",
        "id" : "be871ae8954328a2082f72e95306ebedc8b820c5",
        "msg" : "Bump version.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/add/RegisterSchoolUseCase.kt",
          "respect-server/src/main/kotlin/world/respect/server/domain/school/add/AddSchoolUseCase.kt",
          "gradle/libs.versions.toml"
        ],
        "commitId" : "0d4e5197d767c368defb5d0f94c325b1e6229287",
        "timestamp" : 1769596752000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "merge with invite person branch\u000a",
        "date" : "2026-01-28 16:09:12 +0530",
        "id" : "0d4e5197d767c368defb5d0f94c325b1e6229287",
        "msg" : "merge with invite person branch",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/add/RegisterSchoolUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/ServerKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-server/src/main/kotlin/world/respect/server/domain/school/add/AddSchoolUseCase.kt"
          }
        ]
      }
    ],
    "kind" : "git"
  },
  "culprits" : [
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/nikunj.sharma",
      "fullName" : "nikunj.sharma"
    },
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
      "fullName" : "Pooja Ravi"
    },
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
      "fullName" : "Anugraha"
    },
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
      "fullName" : "Mike Dawson"
    }
  ]
}