{
  "_class" : "hudson.model.FreeStyleBuild",
  "actions" : [
    {
      "_class" : "hudson.model.CauseAction",
      "causes" : [
        {
          "_class" : "hudson.model.Cause$UserIdCause",
          "shortDescription" : "Started by user Pooja Ravi",
          "userId" : "pooja",
          "userName" : "Pooja Ravi"
        }
      ]
    },
    {
      
    },
    {
      "_class" : "hudson.plugins.git.util.BuildData",
      "buildsByBranchName" : {
        "refs/remotes/origin/dev-reports-screen" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "61ac4af0af40740a4456f984999ccb9da7ba2b37",
            "branch" : [
              {
                "SHA1" : "61ac4af0af40740a4456f984999ccb9da7ba2b37",
                "name" : "refs/remotes/origin/dev-reports-screen"
              }
            ]
          },
          "revision" : {
            "SHA1" : "61ac4af0af40740a4456f984999ccb9da7ba2b37",
            "branch" : [
              {
                "SHA1" : "61ac4af0af40740a4456f984999ccb9da7ba2b37",
                "name" : "refs/remotes/origin/dev-reports-screen"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "61ac4af0af40740a4456f984999ccb9da7ba2b37",
        "branch" : [
          {
            "SHA1" : "61ac4af0af40740a4456f984999ccb9da7ba2b37",
            "name" : "refs/remotes/origin/dev-reports-screen"
          }
        ]
      },
      "remoteUrls" : [
        "https://github.com/UstadMobile/Respect.git"
      ],
      "scmName" : ""
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      
    },
    {
      "_class" : "org.jenkinsci.plugins.displayurlapi.actions.RunDisplayAction"
    }
  ],
  "artifacts" : [
    {
      "displayPath" : "respect-cli.zip",
      "fileName" : "respect-cli.zip",
      "relativePath" : "respect-cli/build/distributions/respect-cli.zip"
    }
  ],
  "building" : False,
  "description" : None,
  "displayName" : "#2",
  "duration" : 152777,
  "estimatedDuration" : 114602,
  "executor" : None,
  "fullDisplayName" : "RESPECT-dev-reports-screen #2",
  "id" : "2",
  "inProgress" : False,
  "keepLog" : False,
  "number" : 2,
  "queueId" : 3334,
  "result" : "SUCCESS",
  "timestamp" : 1753683997800,
  "url" : "https://devserver3.ustadmobile.com/jenkins/view/all/job/RESPECT-dev-reports-screen/2/",
  "builtOn" : "",
  "changeSet" : {
    "_class" : "hudson.plugins.git.GitChangeSetList",
    "items" : [
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/RespectRedeemInviteResponse.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/RespectRedeemInviteRequest.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccount.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/RespectInviteInfo.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/RespectPendingInviteState.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/systemurl/SystemUrlConfig.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/datasource/RespectAppDataSourceProvider.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/datasource/SingleDataSourceProvider.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/SubmitRedeemInviteRequestUseCase.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/invite/SubmitRedeemInviteRequestUseCase.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/RespectUserDataSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/RespectServerUrls.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/RespectViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/ApproveOrDeclineInviteRequestUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/GetInviteInfoUseCase.kt"
        ],
        "commitId" : "65a8b7e038250a4ea9cac6ea0d1f0cb1359505ce",
        "timestamp" : 1752567236000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Refine domain use case models for handling invites.\u000a",
        "date" : "2025-07-15 12:13:56 +0400",
        "id" : "65a8b7e038250a4ea9cac6ea0d1f0cb1359505ce",
        "msg" : "Refine domain use case models for handling invites.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/SubmitRedeemInviteRequestUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/invite/SubmitRedeemInviteRequestUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/RespectRedeemInviteResponse.kt"
          },
          {
            "editType" : "add",
            "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/RespectViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/RespectPendingInviteState.kt"
          },
          {
            "editType" : "add",
            "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/datasource/RespectAppDataSourceProvider.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/RespectRedeemInviteRequest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/systemurl/SystemUrlConfig.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/datasource/SingleDataSourceProvider.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccount.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/RespectUserDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/RespectServerUrls.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/RespectInviteInfo.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
        ],
        "commitId" : "bcbd54449d5fb9c66923cb5913c7f8d3e802ed50",
        "timestamp" : 1752572784000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "initial commit\u000a",
        "date" : "2025-07-15 15:16:24 +0530",
        "id" : "bcbd54449d5fb9c66923cb5913c7f8d3e802ed50",
        "msg" : "initial commit",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/RespectRealm.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccount.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/RespectServerUrls.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/RespectViewModel.kt",
          "respect-lib-shared/build.gradle.kts",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/directory/RespectDirectoryServersConfig.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/RespectInviteInfo.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/systemurl/SystemUrlConfig.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt"
        ],
        "commitId" : "9abab53bc761ec254f5d189e3c8230c62d83e3d2",
        "timestamp" : 1752581943000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Refine terminology for server federation.\u000a",
        "date" : "2025-07-15 16:19:03 +0400",
        "id" : "9abab53bc761ec254f5d189e3c8230c62d83e3d2",
        "msg" : "Refine terminology for server federation.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/directory/RespectDirectoryServersConfig.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/RespectServerUrls.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/RespectRealm.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccount.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/systemurl/SystemUrlConfig.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/RespectViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccountManager.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/RespectInviteInfo.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-test-end-to-end/android-maestro/e2e-tests/001_browse_lessons_test.yaml"
        ],
        "commitId" : "2394fa2d88a414ee32d8d6ac0c3395d00b8f205e",
        "timestamp" : 1752582140000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Maestro test update\u000a",
        "date" : "2025-07-15 16:22:20 +0400",
        "id" : "2394fa2d88a414ee32d8d6ac0c3395d00b8f205e",
        "msg" : "Maestro test update",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-test-end-to-end/android-maestro/e2e-tests/001_browse_lessons_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".gitignore"
        ],
        "commitId" : "e1957d1035a2574bfbc25b37df118453e2c33f8a",
        "timestamp" : 1752582427000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "keystore.properties added to git-ignore\u000a",
        "date" : "2025-07-15 16:27:07 +0400",
        "id" : "e1957d1035a2574bfbc25b37df118453e2c33f8a",
        "msg" : "keystore.properties added to git-ignore",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".gitignore"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
        ],
        "commitId" : "a22dba9bf06c06c2fda5c255098fb29a192aeb75",
        "timestamp" : 1752584031000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Duration is null fixed\u000a",
        "date" : "2025-07-15 18:23:51 +0530",
        "id" : "a22dba9bf06c06c2fda5c255098fb29a192aeb75",
        "msg" : "Duration is null fixed",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.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/src/commonMain/kotlin/world/respect/app/app/RespectAsyncImage.kt"
        ],
        "commitId" : "7a67ff6fac2335d355330dbcaa648438e4edc048",
        "timestamp" : 1752584031000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "default image is added\u000a",
        "date" : "2025-07-15 18:23:51 +0530",
        "id" : "7a67ff6fac2335d355330dbcaa648438e4edc048",
        "msg" : "default image is added",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/RespectAsyncImage.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/apps/detail/AppsDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
        ],
        "commitId" : "51a7b6636bba6999f09bd2faf9cf3c856e0396db",
        "timestamp" : 1752584031000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "when user click on\u000alesson in appDetail the title will change in learningunit app bar\u000awhen user click on arrow to go to learningunit then title will be \"Lesson List \" when user click any item it will update title\u000a",
        "date" : "2025-07-15 18:23:51 +0530",
        "id" : "51a7b6636bba6999f09bd2faf9cf3c856e0396db",
        "msg" : "when user click on",
        "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/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
        ],
        "commitId" : "9d9738baf6c3e98ead93281476bf96696ced6e98",
        "timestamp" : 1752584031000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Appbar title in learning detail\u000a",
        "date" : "2025-07-15 18:23:51 +0530",
        "id" : "9d9738baf6c3e98ead93281476bf96696ced6e98",
        "msg" : "Appbar title in learning detail",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/opds/validator/ValidateOpdsPublicationUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/viewer/LearningUnitViewerScreen.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/viewmodel/learningunit/viewer/LearningUnitViewerViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
        ],
        "commitId" : "76fc5e74e6999e55782075597f3f28dd1abe5a6c",
        "timestamp" : 1752647964000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial navigate to lesson url : work in progress.\u000a",
        "date" : "2025-07-16 10:39:24 +0400",
        "id" : "76fc5e74e6999e55782075597f3f28dd1abe5a6c",
        "msg" : "Initial navigate to lesson url : work in progress.",
        "paths" : [
          {
            "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/learningunit/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "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/learningunit/viewer/LearningUnitViewerScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/RespectConstants.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/opds/validator/ValidateOpdsPublicationUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/viewer/LearningUnitViewerViewModel.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/learningunit/detail/LearningUnitDetailScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          ".gitignore"
        ],
        "commitId" : "55b7563b523d9153610ac2be3b70af4610524e36",
        "timestamp" : 1752649956000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Add keystore.properties to .gitignore\u000a\u000aAdd keystore.properties to .gitignore\u000a",
        "date" : "2025-07-16 11:12:36 +0400",
        "id" : "55b7563b523d9153610ac2be3b70af4610524e36",
        "msg" : "Add keystore.properties to .gitignore",
        "paths" : [
          {
            "editType" : "edit",
            "file" : ".gitignore"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
        ],
        "commitId" : "bfc2e22f6f2f35ea28a31f59c75ba3c527c7fe67",
        "timestamp" : 1752653022000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "image shape change\u000a",
        "date" : "2025-07-16 13:33:42 +0530",
        "id" : "bfc2e22f6f2f35ea28a31f59c75ba3c527c7fe67",
        "msg" : "image shape change",
        "paths" : [
          {
            "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/apps/list/AppListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.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/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
        ],
        "commitId" : "fa497e6a150f644d8ae100402e8c92c7aaac4a0b",
        "timestamp" : 1752654377000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Alignment of text\u000a",
        "date" : "2025-07-16 13:56:17 +0530",
        "id" : "fa497e6a150f644d8ae100402e8c92c7aaac4a0b",
        "msg" : "Alignment of text",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/headers/directives/DirectivesToMap.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/query/RunReportUseCase.kt",
          "respect-lib-shared/build.gradle.kts",
          "gradle/libs.versions.toml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/CreateGraphFormatterUseCase.kt",
          "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/DateConstants.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/model/ReportOptions.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/graph/CombinedGraph.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/GenderGraphFormatter.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/DateGraphFormatter.kt",
          "respect-app-compose/build.gradle.kts",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/model/ReportConditionFilterOptions.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/ext/ReportQueryResultExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/model/StatementReportRow.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/DurationGraphFormatter.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/ReportConditionFilterOptions.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/ReportSeries.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/entities/ReportQueryResult.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/model/ReportSeries.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/model/ReportPeriod.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/ReportPeriod.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/ReportOptions.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/GraphFormatter.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/CountGraphFormatter.kt"
        ],
        "commitId" : "91706f7ba6f87a74072d71da632de0ab98796a1a",
        "timestamp" : 1752655345000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "add runreportusecase\u000a",
        "date" : "2025-07-16 14:12:25 +0530",
        "id" : "91706f7ba6f87a74072d71da632de0ab98796a1a",
        "msg" : "add runreportusecase",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/query/RunReportUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/DateConstants.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/graph/CombinedGraph.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/headers/directives/DirectivesToMap.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/CreateGraphFormatterUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/GraphFormatter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/model/ReportSeries.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/model/ReportConditionFilterOptions.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/ReportSeries.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/DurationGraphFormatter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/model/StatementReportRow.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/GenderGraphFormatter.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/ext/ReportQueryResultExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/CountGraphFormatter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/entities/ReportQueryResult.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/report/formatter/DateGraphFormatter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/ReportConditionFilterOptions.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/model/ReportOptions.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/ReportOptions.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/ReportPeriod.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/model/ReportPeriod.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-test-end-to-end/README.md",
          "respect-test-end-to-end/test-description/004_create_report_test_description.md"
        ],
        "commitId" : "b05053b95779edad0e6740e306b882692eca6c74",
        "timestamp" : 1752656306000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Test-description added for reports\u000a",
        "date" : "2025-07-16 12:58:26 +0400",
        "id" : "b05053b95779edad0e6740e306b882692eca6c74",
        "msg" : "Test-description added for reports",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-test-end-to-end/test-description/004_create_report_test_description.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-test-end-to-end/README.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-test-end-to-end/README.md"
        ],
        "commitId" : "e42093f09ae92bfdbe791654b51c2c93721f9ad8",
        "timestamp" : 1752656402000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Test-description added for reports\u000a",
        "date" : "2025-07-16 13:00:02 +0400",
        "id" : "e42093f09ae92bfdbe791654b51c2c93721f9ad8",
        "msg" : "Test-description added for reports",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-test-end-to-end/README.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/desktopMain/kotlin/world/respect/app/components/webview/UstadWebView.desktop.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/webview/UstadWebViewNavigator.kt",
          "respect-app-compose/src/androidMain/res/layout/screen_xapi.xml",
          "respect-app-compose/src/desktopMain/kotlin/world/respect/app/view/learningunit/viewer/LearningUnitViewerScreen.desktop.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/webview/UstadWebView.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt",
          "gradle/libs.versions.toml",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/components/webview/UstadWebView.android.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/view/learningunit/viewer/LearningUnitViewerScreen.android.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/viewer/LearningUnitViewerScreen.kt",
          "respect-app-compose/build.gradle.kts",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/components/webview/UstadAbstractWebViewClient.kt",
          "respect-app-compose/src/androidMain/res/values/tags.xml"
        ],
        "commitId" : "2e995e660309035ef25feb99a9ab32ac20f3ee42",
        "timestamp" : 1752656806000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial implementation of LearningUnitViewer to enable showing learning units in a webview.\u000a",
        "date" : "2025-07-16 13:06:46 +0400",
        "id" : "2e995e660309035ef25feb99a9ab32ac20f3ee42",
        "msg" : "Initial implementation of LearningUnitViewer to enable showing learning units in a webview.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/webview/UstadWebView.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/webview/UstadWebViewNavigator.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/res/layout/screen_xapi.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/view/learningunit/viewer/LearningUnitViewerScreen.android.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/components/webview/UstadWebView.android.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/desktopMain/kotlin/world/respect/app/components/webview/UstadWebView.desktop.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/desktopMain/kotlin/world/respect/app/view/learningunit/viewer/LearningUnitViewerScreen.desktop.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/viewer/LearningUnitViewerScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/components/webview/UstadAbstractWebViewClient.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/res/values/tags.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
        ],
        "commitId" : "3d4f8d7bbc812424e67f0b3b4df53e692b3a0bdc",
        "timestamp" : 1752657825000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "image to lie in center\u000a",
        "date" : "2025-07-16 14:53:45 +0530",
        "id" : "3d4f8d7bbc812424e67f0b3b4df53e692b3a0bdc",
        "msg" : "image to lie in center",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/viewer/LearningUnitViewerViewModel.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt"
        ],
        "commitId" : "1987723bf8e9e49750c54be61111bc7f6f687168",
        "timestamp" : 1752658023000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add initial logic to launch Respect compatible app as an intent.\u000a",
        "date" : "2025-07-16 13:27:03 +0400",
        "id" : "1987723bf8e9e49750c54be61111bc7f6f687168",
        "msg" : "Add initial logic to launch Respect compatible app as an intent.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/viewer/LearningUnitViewerViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
        ],
        "commitId" : "a13ace5cbb1356d5ccc7391382257b615e0111a6",
        "timestamp" : 1752658926000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "changing play button\u000a",
        "date" : "2025-07-16 15:12:06 +0530",
        "id" : "a13ace5cbb1356d5ccc7391382257b615e0111a6",
        "msg" : "changing play button",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.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/learningunit/detail/LearningUnitDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
        ],
        "commitId" : "43f236fb5a9ecfa81b1e7fe0e783beb2d0823510",
        "timestamp" : 1752659461000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Changing Play to Open\u000a",
        "date" : "2025-07-16 15:21:01 +0530",
        "id" : "43f236fb5a9ecfa81b1e7fe0e783beb2d0823510",
        "msg" : "Changing Play to Open",
        "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/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-test-end-to-end/android-maestro/e2e-tests/001_browse_lessons_test.yaml"
        ],
        "commitId" : "237e437d8ff6b48edca76c5af9d1071f46da6e78",
        "timestamp" : 1752668331000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "test updated\u000a",
        "date" : "2025-07-16 16:18:51 +0400",
        "id" : "237e437d8ff6b48edca76c5af9d1071f46da6e78",
        "msg" : "test updated",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-test-end-to-end/android-maestro/e2e-tests/001_browse_lessons_test.yaml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/desktopMain/kotlin/world/respect/app/components/webview/UstadWebView.desktop.kt",
          "respect-app-compose/src/androidMain/res/layout/screen_xapi.xml",
          "respect-app-compose/src/androidMain/AndroidManifest.xml",
          "respect-app-compose/src/desktopMain/kotlin/world/respect/app/view/learningunit/viewer/LearningUnitViewerScreen.desktop.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/webview/UstadWebView.kt",
          "respect-app-compose/src/androidMain/res/values-v23/themes.xml",
          "gradle/libs.versions.toml",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/components/webview/UstadWebView.android.kt",
          "respect-app-compose/src/androidMain/res/values-night/themes.xml",
          "build.gradle.kts",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/view/learningunit/viewer/LearningUnitViewerScreen.android.kt",
          "respect-app-compose/src/androidMain/res/values/themes.xml",
          "respect-app-compose/src/androidMain/res/layout/activity_web_view.xml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/viewer/LearningUnitViewerScreen.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/build.gradle.kts",
          "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/viewer/LearningUnitViewerViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/launchapp/LaunchAppUseCaseAndroid.kt"
        ],
        "commitId" : "be8a00f4b2282e279cd504155dd97d094576989b",
        "timestamp" : 1752694640000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Change to using a separate activity to run WebView based content to avoid issue with vh css unit.\u000a",
        "date" : "2025-07-16 23:37:20 +0400",
        "id" : "be8a00f4b2282e279cd504155dd97d094576989b",
        "msg" : "Change to using a separate activity to run WebView based content to avoid issue with vh css unit.",
        "paths" : [
          {
            "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/androidMain/kotlin/world/respect/app/domain/launchapp/LaunchAppUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/res/layout/activity_web_view.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/viewer/LearningUnitViewerViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/res/values-night/themes.xml"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/viewer/LearningUnitViewerScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/view/learningunit/viewer/LearningUnitViewerScreen.android.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/webview/UstadWebView.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/desktopMain/kotlin/world/respect/app/view/learningunit/viewer/LearningUnitViewerScreen.desktop.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/res/values-v23/themes.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/desktopMain/kotlin/world/respect/app/components/webview/UstadWebView.desktop.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/components/webview/UstadWebView.android.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/layout/screen_xapi.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/AndroidManifest.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/res/values/themes.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/src/androidMain/AndroidManifest.xml",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/launchapp/LaunchAppUseCaseAndroid.kt"
        ],
        "commitId" : "bba38173a83b1b11a3f00c088cea7f2da255ba6a",
        "timestamp" : 1752736440000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Move LaunchAppUseCaseAndroid into respect-lib-shared where it should be, switch to looking up Activity class using reflection.\u000a",
        "date" : "2025-07-17 11:14:00 +0400",
        "id" : "bba38173a83b1b11a3f00c088cea7f2da255ba6a",
        "msg" : "Move LaunchAppUseCaseAndroid into respect-lib-shared where it should be, switch to looking up Activity class using reflection.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/launchapp/LaunchAppUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/AndroidManifest.xml"
          }
        ]
      },
      {
        "_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/learningunit/list/LearningUnitListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt"
        ],
        "commitId" : "0c4a358b1837c57337ee34a64ee07565bed8e34f",
        "timestamp" : 1752737616000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Set AppBar title from OPDS feed metadata\u000a\u000aThe AppBar title in the LearningUnitList screen is now dynamically set\u000abased on the `metadata.title` from the OPDS feed. If the metadata title\u000ais not available, it defaults to \"Lessons\".\u000a",
        "date" : "2025-07-17 13:03:36 +0530",
        "id" : "0c4a358b1837c57337ee34a64ee07565bed8e34f",
        "msg" : "Set AppBar title from OPDS feed metadata",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.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/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
        ],
        "commitId" : "7f806e59ef76aebc18b65d793410b37bda7b20bd",
        "timestamp" : 1752737616000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Set AppBar title from OPDS feed metadata\u000a",
        "date" : "2025-07-17 13:03:36 +0530",
        "id" : "7f806e59ef76aebc18b65d793410b37bda7b20bd",
        "msg" : "Set AppBar title from OPDS feed metadata",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
        ],
        "commitId" : "d050b8f80e009f99586534058c2007907b6cecb8",
        "timestamp" : 1752737790000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Remove unused imports from LearningUnitListViewModel.\u000a",
        "date" : "2025-07-17 13:06:30 +0530",
        "id" : "d050b8f80e009f99586534058c2007907b6cecb8",
        "msg" : "Remove unused imports from LearningUnitListViewModel.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt",
          "respect-app-compose/src/androidMain/res/menu/menu_webview.xml",
          "respect-app-compose/src/androidMain/res/layout/activity_web_view.xml",
          "respect-app-compose/src/androidMain/res/drawable/baseline_close_24.xml",
          "respect-app-compose/src/androidMain/res/values/strings.xml"
        ],
        "commitId" : "217b96ae9c59a87138a5f8a2055060bd2c925b13",
        "timestamp" : 1752738531000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add title, back button, and close button to WebViewActivity.\u000a",
        "date" : "2025-07-17 11:48:51 +0400",
        "id" : "217b96ae9c59a87138a5f8a2055060bd2c925b13",
        "msg" : "Add title, back button, and close button to WebViewActivity.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/res/layout/activity_web_view.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/res/drawable/baseline_close_24.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/res/menu/menu_webview.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/res/values/strings.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/androidMain/res/drawable/ic_launcher.xml",
          "respect-app-compose/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml",
          "respect-app-compose/src/androidMain/AndroidManifest.xml",
          "respect-app-compose/src/androidMain/res/mipmap-xhdpi/ic_launcher.png",
          "respect-app-compose/src/androidMain/res/mipmap-xxhdpi/ic_launcher.png",
          "respect-app-compose/src/androidMain/res/mipmap-mdpi/ic_launcher.png",
          "respect-app-compose/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.png",
          "respect-app-compose/src/androidMain/res/mipmap-hdpi/ic_launcher.png"
        ],
        "commitId" : "24efc6ba9edf35221b79dfe5b201d5654f6e458f",
        "timestamp" : 1752746033000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add RESPECT icon.\u000a",
        "date" : "2025-07-17 13:53:53 +0400",
        "id" : "24efc6ba9edf35221b79dfe5b201d5654f6e458f",
        "msg" : "Add RESPECT icon.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.png"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/res/drawable/ic_launcher.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/AndroidManifest.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/mipmap-mdpi/ic_launcher.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/mipmap-hdpi/ic_launcher.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/mipmap-xhdpi/ic_launcher.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/mipmap-xxhdpi/ic_launcher.png"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/build.gradle.kts",
          "respect-app-compose/proguard-rules.pro"
        ],
        "commitId" : "327f5fdbcba0ffe6bbe46f60eade9746946bb0b1",
        "timestamp" : 1752748334000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Enable minification and app signing\u000a",
        "date" : "2025-07-17 14:32:14 +0400",
        "id" : "327f5fdbcba0ffe6bbe46f60eade9746946bb0b1",
        "msg" : "Enable minification and app signing",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/proguard-rules.pro"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt"
        ],
        "commitId" : "e8ac8dd5e387128ef9d3ecf6e8e048f7a08a28f6",
        "timestamp" : 1752749378000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add respectLaunchVersion parameter to URL\u000a",
        "date" : "2025-07-17 14:49:38 +0400",
        "id" : "e8ac8dd5e387128ef9d3ecf6e8e048f7a08a28f6",
        "msg" : "Add respectLaunchVersion parameter to URL",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "LICENSE"
        ],
        "commitId" : "f682a3a56594520da8437a8ba68fddae6cbee7a2",
        "timestamp" : 1752751354000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
          "fullName" : "noreply"
        },
        "authorEmail" : "noreply@github.com",
        "comment" : "Create LICENSE\u000a",
        "date" : "2025-07-17 15:22:34 +0400",
        "id" : "f682a3a56594520da8437a8ba68fddae6cbee7a2",
        "msg" : "Create LICENSE",
        "paths" : [
          {
            "editType" : "add",
            "file" : "LICENSE"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect.db"
        ],
        "commitId" : "7de1b0182c567cfe256dd66757ca76fb7c9ea17a",
        "timestamp" : 1752752105000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove respect.db file\u000a",
        "date" : "2025-07-17 15:35:05 +0400",
        "id" : "7de1b0182c567cfe256dd66757ca76fb7c9ea17a",
        "msg" : "Remove respect.db file",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect.db"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/MergedHeaders.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/response/StringResponse.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/HttpHeadersImpl.kt",
          "respect-lib-ihttp-core/build.gradle.kts",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHeadersBuilder.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequestWithTextBody.kt",
          "respect-lib-ihttp-iostreams/src/commonMain/kotlin/com/ustadmobile/ihttp/iostreams/ByteArrayExt.kt",
          "respect-lib-ihttp-iostreams/.gitignore",
          "respect-lib-ihttp-core/src/jsMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.js.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/response/IHttpResponse.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeaderExt.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/StringExt.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/MapHttpHeadersAdapter.kt",
          "respect-lib-ihttp-core/src/androidMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.android.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequest.kt",
          "gradle/libs.versions.toml",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeaderImpl.kt",
          "respect-lib-ihttp-core/.gitignore",
          "respect-lib-ihttp-core/README.md",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeader.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/MapExt.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeadersExt.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/BaseHttpRequest.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.kt",
          "respect-lib-ihttp-core/src/jvmMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.jvm.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeaders.kt",
          "respect-lib-ihttp-iostreams/build.gradle.kts",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/IHeaderExt.kt",
          "settings.gradle.kts",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequestWithByteBody.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequestWithFormUrlEncodedData.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/KtorIHeadersAdapter.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/HttpHeaderListExt.kt",
          "respect-lib-ihttp-iostreams/README.md",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/RequestBuilder.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/directives/DirectivesToMap.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/MappedHttpHeaders.kt",
          "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/response/ByteArrayResponse.kt"
        ],
        "commitId" : "03770701764956050605ced4788255410fd14ccd",
        "timestamp" : 1752822943000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add lib-ihttp-core and lib-ihttp-iostreams\u000a",
        "date" : "2025-07-18 11:15:43 +0400",
        "id" : "03770701764956050605ced4788255410fd14ccd",
        "msg" : "Add lib-ihttp-core and lib-ihttp-iostreams",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/.gitignore"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/response/IHttpResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/HttpHeadersImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/MapHttpHeadersAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/README.md"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeadersExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequestWithByteBody.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeaderImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-iostreams/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/HttpHeaderListExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/RequestBuilder.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-iostreams/.gitignore"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/IHeaderExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeaderExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHeadersBuilder.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-iostreams/README.md"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/MapExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequestWithTextBody.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/jvmMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.jvm.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/ext/StringExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/MergedHeaders.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/BaseHttpRequest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/request/IHttpRequestWithFormUrlEncodedData.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/MappedHttpHeaders.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/directives/DirectivesToMap.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeaders.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/response/ByteArrayResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/jsMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.js.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-iostreams/src/commonMain/kotlin/com/ustadmobile/ihttp/iostreams/ByteArrayExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/KtorIHeadersAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/response/StringResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/androidMain/kotlin/com/ustadmobile/ihttp/ext/ByteArrayExt.android.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-core/src/commonMain/kotlin/com/ustadmobile/ihttp/headers/IHttpHeader.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-ihttp-okhttp/build.gradle.kts",
          "settings.gradle.kts",
          "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/request/HttpRequestOkHttpAdapter.kt",
          "gradle/libs.versions.toml",
          "respect-lib-ihttp-okhttp/.gitignore",
          "respect-lib-ihttp-nanohttpd/build.gradle.kts",
          "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/headers/OkHttpHeadersAdapter.kt",
          "respect-lib-ihttp-okhttp/consumer-rules.pro",
          "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/request/OkHttpRequestAdapter.kt",
          "respect-lib-ihttp-nanohttpd/src/commonMain/kotlin/com/ustadmobile/ihttp/nanohttpd/NanoHttpdRequestAdapter.kt",
          "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/response/OkHttpResponseAdapter.kt",
          "respect-lib-ihttp-okhttp/proguard-rules.pro",
          "respect-lib-ihttp-nanohttpd/.gitignore",
          "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/headers/IHttpHeadersAsOkHttpHeadersAdapter.kt",
          "respect-lib-ihttp-okhttp/src/commonMain/AndroidManifest.xml",
          "respect-lib-ihttp-nanohttpd/src/commonMain/kotlin/com/ustadmobile/ihttp/nanohttpd/NanoHttpdResponseAdapter.kt",
          "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/response/IHttpResponseOkHttpAdapter.kt"
        ],
        "commitId" : "0a501d75eaea676ed271dd799ee68c708cc88b5b",
        "timestamp" : 1752824183000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add lib-ihttp-okhttp and lib-ihttp-nanohttpd\u000a",
        "date" : "2025-07-18 11:36:23 +0400",
        "id" : "0a501d75eaea676ed271dd799ee68c708cc88b5b",
        "msg" : "Add lib-ihttp-okhttp and lib-ihttp-nanohttpd",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-nanohttpd/.gitignore"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-nanohttpd/src/commonMain/kotlin/com/ustadmobile/ihttp/nanohttpd/NanoHttpdRequestAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/headers/OkHttpHeadersAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-okhttp/src/commonMain/AndroidManifest.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-okhttp/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-nanohttpd/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/request/HttpRequestOkHttpAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/headers/IHttpHeadersAsOkHttpHeadersAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/response/OkHttpResponseAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-okhttp/proguard-rules.pro"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-okhttp/.gitignore"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-nanohttpd/src/commonMain/kotlin/com/ustadmobile/ihttp/nanohttpd/NanoHttpdResponseAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-okhttp/consumer-rules.pro"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/request/OkHttpRequestAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-okhttp/src/commonMain/kotlin/com/ustadmobile/ihttp/okhttp/response/IHttpResponseOkHttpAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportListScreen.kt",
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/daos/ReportDao.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectDateField.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/util/ext/ModifierExt.kt",
          "respect-lib-shared/build.gradle.kts",
          "respect-datalayer-db/build.gradle.kts",
          "gradle/libs.versions.toml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/CreateGraphFormatterUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/edit/ReportEditViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/replace.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/detail/ReportDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/MutableStateExt.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/entities/Report.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/edit/ReportEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/detail/ReportDetailScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/list/ReportListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectPagingItems.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
        ],
        "commitId" : "e125dadc29667ded41250f2ab674a5dec1a9d5fd",
        "timestamp" : 1752833656000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "add report screens and viewmodels with mock data\u000a",
        "date" : "2025-07-18 15:44:16 +0530",
        "id" : "e125dadc29667ded41250f2ab674a5dec1a9d5fd",
        "msg" : "add report screens and viewmodels with mock data",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/MutableStateExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/edit/ReportEditViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/edit/ReportEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/CreateGraphFormatterUseCase.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/report/list/ReportListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectPagingItems.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/entities/Report.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/RespectDateField.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/util/ext/ModifierExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/daos/ReportDao.kt"
          },
          {
            "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/report/detail/ReportDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "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/viewmodel/report/list/ReportListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/ext/replace.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/detail/ReportDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/RequestExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/partial/ContentRange.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/NapierLogInit.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntryAndLocks.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntry.kt",
          "gradle/libs.versions.toml",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/NewFileFromResource.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/AddNewEntryTriggerCallback.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedHashCacheEntry.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/ByteArrayResponse.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/ByteBufferExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/DatabaseExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/CouponHeader.kt",
          "respect-lib-cache/src/jvmTest/resources/testfile1.png",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheControlHeader.kt",
          "respect-lib-cache/src/jvmTest/resources/ustadmobile-epub.js",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/ByteArrayExt.kt",
          "respect-lib-cache/README.md",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CachedResponseStatus.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/StoreResult.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/UstadCacheExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/NeighborCacheEntryDao.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NeighborCacheEntry.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/http/DistributedCacheHttpEndpoint.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseValidityChecker.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/partial/RangeRequestNotSatisfiableException.kt",
          "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/base64/Base64Ext.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/HeadersBuilderExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/FileMimeTypeHelperImpl.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/logging/NapierLoggingAdapter.kt",
          "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestCreator.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/FileAssert.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/distributed/LifeCycleOwnerDistributedCacheInit.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCache.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CachePathsProvider.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCachePing.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/ConcurrentSafeMapOf.kt",
          "respect-lib-cache/.gitignore",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheabilityCheckerImpl.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCachePong.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CachePaths.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/StringResponse.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/date/ParseHttpDate.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlFreshnessChecker.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/md5/Md5Digest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/DefaultCacheCompressionFilter.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlFreshnessCheckerImplTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/CacheEntryDao.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/RequestedEntry.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/InputStreamExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/integrity/Sha256Integrity.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/MimeTypeHelperExt.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/ResourcesDispatcher.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlDirectivesUtil.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptorTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/SourceExt.kt",
          "respect-lib-cache/src/jvmTest/resources/childrens-literature.epub",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/RetentionLockDao.kt",
          "respect-lib-ihttp-iostreams/src/commonMain/kotlin/com/ustadmobile/ihttp/iostreams/NullOutputStream.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/CacheResponse.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/io/RangeInputStreamTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/NeighborCacheDao.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheNeighborDiscoveryListener.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtable.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/logging/UstadCacheLogger.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestCreator.kt",
          "respect-lib-cache/src/jvmTest/resources/testfile2.png",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CompressionType.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheTrimmerTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/StoreProgressListener.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/OutputStreamExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CacheEntryToStore.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/MimeTypeHelper.kt",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/base64/Base64Ext.kt",
          "respect-lib-xxhash/build.gradle.kts",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/RequestedEntryDao.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/ResponseCacheabilityCheckerExt.kt",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/UstadCacheBuilder.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtableIntegrationTest.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/http/DistributedCacheHttpEndpointTest.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/partial/ContentRangeTest.kt",
          "respect-lib-cache/schemas/com.ustadmobile.libcache.db.UstadCacheDb/15.json",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/StringExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/LruMap.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/HttpResponseExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/UstadCacheDb.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/RangeInputStream.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedHashEntries.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/HttpHeadersExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/ClearNeighborsCallback.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/HttpPathResponse.kt",
          "respect-lib-cache/build.gradle.kts",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/NewCacheEntryDao.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/base64/Base64Ext.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NewCacheEntry.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/model/DistributedHashEntriesTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/FileSystemExt.kt",
          "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestJvm.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/FileSystemCommonExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheConstants.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/RetentionLock.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/XXStringHasherExt.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCachePacket.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCacheWhatWithIdAndPayload.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheabilityCheckerImplTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptor.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/composites/NeighborCacheEntryAndNeighborCache.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NeighborCache.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheTrimmer.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/HeaderOverrideHttpResponse.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestCreator.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/LastModifiedHeader.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CacheStorageCompressionFilter.kt",
          "settings.gradle.kts",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestAndroid.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlFreshnessCheckerImpl.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheabilityChecker.kt",
          "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/UstadCacheBuilder.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/ValidatedEntry.kt",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheNsdAndroid.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/RequestCacheControlHeader.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/UstadDbDiscoveryListener.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/DistributedCacheInterceptor.kt"
        ],
        "commitId" : "c0b7ef589a0301b8021beac105264f26a2059eec",
        "timestamp" : 1752848578000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Work in progress: UstadCache compiles and UstadCacheJvmTest passes.\u000a",
        "date" : "2025-07-18 18:22:58 +0400",
        "id" : "c0b7ef589a0301b8021beac105264f26a2059eec",
        "msg" : "Work in progress: UstadCache compiles and UstadCacheJvmTest passes.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/StringExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/CacheEntryDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CompressionType.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/integrity/Sha256Integrity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlDirectivesUtil.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestCreator.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptor.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/base64/Base64Ext.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/partial/ContentRangeTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/.gitignore"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NewCacheEntry.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/XXStringHasherExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheControlHeader.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-ihttp-iostreams/src/commonMain/kotlin/com/ustadmobile/ihttp/iostreams/NullOutputStream.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CachePaths.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestCreator.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/MimeTypeHelper.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/OutputStreamExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/DatabaseExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCache.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/RequestedEntry.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/resources/ustadmobile-epub.js"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlFreshnessChecker.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/UstadDbDiscoveryListener.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/resources/testfile2.png"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/ClearNeighborsCallback.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/LruMap.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtableIntegrationTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/FileMimeTypeHelperImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/NewCacheEntryDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/InputStreamExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NeighborCache.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/schemas/com.ustadmobile.libcache.db.UstadCacheDb/15.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/ByteArrayResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheTrimmer.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CacheStorageCompressionFilter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/FileSystemExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/RetentionLockDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/StringResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheConstants.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/logging/NapierLoggingAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheabilityCheckerImplTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/RequestExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntryAndLocks.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/NeighborCacheDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/RangeInputStream.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-xxhash/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlFreshnessCheckerImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/distributed/LifeCycleOwnerDistributedCacheInit.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/StoreResult.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NeighborCacheEntry.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/resources/childrens-literature.epub"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/base64/Base64Ext.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/HttpPathResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtable.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/ByteArrayExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheNeighborDiscoveryListener.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/FileAssert.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/StoreProgressListener.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/HeadersBuilderExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/CacheResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheabilityCheckerImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/DistributedCacheInterceptor.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCachePacket.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCacheWhatWithIdAndPayload.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/ValidatedEntry.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CacheEntryToStore.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptorTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheTrimmerTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/resources/testfile1.png"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/UstadCacheBuilder.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheNsdAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/http/DistributedCacheHttpEndpointTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedHashEntries.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/CachePathsProvider.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/AddNewEntryTriggerCallback.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/UstadCacheExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/date/ParseHttpDate.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/base64/Base64Ext.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedHashCacheEntry.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseValidityChecker.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/NewFileFromResource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/composites/NeighborCacheEntryAndNeighborCache.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/HttpResponseExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/NeighborCacheEntryDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestJvm.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/response/HeaderOverrideHttpResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/DefaultCacheCompressionFilter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/MimeTypeHelperExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/FileSystemCommonExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/UstadCacheDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/io/RangeInputStreamTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/RetentionLock.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/model/DistributedHashEntriesTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/README.md"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/ResourcesDispatcher.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/partial/ContentRange.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/md5/Md5Digest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/partial/RangeRequestNotSatisfiableException.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/CouponHeader.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCachePing.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/ResponseCacheabilityChecker.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/io/SourceExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/NapierLogInit.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/logging/UstadCacheLogger.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/http/DistributedCacheHttpEndpoint.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/ByteBufferExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestCreator.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/md5/Md5DigestAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/util/ConcurrentSafeMapOf.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/RequestCacheControlHeader.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/cachecontrol/CachedResponseStatus.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/model/DistributedCachePong.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/cachecontrol/CacheControlFreshnessCheckerImplTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/ResponseCacheabilityCheckerExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/HttpHeadersExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/jvmMain/kotlin/com/ustadmobile/libcache/UstadCacheBuilder.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/dao/RequestedEntryDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntry.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/headers/LastModifiedHeader.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/http/DistributedCacheHttpEndpointTest.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/http/DistributedCacheHttpEndpoint.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCache.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheTrimmerTest.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/UstadCacheExt.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptorTest.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptor.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtableIntegrationTest.kt"
        ],
        "commitId" : "9aa76227bbd32093b6a5e3715b2e6706610337a6",
        "timestamp" : 1752850598000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Convert UstadCache functions to asynchronous (suspended) because Room multiplatform does not support synchronous (blocking) queries.\u000a",
        "date" : "2025-07-18 18:56:38 +0400",
        "id" : "9aa76227bbd32093b6a5e3715b2e6706610337a6",
        "msg" : "Convert UstadCache functions to asynchronous (suspended) because Room multiplatform does not support synchronous (blocking) queries.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptorTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/http/DistributedCacheHttpEndpoint.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCacheImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/okhttp/UstadCacheInterceptor.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/UstadCache.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheJvmTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/http/DistributedCacheHttpEndpointTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/UstadCacheTrimmerTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtableIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/util/UstadCacheExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtable.kt",
          "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtableIntegrationTest.kt"
        ],
        "commitId" : "a5ec99ea92fae848eccade25b1885030ded7eb15",
        "timestamp" : 1752858327000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix DistributedCacheHashtableIntegrationTest - nested use of runBlocking caused database deadlock.\u000a",
        "date" : "2025-07-18 21:05:27 +0400",
        "id" : "a5ec99ea92fae848eccade25b1885030ded7eb15",
        "msg" : "Fix DistributedCacheHashtableIntegrationTest - nested use of runBlocking caused database deadlock.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/jvmTest/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtableIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/distributed/DistributedCacheHashtable.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/util/ext/FileExt.kt",
          "respect-lib-shared/build.gradle.kts",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/storage/GetOfflineStorageOptionsUseCaseAndroid.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/RespectApp.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/storage/GetOfflineStorageOptionsUseCase.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/storage/GetAndroidSdCardDirUseCase.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/storage/CachePathsProviderAndroid.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/README.md",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/storage/OfflineStorageOption.kt",
          "respect-app-compose/build.gradle.kts",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/storage/GetOfflineStorageSettingUseCase.kt"
        ],
        "commitId" : "09a32636ab97124e3dc85cf3e72c10a1d712d2c5",
        "timestamp" : 1752938308000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update respect-app-compose to use UstadCache for OKHttp and Coil image loading.\u000a",
        "date" : "2025-07-19 19:18:28 +0400",
        "id" : "09a32636ab97124e3dc85cf3e72c10a1d712d2c5",
        "msg" : "Update respect-app-compose to use UstadCache for OKHttp and Coil image loading.",
        "paths" : [
          {
            "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/storage/OfflineStorageOption.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/storage/GetOfflineStorageSettingUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/storage/GetOfflineStorageOptionsUseCaseAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/README.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/RespectApp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/storage/GetOfflineStorageOptionsUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/storage/GetAndroidSdCardDirUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/storage/CachePathsProviderAndroid.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/util/ext/FileExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt",
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/webview/OkHttpWebViewClient.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
        ],
        "commitId" : "922736ffdd90390c65f557a40980645c9bbdc90e",
        "timestamp" : 1753000245000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial version of OkHttpWebViewClient\u000a",
        "date" : "2025-07-20 11:30:45 +0300",
        "id" : "922736ffdd90390c65f557a40980645c9bbdc90e",
        "msg" : "Initial version of OkHttpWebViewClient",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/webview/OkHttpWebViewClient.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/webview/OkHttpWebViewClient.kt"
        ],
        "commitId" : "288113c237c475a7aa081d67bda7ded6f3d885d5",
        "timestamp" : 1753001461000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add try/catch handler to shouldInterceptRequest to return 503 response when OKHttp call throws an exception.\u000a",
        "date" : "2025-07-20 11:51:01 +0300",
        "id" : "288113c237c475a7aa081d67bda7ded6f3d885d5",
        "msg" : "Add try/catch handler to shouldInterceptRequest to return 503 response when OKHttp call throws an exception.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/androidMain/kotlin/com/ustadmobile/libcache/webview/OkHttpWebViewClient.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/validator/ValidateHttpResponseForUrlUseCase.kt"
        ],
        "commitId" : "d598d91f054ad794d48224fdba0c3838cb8ff05c",
        "timestamp" : 1753012025000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add more detail to error message for did not return 304 validation check.\u000a",
        "date" : "2025-07-20 14:47:05 +0300",
        "id" : "d598d91f054ad794d48224fdba0c3838cb8ff05c",
        "msg" : "Add more detail to error message for did not return 304 validation check.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/validator/ValidateHttpResponseForUrlUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NewCacheEntry.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NeighborCacheEntry.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntry.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/RetentionLock.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/RequestedEntry.kt",
          "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NeighborCache.kt"
        ],
        "commitId" : "d76b5930895c9c962ab2a9a81183e7084a134acf",
        "timestamp" : 1753012486000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Convert cache lib database entities to being immutable.\u000a",
        "date" : "2025-07-20 14:54:46 +0300",
        "id" : "d76b5930895c9c962ab2a9a81183e7084a134acf",
        "msg" : "Convert cache lib database entities to being immutable.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NeighborCacheEntry.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/RetentionLock.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/CacheEntry.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NewCacheEntry.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/NeighborCache.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-cache/src/commonMain/kotlin/com/ustadmobile/libcache/db/entities/RequestedEntry.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/report/list/ReportListScreen.kt",
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/detail/ReportDetailViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/model/RunReportResultAndFormatters.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/query/RunReportUseCaseDatabaseImpl.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/list/ReportListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/query/RunReportUseCaseClientImpl.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/edit/ReportEditViewModel.kt"
        ],
        "commitId" : "3785347fee9ab79161831889fd04a8087c90829a",
        "timestamp" : 1753079598000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "Added RunReportUseCase as constructor parameter in ReportsViewModels\u000a",
        "date" : "2025-07-21 12:03:18 +0530",
        "id" : "3785347fee9ab79161831889fd04a8087c90829a",
        "msg" : "Added RunReportUseCase as constructor parameter in ReportsViewModels",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/model/RunReportResultAndFormatters.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/report/edit/ReportEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportListScreen.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/report/detail/ReportDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/query/RunReportUseCaseClientImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/list/ReportListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/query/RunReportUseCaseDatabaseImpl.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/detail/ReportDetailViewModel.kt"
        ],
        "commitId" : "c80e9b33288e062eef6d8f8aa173c509978cc66d",
        "timestamp" : 1753082790000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "resolve conflict\u000a",
        "date" : "2025-07-21 12:56:30 +0530",
        "id" : "c80e9b33288e062eef6d8f8aa173c509978cc66d",
        "msg" : "resolve conflict",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/detail/ReportDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/RespectReportDataSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/RespectReport.kt"
        ],
        "commitId" : "8ef4666e610929cb8c72fbbab0fc7addd60ada0f",
        "timestamp" : 1753090994000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add basic report datalayer interface and class.\u000a",
        "date" : "2025-07-21 12:43:14 +0300",
        "id" : "8ef4666e610929cb8c72fbbab0fc7addd60ada0f",
        "msg" : "Add basic report datalayer interface and class.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/RespectReportDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/RespectReport.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/detail/ReportDetailViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/model/ReportPeriod.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/edit/ReportEditScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/list/ReportListViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/MockRespectReportDataSource.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/edit/ReportEditViewModel.kt"
        ],
        "commitId" : "bf072d6801c5bb3fd09b05cfacf1d52a70d85e4b",
        "timestamp" : 1753249709000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "Integrated the mock Respect report data source into dependency injection\u000a",
        "date" : "2025-07-23 11:18:29 +0530",
        "id" : "bf072d6801c5bb3fd09b05cfacf1d52a70d85e4b",
        "msg" : "Integrated the mock Respect report data source into dependency injection",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportListScreen.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/domain/report/model/ReportPeriod.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/edit/ReportEditScreen.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/viewmodel/report/detail/ReportDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/edit/ReportEditViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/MockRespectReportDataSource.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/build.gradle.kts",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/list/ReportListViewModel.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/MockRespectReportDataSource.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/CreateGraphFormatterUseCase.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/RespectReportDataSource.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/DateGraphFormatter.kt"
        ],
        "commitId" : "0b215165389e9d7ec869727ee63f5c511f101603",
        "timestamp" : 1753343136000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "updated list screen with paging source\u000a",
        "date" : "2025-07-24 13:15:36 +0530",
        "id" : "0b215165389e9d7ec869727ee63f5c511f101603",
        "msg" : "updated list screen with paging source",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/DateGraphFormatter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/report/formatter/CreateGraphFormatterUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/MockRespectReportDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/RespectReportDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/list/ReportListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/ActionBarButtonUiState.kt",
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/MockRespectReportDataSource.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportTemplateListScreen.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/navigation/AppRoutes.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/graph/CombinedGraph.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/list/ReportListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppUiState.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/RespectReportDataSource.kt"
        ],
        "commitId" : "61ac4af0af40740a4456f984999ccb9da7ba2b37",
        "timestamp" : 1753683436000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
          "fullName" : "Anugraha"
        },
        "authorEmail" : "Anugraha@sutara.org",
        "comment" : "Added ReportTemplateList Screen\u000a",
        "date" : "2025-07-28 11:47:16 +0530",
        "id" : "61ac4af0af40740a4456f984999ccb9da7ba2b37",
        "msg" : "Added ReportTemplateList Screen",
        "paths" : [
          {
            "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/viewmodel/report/list/ReportTemplateListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/edit/ReportEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/RespectReportDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/ActionBarButtonUiState.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/graph/CombinedGraph.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.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/app/appstate/AppUiState.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/navigation/AppRoutes.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/list/ReportTemplateListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/MockRespectReportDataSource.kt"
          }
        ]
      }
    ],
    "kind" : "git"
  },
  "culprits" : [
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
      "fullName" : "mandvi.verma"
    },
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/anugraha",
      "fullName" : "Anugraha"
    },
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
      "fullName" : "noreply"
    },
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
      "fullName" : "Mike Dawson"
    },
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
      "fullName" : "Pooja Ravi"
    }
  ]
}