{
  "_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/curriculum-mapping" : {
          "_class" : "hudson.plugins.git.util.Build",
          "buildNumber" : 2,
          "buildResult" : None,
          "marked" : {
            "SHA1" : "051b8f4420925a419a517073c48707d3a8faac25",
            "branch" : [
              {
                "SHA1" : "051b8f4420925a419a517073c48707d3a8faac25",
                "name" : "refs/remotes/origin/curriculum-mapping"
              }
            ]
          },
          "revision" : {
            "SHA1" : "051b8f4420925a419a517073c48707d3a8faac25",
            "branch" : [
              {
                "SHA1" : "051b8f4420925a419a517073c48707d3a8faac25",
                "name" : "refs/remotes/origin/curriculum-mapping"
              }
            ]
          }
        }
      },
      "lastBuiltRevision" : {
        "SHA1" : "051b8f4420925a419a517073c48707d3a8faac25",
        "branch" : [
          {
            "SHA1" : "051b8f4420925a419a517073c48707d3a8faac25",
            "name" : "refs/remotes/origin/curriculum-mapping"
          }
        ]
      },
      "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" : 105898,
  "estimatedDuration" : 85492,
  "executor" : None,
  "fullDisplayName" : "RESPECT-curriculum-mapping #2",
  "id" : "2",
  "inProgress" : False,
  "keepLog" : False,
  "number" : 2,
  "queueId" : 3285,
  "result" : "SUCCESS",
  "timestamp" : 1752908796165,
  "url" : "https://devserver3.ustadmobile.com/jenkins/view/all/job/RESPECT-curriculum-mapping/2/",
  "builtOn" : "",
  "changeSet" : {
    "_class" : "hudson.plugins.git.GitChangeSetList",
    "items" : [
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/AppNavHost.kt",
          "composeApp/src/androidMain/kotlin/world/respect/AppActivity.kt",
          "composeApp/src/androidMain/kotlin/world/respect/AbstractAppActivity.kt",
          "composeApp/src/commonMain/kotlin/world/respect/AppUiState.kt",
          "composeApp/src/androidMain/AndroidManifest.xml"
        ],
        "commitId" : "2f511421124a13fe722bb8c170edbe9567fffbb9",
        "timestamp" : 1745905281000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "setup\u000a",
        "date" : "2025-04-29 11:11:21 +0530",
        "id" : "2f511421124a13fe722bb8c170edbe9567fffbb9",
        "msg" : "setup",
        "paths" : [
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/AppNavHost.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/AbstractAppActivity.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/androidMain/AndroidManifest.xml"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/AppUiState.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/AppActivity.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "shared/src/commonMain/resources/about-credits-common.html",
          "composeApp/src/commonMain/kotlin/world/respect/view/app/AppBar.kt",
          "composeApp/src/commonMain/kotlin/world/respect/impl/appstate/AppActionButton.kt",
          "shared/src/commonMain/resources/MR/base/plurals.xml",
          "gradle/wrapper/gradle-wrapper.properties",
          "composeApp/src/androidMain/kotlin/world/respect/AppActivity.kt",
          "gradle/libs.versions.toml",
          "composeApp/src/commonMain/kotlin/world/respect/impl/appstate/SnackBarDispatcher.kt",
          "composeApp/src/commonMain/kotlin/world/respect/App.kt",
          "composeApp/src/commonMain/kotlin/world/respect/view/app/SizeClass.kt",
          "composeApp/build.gradle.kts",
          "composeApp/src/commonMain/kotlin/world/respect/impl/appstate/Snack.kt",
          "composeApp/src/commonMain/kotlin/world/respect/impl/appstate/FabUiState.kt",
          "shared/src/commonMain/resources/MR/base/plurals_weblate.xml",
          "composeApp/src/commonMain/kotlin/world/respect/view/app/AppNavHost.kt",
          "shared/src/commonMain/resources/MR/colors/colors.xml",
          "composeApp/src/commonMain/kotlin/world/respect/impl/appstate/nav/NavCommand.kt",
          "composeApp/src/commonMain/kotlin/world/respect/impl/appstate/AppStateIcon.kt",
          "settings.gradle.kts",
          "composeApp/src/commonMain/kotlin/world/respect/AppLauncherScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/impl/appstate/AppBarColors.kt",
          "composeApp/src/commonMain/kotlin/world/respect/impl/appstate/AppUiState.kt",
          "composeApp/src/commonMain/kotlin/theme/Theme.kt",
          "composeApp/src/commonMain/kotlin/world/respect/AppLauncherScreenViewModel.kt",
          "composeApp/src/androidMain/AndroidManifest.xml",
          "composeApp/src/commonMain/kotlin/theme/Color.kt",
          "composeApp/src/commonMain/kotlin/world/respect/view/app/App.kt",
          "shared/src/commonMain/resources/MR/base/strings.xml",
          "composeApp/src/commonMain/kotlin/theme/CommonColor.kt",
          "server/build.gradle.kts",
          "composeApp/src/desktopMain/kotlin/world/respect/main.kt"
        ],
        "commitId" : "2394f6b24c08a9cf3fd31f75ba8d24d28da42946",
        "timestamp" : 1746003166000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "setup\u000a",
        "date" : "2025-04-30 14:22:46 +0530",
        "id" : "2394f6b24c08a9cf3fd31f75ba8d24d28da42946",
        "msg" : "setup",
        "paths" : [
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/impl/appstate/FabUiState.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/impl/appstate/AppBarColors.kt"
          },
          {
            "editType" : "add",
            "file" : "shared/src/commonMain/resources/MR/colors/colors.xml"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/impl/appstate/nav/NavCommand.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/theme/Theme.kt"
          },
          {
            "editType" : "add",
            "file" : "shared/src/commonMain/resources/MR/base/plurals_weblate.xml"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/view/app/App.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "gradle/wrapper/gradle-wrapper.properties"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/impl/appstate/AppStateIcon.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/desktopMain/kotlin/world/respect/main.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/androidMain/AndroidManifest.xml"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/AppLauncherScreenViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/view/app/AppBar.kt"
          },
          {
            "editType" : "add",
            "file" : "shared/src/commonMain/resources/MR/base/strings.xml"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "server/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/theme/Color.kt"
          },
          {
            "editType" : "add",
            "file" : "shared/src/commonMain/resources/about-credits-common.html"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/impl/appstate/Snack.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/view/app/SizeClass.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/impl/appstate/AppActionButton.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/view/app/AppNavHost.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/theme/CommonColor.kt"
          },
          {
            "editType" : "add",
            "file" : "shared/src/commonMain/resources/MR/base/plurals.xml"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/impl/appstate/SnackBarDispatcher.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/impl/appstate/AppUiState.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/AppActivity.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/App.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/App.kt",
          "composeApp/src/androidMain/kotlin/world/respect/MainActivity.kt",
          "composeApp/src/desktopMain/kotlin/world/respect/main.kt"
        ],
        "commitId" : "ac0597bab2ab44a7058dd70858379b0d2f1ac3bd",
        "timestamp" : 1746109746000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Bottom bar and app bar set\u000a",
        "date" : "2025-05-01 19:59:06 +0530",
        "id" : "ac0597bab2ab44a7058dd70858379b0d2f1ac3bd",
        "msg" : "Bottom bar and app bar set",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/desktopMain/kotlin/world/respect/main.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/App.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/MainActivity.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AppLauncherScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/App.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/ReportScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AssignmentScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/ReportScreenViewModel.kt",
          "composeApp/build.gradle.kts",
          "composeApp/src/androidMain/kotlin/world/respect/ViewModelFactory.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/ClazzScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/ClazzScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/AssignmentScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/AppLauncherScreen.kt"
        ],
        "commitId" : "f3a2306cb5577379413d9ead92b52ac8dddb688e",
        "timestamp" : 1746189221000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "viewModel and screen\u000a",
        "date" : "2025-05-02 18:03:41 +0530",
        "id" : "f3a2306cb5577379413d9ead92b52ac8dddb688e",
        "msg" : "viewModel and screen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/AppLauncherScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/ReportScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/AssignmentScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/AppNavHost.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/ViewModelFactory.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AppLauncherScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/App.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AssignmentScreenViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/ReportScreenViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/ClazzScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/ClazzScreenViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/App.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AppLauncherScreenViewModel.kt",
          "composeApp/build.gradle.kts",
          "composeApp/src/commonMain/kotlin/world/respect/app/nav/NavResultReturner.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/nav/NavResultReturnerImpl.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/nav/NavResult.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/AppScreenList.kt"
        ],
        "commitId" : "0a54a12635a39041d5df6771307b9b83c3602a4e",
        "timestamp" : 1746382255000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Working\u000a",
        "date" : "2025-05-04 23:40:55 +0530",
        "id" : "0a54a12635a39041d5df6771307b9b83c3602a4e",
        "msg" : "Working",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/nav/NavResultReturnerImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/App.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/nav/NavResult.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/AppScreenList.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AppLauncherScreenViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/nav/NavResultReturner.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/App.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/ReportScreen.kt",
          "composeApp/build.gradle.kts",
          "composeApp/src/commonMain/kotlin/world/respect/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/AppBar.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/ClazzScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/AssignmentScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/AppLauncherScreen.kt"
        ],
        "commitId" : "46f0ce2d90b93daa24de844d468ffb7ccd6593e4",
        "timestamp" : 1746511294000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Bottom bar screen navigation working\u000a",
        "date" : "2025-05-06 11:31:34 +0530",
        "id" : "46f0ce2d90b93daa24de844d468ffb7ccd6593e4",
        "msg" : "Bottom bar screen navigation working",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/ReportScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/AppBar.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/ClazzScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/AssignmentScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/App.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/build.gradle.kts"
        ],
        "commitId" : "e62359ad767bce78ee4c13f8330e60519bd87e22",
        "timestamp" : 1746511305000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Bottom bar screen navigation working\u000a",
        "date" : "2025-05-06 11:31:45 +0530",
        "id" : "e62359ad767bce78ee4c13f8330e60519bd87e22",
        "msg" : "Bottom bar screen navigation working",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/App.kt",
          "composeApp/build.gradle.kts",
          "composeApp/src/commonMain/kotlin/world/respect/app/nav/NavResultReturner.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/AssignmentScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/nav/NavResultReturnerImpl.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/nav/NavResult.kt"
        ],
        "commitId" : "6348805ca73f7856e7beca356dc87927a5b3a0a6",
        "timestamp" : 1746514762000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "App Bar\u000aBottom Bar\u000aNavigation\u000a",
        "date" : "2025-05-06 12:29:22 +0530",
        "id" : "6348805ca73f7856e7beca356dc87927a5b3a0a6",
        "msg" : "App Bar",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/nav/NavResultReturner.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/AssignmentScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/App.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/nav/NavResult.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/nav/NavResultReturnerImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/AppLauncherScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/AppNavHost.kt"
        ],
        "commitId" : "1cf49a84c4a4b49ea7c4095f604236bcfe39fe6d",
        "timestamp" : 1746514909000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "App Bar\u000aBottom Bar\u000aNavigation\u000a",
        "date" : "2025-05-06 12:31:49 +0530",
        "id" : "1cf49a84c4a4b49ea7c4095f604236bcfe39fe6d",
        "msg" : "App Bar",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/AppNavHost.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AppLauncherScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AssignmentScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/ReportScreenViewModel.kt",
          "composeApp/build.gradle.kts",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/ClazzScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/AppLauncherScreen.kt"
        ],
        "commitId" : "dd98965be311a6d7289b4dad789b2c2974ed9c45",
        "timestamp" : 1746516008000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "App Bar\u000aBottom Bar\u000aNavigation\u000a",
        "date" : "2025-05-06 12:50:08 +0530",
        "id" : "dd98965be311a6d7289b4dad789b2c2974ed9c45",
        "msg" : "App Bar",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AppLauncherScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AssignmentScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/ReportScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/ClazzScreenViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/App.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/ReportScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/ReportScreenViewModel.kt",
          "composeApp/build.gradle.kts",
          "composeApp/src/androidMain/AndroidManifest.xml",
          "composeApp/src/androidMain/kotlin/world/respect/RespectApp.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/AppNavHost.kt"
        ],
        "commitId" : "fa6f615ef6bf18f2d29dcd2aa01ccd31f4207390",
        "timestamp" : 1746530856000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Setup done\u000a",
        "date" : "2025-05-06 16:57:36 +0530",
        "id" : "fa6f615ef6bf18f2d29dcd2aa01ccd31f4207390",
        "msg" : "Setup done",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/ReportScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/androidMain/AndroidManifest.xml"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/App.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/ReportScreenViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/RespectApp.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/AppNavHost.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/App.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AppLauncherScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/AppLauncherModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/ReportScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/ReportScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/AppLauncherScreen.kt"
        ],
        "commitId" : "c5deacfb87149b797bee490224c2da141d42b49c",
        "timestamp" : 1746547956000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Screen 1 mock data and ui\u000a",
        "date" : "2025-05-06 21:42:36 +0530",
        "id" : "c5deacfb87149b797bee490224c2da141d42b49c",
        "msg" : "Screen 1 mock data and ui",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/App.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/ReportScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AppLauncherScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/AppNavHost.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/AppLauncherModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/ReportScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AppLauncherScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/App.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/AssignmentScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/AppLauncherScreen.kt"
        ],
        "commitId" : "95bcf7ca4f9783f08b44b26c0d027cec104cb538",
        "timestamp" : 1746549709000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Screen 1 mock data and ui\u000a",
        "date" : "2025-05-06 22:11:49 +0530",
        "id" : "95bcf7ca4f9783f08b44b26c0d027cec104cb538",
        "msg" : "Screen 1 mock data and ui",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AppLauncherScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/AssignmentScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/App.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AppLauncherScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AppListScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/AppListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/AppLauncherScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/AppScreenList.kt"
        ],
        "commitId" : "a079d7341c09cf75ea7e0871bfeae774ff562f2f",
        "timestamp" : 1746552649000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "App list screen added\u000a",
        "date" : "2025-05-06 23:00:49 +0530",
        "id" : "a079d7341c09cf75ea7e0871bfeae774ff562f2f",
        "msg" : "App list screen added",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AppLauncherScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/AppScreenList.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/AppListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/AppNavHost.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AppListScreenViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AppListScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/AppListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/AppLauncherScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/AppListModel.kt"
        ],
        "commitId" : "f0b582e22bba951eea41ddb7f0c4e9af3cddab54",
        "timestamp" : 1746554434000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "App list screen ui added\u000aSingle radio selection\u000a",
        "date" : "2025-05-06 23:30:34 +0530",
        "id" : "f0b582e22bba951eea41ddb7f0c4e9af3cddab54",
        "msg" : "App list screen ui added",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/AppListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/AppLauncherScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/AppListModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AppListScreenViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/AppListScreen.kt"
        ],
        "commitId" : "0ba27ce58e27d739f462b70d087d20622e7db422",
        "timestamp" : 1746554661000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "App list screen ui added\u000aMultiple radio selection\u000a",
        "date" : "2025-05-06 23:34:21 +0530",
        "id" : "0ba27ce58e27d739f462b70d087d20622e7db422",
        "msg" : "App list screen ui added",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/AppListScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AppLauncherScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/AppLauncherScreen.kt"
        ],
        "commitId" : "fd668e26e00794b2cf696721f54ce5ac774cf714",
        "timestamp" : 1746599082000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Set\u000a",
        "date" : "2025-05-07 11:54:42 +0530",
        "id" : "fd668e26e00794b2cf696721f54ce5ac774cf714",
        "msg" : "Set",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AppLauncherScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/AppLauncherScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AppLauncherScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/AppListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/AppLauncherScreen.kt"
        ],
        "commitId" : "d2caf1bfda9377cbc86bf855c6759ddd537c6973",
        "timestamp" : 1746600436000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Ui for empty list\u000a",
        "date" : "2025-05-07 12:17:16 +0530",
        "id" : "d2caf1bfda9377cbc86bf855c6759ddd537c6973",
        "msg" : "Ui for empty list",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AppLauncherScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/AppListScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/App.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/AppListScreen.kt",
          "composeApp/src/commonMain/kotlin/theme/Color.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/appstate/FabUiState.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/AssignmentScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/AppLauncherScreen.kt"
        ],
        "commitId" : "8a57661b58c3dbb712f4fd95aa4c3b89904e6522",
        "timestamp" : 1746602456000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "UI updated\u000a",
        "date" : "2025-05-07 12:50:56 +0530",
        "id" : "8a57661b58c3dbb712f4fd95aa4c3b89904e6522",
        "msg" : "UI updated",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/App.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/appstate/FabUiState.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/theme/Color.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/AppListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/AssignmentScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/AppNavHost.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/AppListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/EnterLinkScreen.kt",
          "composeApp/build.gradle.kts",
          "composeApp/src/commonMain/kotlin/world/respect/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/EnterLnkScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/appstate/FabUiState.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/AppScreenList.kt"
        ],
        "commitId" : "4c4ac1478a4f4e069fc4e7e26f9401376ee3ec40",
        "timestamp" : 1746604985000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "UI enter link screen\u000a",
        "date" : "2025-05-07 13:33:05 +0530",
        "id" : "4c4ac1478a4f4e069fc4e7e26f9401376ee3ec40",
        "msg" : "UI enter link screen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/AppListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/EnterLnkScreenViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/EnterLinkScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/appstate/FabUiState.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/AppScreenList.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/AppNavHost.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AppListScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/EnterLinkScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/AppBar.kt",
          "composeApp/src/androidMain/kotlin/world/respect/RespectApp.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/ClazzScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/EnterLnkScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/AssignmentScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AppLauncherScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/AppListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/ReportScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/ReportScreen.kt",
          "composeApp/src/commonMain/composeResources/values/strings.xml",
          "composeApp/build.gradle.kts",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/AppLauncherScreen.kt"
        ],
        "commitId" : "80d3d0b568a23900067cc2cb657c752bf2e7de92",
        "timestamp" : 1746695472000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Updated\u000a",
        "date" : "2025-05-08 14:41:12 +0530",
        "id" : "80d3d0b568a23900067cc2cb657c752bf2e7de92",
        "msg" : "Updated",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/EnterLinkScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/EnterLnkScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AppLauncherScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/ReportScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/ClazzScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/AppBar.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/AppListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/ReportScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/AssignmentScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AppListScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/RespectApp.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/composeResources/values/strings.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AppLauncherScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/App.kt",
          "shared/src/commonMain/resources/MR/colors/colors.xml",
          "composeApp/build.gradle.kts",
          "shared/src/commonMain/resources/MR/base/plurals.xml",
          "composeApp/src/commonMain/kotlin/world/respect/app/AppBar.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/AppNavHost.kt",
          "composeApp/src/androidMain/kotlin/world/respect/AbstractAppActivity.kt",
          "shared/src/commonMain/resources/MR/base/strings.xml",
          "shared/src/commonMain/resources/MR/base/plurals_weblate.xml",
          "gradle/libs.versions.toml",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/AppLauncherScreen.kt"
        ],
        "commitId" : "65cccd8c0ac70f4a2a88cf75b118dd5d7609c69d",
        "timestamp" : 1746706204000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Latest commit\u000a",
        "date" : "2025-05-08 17:40:04 +0530",
        "id" : "65cccd8c0ac70f4a2a88cf75b118dd5d7609c69d",
        "msg" : "Latest commit",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/AbstractAppActivity.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/commonMain/resources/MR/colors/colors.xml"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AppLauncherScreenViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/commonMain/resources/MR/base/plurals.xml"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/AppBar.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/AppLauncherScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/commonMain/resources/MR/base/plurals_weblate.xml"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/commonMain/resources/MR/base/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/App.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/AppNavHost.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/AppsDetailModel.kt",
          "composeApp/src/commonMain/composeResources/values/strings.xml",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/AppsDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AppsDetailScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/AppLauncherScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/AppScreenList.kt"
        ],
        "commitId" : "bde0ccd4a2016cfe1d07f3a7e7da2b3864818aed",
        "timestamp" : 1746727097000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "App detail screen\u000a",
        "date" : "2025-05-08 23:28:17 +0530",
        "id" : "bde0ccd4a2016cfe1d07f3a7e7da2b3864818aed",
        "msg" : "App detail screen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/AppScreenList.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/AppNavHost.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AppsDetailScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/AppLauncherScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/AppsDetailModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/EnterLinkScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/assignments/AssignmentScreen.kt",
          "composeApp/src/androidMain/kotlin/world/respect/RespectApp.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/AssignmentScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/applauncher/AppLauncherScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/clazz/ClazzScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/AppListModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/ReportScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/clazz/ClazzScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/appstate/nav/NavCommand.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/AppsDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/AppScreenList.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/App.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/appsdetail/AppsDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/report/ReportScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/AppBar.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/ClazzScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AppLauncherScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/AppListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/SizeClass.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AssignmentScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/model/applauncher/AppLauncherModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppBar.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/report/ReportScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/AppLauncherScreen.kt",
          "composeApp/src/androidMain/kotlin/world/respect/MainActivity.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AppListScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/enterlink/EnterLinkScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/model/applist/AppListModel.kt",
          "composeApp/src/androidMain/kotlin/world/respect/AbstractAppActivity.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/EnterLnkScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AppsDetailScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/AppsDetailModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/applist/AppListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/ReportScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/assignments/AssignmentScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/model/appsdetail/AppsDetailModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/App.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/enterlink/EnterLnkScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/AppLauncherModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/appsdetail/AppsDetailScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/applauncher/AppLauncherScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/ClazzScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/applist/AppListScreenViewModel.kt",
          "composeApp/src/desktopMain/kotlin/world/respect/main.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/SizeClass.kt"
        ],
        "commitId" : "d9e6fb2f36d6d7fafccbb200b622cf4a3d125869",
        "timestamp" : 1746727726000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "moving classes into proper packages\u000a",
        "date" : "2025-05-08 23:38:46 +0530",
        "id" : "d9e6fb2f36d6d7fafccbb200b622cf4a3d125869",
        "msg" : "moving classes into proper packages",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/AppListModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/report/ReportScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/appsdetail/AppsDetailScreenViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/ClazzScreenViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/EnterLnkScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/desktopMain/kotlin/world/respect/main.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AppLauncherScreenViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/applauncher/AppLauncherScreenViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/applist/AppListScreenViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/assignments/AssignmentScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/enterlink/EnterLinkScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/model/applauncher/AppLauncherModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/SizeClass.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/model/applist/AppListModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/ReportScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/clazz/ClazzScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/AbstractAppActivity.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/SizeClass.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/ReportScreenViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/AppNavHost.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/AppsDetailModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/EnterLinkScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/AssignmentScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/applauncher/AppLauncherScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/App.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/appstate/nav/NavCommand.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/model/appsdetail/AppsDetailModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/clazz/ClazzScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/RespectApp.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AppListScreenViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/App.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/assignments/AssignmentScreenViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/AppLauncherScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/appsdetail/AppsDetailScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/AppBar.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/AppLauncherModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/enterlink/EnterLnkScreenViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/AppScreenList.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AssignmentScreenViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppBar.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/MainActivity.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/applist/AppListScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/AppListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/report/ReportScreenViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/ClazzScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/AppsDetailScreenViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/App.kt",
          "gradle/libs.versions.toml",
          "composeApp/build.gradle.kts",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/applauncher/AppLauncherScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/applauncher/AppLauncherScreen.kt"
        ],
        "commitId" : "2e50537f3eb354141ca3888c87f431c58431455c",
        "timestamp" : 1746774281000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "moving classes into proper packages\u000a",
        "date" : "2025-05-09 12:34:41 +0530",
        "id" : "2e50537f3eb354141ca3888c87f431c58431455c",
        "msg" : "moving classes into proper packages",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/App.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/applauncher/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/applauncher/AppLauncherScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/appstate/LoadingUiState.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModelFun.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/appstate/AppUiState.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModel.kt",
          "gradle/libs.versions.toml",
          "composeApp/src/commonMain/kotlin/world/respect/app/effects/AppUiStateEffect.kt"
        ],
        "commitId" : "d7b8588ad7eca73d9aeaa82a271c874e62a784cb",
        "timestamp" : 1746778313000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "moving classes into proper packages\u000a",
        "date" : "2025-05-09 13:41:53 +0530",
        "id" : "d7b8588ad7eca73d9aeaa82a271c874e62a784cb",
        "msg" : "moving classes into proper packages",
        "paths" : [
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModelFun.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/appstate/LoadingUiState.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/effects/AppUiStateEffect.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/appstate/AppUiState.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/build.gradle.kts",
          "gradle/libs.versions.toml"
        ],
        "commitId" : "16033046a3ec08f4c5fb87571458ad975aa178e0",
        "timestamp" : 1746790579000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "moved all implementations to toml\u000a",
        "date" : "2025-05-09 17:06:19 +0530",
        "id" : "16033046a3ec08f4c5fb87571458ad975aa178e0",
        "msg" : "moved all implementations to toml",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModelFun.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppBar.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/applauncher/AppLauncherScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/applauncher/AppLauncherScreen.kt"
        ],
        "commitId" : "5fb9040fe4ed27d769c4eea86d20e302f150b696",
        "timestamp" : 1746793673000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Common base model\u000a",
        "date" : "2025-05-09 17:57:53 +0530",
        "id" : "5fb9040fe4ed27d769c4eea86d20e302f150b696",
        "msg" : "Common base model",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/applauncher/AppLauncherScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModelFun.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/applauncher/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppBar.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModelFun.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/appsdetail/AppsDetailScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/applauncher/AppLauncherScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/appsdetail/AppsDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppBar.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/applauncher/AppLauncherScreen.kt"
        ],
        "commitId" : "2a3289982c6e8f60bea8f573a6e983139c6f2258",
        "timestamp" : 1746894260000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Common base model- and title set\u000a",
        "date" : "2025-05-10 21:54:20 +0530",
        "id" : "2a3289982c6e8f60bea8f573a6e983139c6f2258",
        "msg" : "Common base model- and title set",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModelFun.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/appsdetail/AppsDetailScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppBar.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/appsdetail/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/applauncher/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/applauncher/AppLauncherScreenViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/enterlink/EnterLinkScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/assignments/AssignmentScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/report/ReportScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/appstate/AppUiState.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/enterlink/EnterLnkScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/clazz/ClazzScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/applauncher/AppLauncherScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/applist/AppListScreen.kt",
          "composeApp/src/commonMain/composeResources/values/strings.xml",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/applauncher/AppLauncherScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/clazz/ClazzScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/assignments/AssignmentScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppBar.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/applist/AppListScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/report/ReportScreen.kt"
        ],
        "commitId" : "52fab1cfd020fb5ece8fdd37c64a2be87e4648f5",
        "timestamp" : 1746898344000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Have created a bas view mdoel and have set the AppUi state and fab ui state in viewmodel as required\u000abut in viewmodel using strings hardcode as the composable strings can be used inside composable function will be working on that\u000a",
        "date" : "2025-05-10 23:02:24 +0530",
        "id" : "52fab1cfd020fb5ece8fdd37c64a2be87e4648f5",
        "msg" : "Have created a bas view mdoel and have set the AppUi state and fab ui state in viewmodel as required",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/clazz/ClazzScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/applist/AppListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppBar.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/applauncher/AppLauncherScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/assignments/AssignmentScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/clazz/ClazzScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/enterlink/EnterLinkScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/report/ReportScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/applist/AppListScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/applauncher/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/appstate/AppUiState.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/assignments/AssignmentScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/report/ReportScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/enterlink/EnterLnkScreenViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/appsdetail/AppsDetailScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/applist/AppListScreen.kt",
          "composeApp/src/commonMain/composeResources/values/strings.xml",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/clazz/ClazzScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/assignments/AssignmentScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/appsdetail/AppsDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/report/ReportScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/enterlink/EnterLnkScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/report/ReportScreen.kt"
        ],
        "commitId" : "72ee7c58559643880d46a9b890b8431f57b38f84",
        "timestamp" : 1746898768000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "removed unwanted imports\u000a",
        "date" : "2025-05-10 23:09:28 +0530",
        "id" : "72ee7c58559643880d46a9b890b8431f57b38f84",
        "msg" : "removed unwanted imports",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/report/ReportScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/appsdetail/AppsDetailScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/assignments/AssignmentScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/report/ReportScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/clazz/ClazzScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/enterlink/EnterLnkScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/appsdetail/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/applist/AppListScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/enterlink/EnterLinkScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/assignments/AssignmentScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/appsdetail/AppsDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/report/ReportScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/App.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/component/Resources.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/enterlink/EnterLnkScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/clazz/ClazzScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/applauncher/AppLauncherScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/appsdetail/AppsDetailScreenViewModel.kt",
          "composeApp/src/commonMain/composeResources/values/strings.xml",
          "composeApp/build.gradle.kts",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/applauncher/AppLauncherScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/clazz/ClazzScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/assignments/AssignmentScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/applist/AppListScreenViewModel.kt"
        ],
        "commitId" : "921c5d6fd0e1f933e9d9e3e1bbec09cafde47e02",
        "timestamp" : 1747036512000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Used strings.xml resource for all the string hardcoded values.\u000aCreated a base viewmodel and used it\u000aUi done for -APpLauncherScreen,AppListScreen,EnterLinkScreen and AppsDetailScreen\u000a",
        "date" : "2025-05-12 13:25:12 +0530",
        "id" : "921c5d6fd0e1f933e9d9e3e1bbec09cafde47e02",
        "msg" : "Used strings.xml resource for all the string hardcoded values.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/App.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/clazz/ClazzScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/report/ReportScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/applauncher/AppLauncherScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/assignments/AssignmentScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/applist/AppListScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/enterlink/EnterLnkScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/enterlink/EnterLinkScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/component/Resources.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/clazz/ClazzScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/assignments/AssignmentScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/applauncher/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/appsdetail/AppsDetailScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/appsdetail/AppsDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/enterlink/EnterLnkScreenViewModel.kt"
        ],
        "commitId" : "7af3cb63d21da6fd478f1160e87fc4bb8d571478",
        "timestamp" : 1747036823000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Add mock regex for test\u000a",
        "date" : "2025-05-12 13:30:23 +0530",
        "id" : "7af3cb63d21da6fd478f1160e87fc4bb8d571478",
        "msg" : "Add mock regex for test",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/enterlink/EnterLnkScreenViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/applauncher/AppLauncherScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/appsdetail/AppsDetailScreen.kt"
        ],
        "commitId" : "e1a0e35d9eaa0b37c9bec32cb0b0e09202384533",
        "timestamp" : 1747134281000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Compose Navigation with safe args\u000a",
        "date" : "2025-05-13 16:34:41 +0530",
        "id" : "e1a0e35d9eaa0b37c9bec32cb0b0e09202384533",
        "msg" : "Compose Navigation with safe args",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/appsdetail/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/applauncher/AppLauncherScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/appsdetail/AppsDetailScreenViewModel.kt",
          "composeApp/src/commonMain/composeResources/values/strings.xml",
          "composeApp/src/commonMain/kotlin/world/respect/app/model/lessonlist/LessonListModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/appsdetail/AppsDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/model/appsdetail/AppsDetailModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/lessonlist/LessonListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessonlist/LessonListScreenViewModel.kt"
        ],
        "commitId" : "b6411eba990f0b4aa611a47ae67c71a93e68e475",
        "timestamp" : 1747817871000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Lesson List screen added\u000a",
        "date" : "2025-05-21 14:27:51 +0530",
        "id" : "b6411eba990f0b4aa611a47ae67c71a93e68e475",
        "msg" : "Lesson List screen added",
        "paths" : [
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/lessonlist/LessonListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessonlist/LessonListScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/appsdetail/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/model/appsdetail/AppsDetailModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/model/lessonlist/LessonListModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/appsdetail/AppsDetailScreenViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/appstate/AppUiState.kt",
          "composeApp/src/commonMain/composeResources/values/strings.xml",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppBar.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessonlist/LessonListScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/appstate/AppBarSearchUiState.kt"
        ],
        "commitId" : "aa521aee15b5c455591c8d779c621efe3f7d8fac",
        "timestamp" : 1747826912000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "added search icon in lesson list screen\u000a",
        "date" : "2025-05-21 16:58:32 +0530",
        "id" : "aa521aee15b5c455591c8d779c621efe3f7d8fac",
        "msg" : "added search icon in lesson list screen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppBar.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/appstate/AppUiState.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/appstate/AppBarSearchUiState.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessonlist/LessonListScreenViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/appsdetail/AppsDetailScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt",
          "composeApp/src/commonMain/composeResources/values/strings.xml",
          "composeApp/src/commonMain/kotlin/world/respect/app/model/lessonlist/LessonListModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/lessondetail/LessonDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/lessonlist/LessonListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessondetail/LessonDetailScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessonlist/LessonListScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/applauncher/AppLauncherScreen.kt"
        ],
        "commitId" : "01a5e3550ce3d0ea5b7462029fb521b2d5db1ab9",
        "timestamp" : 1747907105000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Lesson detail screen\u000a",
        "date" : "2025-05-22 15:15:05 +0530",
        "id" : "01a5e3550ce3d0ea5b7462029fb521b2d5db1ab9",
        "msg" : "Lesson detail screen",
        "paths" : [
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/lessondetail/LessonDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/appsdetail/AppsDetailScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessonlist/LessonListScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/lessonlist/LessonListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/applauncher/AppLauncherScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessondetail/LessonDetailScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/model/lessonlist/LessonListModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/enterlink/EnterLinkScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/lessonlist/LessonListScreen.kt",
          "composeApp/src/commonMain/composeResources/values/strings.xml",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessondetail/LessonDetailScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessonlist/LessonListScreenViewModel.kt"
        ],
        "commitId" : "a40204551d904eb36f929e5ab3742b4f9490fc3a",
        "timestamp" : 1747979020000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Lesson detail screen\u000a",
        "date" : "2025-05-23 11:13:40 +0530",
        "id" : "a40204551d904eb36f929e5ab3742b4f9490fc3a",
        "msg" : "Lesson detail screen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/enterlink/EnterLinkScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessondetail/LessonDetailScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/lessonlist/LessonListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessonlist/LessonListScreenViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/enterlink/EnterLinkScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/applauncher/AppLauncherScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/lessonlist/LessonListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/lessondetail/LessonDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/appsdetail/AppsDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/lessondetail/LessonDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessonlist/LessonListScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/applauncher/AppLauncherScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/applist/AppListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/appsdetail/AppsDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/lessonlist/LessonListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/applist/AppListScreen.kt"
        ],
        "commitId" : "4f188ea5bbea9716cf62ddab23cc1f733420b21e",
        "timestamp" : 1748000335000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Lesson detail screen\u000a",
        "date" : "2025-05-23 17:08:55 +0530",
        "id" : "4f188ea5bbea9716cf62ddab23cc1f733420b21e",
        "msg" : "Lesson detail screen",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/applauncher/AppLauncherScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/lessonlist/LessonListScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/enterlink/EnterLinkScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/lessondetail/LessonDetailScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/appsdetail/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/lessonlist/LessonListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessonlist/LessonListScreenViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/applist/AppListScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/appsdetail/AppsDetailScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/applist/AppListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/applauncher/AppLauncherScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/lessondetail/LessonDetailScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/composeResources/values/strings.xml",
          "composeApp/src/commonMain/kotlin/world/respect/app/appstate/FabUiState.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/applauncher/AppLauncherScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/appsdetail/AppsDetailScreen.kt"
        ],
        "commitId" : "8c0de03871b2ffd7f6ace540d2f10c0c2a279869",
        "timestamp" : 1748517744000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "UI fixes\u000a",
        "date" : "2025-05-29 16:52:24 +0530",
        "id" : "8c0de03871b2ffd7f6ace540d2f10c0c2a279869",
        "msg" : "UI fixes",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/appstate/FabUiState.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/appsdetail/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/applauncher/AppLauncherScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/composeResources/values/strings.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/composeResources/values/strings.xml"
        ],
        "commitId" : "c51b4da4cddec5ff8e4becb718a18bad7653013f",
        "timestamp" : 1748517911000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "UI fixes\u000a",
        "date" : "2025-05-29 16:55:11 +0530",
        "id" : "c51b4da4cddec5ff8e4becb718a18bad7653013f",
        "msg" : "UI fixes",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/composeResources/values/strings.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "gradle/libs.versions.toml"
        ],
        "commitId" : "eb3c54beb76e5127764110b6a517d582cd41a972",
        "timestamp" : 1748518732000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "merge\u000a",
        "date" : "2025-05-29 17:08:52 +0530",
        "id" : "eb3c54beb76e5127764110b6a517d582cd41a972",
        "msg" : "merge",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "shared/src/commonMain/kotlin/world/respect/domain/opds/model/OpdsFacet.kt",
          "composeApp/build.gradle.kts",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/lessonlist/LessonListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessonlist/LessonListScreenViewModel.kt"
        ],
        "commitId" : "0c3e47b503c2996559c588d110ea72fd664bfa5b",
        "timestamp" : 1749565194000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Lesson list filter using opdsfacet\u000a",
        "date" : "2025-06-10 19:49:54 +0530",
        "id" : "0c3e47b503c2996559c588d110ea72fd664bfa5b",
        "msg" : "Lesson list filter using opdsfacet",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "shared/src/commonMain/kotlin/world/respect/domain/opds/model/OpdsFacet.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/lessonlist/LessonListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessonlist/LessonListScreenViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/build.gradle.kts",
          "gradle/libs.versions.toml"
        ],
        "commitId" : "3e6561cb233aa8e1ac061b8bd980325bedaad258",
        "timestamp" : 1749565249000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "build gradle\u000a",
        "date" : "2025-06-10 19:50:49 +0530",
        "id" : "3e6561cb233aa8e1ac061b8bd980325bedaad258",
        "msg" : "build gradle",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/lessonlist/LessonListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/appstate/DisplayString.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessonlist/LessonListScreenViewModel.kt"
        ],
        "commitId" : "db205dc7465f2132c9ae0e771afa908f88cb651f",
        "timestamp" : 1749572951000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Lesson list screen data is using opds\u000a",
        "date" : "2025-06-10 21:59:11 +0530",
        "id" : "db205dc7465f2132c9ae0e771afa908f88cb651f",
        "msg" : "Lesson list screen data is using opds",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/lessonlist/LessonListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/appstate/DisplayString.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessonlist/LessonListScreenViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/appsdetail/AppsDetailScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/lessonlist/LessonListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/appsdetail/AppsDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/model/appsdetail/AppsDetailModel.kt"
        ],
        "commitId" : "f0e12b55fe0d82c88a38988c471e48798bbb9f5f",
        "timestamp" : 1749574128000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Lesson list screen data is using opds\u000a",
        "date" : "2025-06-10 22:18:48 +0530",
        "id" : "f0e12b55fe0d82c88a38988c471e48798bbb9f5f",
        "msg" : "Lesson list screen data is using opds",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/model/appsdetail/AppsDetailModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/appsdetail/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/appsdetail/AppsDetailScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/lessonlist/LessonListScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessonlist/LessonListScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/lessonlist/LessonListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/appsdetail/AppsDetailScreenViewModel.kt"
        ],
        "commitId" : "c0100f3d319a4ce49669ea4c20cbb01530a7188a",
        "timestamp" : 1749574304000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Lesson list screen data is using opds\u000a",
        "date" : "2025-06-10 22:21:44 +0530",
        "id" : "c0100f3d319a4ce49669ea4c20cbb01530a7188a",
        "msg" : "Lesson list screen data is using opds",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessonlist/LessonListScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/lessonlist/LessonListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/appsdetail/AppsDetailScreenViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/lessondetail/LessonDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/model/lessonlist/LessonListModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessondetail/LessonDetailScreenViewModel.kt"
        ],
        "commitId" : "60f89d62f0cc51e15c7509beaec9229f0e961d0a",
        "timestamp" : 1749577339000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "lesson detail list using opds\u000a",
        "date" : "2025-06-10 23:12:19 +0530",
        "id" : "60f89d62f0cc51e15c7509beaec9229f0e961d0a",
        "msg" : "lesson detail list using opds",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/lessondetail/LessonDetailScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/model/lessonlist/LessonListModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessondetail/LessonDetailScreenViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessondetail/LessonDetailScreenViewModel.kt"
        ],
        "commitId" : "bee2483379fd99e7352d405ae71bc7212f6258e4",
        "timestamp" : 1749577393000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "lesson detail list using opds\u000a",
        "date" : "2025-06-10 23:13:13 +0530",
        "id" : "bee2483379fd99e7352d405ae71bc7212f6258e4",
        "msg" : "lesson detail list using opds",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessondetail/LessonDetailScreenViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/applauncher/AppLauncherScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/lessonlist/LessonListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/lessondetail/LessonDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/detail/LessonDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/list/LessonListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessonlist/LessonListScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLnkScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/enterlink/EnterLnkScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/appsdetail/AppsDetailScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/applauncher/AppLauncherScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/appsdetail/AppsDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessondetail/LessonDetailScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/applist/AppListScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/applist/AppListScreen.kt"
        ],
        "commitId" : "7df264a20b213b73531979d4a96fa29f88213fbc",
        "timestamp" : 1749578548000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "folder name updated\u000a",
        "date" : "2025-06-10 23:32:28 +0530",
        "id" : "7df264a20b213b73531979d4a96fa29f88213fbc",
        "msg" : "folder name updated",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailScreenViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListScreenViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessondetail/LessonDetailScreenViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailScreenViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/lessonlist/LessonListScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessonlist/LessonListScreenViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/applist/AppListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/applauncher/AppLauncherScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/list/LessonListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLnkScreenViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/applauncher/AppLauncherScreenViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/enterlink/EnterLnkScreenViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/lessondetail/LessonDetailScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/appsdetail/AppsDetailScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListScreenViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherScreenViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/detail/LessonDetailScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/applist/AppListScreenViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/appsdetail/AppsDetailScreenViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt",
          "composeApp/src/androidMain/kotlin/world/respect/RespectApp.kt",
          "composeApp/src/commonMain/composeResources/values/strings.xml",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppBar.kt",
          "composeApp/src/androidMain/kotlin/world/respect/MainActivity.kt"
        ],
        "commitId" : "f132a7d3a40d97adac41c5df512d335b09e7dcfd",
        "timestamp" : 1750140362000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Removed unnecessary blank lines\u000a",
        "date" : "2025-06-17 11:36:02 +0530",
        "id" : "f132a7d3a40d97adac41c5df512d335b09e7dcfd",
        "msg" : "Removed unnecessary blank lines",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppBar.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/MainActivity.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/RespectApp.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailScreenViewModel.kt",
          "respect-datasource/build.gradle.kts",
          "composeApp/src/commonMain/kotlin/world/respect/app/model/appsdetail/AppsDetailModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/App.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt",
          "server/src/main/kotlin/world/respect/Application.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/appstate/DisplayString.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
        ],
        "commitId" : "0956d6952f08f20ca642c1f0371e7a88e07e17ee",
        "timestamp" : 1750351982000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "chnges\u000a",
        "date" : "2025-06-19 22:23:02 +0530",
        "id" : "0956d6952f08f20ca642c1f0371e7a88e07e17ee",
        "msg" : "chnges",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/appstate/DisplayString.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "server/src/main/kotlin/world/respect/Application.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/model/appsdetail/AppsDetailModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/App.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/DummyOpdsFeed.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/clazz/ClazzViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/assignments/AssignmentScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/report/ReportScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/model/lesson/DummyLessonList.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLnkScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/clazz/ClazzScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/assignments/AssignmentViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/clazz/ClazzScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/assignments/AssignmentScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/report/ReportViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLinkViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherScreenViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/report/ReportScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
        ],
        "commitId" : "2dccdf0a96a4330199c51328c75968ed121ad0ad",
        "timestamp" : 1750354876000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Lesson List - used the OpdsDataSource\u000acreated a class with dummy data and shown the list\u000a",
        "date" : "2025-06-19 23:11:16 +0530",
        "id" : "2dccdf0a96a4330199c51328c75968ed121ad0ad",
        "msg" : "Lesson List - used the OpdsDataSource",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailScreenViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListScreenViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/report/ReportViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListScreenViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/DummyOpdsFeed.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/clazz/ClazzScreenViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLinkViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/report/ReportScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherScreenViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/assignments/AssignmentScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/clazz/ClazzScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLnkScreenViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/assignments/AssignmentViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/report/ReportScreenViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/assignments/AssignmentScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/clazz/ClazzViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/model/lesson/DummyLessonList.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/detail/LessonDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/list/LessonListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLinkViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
        ],
        "commitId" : "cf62e7c673551dfd00482e30e3380682bc1e4c29",
        "timestamp" : 1750396105000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "ViewModel name updated\u000a",
        "date" : "2025-06-20 10:38:25 +0530",
        "id" : "cf62e7c673551dfd00482e30e3380682bc1e4c29",
        "msg" : "ViewModel name updated",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLinkViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/detail/LessonDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/list/LessonListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/DummyOpdsFeed.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/model/lesson/DummyLessonList.kt"
        ],
        "commitId" : "62d8b7e6423dc0a9e41018039a896f92715dce15",
        "timestamp" : 1750396753000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Lesson List\u000a",
        "date" : "2025-06-20 10:49:13 +0530",
        "id" : "62d8b7e6423dc0a9e41018039a896f92715dce15",
        "msg" : "Lesson List",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/DummyOpdsFeed.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/model/lesson/DummyLessonList.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/model/applist/DummyAppDataSource.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/model/lesson/DummyLessonList.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/App.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/model/lesson/DummyOpdsDataSource.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
        ],
        "commitId" : "46ca5b2a2685a7fdd1ad2da9cf526925fb09f09c",
        "timestamp" : 1750407883000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "LessonList\u000aAppList\u000a",
        "date" : "2025-06-20 13:54:43 +0530",
        "id" : "46ca5b2a2685a7fdd1ad2da9cf526925fb09f09c",
        "msg" : "LessonList",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/App.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/model/lesson/DummyOpdsDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/model/lesson/DummyLessonList.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/model/applist/DummyAppDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt"
        ],
        "commitId" : "760b581ff10d115a01575fd049a5f375b71368f9",
        "timestamp" : 1750407998000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "LessonList\u000aAppList\u000a",
        "date" : "2025-06-20 13:56:38 +0530",
        "id" : "760b581ff10d115a01575fd049a5f375b71368f9",
        "msg" : "LessonList",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
        ],
        "commitId" : "d0ac1e41a7c28031f10e797baeaf1a1a24e68f63",
        "timestamp" : 1750413815000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Pass manifestUrl (learningUnits) to app detail screen from app list screen\u000a",
        "date" : "2025-06-20 15:33:35 +0530",
        "id" : "d0ac1e41a7c28031f10e797baeaf1a1a24e68f63",
        "msg" : "Pass manifestUrl (learningUnits) to app detail screen from app list screen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/report/ReportViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLinkViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
        ],
        "commitId" : "9706ec1215615cba7e85a8ea56543e9ba92b2965",
        "timestamp" : 1750663424000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "This commit refactors the `AppLauncherViewModel`, `AppListViewModel`, and `LessonListViewModel` to move the data loading logic from separate `loadData` functions into the `init` block.\u000a\u000aAdditionally, the mock regex for URL validation in `EnterLinkViewModel` has been removed and now always returns true for testing purposes.\u000a\u000aMinor formatting and code style adjustments have also been made across several files.\u000a",
        "date" : "2025-06-23 12:53:44 +0530",
        "id" : "9706ec1215615cba7e85a8ea56543e9ba92b2965",
        "msg" : "This commit refactors the `AppLauncherViewModel`, `AppListViewModel`, and `LessonListViewModel` to move the data loading logic from separate `loadData` functions into the `init` block.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLinkViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/report/ReportViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/list/LessonListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/detail/LessonDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
        ],
        "commitId" : "c66f7938601025f9842606b8aa578a64bd14f120",
        "timestamp" : 1750672502000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Resolved some comments\u000a",
        "date" : "2025-06-23 15:25:02 +0530",
        "id" : "c66f7938601025f9842606b8aa578a64bd14f120",
        "msg" : "Resolved some comments",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/detail/LessonDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/list/LessonListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/model/applist/DummyAppDataSource.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/compatibleapps/CompatibleAppsDataSource.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
        ],
        "commitId" : "9c73e74c9541558d78f62cb86b9a6f0535585a52",
        "timestamp" : 1750674643000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Used appDataSource.getAddableApps to fetch apps\u000a\u000aUsed getAddableApps in AppLauncherViewModel and AppListViewModel to fetch a list of addable apps.\u000aImplemented getAddableApps in DummyAppDataSource to emit a list of dummy apps.\u000aUpdated the return type of getAddableApps in CompatibleAppsDataSource to Flow<DataResult<List<RespectAppManifest>>>.\u000a",
        "date" : "2025-06-23 16:00:43 +0530",
        "id" : "9c73e74c9541558d78f62cb86b9a6f0535585a52",
        "msg" : "Used appDataSource.getAddableApps to fetch apps",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/model/applist/DummyAppDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/compatibleapps/CompatibleAppsDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/compatibleapps/CompatibleAppDataSourceRepository.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/DataResult.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/compatibleapps/model/RespectAppManifest.kt",
          "respect-datasource-sqldelight/build.gradle.kts",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/RespectAppDataSourceLocal.kt",
          "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/RespectAppDataSourceRepository.kt",
          "respect-datasource-repository/build.gradle.kts",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/compatibleapps/CompatibleAppsDataSourceLocal.kt",
          "settings.gradle.kts",
          "respect-datasource-sqldelight/src/main/sqldelight/world/respect/datasource/sqldelight/CompatibleAppEntity.sq",
          "gradle/libs.versions.toml",
          "respect-datasource/README.md",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/compatibleapps/CompatibleAppsDataSource.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/DataLoadMetaInfo.kt",
          "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/ext/FlowExt.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/DataLoadState.kt",
          "respect-datasource-sqldelight/src/commonMain/kotlin/world/respect/datasource/sqldelight/RespectAppDataSourceSqld.kt",
          "respect-datasource-http/src/commonMain/kotlin/world/respect/datasource/http/compatibleapps/CompatibleAppDataSourceHttp.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/OpdsDataSource.kt",
          "respect-datasource-http/src/commonMain/kotlin/world/respect/datasource/http/RespectAppDataSourceHttp.kt",
          "respect-datasource-http/build.gradle.kts",
          "respect-datasource-sqldelight/src/commonMain/kotlin/world/respect/datasource/sqldelight/compatibleapps/CompatibleAppAdapters.kt",
          "respect-datasource-repository/src/jvmTest/kotlin/world/respect/datasource/repository/RespectAppDataSourceRepositoryTest.kt",
          "respect-datasource-sqldelight/src/commonMain/kotlin/world/respect/datasource/sqldelight/compatibleapps/CompatibleAppsDataSourceSqld.kt"
        ],
        "commitId" : "ff47856492ebc1faaa78c22f4dc81fed237f1f62",
        "timestamp" : 1750693694000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Work in progress offline-first repository design.\u000a",
        "date" : "2025-06-23 19:48:14 +0400",
        "id" : "ff47856492ebc1faaa78c22f4dc81fed237f1f62",
        "msg" : "Work in progress offline-first repository design.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/RespectAppDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/RespectAppDataSourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-sqldelight/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/compatibleapps/CompatibleAppDataSourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-repository/src/jvmTest/kotlin/world/respect/datasource/repository/RespectAppDataSourceRepositoryTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-sqldelight/src/commonMain/kotlin/world/respect/datasource/sqldelight/compatibleapps/CompatibleAppAdapters.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-sqldelight/src/commonMain/kotlin/world/respect/datasource/sqldelight/RespectAppDataSourceSqld.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-repository/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-sqldelight/src/main/sqldelight/world/respect/datasource/sqldelight/CompatibleAppEntity.sq"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/DataLoadState.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/compatibleapps/model/RespectAppManifest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource/README.md"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-http/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/DataResult.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/OpdsDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/compatibleapps/CompatibleAppsDataSourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/compatibleapps/CompatibleAppsDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/ext/FlowExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-http/src/commonMain/kotlin/world/respect/datasource/http/RespectAppDataSourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-http/src/commonMain/kotlin/world/respect/datasource/http/compatibleapps/CompatibleAppDataSourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-sqldelight/src/commonMain/kotlin/world/respect/datasource/sqldelight/compatibleapps/CompatibleAppsDataSourceSqld.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/DataLoadMetaInfo.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/build.gradle.kts",
          "gradle/libs.versions.toml"
        ],
        "commitId" : "4eb4a373fde5745c9d58f0b3e5bed8c682445594",
        "timestamp" : 1750744814000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "changes\u000a",
        "date" : "2025-06-24 11:30:14 +0530",
        "id" : "4eb4a373fde5745c9d58f0b3e5bed8c682445594",
        "msg" : "changes",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailViewModel.kt",
          "composeApp/build.gradle.kts",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/detail/LessonDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
        ],
        "commitId" : "252310b7d4407a56b3dc81961c9f92ffa9c3e15d",
        "timestamp" : 1750763133000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "detail\u000a",
        "date" : "2025-06-24 16:35:33 +0530",
        "id" : "252310b7d4407a56b3dc81961c9f92ffa9c3e15d",
        "msg" : "detail",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/detail/LessonDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailViewModel.kt"
        ],
        "commitId" : "e753f84c8ea0dc089a80afdee62b5c21d0da90aa",
        "timestamp" : 1750763238000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "detail\u000a",
        "date" : "2025-06-24 16:37:18 +0530",
        "id" : "e753f84c8ea0dc089a80afdee62b5c21d0da90aa",
        "msg" : "detail",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/compatibleapps/CompatibleAppDataSourceRepository.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/compatibleapps/model/RespectAppManifest.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/compatibleapps/CompatibleAppsDataSourceLocal.kt",
          "respect-datasource-sqldelight/src/main/sqldelight/world/respect/datasource/sqldelight/CompatibleAppEntity.sq",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/ext/HttpClientExt.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/DataLoadMetaInfo.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/compatibleapps/CompatibleAppsDataSource.kt",
          "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/ext/FlowExt.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/DataLoadState.kt",
          "respect-datasource-http/src/commonMain/kotlin/world/respect/datasource/http/compatibleapps/CompatibleAppDataSourceHttp.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/ext/HttpHeadersExt.kt",
          "respect-datasource-sqldelight/src/commonMain/kotlin/world/respect/datasource/sqldelight/compatibleapps/CompatibleAppAdapters.kt",
          "respect-datasource-repository/src/jvmTest/kotlin/world/respect/datasource/repository/RespectAppDataSourceRepositoryTest.kt",
          "respect-datasource-sqldelight/src/commonMain/kotlin/world/respect/datasource/sqldelight/compatibleapps/CompatibleAppsDataSourceSqld.kt"
        ],
        "commitId" : "9bfe8fc410f062b22bb736f183c07bfc6271ac24",
        "timestamp" : 1750782690000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Work in progress offline-first repository design.\u000a",
        "date" : "2025-06-24 20:31:30 +0400",
        "id" : "9bfe8fc410f062b22bb736f183c07bfc6271ac24",
        "msg" : "Work in progress offline-first repository design.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/ext/FlowExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/DataLoadMetaInfo.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/ext/HttpClientExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/compatibleapps/model/RespectAppManifest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-repository/src/jvmTest/kotlin/world/respect/datasource/repository/RespectAppDataSourceRepositoryTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-sqldelight/src/commonMain/kotlin/world/respect/datasource/sqldelight/compatibleapps/CompatibleAppAdapters.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-sqldelight/src/commonMain/kotlin/world/respect/datasource/sqldelight/compatibleapps/CompatibleAppsDataSourceSqld.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-sqldelight/src/main/sqldelight/world/respect/datasource/sqldelight/CompatibleAppEntity.sq"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/compatibleapps/CompatibleAppsDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/ext/HttpHeadersExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-http/src/commonMain/kotlin/world/respect/datasource/http/compatibleapps/CompatibleAppDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/compatibleapps/CompatibleAppDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/DataLoadState.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/compatibleapps/CompatibleAppsDataSourceLocal.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
        ],
        "commitId" : "ab9fa9de4453d8e50c74b8e36170bbb9c3b68974",
        "timestamp" : 1750788058000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "passing RespectAppManifest from app launcher screen to app detail screen\u000a",
        "date" : "2025-06-24 23:30:58 +0530",
        "id" : "ab9fa9de4453d8e50c74b8e36170bbb9c3b68974",
        "msg" : "passing RespectAppManifest from app launcher screen to app detail screen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/model/lesson/DummyOpdsDataSource.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/detail/LessonDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
        ],
        "commitId" : "26e0a4f19edc926ed0bf60b3527e0ac4c62b1ec9",
        "timestamp" : 1750789120000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Fixing Ui\u000a",
        "date" : "2025-06-24 23:48:40 +0530",
        "id" : "26e0a4f19edc926ed0bf60b3527e0ac4c62b1ec9",
        "msg" : "Fixing Ui",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/detail/LessonDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/model/lesson/DummyOpdsDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt",
          "composeApp/build.gradle.kts",
          "gradle/libs.versions.toml",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
        ],
        "commitId" : "1db2e34aa208acb34ad2e0b8cc0cc7d9c588df10",
        "timestamp" : 1750835646000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Fixing Ui\u000a",
        "date" : "2025-06-25 12:44:06 +0530",
        "id" : "1db2e34aa208acb34ad2e0b8cc0cc7d9c588df10",
        "msg" : "Fixing Ui",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/model/applist/DummyAppDataSource.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt",
          "composeApp/build.gradle.kts",
          "composeApp/src/androidMain/AndroidManifest.xml",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLinkViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
        ],
        "commitId" : "2cb7555a959d3c2bf837991ab4467422f51a10ab",
        "timestamp" : 1750858509000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Refactored AppLauncherScreen and AppsDetailScreen to display app icons using AsyncImage (but image not rendering though the url is valid)\u000a\u000aAdded internet permission to AndroidManifest.\u000aUpdated EnterLinkScreen to show errors based on ViewModel state and reset error on input change.\u000aModified EnterLinkViewModel to handle button clicks and update UI state with error status.\u000aUpdated DummyAppDataSource with new icon URLs.\u000a",
        "date" : "2025-06-25 19:05:09 +0530",
        "id" : "2cb7555a959d3c2bf837991ab4467422f51a10ab",
        "msg" : "Refactored AppLauncherScreen and AppsDetailScreen to display app icons using AsyncImage (but image not rendering though the url is valid)",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/model/applist/DummyAppDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/androidMain/AndroidManifest.xml"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLinkViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/RespectAsyncImage.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/list/LessonListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
        ],
        "commitId" : "a35cd64e63f7d37ffc1ae8b3530ba70bea53f628",
        "timestamp" : 1750869692000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Introduced `RespectAsyncImage` composable for consistent image loading\u000a\u000aThis commit introduces a new composable function, `RespectAsyncImage`, which encapsulates the logic for loading images asynchronously using Coil. This promotes code reuse and ensures a consistent approach to image display across the application.\u000a\u000aThe `RespectAsyncImage` composable has been integrated into:\u000a- `AppLauncherScreen`: For displaying app icons.\u000a- `LessonListScreen`: For displaying lesson icons.\u000a- `AppsDetailScreen`: For displaying app icons.\u000a\u000aAdditionally, the `EnterLinkScreen` has been updated to use the `isError` state from its `ViewModel` to control the error display of the link input field.\u000a",
        "date" : "2025-06-25 22:11:32 +0530",
        "id" : "a35cd64e63f7d37ffc1ae8b3530ba70bea53f628",
        "msg" : "Introduced `RespectAsyncImage` composable for consistent image loading",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/list/LessonListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/RespectAsyncImage.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/navigation/NavCommand.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/clazz/ClazzViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/navigation/RespectComposeNavController.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/App.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt",
          "gradle/libs.versions.toml",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModelFun.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/assignments/AssignmentViewModel.kt",
          "composeApp/build.gradle.kts",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/report/ReportViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/navigation/NavCommandEffect.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLinkViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
        ],
        "commitId" : "f85ab43bf4da3ed067cff6137efd06c81ae4331c",
        "timestamp" : 1750873586000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Basic implementation of app navigation.\u000a",
        "date" : "2025-06-25 21:46:26 +0400",
        "id" : "f85ab43bf4da3ed067cff6137efd06c81ae4331c",
        "msg" : "Basic implementation of app navigation.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/clazz/ClazzViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModelFun.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/navigation/NavCommand.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/navigation/NavCommandEffect.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/assignments/AssignmentViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLinkViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/App.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/report/ReportViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/navigation/RespectComposeNavController.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "gradle/libs.versions.toml",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
        ],
        "commitId" : "91d8310ab964de0e67096787de199b8d12d96714",
        "timestamp" : 1750923210000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Implemented navigation from AppsDetailScreen to LessonListScreen and LessonDetailScreen.\u000a",
        "date" : "2025-06-26 13:03:30 +0530",
        "id" : "91d8310ab964de0e67096787de199b8d12d96714",
        "msg" : "Implemented navigation from AppsDetailScreen to LessonListScreen and LessonDetailScreen.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
        ],
        "commitId" : "c22f606686ce83d4f0d45445d68cf2832bb218bb",
        "timestamp" : 1750924565000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "**AppListViewModel.kt:**\u000a- Added `onClickAddLink()` function to navigate to `EnterLink`.\u000a- Added `onClickApp(app: RespectAppManifest)` function to navigate to `AppsDetail`\u000a",
        "date" : "2025-06-26 13:26:05 +0530",
        "id" : "c22f606686ce83d4f0d45445d68cf2832bb218bb",
        "msg" : "**AppListViewModel.kt:**",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/list/LessonListScreen.kt"
        ],
        "commitId" : "10ee8e19235c680f648f692d1eaa6f5b291ea51b",
        "timestamp" : 1750925010000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : " LessonListScreen to navigate to LessonDetail\u000a",
        "date" : "2025-06-26 13:33:30 +0530",
        "id" : "10ee8e19235c680f648f692d1eaa6f5b291ea51b",
        "msg" : "LessonListScreen to navigate to LessonDetail",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/list/LessonListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/list/LessonListScreen.kt"
        ],
        "commitId" : "78e70702134fa3f49099f02cdf05de1dbc14d718",
        "timestamp" : 1750930004000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "The corresponding call in `LessonListScreen` has been updated to reflect this change. Additionally, the `onClickFilter` function is now passed as a parameter to the `LessonListScreen` composable.\u000a",
        "date" : "2025-06-26 14:56:44 +0530",
        "id" : "78e70702134fa3f49099f02cdf05de1dbc14d718",
        "msg" : "The corresponding call in `LessonListScreen` has been updated to reflect this change. Additionally, the `onClickFilter` function is now passed as a parameter to the `LessonListScreen` composable.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/list/LessonListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
        ],
        "commitId" : "930a92629168048ff1d19549e5b0354a822dda2c",
        "timestamp" : 1750931165000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Used RespectAsyncImage for app icons\u000a",
        "date" : "2025-06-26 15:16:05 +0530",
        "id" : "930a92629168048ff1d19549e5b0354a822dda2c",
        "msg" : "Used RespectAsyncImage for app icons",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/list/LessonListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
        ],
        "commitId" : "c535a89e4c35f5c205138f32c4993b2cb200c4cd",
        "timestamp" : 1750943275000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Used RespectAsyncImage for app icons\u000a",
        "date" : "2025-06-26 18:37:55 +0530",
        "id" : "c535a89e4c35f5c205138f32c4993b2cb200c4cd",
        "msg" : "Used RespectAsyncImage for app icons",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/list/LessonListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
        ],
        "commitId" : "1c3ebd57ad8a7f7089f4513d347a8c0e8eeb9f1f",
        "timestamp" : 1750944524000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Used RespectAsyncImage for app icons\u000a",
        "date" : "2025-06-26 18:58:44 +0530",
        "id" : "1c3ebd57ad8a7f7089f4513d347a8c0e8eeb9f1f",
        "msg" : "Used RespectAsyncImage for app icons",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
        ],
        "commitId" : "df592b04072d37ced2ab893cec9c022c52b3cbfb",
        "timestamp" : 1750945068000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Pass manifestUrl to app detail screen\u000a",
        "date" : "2025-06-26 19:07:48 +0530",
        "id" : "df592b04072d37ced2ab893cec9c022c52b3cbfb",
        "msg" : "Pass manifestUrl to app detail screen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
        ],
        "commitId" : "cc90455bbaa0dbc850d521f03d9d036372eb1668",
        "timestamp" : 1750945965000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Pass manifestUrl\u000a",
        "date" : "2025-06-26 19:22:45 +0530",
        "id" : "cc90455bbaa0dbc850d521f03d9d036372eb1668",
        "msg" : "Pass manifestUrl",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/detail/LessonDetailScreen.kt"
        ],
        "commitId" : "51b8f85ea35ab0daef8374a96956e0e0820de670",
        "timestamp" : 1751006962000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "icon\u000a",
        "date" : "2025-06-27 12:19:22 +0530",
        "id" : "51b8f85ea35ab0daef8374a96956e0e0820de670",
        "msg" : "icon",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/detail/LessonDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModelFun.kt",
          "composeApp/src/commonMain/kotlin/world/respect/DummyRepo.kt",
          "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "composeApp/build.gradle.kts",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/DummyRepoImpl.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/androidMain/kotlin/world/respect/RespectApp.kt",
          "gradle/libs.versions.toml"
        ],
        "commitId" : "9de42825e10a6b5da0a4201dfc1843b9e792c400",
        "timestamp" : 1751199786000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial implementation of Koin to provide dependency injection on Android\u000a",
        "date" : "2025-06-29 16:23:06 +0400",
        "id" : "9de42825e10a6b5da0a4201dfc1843b9e792c400",
        "msg" : "Initial implementation of Koin to provide dependency injection on Android",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/DummyRepo.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/RespectApp.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModelFun.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/DummyRepoImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/model/applist/DummyAppDataSource.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/model/applist/AppListModel.kt",
          "respect-datasource-sqldelight/build.gradle.kts",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/fakeds/FakeOpdsDataSource.kt",
          "composeApp/src/androidMain/kotlin/world/respect/RespectApp.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/fakeds/FakeAppDataSource.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/fakeds/FakeRespectAppDataSource.kt",
          "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "composeApp/build.gradle.kts",
          "composeApp/src/commonMain/kotlin/world/respect/app/model/applauncher/AppLauncherModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/model/appsdetail/AppsDetailModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/model/lesson/DummyOpdsDataSource.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
        ],
        "commitId" : "577e689810f27d0c8e621fbee6c55c858da3d364",
        "timestamp" : 1751204516000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update ViewModels to access datasource from dependency injection.\u000a",
        "date" : "2025-06-29 17:41:56 +0400",
        "id" : "577e689810f27d0c8e621fbee6c55c858da3d364",
        "msg" : "Update ViewModels to access datasource from dependency injection.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/model/lesson/DummyOpdsDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/RespectApp.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-sqldelight/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/model/applauncher/AppLauncherModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/fakeds/FakeRespectAppDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/model/appsdetail/AppsDetailModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/fakeds/FakeOpdsDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/model/applist/DummyAppDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/fakeds/FakeAppDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/model/applist/AppListModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/datasource/RespectAppDataSourceProvider.kt"
        ],
        "commitId" : "e4f1de7bd38165fb95ff8a76fe3353f13f5652b9",
        "timestamp" : 1751211543000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add DataSourceProvider interface\u000a",
        "date" : "2025-06-29 19:39:03 +0400",
        "id" : "e4f1de7bd38165fb95ff8a76fe3353f13f5652b9",
        "msg" : "Add DataSourceProvider interface",
        "paths" : [
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/datasource/RespectAppDataSourceProvider.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datasource-repository/src/jvmTest/kotlin/world/respect/datasource/repository/RespectAppDataSourceRepositoryTest.kt",
          "server/src/main/kotlin/world/respect/Application.kt"
        ],
        "commitId" : "990014681685898dba07a1bf3fd560a4ffaaa5b6",
        "timestamp" : 1751212432000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove kodein from Application.kt. Comment out RespectAppRepositoryTest.\u000a",
        "date" : "2025-06-29 19:53:52 +0400",
        "id" : "990014681685898dba07a1bf3fd560a4ffaaa5b6",
        "msg" : "Remove kodein from Application.kt. Comment out RespectAppRepositoryTest.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "server/src/main/kotlin/world/respect/Application.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-repository/src/jvmTest/kotlin/world/respect/datasource/repository/RespectAppDataSourceRepositoryTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/datasource/fakeds/FakeRespectAppDataSource.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/domain/account/RespectAccount.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/fakeds/FakeOpdsDataSource.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/fakeds/FakeAppDataSource.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/fakeds/FakeRespectAppDataSource.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/datasource/RespectAppDataSourceProvider.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/datasource/fakeds/FakeOpdsDataSource.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModel.kt",
          "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/datasource/fakeds/FakeRespectAppDataSourceProvider.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/datasource/fakeds/FakeAppDataSource.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
        ],
        "commitId" : "58878c8ca945e272f2dedb254c95fe7b60ba8b73",
        "timestamp" : 1751213509000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial design to use data source provider via Koin depdency injection.\u000a",
        "date" : "2025-06-29 20:11:49 +0400",
        "id" : "58878c8ca945e272f2dedb254c95fe7b60ba8b73",
        "msg" : "Initial design to use data source provider via Koin depdency injection.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/fakeds/FakeOpdsDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/datasource/fakeds/FakeRespectAppDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/fakeds/FakeRespectAppDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/fakeds/FakeAppDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/datasource/RespectAppDataSourceProvider.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/domain/account/RespectAccount.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/datasource/fakeds/FakeAppDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/datasource/fakeds/FakeRespectAppDataSourceProvider.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/datasource/fakeds/FakeOpdsDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/detail/LessonDetailScreen.kt"
        ],
        "commitId" : "5a5c1cc0ee4bd14753fa7016bf32686119ac173f",
        "timestamp" : 1751266814000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "**AppLauncher:**\u000a- Added a \"Remove\"and \"More info\" option to the app item's 3-dot menu in `AppLauncherScreen`.\u000a",
        "date" : "2025-06-30 12:30:14 +0530",
        "id" : "5a5c1cc0ee4bd14753fa7016bf32686119ac173f",
        "msg" : "**AppLauncher:**",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/detail/LessonDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/detail/LessonDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
        ],
        "commitId" : "34d96b9a370c8a9aac9c78b8ae73d21a26b54c28",
        "timestamp" : 1751267341000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "**AppLauncher:**\u000a- Added a \"Remove\"and \"More info\" option to the app item's 3-dot menu in `AppLauncherScreen`.\u000a",
        "date" : "2025-06-30 12:39:01 +0530",
        "id" : "34d96b9a370c8a9aac9c78b8ae73d21a26b54c28",
        "msg" : "**AppLauncher:**",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/detail/LessonDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/detail/LessonDetailScreen.kt"
        ],
        "commitId" : "e225adc90ada1f4e73768cc28949dc54afe894d3",
        "timestamp" : 1751267383000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Removed unused imports from LessonDetailScreen\u000a",
        "date" : "2025-06-30 12:39:43 +0530",
        "id" : "e225adc90ada1f4e73768cc28949dc54afe894d3",
        "msg" : "Removed unused imports from LessonDetailScreen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/detail/LessonDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/component/Resources.kt",
          "composeApp/src/commonMain/composeResources/values/strings.xml",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt",
          "gradle/libs.versions.toml",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
        ],
        "commitId" : "e8c1d498af97a561e1cf87344d56f092cf53ec1d",
        "timestamp" : 1751276316000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Refactor: Update string resources and remove unused files\".\u000a- Removed the unused `Resources.kt` interface.\u000a- Minor code cleanup  Removed unused dependencies from `gradle/libs.versions.toml`.\u000a",
        "date" : "2025-06-30 15:08:36 +0530",
        "id" : "e8c1d498af97a561e1cf87344d56f092cf53ec1d",
        "msg" : "Refactor: Update string resources and remove unused files\".",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/component/Resources.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt"
        ],
        "commitId" : "06799f0098f928f4ec0747ff8609a6475a4b3fb0",
        "timestamp" : 1751351793000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Refactored `EnterLinkScreen`\u000a",
        "date" : "2025-07-01 12:06:33 +0530",
        "id" : "06799f0098f928f4ec0747ff8609a6475a4b3fb0",
        "msg" : "Refactored `EnterLinkScreen`",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
        ],
        "commitId" : "f610b21735082f65c83126ad07c22170b52e051a",
        "timestamp" : 1751374742000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Change type on AppLauncherScreen.\u000a",
        "date" : "2025-07-01 16:59:02 +0400",
        "id" : "f610b21735082f65c83126ad07c22170b52e051a",
        "msg" : "Change type on AppLauncherScreen.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt"
        ],
        "commitId" : "992285c2bd5686cc5afde54bcca78d18d0a3b423",
        "timestamp" : 1751432613000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Pass opdsUrl to AppsDetail screen\u000a\u000aThe `opdsUrl` is now passed as an argument to the `AppsDetail` screen.\u000aThis allows the `AppsDetailViewModel` to load the OPDS feed using the provided `opdsUrl` instead of the `manifestUrl`.\u000a",
        "date" : "2025-07-02 10:33:33 +0530",
        "id" : "992285c2bd5686cc5afde54bcca78d18d0a3b423",
        "msg" : "Pass opdsUrl to AppsDetail screen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt"
        ],
        "commitId" : "6d04b42096dfba589b52f5a5d87487d11a94df5b",
        "timestamp" : 1751432816000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Refactor: Rename `opdsUrl` to `url` in `AppsDetail` and `LessonList`\u000a",
        "date" : "2025-07-02 10:36:56 +0530",
        "id" : "6d04b42096dfba589b52f5a5d87487d11a94df5b",
        "msg" : "Refactor: Rename `opdsUrl` to `url` in `AppsDetail` and `LessonList`",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/list/LessonListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
        ],
        "commitId" : "4970988346b3c8e67ca6531ba480ccd59329f827",
        "timestamp" : 1751438590000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Refactored navigation parameters and click handlers for app and lesson details.\u000a\u000aUpdated `AppListScreen` to pass `DataLoadState<RespectAppManifest>` on app click.\u000aModified `AppListViewModel` to handle `DataLoadState<RespectAppManifest>` and navigate to `AppsDetail` with `manifestUrl` and `url`.\u000aUpdated `AppsDetailViewModel` to fetch app details using `route.manifestUrl` and OPDS feed using `route.url`.\u000aModified `onClickLesson` in `AppsDetailViewModel` to pass necessary parameters (`selfLink`, `publicationSelfLink`, `url`, `identifier`) to `LessonDetail`.\u000aUpdated `LessonListViewModel` to fetch OPDS feed using `route.url` and pass necessary parameters to `LessonDetail` on lesson click.\u000aModified `LessonDetailViewModel` to use `route.publicationSelfLink` for loading OPDS publication and `route.url` for OPDS feed.\u000aUpdated navigation destination data classes `AppsDetail` and `LessonDetail` to include new parameters.\u000aUpdated `onClickLesson` in `AppsDetailScreen` and `LessonListScreen` to pass `OpdsPublication` object.\u000a",
        "date" : "2025-07-02 12:13:10 +0530",
        "id" : "4970988346b3c8e67ca6531ba480ccd59329f827",
        "msg" : "Refactored navigation parameters and click handlers for app and lesson details.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/list/LessonListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
        ],
        "commitId" : "694bbe80f59c0aa008728eab5ffa21fea435d4cb",
        "timestamp" : 1751440201000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Refactored `menuExpanded` state in AppLauncherScreen\u000a",
        "date" : "2025-07-02 12:40:01 +0530",
        "id" : "694bbe80f59c0aa008728eab5ffa21fea435d4cb",
        "msg" : "Refactored `menuExpanded` state in AppLauncherScreen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
        ],
        "commitId" : "4cfb011f4cb9626c3d75f654a470370b795fc75b",
        "timestamp" : 1751442857000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Refactor navigation parameters for AppsDetail and LessonList\u000a\u000a- AppsDetail now only requires `manifestUrl`. The `learningUnits` URL is fetched within `AppsDetailViewModel`.\u000a",
        "date" : "2025-07-02 13:24:17 +0530",
        "id" : "4cfb011f4cb9626c3d75f654a470370b795fc75b",
        "msg" : "Refactor navigation parameters for AppsDetail and LessonList",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
        ],
        "commitId" : "7149540ed1683b6fe04fbe9ad41ca2f67a4040ba",
        "timestamp" : 1751449334000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "The ViewModels now use this provider to obtain a `RespectAppDataSource` instance.\u000aIn `AppsDetailViewModel`, `collect` was changed to `collectLatest` for observing the `getApp` Flow.\u000a",
        "date" : "2025-07-02 15:12:14 +0530",
        "id" : "7149540ed1683b6fe04fbe9ad41ca2f67a4040ba",
        "msg" : "The ViewModels now use this provider to obtain a `RespectAppDataSource` instance.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailViewModel.kt"
        ],
        "commitId" : "541ae7eed0da17ac928078937f350b812036c41f",
        "timestamp" : 1751449798000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Renamed `opdsUrl` to `learningUnitsUrl` in `LessonList` and `LessonDetail` data classes.\u000a\u000aThis change affects `LessonListViewModel`, `LessonDetailViewModel`, and `AppsDetailViewModel` to reflect the new property name when navigating and loading data.\u000a",
        "date" : "2025-07-02 15:19:58 +0530",
        "id" : "541ae7eed0da17ac928078937f350b812036c41f",
        "msg" : "Renamed `opdsUrl` to `learningUnitsUrl` in `LessonList` and `LessonDetail` data classes.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt",
          "composeApp/src/commonMain/composeResources/values/strings.xml"
        ],
        "commitId" : "f6fbee17ffb1e9516d984e3486d4087312fbff4b",
        "timestamp" : 1751450881000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Added error handling for invalid app URLs\u000a\u000aA new string resource \"invalid_url\" was added.\u000aThe `AppLauncherViewModel` now displays a snackbar message if an app's URL is invalid when clicked.\u000a",
        "date" : "2025-07-02 15:38:01 +0530",
        "id" : "f6fbee17ffb1e9516d984e3486d4087312fbff4b",
        "msg" : "Added error handling for invalid app URLs",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/composeResources/values/strings.xml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
        ],
        "commitId" : "36d0cba50bbde0403eef6daefcad52d698888b5a",
        "timestamp" : 1751452982000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Display snackbar message in AppLauncherScreen when app URL is invalid\u000a",
        "date" : "2025-07-02 16:13:02 +0530",
        "id" : "36d0cba50bbde0403eef6daefcad52d698888b5a",
        "msg" : "Display snackbar message in AppLauncherScreen when app URL is invalid",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
        ],
        "commitId" : "aa24f80f31608ee0b69dda6cc69edbd3f35ced4f",
        "timestamp" : 1751453524000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : " AppDetailState in AppsDetailViewModel\u000a",
        "date" : "2025-07-02 16:22:04 +0530",
        "id" : "aa24f80f31608ee0b69dda6cc69edbd3f35ced4f",
        "msg" : "AppDetailState in AppsDetailViewModel",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
        ],
        "commitId" : "3ae2d9c82738c05594e69ee0fff540756af89094",
        "timestamp" : 1751453896000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Removed an unused import `FakeOpdsDataSource` from `LessonDetailViewModel`.\u000a",
        "date" : "2025-07-02 16:28:16 +0530",
        "id" : "3ae2d9c82738c05594e69ee0fff540756af89094",
        "msg" : "Removed an unused import `FakeOpdsDataSource` from `LessonDetailViewModel`.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "shared/src/commonMain/kotlin/world/respect/util/ext/UrlExt.kt",
          "shared/src/jvmTest/kotlin/world/respect/util/ext/UrlResolveTest.kt"
        ],
        "commitId" : "bbbb0e03bc6edf74b75ec94013d61493500970e4",
        "timestamp" : 1751464518000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add Url extension function to resolve links (that could be relative or absolute).\u000a",
        "date" : "2025-07-02 17:55:18 +0400",
        "id" : "bbbb0e03bc6edf74b75ec94013d61493500970e4",
        "msg" : "Add Url extension function to resolve links (that could be relative or absolute).",
        "paths" : [
          {
            "editType" : "add",
            "file" : "shared/src/commonMain/kotlin/world/respect/util/ext/UrlExt.kt"
          },
          {
            "editType" : "add",
            "file" : "shared/src/jvmTest/kotlin/world/respect/util/ext/UrlResolveTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/compatibleapps/CompatibleAppDataSourceRepository.kt",
          "respect-datasource-http/src/commonMain/kotlin/world/respect/datasource/http/compatibleapps/CompatibleAppDataSourceHttp.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/datasource/fakeds/FakeAppDataSource.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/compatibleapps/CompatibleAppsDataSource.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "respect-datasource-sqldelight/src/commonMain/kotlin/world/respect/datasource/sqldelight/compatibleapps/CompatibleAppsDataSourceSqld.kt"
        ],
        "commitId" : "60988f4b04be3aad5c2c9ace8b3f9beda192386d",
        "timestamp" : 1751467409000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Fix function return type to enable access to app manifest urls on launchpad.\u000a",
        "date" : "2025-07-02 18:43:29 +0400",
        "id" : "60988f4b04be3aad5c2c9ace8b3f9beda192386d",
        "msg" : "Fix function return type to enable access to app manifest urls on launchpad.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/compatibleapps/CompatibleAppsDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-http/src/commonMain/kotlin/world/respect/datasource/http/compatibleapps/CompatibleAppDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/datasource/fakeds/FakeAppDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-sqldelight/src/commonMain/kotlin/world/respect/datasource/sqldelight/compatibleapps/CompatibleAppsDataSourceSqld.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/compatibleapps/CompatibleAppDataSourceRepository.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "composeApp/build.gradle.kts",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt",
          "composeApp/src/androidMain/AndroidManifest.xml",
          "composeApp/src/commonMain/kotlin/world/respect/app/datasource/SingleDataSourceProvider.kt"
        ],
        "commitId" : "f267df5a376d502e8c21af13c74dabc83639a8f2",
        "timestamp" : 1751470478000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial use of real (http backed) datasource\u000a",
        "date" : "2025-07-02 19:34:38 +0400",
        "id" : "f267df5a376d502e8c21af13c74dabc83639a8f2",
        "msg" : "Initial use of real (http backed) datasource",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/androidMain/AndroidManifest.xml"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/datasource/SingleDataSourceProvider.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/androidMain/kotlin/world/respect/ViewModelFactory.kt"
        ],
        "commitId" : "59eca066ab344c86e4b8639cc37c74aa7679b5e8",
        "timestamp" : 1751470520000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove unused viewmodelfactory (replaced by using Koin dependency injection)\u000a",
        "date" : "2025-07-02 19:35:20 +0400",
        "id" : "59eca066ab344c86e4b8639cc37c74aa7679b5e8",
        "msg" : "Remove unused viewmodelfactory (replaced by using Koin dependency injection)",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/ViewModelFactory.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-util/build.gradle.kts",
          "shared/src/jvmTest/kotlin/world/respect/util/ext/UrlResolveTest.kt",
          "shared/build.gradle.kts",
          "settings.gradle.kts",
          "shared/src/commonMain/kotlin/world/respect/util/ext/UrlExt.kt",
          "respect-datasource-http/src/commonMain/kotlin/world/respect/datasource/http/compatibleapps/CompatibleAppDataSourceHttp.kt",
          "respect-lib-util/src/jvmTest/kotlin/world/respect/libutil/ext/UrlResolveTest.kt",
          "respect-datasource-http/build.gradle.kts",
          "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/UrlExt.kt"
        ],
        "commitId" : "9159ceae3390b0144200e2ca994196e30a96a56f",
        "timestamp" : 1751470616000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Create libutil module and add url resolve function there (such that it can be used by datasource modules).\u000a",
        "date" : "2025-07-02 19:36:56 +0400",
        "id" : "9159ceae3390b0144200e2ca994196e30a96a56f",
        "msg" : "Create libutil module and add url resolve function there (such that it can be used by datasource modules).",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-util/src/commonMain/kotlin/world/respect/libutil/ext/UrlExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-util/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/kotlin/world/respect/util/ext/UrlResolveTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-http/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/commonMain/kotlin/world/respect/util/ext/UrlExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-util/src/jvmTest/kotlin/world/respect/libutil/ext/UrlResolveTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "shared/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-http/src/commonMain/kotlin/world/respect/datasource/http/compatibleapps/CompatibleAppDataSourceHttp.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datasource-repository/src/jvmTest/kotlin/world/respect/datasource/repository/RespectAppDataSourceRepositoryTest.kt"
        ],
        "commitId" : "83be40ec275e58647866fd7a6caf2b74b5ca1300",
        "timestamp" : 1751471252000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Disable experimental test on repository.\u000a",
        "date" : "2025-07-02 19:47:32 +0400",
        "id" : "83be40ec275e58647866fd7a6caf2b74b5ca1300",
        "msg" : "Disable experimental test on repository.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datasource-repository/src/jvmTest/kotlin/world/respect/datasource/repository/RespectAppDataSourceRepositoryTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
        ],
        "commitId" : "703318179d3d31212475d64959dd5b72d0657c4f",
        "timestamp" : 1751525429000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update default manifestlist.json url.\u000a",
        "date" : "2025-07-03 10:50:29 +0400",
        "id" : "703318179d3d31212475d64959dd5b72d0657c4f",
        "msg" : "Update default manifestlist.json url.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt",
          "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/detail/LessonDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/list/LessonListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
        ],
        "commitId" : "e190e04fd720dbc15bea18c7364af16dbfaf55d0",
        "timestamp" : 1751527293000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Refactor - rename Lesson to LearningUnit to match the terminology that is used in the Respect specification.\u000a",
        "date" : "2025-07-03 11:21:33 +0400",
        "id" : "e190e04fd720dbc15bea18c7364af16dbfaf55d0",
        "msg" : "Refactor - rename Lesson to LearningUnit to match the terminology that is used in the Respect specification.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/list/LessonListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/detail/LessonDetailViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/lessons/detail/LessonDetailScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/lessons/list/LessonListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt",
          "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
        ],
        "commitId" : "d31856c5224b794ec9c6938e48e7205312fd8036",
        "timestamp" : 1751527896000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Refactor - rename Lesson to LearningUnit to match the terminology that is used in the Respect specification.\u000a",
        "date" : "2025-07-03 11:31:36 +0400",
        "id" : "d31856c5224b794ec9c6938e48e7205312fd8036",
        "msg" : "Refactor - rename Lesson to LearningUnit to match the terminology that is used in the Respect specification.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datasource-db/build.gradle.kts"
        ],
        "commitId" : "604ab2670f4748a99b0c0677e7de8c9c8c767a4f",
        "timestamp" : 1751528976000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add respect-datasource-db build.gradle.kts\u000a",
        "date" : "2025-07-03 11:49:36 +0400",
        "id" : "604ab2670f4748a99b0c0677e7de8c9c8c767a4f",
        "msg" : "Add respect-datasource-db build.gradle.kts",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-datasource-db/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
        ],
        "commitId" : "51bf2bb088fd1b46b9d514426faddf51cdd20bba",
        "timestamp" : 1751533290000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Pass selected lesson (OpdsPublication) from learning unit detail screen to viewmodel\u000a",
        "date" : "2025-07-03 14:31:30 +0530",
        "id" : "51bf2bb088fd1b46b9d514426faddf51cdd20bba",
        "msg" : "Pass selected lesson (OpdsPublication) from learning unit detail screen to viewmodel",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/build.gradle.kts",
          "gradle/libs.versions.toml",
          "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "composeApp/src/commonMain/kotlin/world/respect/navigation/RespectComposeNavController.kt"
        ],
        "commitId" : "b079ed21ced2fbd7f141ea0e5f8f8e87325ed26b",
        "timestamp" : 1751534803000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update Kotlin version to 2.2.0\u000a",
        "date" : "2025-07-03 13:26:43 +0400",
        "id" : "b079ed21ced2fbd7f141ea0e5f8f8e87325ed26b",
        "msg" : "Update Kotlin version to 2.2.0",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/navigation/RespectComposeNavController.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
        ],
        "commitId" : "fd87ecbf9140035a1546973cd2fc389dc07d2916",
        "timestamp" : 1751535535000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "The `LearningUnitListScreen` now displays the first image from the `publication.images` list if available.\u000a",
        "date" : "2025-07-03 15:08:55 +0530",
        "id" : "fd87ecbf9140035a1546973cd2fc389dc07d2916",
        "msg" : "The `LearningUnitListScreen` now displays the first image from the `publication.images` list if available.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/entities/CompatibleAppEntity.kt",
          "respect-datasource-db/schemas/world.respect.datasource.db.RespectDatabase/1.json",
          "respect-datasource-sqldelight/build.gradle.kts",
          "settings.gradle.kts",
          "respect-datasource-db/build.gradle.kts",
          "gradle/libs.versions.toml",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/daos/CompatibleAppEntityDao.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/RespectDatabase.kt"
        ],
        "commitId" : "aec490fa3534e5e5a79c9f06f6429215ec6ae42f",
        "timestamp" : 1751538955000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add room multiplatform database module.\u000a",
        "date" : "2025-07-03 14:35:55 +0400",
        "id" : "aec490fa3534e5e5a79c9f06f6429215ec6ae42f",
        "msg" : "Add room multiplatform database module.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/entities/CompatibleAppEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/RespectDatabase.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/daos/CompatibleAppEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-sqldelight/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/schemas/world.respect.datasource.db.RespectDatabase/1.json"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
        ],
        "commitId" : "1c10c8b1ab350e1f6bbeaa55da8dfcc5d08ec29b",
        "timestamp" : 1751539082000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Display screenshots in app detail screen\u000a",
        "date" : "2025-07-03 16:08:02 +0530",
        "id" : "1c10c8b1ab350e1f6bbeaa55da8dfcc5d08ec29b",
        "msg" : "Display screenshots in app detail screen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "gradle/libs.versions.toml",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
        ],
        "commitId" : "42f5be372a37aae23eb43169a041144af2c990cc",
        "timestamp" : 1751540588000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Removed unused dependencies and simplified data loading in `AppsDetailViewModel`.\u000a",
        "date" : "2025-07-03 16:33:08 +0530",
        "id" : "42f5be372a37aae23eb43169a041144af2c990cc",
        "msg" : "Removed unused dependencies and simplified data loading in `AppsDetailViewModel`.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt"
        ],
        "commitId" : "421c37c1275fbd4a8b768ff2a7adc5e0c4c75e5c",
        "timestamp" : 1751541805000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "The `learningUnitManifestUrl` passed to `LearningUnitDetail` is now the `opdsFeedUrl` from the route, instead of the \"self\" link from the UI state.\u000a\u000aAdditionally, `refererUrl` and `expectedIdentifier` in `LearningUnitDetail` are now nullable with default null values.\u000a",
        "date" : "2025-07-03 16:53:25 +0530",
        "id" : "421c37c1275fbd4a8b768ff2a7adc5e0c4c75e5c",
        "msg" : "The `learningUnitManifestUrl` passed to `LearningUnitDetail` is now the `opdsFeedUrl` from the route, instead of the \"self\" link from the UI state.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datasource-repository/build.gradle.kts",
          "respect-datasource/build.gradle.kts",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/RespectAppDataSourceDb.kt",
          "respect-datasource-db/build.gradle.kts",
          "gradle/libs.versions.toml",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/daos/CompatibleAppEntityDao.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/adapters/CompatbileAppAdapter.kt",
          "respect-datasource-repository/src/jvmTest/kotlin/world/respect/datasource/repository/RespectAppDataSourceRepositoryTest.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/CompatibleAppDataSourceDb.kt"
        ],
        "commitId" : "f90bdc4881ad70a7c62f1b74b880db0f396b292b",
        "timestamp" : 1751545206000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Work in progress on respect-datasource-db room module.\u000a",
        "date" : "2025-07-03 16:20:06 +0400",
        "id" : "f90bdc4881ad70a7c62f1b74b880db0f396b292b",
        "msg" : "Work in progress on respect-datasource-db room module.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/daos/CompatibleAppEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/adapters/CompatbileAppAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/RespectAppDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-repository/src/jvmTest/kotlin/world/respect/datasource/repository/RespectAppDataSourceRepositoryTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/CompatibleAppDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-repository/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/DummyRepoImpl.kt",
          "composeApp/src/commonMain/kotlin/world/respect/DummyRepo.kt",
          "composeApp/build.gradle.kts",
          "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
        ],
        "commitId" : "148c6480fbb49310990f5962e9615d569ef62498",
        "timestamp" : 1751557251000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Switch to using Room multiplatform db on composeApp\u000a",
        "date" : "2025-07-03 19:40:51 +0400",
        "id" : "148c6480fbb49310990f5962e9615d569ef62498",
        "msg" : "Switch to using Room multiplatform db on composeApp",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/DummyRepo.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/DummyRepoImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/compatibleapps/CompatibleAppDataSourceRepository.kt",
          "respect-datasource-sqldelight/build.gradle.kts",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/compatibleapps/CompatibleAppsDataSource.kt",
          "settings.gradle.kts",
          "respect-datasource-sqldelight/src/commonMain/kotlin/world/respect/datasource/sqldelight/RespectAppDataSourceSqld.kt",
          "respect-datasource-http/src/commonMain/kotlin/world/respect/datasource/http/compatibleapps/CompatibleAppDataSourceHttp.kt",
          "respect-datasource-sqldelight/src/main/sqldelight/world/respect/datasource/sqldelight/CompatibleAppEntity.sq",
          "gradle/libs.versions.toml",
          "respect-datasource-sqldelight/src/commonMain/kotlin/world/respect/datasource/sqldelight/compatibleapps/CompatibleAppAdapters.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/CompatibleAppDataSourceDb.kt",
          "respect-datasource-repository/src/jvmTest/kotlin/world/respect/datasource/repository/RespectAppDataSourceRepositoryTest.kt",
          "respect-datasource-sqldelight/src/commonMain/kotlin/world/respect/datasource/sqldelight/compatibleapps/CompatibleAppsDataSourceSqld.kt"
        ],
        "commitId" : "5fbb607a6d685c220871574e042ae763be7acb4d",
        "timestamp" : 1751558963000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update return types on compatibleappdatasource . Remove SQLDelight dependencies.\u000a",
        "date" : "2025-07-03 20:09:23 +0400",
        "id" : "5fbb607a6d685c220871574e042ae763be7acb4d",
        "msg" : "Update return types on compatibleappdatasource . Remove SQLDelight dependencies.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-datasource-sqldelight/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/CompatibleAppDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-sqldelight/src/commonMain/kotlin/world/respect/datasource/sqldelight/compatibleapps/CompatibleAppAdapters.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-sqldelight/src/commonMain/kotlin/world/respect/datasource/sqldelight/compatibleapps/CompatibleAppsDataSourceSqld.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-repository/src/jvmTest/kotlin/world/respect/datasource/repository/RespectAppDataSourceRepositoryTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-http/src/commonMain/kotlin/world/respect/datasource/http/compatibleapps/CompatibleAppDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/compatibleapps/CompatibleAppDataSourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-sqldelight/src/main/sqldelight/world/respect/datasource/sqldelight/CompatibleAppEntity.sq"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-sqldelight/src/commonMain/kotlin/world/respect/datasource/sqldelight/RespectAppDataSourceSqld.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/compatibleapps/CompatibleAppsDataSource.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "composeApp/build.gradle.kts",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
        ],
        "commitId" : "cdc92578a9d8a8e6a0243d292d8f34f421411827",
        "timestamp" : 1751559760000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Remove SQLDelight dependency / import line.\u000a",
        "date" : "2025-07-03 20:22:40 +0400",
        "id" : "cdc92578a9d8a8e6a0243d292d8f34f421411827",
        "msg" : "Remove SQLDelight dependency / import line.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
        ],
        "commitId" : "58176acb8c93072ba05a24dc51e614474fddc334",
        "timestamp" : 1751609245000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Fixed incorrect parameter passing to LearningUnitDetail\u000a\u000aIn LearningUnitListViewModel correctly passing publicationSelfLink as learningUnitManifestUrl and route.opdsFeedUrl as refererUrl.\u000a\u000aIn AppsDetailViewModel when navigating to LearningUnitDetail -\u000a`learningUnitManifestUrl` to `publicationSelfLink` and `refererUrl` to `uiState.value.appDetail?.learningUnits.toString()`.\u000a",
        "date" : "2025-07-04 11:37:25 +0530",
        "id" : "58176acb8c93072ba05a24dc51e614474fddc334",
        "msg" : "Fixed incorrect parameter passing to LearningUnitDetail",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
        ],
        "commitId" : "d6c115b74fe69a6798e8aa54a8707b1b7a18700c",
        "timestamp" : 1751613393000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "The LearningUnitDetail route is now populated with data directly from the OpdsPublication object when a lesson is clicked.\u000a",
        "date" : "2025-07-04 12:46:33 +0530",
        "id" : "d6c115b74fe69a6798e8aa54a8707b1b7a18700c",
        "msg" : "The LearningUnitDetail route is now populated with data directly from the OpdsPublication object when a lesson is clicked.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/ext/LangMapEntityExt.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/adapters/LangMapAdapter.kt",
          "respect-datasource-db/schemas/world.respect.datasource.db.RespectDatabase/1.json",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/entities/CompatibleAppEntity.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/entities/composites/CompatibleAppEntities.kt",
          "respect-datasource-repository/build.gradle.kts",
          "respect-lib-xxhash/build.gradle.kts",
          "settings.gradle.kts",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/daos/LangMapEntityDao.kt",
          "gradle/libs.versions.toml",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/RespectDatabase.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/adapters/CompatbileAppAdapter.kt",
          "respect-lib-xxhash/src/commonMain/kotlin/world/respect/libxxhash/XXStringHasher.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/RespectAppDataSourceDb.kt",
          "respect-datasource-db/build.gradle.kts",
          "respect-lib-xxhash/src/commonMain/kotlin/world/respect/libxxhash/jvmimpl/XXStringHasherCommonJvmImpl.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/CompatibleAppDataSourceDb.kt",
          "respect-datasource-repository/src/jvmTest/kotlin/world/respect/datasource/repository/RespectAppDataSourceRepositoryTest.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/entities/LangMapEntity.kt"
        ],
        "commitId" : "4d9c46e63462efc1bc65f67a6490a5b31b1eea76",
        "timestamp" : 1751645403000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add LangMapEntity.\u000a",
        "date" : "2025-07-04 20:10:03 +0400",
        "id" : "4d9c46e63462efc1bc65f67a6490a5b31b1eea76",
        "msg" : "Add LangMapEntity.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-xxhash/src/commonMain/kotlin/world/respect/libxxhash/XXStringHasher.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/RespectAppDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/RespectDatabase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/adapters/LangMapAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-repository/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/CompatibleAppDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-repository/src/jvmTest/kotlin/world/respect/datasource/repository/RespectAppDataSourceRepositoryTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/schemas/world.respect.datasource.db.RespectDatabase/1.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xxhash/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/entities/LangMapEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-xxhash/src/commonMain/kotlin/world/respect/libxxhash/jvmimpl/XXStringHasherCommonJvmImpl.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/entities/CompatibleAppEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/adapters/CompatbileAppAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/daos/LangMapEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/entities/composites/CompatibleAppEntities.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/ext/LangMapEntityExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/build.gradle.kts",
          "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
        ],
        "commitId" : "c4ccba972c1dc811b132586695a1df4b439b56b4",
        "timestamp" : 1751645944000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add dependencies to Koin module and merge langmapentity from datasource\u000a",
        "date" : "2025-07-04 20:19:04 +0400",
        "id" : "c4ccba972c1dc811b132586695a1df4b439b56b4",
        "msg" : "Add dependencies to Koin module and merge langmapentity from datasource",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/RespectAsyncImage.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLinkViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt",
          "gradle/libs.versions.toml",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
        ],
        "commitId" : "6ac469889dd38e9f8419cd4e1fa85e297444eff3",
        "timestamp" : 1751646669000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "This commit introduces several changes to improve the UI and ViewModel interactions in the app:\u000a",
        "date" : "2025-07-04 22:01:09 +0530",
        "id" : "6ac469889dd38e9f8419cd4e1fa85e297444eff3",
        "msg" : "This commit introduces several changes to improve the UI and ViewModel interactions in the app:",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/RespectAsyncImage.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLinkViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
        ],
        "commitId" : "ae34afbeee3b1720e2555582b3e5690e75e1643e",
        "timestamp" : 1751647898000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Refactored AppsDetailViewModel and AppsDetailScreen to use DataLoadState for appDetail.\u000a",
        "date" : "2025-07-04 22:21:38 +0530",
        "id" : "ae34afbeee3b1720e2555582b3e5690e75e1643e",
        "msg" : "Refactored AppsDetailViewModel and AppsDetailScreen to use DataLoadState for appDetail.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/adapters/LangMapAdapter.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/entities/CompatibleAppEntity.kt",
          "respect-lib-primarykeygen/build.gradle.kts",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/entities/composites/CompatibleAppEntities.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/ReadiumLinkEntityAdapter.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/entities/CompatibleAppEntity.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/adapters/CompatbileAppAdapter.kt",
          "respect-lib-primarykeygen/src/jvmTest/kotlin/world/respect/lib/primarykeygen/DoorPrimaryKeyGeneratorTest.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/SharedConverters.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/daos/LangMapEntityDao.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/daos/CompatibleAppEntityDao.kt",
          "gradle/libs.versions.toml",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/ext/LangMapEntityExt.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/adapters/LangMapAdapter.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/daos/LangMapEntityDao.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/ReadiumLinkEntity.kt",
          "respect-lib-primarykeygen/src/commonMain/kotlin/world/respect/lib/primarykeygen/ext/InstantExt.kt",
          "respect-lib-primarykeygen/src/commonMain/kotlin/world/respect/lib/primarykeygen/GenerateNodeId.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/CompatibleAppDataSourceDb.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/entities/LangMapEntity.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/ext/LangMapEntityExt.kt",
          "respect-datasource-db/schemas/world.respect.datasource.db.RespectDatabase/1.json",
          "settings.gradle.kts",
          "respect-lib-primarykeygen/src/commonMain/kotlin/world/respect/lib/primarykeygen/PrimaryKeyGenerator.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/RespectDatabase.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/adapters/CompatbileAppAdapter.kt",
          "respect-lib-primarykeygen/src/androidMain/kotlin/world/respect/lib/primarykeygen/GenerateNodeId.android.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/daos/CompatibleAppEntityDao.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/entities/LangMapEntity.kt",
          "respect-datasource-db/build.gradle.kts",
          "respect-lib-primarykeygen/src/jvmMain/kotlin/world/respect/lib/primarykeygen/GenerateNodeId.jvm.kt"
        ],
        "commitId" : "cf610ee03dc07870442413906ad373f75dafed51",
        "timestamp" : 1751815842000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Opds model work in progress:\u000aa) Add snowflake type primary key generator from Door\u000ab) Refactor respect-datasource-db into packages for opds and compatbile apps with common subpackage structures\u000ac) Add ReadiumLinkEntity.kt and adapters.\u000a",
        "date" : "2025-07-06 19:30:42 +0400",
        "id" : "cf610ee03dc07870442413906ad373f75dafed51",
        "msg" : "Opds model work in progress:",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/schemas/world.respect.datasource.db.RespectDatabase/1.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/CompatibleAppDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/entities/composites/CompatibleAppEntities.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/SharedConverters.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/daos/LangMapEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/ext/LangMapEntityExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/entities/CompatibleAppEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/ReadiumLinkEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/RespectDatabase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-primarykeygen/src/androidMain/kotlin/world/respect/lib/primarykeygen/GenerateNodeId.android.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/daos/CompatibleAppEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/daos/CompatibleAppEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/adapters/CompatbileAppAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/adapters/LangMapAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-primarykeygen/src/commonMain/kotlin/world/respect/lib/primarykeygen/GenerateNodeId.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-primarykeygen/src/commonMain/kotlin/world/respect/lib/primarykeygen/PrimaryKeyGenerator.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/entities/LangMapEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/ext/LangMapEntityExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/entities/CompatibleAppEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-primarykeygen/src/commonMain/kotlin/world/respect/lib/primarykeygen/ext/InstantExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/adapters/CompatbileAppAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/entities/LangMapEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-primarykeygen/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-primarykeygen/src/jvmTest/kotlin/world/respect/lib/primarykeygen/DoorPrimaryKeyGeneratorTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/adapters/LangMapAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/daos/LangMapEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/ReadiumLinkEntityAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-primarykeygen/src/jvmMain/kotlin/world/respect/lib/primarykeygen/GenerateNodeId.jvm.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/compatibleapps/CompatibleAppDataSourceRepository.kt",
          "respect-datasource-http/src/commonMain/kotlin/world/respect/datasource/http/compatibleapps/CompatibleAppDataSourceHttp.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/daos/CompatibleAppEntityDao.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/daos/LangMapEntityDao.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/CompatibleAppDataSourceDb.kt"
        ],
        "commitId" : "141cefab7a6c6b1cb32a5a8dbdf8792eaeadb634",
        "timestamp" : 1751873616000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add implementation to get individual respect app manifest in data layer.\u000a",
        "date" : "2025-07-07 11:33:36 +0400",
        "id" : "141cefab7a6c6b1cb32a5a8dbdf8792eaeadb634",
        "msg" : "Add implementation to get individual respect app manifest in data layer.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/CompatibleAppDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/daos/CompatibleAppEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-http/src/commonMain/kotlin/world/respect/datasource/http/compatibleapps/CompatibleAppDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/compatibleapps/CompatibleAppDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/daos/LangMapEntityDao.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/datasource/fakeds/FakeAppDataSource.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLinkViewModel.kt"
        ],
        "commitId" : "c330e4a367224e86a50ccba5abb2a5b54c90aa27",
        "timestamp" : 1751893848000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Modifications to viewmodels to use real datasource.\u000a",
        "date" : "2025-07-07 17:10:48 +0400",
        "id" : "c330e4a367224e86a50ccba5abb2a5b54c90aa27",
        "msg" : "Modifications to viewmodels to use real datasource.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLinkViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/datasource/fakeds/FakeAppDataSource.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/compatibleapps/CompatibleAppDataSourceRepository.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/adapters/LangMapAdapter.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/compatibleapps/CompatibleAppsDataSource.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/daos/LangMapEntityDao.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/daos/CompatibleAppEntityDao.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/ReadiumLinkEntityAdapter.kt",
          "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/ext/FlowExt.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/adapters/CompatbileAppAdapter.kt",
          "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/ext/DataLoadStateExt.kt",
          "respect-datasource-http/src/commonMain/kotlin/world/respect/datasource/http/compatibleapps/CompatibleAppDataSourceHttp.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/CompatibleAppDataSourceDb.kt"
        ],
        "commitId" : "3caee9ad3215fa6e450e9b60326db53b208aa501",
        "timestamp" : 1751894090000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Updates to CompatibleApp data source and related to allow app to use real data source.\u000a",
        "date" : "2025-07-07 17:14:50 +0400",
        "id" : "3caee9ad3215fa6e450e9b60326db53b208aa501",
        "msg" : "Updates to CompatibleApp data source and related to allow app to use real data source.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/compatibleapps/CompatibleAppsDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/ext/FlowExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/CompatibleAppDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/compatibleapps/CompatibleAppDataSourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/ext/DataLoadStateExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/daos/LangMapEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-http/src/commonMain/kotlin/world/respect/datasource/http/compatibleapps/CompatibleAppDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/adapters/LangMapAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/ReadiumLinkEntityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/adapters/CompatbileAppAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/daos/CompatibleAppEntityDao.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "gradle/libs.versions.toml"
        ],
        "commitId" : "174b3ebe6369d41b50e4e87798fba7dfa0e5bb18",
        "timestamp" : 1751894901000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Set AGP plugin to latest version\u000a",
        "date" : "2025-07-07 17:28:21 +0400",
        "id" : "174b3ebe6369d41b50e4e87798fba7dfa0e5bb18",
        "msg" : "Set AGP plugin to latest version",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLinkViewModel.kt"
        ],
        "commitId" : "44d9332cfa5de3fb52f368beb3defdb3c8ca6a1a",
        "timestamp" : 1751896810000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update EnterLink screen to follow pattern.\u000a",
        "date" : "2025-07-07 18:00:10 +0400",
        "id" : "44d9332cfa5de3fb52f368beb3defdb3c8ca6a1a",
        "msg" : "Update EnterLink screen to follow pattern.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLinkViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/components/UiText.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLinkViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/components/UiTextStringResource.kt"
        ],
        "commitId" : "673987636981af0ba7ef0466cd38e6f64615b44c",
        "timestamp" : 1751899338000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add UiText sealed class to allow a ViewModel to set text on UiState without requiring the use of coroutines.\u000a\u000aUpdate onClickNext in EnterLinkViewModel to check result.\u000a",
        "date" : "2025-07-07 18:42:18 +0400",
        "id" : "673987636981af0ba7ef0466cd38e6f64615b44c",
        "msg" : "Add UiText sealed class to allow a ViewModel to set text on UiState without requiring the use of coroutines.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/components/UiTextStringResource.kt"
          },
          {
            "editType" : "add",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/components/UiText.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLinkViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/compatibleapps/CompatibleAppDataSourceRepository.kt",
          "respect-datasource-http/src/commonMain/kotlin/world/respect/datasource/http/compatibleapps/CompatibleAppDataSourceHttp.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/ext/HttpClientExt.kt"
        ],
        "commitId" : "0d2dd801b4a7b03ef4b884389512ea7d4a0bff03",
        "timestamp" : 1751899387000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add initial error logic to HttpClient.getDataLoadResult\u000a",
        "date" : "2025-07-07 18:43:07 +0400",
        "id" : "0d2dd801b4a7b03ef4b884389512ea7d4a0bff03",
        "msg" : "Add initial error logic to HttpClient.getDataLoadResult",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/compatibleapps/CompatibleAppDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/ext/HttpClientExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-http/src/commonMain/kotlin/world/respect/datasource/http/compatibleapps/CompatibleAppDataSourceHttp.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
        ],
        "commitId" : "6d1178fd323871c1e2bfb4121be3a6394a5c784a",
        "timestamp" : 1751899665000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Use dataOrNull on AppsDetailViewModel.kt\u000a",
        "date" : "2025-07-07 18:47:45 +0400",
        "id" : "6d1178fd323871c1e2bfb4121be3a6394a5c784a",
        "msg" : "Use dataOrNull on AppsDetailViewModel.kt",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/ext/DataLoadStateExt.kt"
        ],
        "commitId" : "664aa97a066a8f5a85247cb1125b72e146678e6f",
        "timestamp" : 1751899677000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add dataOrNull function\u000a",
        "date" : "2025-07-07 18:47:57 +0400",
        "id" : "664aa97a066a8f5a85247cb1125b72e146678e6f",
        "msg" : "Add dataOrNull function",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/ext/DataLoadStateExt.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/RespectAppDataSourceDb.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsDataSourceDb.kt",
          "respect-datasource-http/src/commonMain/kotlin/world/respect/datasource/http/RespectAppDataSourceHttp.kt",
          "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/RespectAppDataSourceRepository.kt",
          "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/opds/OpdsDataSourceRepository.kt",
          "respect-datasource-http/src/commonMain/kotlin/world/respect/datasource/http/opds/OpdsDataSourceHttp.kt"
        ],
        "commitId" : "831b72f78cc43b785b42f36c81725baa24043854",
        "timestamp" : 1751957778000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add empty stubs for OpdsDataSource\u000a",
        "date" : "2025-07-08 10:56:18 +0400",
        "id" : "831b72f78cc43b785b42f36c81725baa24043854",
        "msg" : "Add empty stubs for OpdsDataSource",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/RespectAppDataSourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/opds/OpdsDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/RespectAppDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-http/src/commonMain/kotlin/world/respect/datasource/http/opds/OpdsDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-http/src/commonMain/kotlin/world/respect/datasource/http/RespectAppDataSourceHttp.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
        ],
        "commitId" : "f04175b32309a969c0fb3e64188e7d9dd70953ff",
        "timestamp" : 1751958507000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add empty stub\u000a",
        "date" : "2025-07-08 11:08:27 +0400",
        "id" : "f04175b32309a969c0fb3e64188e7d9dd70953ff",
        "msg" : "Add empty stub",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
        ],
        "commitId" : "7c12948f356d59e8720ed1a217e3c89a67bcd2fa",
        "timestamp" : 1751960736000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Change to using Url parameter type in app and lesson view models.\u000a",
        "date" : "2025-07-08 11:45:36 +0400",
        "id" : "7c12948f356d59e8720ed1a217e3c89a67bcd2fa",
        "msg" : "Change to using Url parameter type in app and lesson view models.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/datasource/fakeds/FakeOpdsDataSource.kt"
        ],
        "commitId" : "46fd8c2c65414bd30d0e2804eb9b19b3c1f46f60",
        "timestamp" : 1751960962000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Change to using Url parameter type in FakeOpdsDataSource.kt\u000a",
        "date" : "2025-07-08 11:49:22 +0400",
        "id" : "46fd8c2c65414bd30d0e2804eb9b19b3c1f46f60",
        "msg" : "Change to using Url parameter type in FakeOpdsDataSource.kt",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/datasource/fakeds/FakeOpdsDataSource.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/datasource/fakeds/FakeOpdsDataSource.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/datasource/fakeds/FakeAppDataSource.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
        ],
        "commitId" : "f1338dff844412c226b423b1d16796e29aa877d5",
        "timestamp" : 1751963119000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Change to using Url parameter type for all data source functions that use a Url (instead of String).\u000a",
        "date" : "2025-07-08 12:25:19 +0400",
        "id" : "f1338dff844412c226b423b1d16796e29aa877d5",
        "msg" : "Change to using Url parameter type for all data source functions that use a Url (instead of String).",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/datasource/fakeds/FakeOpdsDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/datasource/fakeds/FakeAppDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/compatibleapps/CompatibleAppDataSourceRepository.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsDataSourceDb.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/compatibleapps/CompatibleAppsDataSource.kt",
          "respect-datasource-http/src/commonMain/kotlin/world/respect/datasource/http/opds/OpdsDataSourceHttp.kt",
          "respect-datasource-http/src/commonMain/kotlin/world/respect/datasource/http/compatibleapps/CompatibleAppDataSourceHttp.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/OpdsDataSource.kt",
          "respect-datasource/README.md",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/ext/HttpClientExt.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/CompatibleAppDataSourceDb.kt",
          "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/opds/OpdsDataSourceRepository.kt"
        ],
        "commitId" : "d1f4428646b9b7f4b768f94bf877927d342920c8",
        "timestamp" : 1751963132000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Change to using Url parameter type for all data source functions that use a Url (instead of String).\u000a",
        "date" : "2025-07-08 12:25:32 +0400",
        "id" : "d1f4428646b9b7f4b768f94bf877927d342920c8",
        "msg" : "Change to using Url parameter type for all data source functions that use a Url (instead of String).",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/opds/OpdsDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource/README.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/OpdsDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-http/src/commonMain/kotlin/world/respect/datasource/http/opds/OpdsDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/compatibleapps/CompatibleAppsDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/ext/HttpClientExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-http/src/commonMain/kotlin/world/respect/datasource/http/compatibleapps/CompatibleAppDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/compatibleapps/CompatibleAppDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/CompatibleAppDataSourceDb.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
        ],
        "commitId" : "9bc3ca6f8671ccf17ea5e1583a7fad95eca8db60",
        "timestamp" : 1751973138000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add Skeleton code for learning unit list screen.\u000a",
        "date" : "2025-07-08 15:12:18 +0400",
        "id" : "9bc3ca6f8671ccf17ea5e1583a7fad95eca8db60",
        "msg" : "Add Skeleton code for learning unit list screen.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
        ],
        "commitId" : "91cf2489c613d968a4d97dc4fe1a992e70247d8b",
        "timestamp" : 1751973646000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "remove publication list from learning unit details .\u000a",
        "date" : "2025-07-08 16:50:46 +0530",
        "id" : "91cf2489c613d968a4d97dc4fe1a992e70247d8b",
        "msg" : "remove publication list from learning unit details .",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
        ],
        "commitId" : "0e46b3b750362fb5ef419379936a9403318aa60b",
        "timestamp" : 1751977481000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update LearningUnitListViewModel to use resolve function on href.\u000a",
        "date" : "2025-07-08 16:24:41 +0400",
        "id" : "0e46b3b750362fb5ef419379936a9403318aa60b",
        "msg" : "Update LearningUnitListViewModel to use resolve function on href.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLinkViewModel.kt",
          "gradle/libs.versions.toml",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
        ],
        "commitId" : "a2e4ef60aca4e5e3c1314717bf1ce549eb74de23",
        "timestamp" : 1751981698000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update AppDestination classes to use Url type where appropriate.\u000a",
        "date" : "2025-07-08 17:34:58 +0400",
        "id" : "a2e4ef60aca4e5e3c1314717bf1ce549eb74de23",
        "msg" : "Update AppDestination classes to use Url type where appropriate.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLinkViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
        ],
        "commitId" : "c90c6f0348a50127632925d5fa78808c9d6dcaa6",
        "timestamp" : 1751995667000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "AppLauncher Screen added key to item\u000a",
        "date" : "2025-07-08 22:57:47 +0530",
        "id" : "c90c6f0348a50127632925d5fa78808c9d6dcaa6",
        "msg" : "AppLauncher Screen added key to item",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
        ],
        "commitId" : "cafde9646bd6d8c26f919b9c2f742d3c45542b73",
        "timestamp" : 1751995743000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "AppLauncher Screen added key to item\u000a",
        "date" : "2025-07-08 22:59:03 +0530",
        "id" : "cafde9646bd6d8c26f919b9c2f742d3c45542b73",
        "msg" : "AppLauncher Screen added key to item",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
        ],
        "commitId" : "f0b98c5603902c24407aa4f0e4689169b0396f55",
        "timestamp" : 1751997213000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "AppDetail Screen added key\u000a",
        "date" : "2025-07-08 23:23:33 +0530",
        "id" : "f0b98c5603902c24407aa4f0e4689169b0396f55",
        "msg" : "AppDetail Screen added key",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
        ],
        "commitId" : "89922bf6dcdbaecc30b121de5d87fc8698875160",
        "timestamp" : 1751997408000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "style removed\u000a",
        "date" : "2025-07-08 23:26:48 +0530",
        "id" : "89922bf6dcdbaecc30b121de5d87fc8698875160",
        "msg" : "style removed",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect.db"
        ],
        "commitId" : "7e43f0c9cba1d494a33482007e2445ceb01d7097",
        "timestamp" : 1752047696000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "respect.db file\u000a",
        "date" : "2025-07-09 13:24:56 +0530",
        "id" : "7e43f0c9cba1d494a33482007e2445ceb01d7097",
        "msg" : "respect.db file",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect.db"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/adapters/LangMapAdapter.kt",
          "respect-datasource-db/schemas/world.respect.datasource.db.RespectDatabase/1.json",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/ReadiumLinkEntity.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/daos/LangMapEntityDao.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsPublicationEntityAdapter.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/ReadiumLinkEntityAdapter.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsTopParentType.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/entities/CompatibleAppEntity.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/entities/LangMapEntity.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/adapters/CompatbileAppAdapter.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/CompatibleAppDataSourceDb.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsPublicationEntity.kt"
        ],
        "commitId" : "438f0112adfa7692fe1c202ddbe1000d515676f3",
        "timestamp" : 1752047815000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update entities to use Enum instead of int constant to represent top parent type for entities (providing type safety).\u000a",
        "date" : "2025-07-09 11:56:55 +0400",
        "id" : "438f0112adfa7692fe1c202ddbe1000d515676f3",
        "msg" : "Update entities to use Enum instead of int constant to represent top parent type for entities (providing type safety).",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/entities/CompatibleAppEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/adapters/CompatbileAppAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/ReadiumLinkEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/entities/LangMapEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/ReadiumLinkEntityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/CompatibleAppDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/daos/LangMapEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsTopParentType.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsPublicationEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsPublicationEntityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/schemas/world.respect.datasource.db.RespectDatabase/1.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/adapters/LangMapAdapter.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datasource-db/schemas/world.respect.datasource.db.RespectDatabase/1.json",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsTopParentType.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/entities/LangMapEntity.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/SharedConverters.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsTypeConverters.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/ReadiumSubjectEntity.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/RespectDatabase.kt"
        ],
        "commitId" : "90d5a220e56ec1f3df883312ae99b513625de905",
        "timestamp" : 1752049716000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add type converters so enum fields will use an integer constant in database.\u000a",
        "date" : "2025-07-09 12:28:36 +0400",
        "id" : "90d5a220e56ec1f3df883312ae99b513625de905",
        "msg" : "Add type converters so enum fields will use an integer constant in database.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/ReadiumSubjectEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/SharedConverters.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/entities/LangMapEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsTypeConverters.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsTopParentType.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/RespectDatabase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/schemas/world.respect.datasource.db.RespectDatabase/1.json"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/CompatibleAppDataSourceDb.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/adapters/CompatbileAppAdapter.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/daos/LangMapEntityDao.kt"
        ],
        "commitId" : "c9cb45d211d0b01e93c6a6bbd2046af4aa978ac1",
        "timestamp" : 1752052154000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Minor fixes for RespectCompatibleAppAdapter and associated DAOs.\u000a",
        "date" : "2025-07-09 13:09:14 +0400",
        "id" : "c9cb45d211d0b01e93c6a6bbd2046af4aa978ac1",
        "msg" : "Minor fixes for RespectCompatibleAppAdapter and associated DAOs.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/adapters/CompatbileAppAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/CompatibleAppDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/daos/LangMapEntityDao.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
        ],
        "commitId" : "98e304244652596a3a1c33efb9f6d926f41ee1c2",
        "timestamp" : 1752054625000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "fixed navigation to app detail\u000a",
        "date" : "2025-07-09 15:20:25 +0530",
        "id" : "98e304244652596a3a1c33efb9f6d926f41ee1c2",
        "msg" : "fixed navigation to app detail",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
        ],
        "commitId" : "abd393cd818737b78a4cd5ec7391e720e427757b",
        "timestamp" : 1752054625000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "The items are displayed in the following order:\u000a- `navigation` items\u000a- `publications` items\u000a- `group` items\u000a",
        "date" : "2025-07-09 15:20:25 +0530",
        "id" : "abd393cd818737b78a4cd5ec7391e720e427757b",
        "msg" : "The items are displayed in the following order:",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsTypeConverters.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/ReadiumLinkEntity.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/ReadiumSubjectEntity.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsTopParentType.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/ReadiumSubjectEntityAdapters.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/entities/LangMapEntity.kt"
        ],
        "commitId" : "f24f13e1da149fbb2796347b67fbe2517bcb9e0c",
        "timestamp" : 1752056211000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add ReadiumSubject network model / entity adapters.\u000a",
        "date" : "2025-07-09 14:16:51 +0400",
        "id" : "f24f13e1da149fbb2796347b67fbe2517bcb9e0c",
        "msg" : "Add ReadiumSubject network model / entity adapters.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/ReadiumSubjectEntityAdapters.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/entities/LangMapEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsTopParentType.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsTypeConverters.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/ReadiumLinkEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/ReadiumSubjectEntity.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt",
          "respect-datasource-db/schemas/world.respect.datasource.db.RespectDatabase/2.json"
        ],
        "commitId" : "b3319ec2346932ab10450a00c50814e5092b26d9",
        "timestamp" : 1752064471000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "AppsDetail Screen added navigation and publication list\u000a\u000aAdded a new screen to display app details, including:\u000a- Navigation list\u000a- Publication list\u000a",
        "date" : "2025-07-09 18:04:31 +0530",
        "id" : "b3319ec2346932ab10450a00c50814e5092b26d9",
        "msg" : "AppsDetail Screen added navigation and publication list",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/schemas/world.respect.datasource.db.RespectDatabase/2.json"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsPublicationEntityAdapter.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/ReadiumLinkEntityAdapter.kt",
          "respect-datasource-db/src/jvmTest/resources/world/respect/datasource/db/opds/adapters/lesson001.json",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/entities/LangMapEntity.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/ext/ListExt.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/RespectDatabase.kt",
          "respect-datasource-db/src/jvmTest/kotlin/world/respect/datasource/db/opds/adapters/TestOpdsPublicationEntityAdapter.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsPublicationEntity.kt"
        ],
        "commitId" : "bd985ab173d665ed271a390270db6ee929796a1d",
        "timestamp" : 1752064903000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial implementation of converting from OpdsPublication model class to entity class.\u000a",
        "date" : "2025-07-09 16:41:43 +0400",
        "id" : "bd985ab173d665ed271a390270db6ee929796a1d",
        "msg" : "Initial implementation of converting from OpdsPublication model class to entity class.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/ext/ListExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/RespectDatabase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsPublicationEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/jvmTest/resources/world/respect/datasource/db/opds/adapters/lesson001.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsPublicationEntityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/ReadiumLinkEntityAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/jvmTest/kotlin/world/respect/datasource/db/opds/adapters/TestOpdsPublicationEntityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/entities/LangMapEntity.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
        ],
        "commitId" : "73aee09b808eaa0274de1d381d922ee6f72350ac",
        "timestamp" : 1752071826000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Make NavigationList clickable\u000a\u000aClicking on the NavigationList in the LearningUnitListScreen and AppsDetailScreen will now navigate to the LearningUnitDetailScreen.\u000a",
        "date" : "2025-07-09 20:07:06 +0530",
        "id" : "73aee09b808eaa0274de1d381d922ee6f72350ac",
        "msg" : "Make NavigationList clickable",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsFacetEntity.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsFacetAdapter.kt",
          "respect-datasource-db/schemas/world.respect.datasource.db.RespectDatabase/1.json",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsTopParentType.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/ReadiumLinkEntityAdapter.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsFeedMetadataEntityAdapter.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsTypeConverters.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/SharedConverters.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsParentType.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsFeedMetadataEntity.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/RespectDatabase.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsFeedAdapter.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsGroupEntity.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsFeedEntity.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsPublicationEntityAdapter.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/ReadiumLinkEntity.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/ReadiumSubjectEntity.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsGroupAdapter.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/ReadiumSubjectEntityAdapters.kt"
        ],
        "commitId" : "d3052635ccc91404bf769d215ccbde6831bb06a2",
        "timestamp" : 1752073292000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Improve ReadiumLinkEntity model\u000a\u000aPrevious entity did not allow sufficient differentiation between links that were children of the some opds publication or feed.\u000a\u000aConverted to using standard PropertyType that covers both when an ReadiumLink is joined to itself and when it is joined to other entities.\u000a",
        "date" : "2025-07-09 19:01:32 +0400",
        "id" : "d3052635ccc91404bf769d215ccbde6831bb06a2",
        "msg" : "Improve ReadiumLinkEntity model",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/ReadiumSubjectEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsFacetAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsFeedMetadataEntityAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsGroupAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsTypeConverters.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsFeedMetadataEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/SharedConverters.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/RespectDatabase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsFeedAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsFeedEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/schemas/world.respect.datasource.db.RespectDatabase/1.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsParentType.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsFacetEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsGroupEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsPublicationEntityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/ReadiumLinkEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/ReadiumSubjectEntityAdapters.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsTopParentType.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/ReadiumLinkEntityAdapter.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/adapters/LangMapAdapter.kt",
          "respect-datasource-db/schemas/world.respect.datasource.db.RespectDatabase/1.json",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsPublicationEntityAdapter.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/entities/LangMapEntity.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsFeedMetadataEntityAdapter.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/adapters/CompatbileAppAdapter.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsGroupAdapter.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsFeedMetadataEntity.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsFeedAdapter.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/ReadiumSubjectEntityAdapters.kt"
        ],
        "commitId" : "3f25abed938a6d2d3cc49f54594c12c3c2b80014",
        "timestamp" : 1752075950000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add prop foreign key property on LangMapEntity\u000a\u000aFlatten adapter Entities data classes to include only entities themselves.\u000a",
        "date" : "2025-07-09 19:45:50 +0400",
        "id" : "3f25abed938a6d2d3cc49f54594c12c3c2b80014",
        "msg" : "Add prop foreign key property on LangMapEntity",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsFeedMetadataEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/adapters/LangMapAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/entities/LangMapEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsFeedAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/adapters/CompatbileAppAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsFeedMetadataEntityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/ReadiumSubjectEntityAdapters.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsPublicationEntityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/schemas/world.respect.datasource.db.RespectDatabase/1.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsGroupAdapter.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
        ],
        "commitId" : "3210a78cba93afb8986eaf5be398c9cf431ce2cd",
        "timestamp" : 1752085014000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "The separate `onClickLesson` and `onClickNavigation` functions have been replaced with a single `onClickLearningUnit` function. This function now accepts a `href` string directly, simplifying the click handling and data flow for both publication and navigation items.\u000a\u000aThis change streamlines the code and makes the navigation logic more consistent across different parts of the application.\u000a",
        "date" : "2025-07-09 23:46:54 +0530",
        "id" : "3210a78cba93afb8986eaf5be398c9cf431ce2cd",
        "msg" : "The separate `onClickLesson` and `onClickNavigation` functions have been replaced with a single `onClickLearningUnit` function. This function now accepts a `href` string directly, simplifying the click handling and data flow for both publication and navigation items.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datasource-db/schemas/world.respect.datasource.db.RespectDatabase/1.json",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsPublicationEntityAdapter.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/ReadiumLinkEntity.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsFeedMetadataEntityAdapter.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsGroupAdapter.kt",
          "respect-datasource-db/src/jvmTest/kotlin/world/respect/datasource/db/opds/adapters/TestOpdsPublicationEntityAdapter.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsFeedAdapter.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsPublicationEntity.kt"
        ],
        "commitId" : "cc1a5fa6d445da1668a32e144bb95246f59b2dd4",
        "timestamp" : 1752130569000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add initial implementation of converting an OpdsFeed to/from database entities.\u000a",
        "date" : "2025-07-10 10:56:09 +0400",
        "id" : "cc1a5fa6d445da1668a32e144bb95246f59b2dd4",
        "msg" : "Add initial implementation of converting an OpdsFeed to/from database entities.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsPublicationEntityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsFeedMetadataEntityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/jvmTest/kotlin/world/respect/datasource/db/opds/adapters/TestOpdsPublicationEntityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/schemas/world.respect.datasource.db.RespectDatabase/1.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsFeedAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/ReadiumLinkEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsPublicationEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsGroupAdapter.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
        ],
        "commitId" : "1ee92b8a754eb32a622bd0cd13d048baa07e2c7e",
        "timestamp" : 1752131836000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "AppsDetail Screen added keys to items\u000a",
        "date" : "2025-07-10 12:47:16 +0530",
        "id" : "1ee92b8a754eb32a622bd0cd13d048baa07e2c7e",
        "msg" : "AppsDetail Screen added keys to items",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datasource-db/schemas/world.respect.datasource.db.RespectDatabase/1.json",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsDataSourceDb.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/daos/LangMapEntityDao.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/entities/LangMapEntity.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsFeedEntityDao.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/RespectAppDataSourceDb.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsFeedMetadataEntityDao.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsParentType.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsGroupEntityDao.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsPublicationEntityDao.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/ReadiumLinkEntityDao.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/RespectDatabase.kt"
        ],
        "commitId" : "32c0249c49c57a847d6c1cf61cad857107685689",
        "timestamp" : 1752134225000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add initial DAOs for OPDS related entities.\u000a",
        "date" : "2025-07-10 11:57:05 +0400",
        "id" : "32c0249c49c57a847d6c1cf61cad857107685689",
        "msg" : "Add initial DAOs for OPDS related entities.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/entities/LangMapEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/RespectAppDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsFeedMetadataEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/ReadiumLinkEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/RespectDatabase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsParentType.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/schemas/world.respect.datasource.db.RespectDatabase/1.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsPublicationEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsGroupEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/daos/LangMapEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsFeedEntityDao.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
        ],
        "commitId" : "9f6884189d421486a93353ae310536f2559c1b67",
        "timestamp" : 1752137453000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "AppsDetailScreen updated description\u000a",
        "date" : "2025-07-10 14:20:53 +0530",
        "id" : "9f6884189d421486a93353ae310536f2559c1b67",
        "msg" : "AppsDetailScreen updated description",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsFeedEntity.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsDataSourceDb.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/daos/LangMapEntityDao.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsFeedEntityDao.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/RespectAppDataSourceDb.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsFeedMetadataEntityDao.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsGroupEntityDao.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsPublicationEntityDao.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/ReadiumLinkEntityDao.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/OpdsDataSourceLocal.kt",
          "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/opds/OpdsDataSourceRepository.kt"
        ],
        "commitId" : "2b4bd7c1c51481dbe02e61549fc136a1e0f90df2",
        "timestamp" : 1752141409000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial implementation of get opds feed / update on database and repository.\u000a",
        "date" : "2025-07-10 13:56:49 +0400",
        "id" : "2b4bd7c1c51481dbe02e61549fc136a1e0f90df2",
        "msg" : "Initial implementation of get opds feed / update on database and repository.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/RespectAppDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsGroupEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/opds/OpdsDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsFeedEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsPublicationEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/daos/LangMapEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/OpdsDataSourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsFeedMetadataEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/ReadiumLinkEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsFeedEntity.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datasource-repository/src/jvmTest/resources/world/respect/datasource/repository/opds/lesson001.json",
          "respect-datasource-repository/src/jvmTest/resources/world/respect/datasource/repository/opds/index.json",
          "shared/src/jvmTest/kotlin/world/respect/testutil/FindFreePort.kt",
          "shared/src/jvmTest/kotlin/world/respect/domain/validator/TestValidationScenarios.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsDataSourceDb.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/RespectAppDataSourceLocal.kt",
          "respect-datasource-repository/build.gradle.kts",
          "respect-lib-util/src/jvmMain/kotlin/world/respect/libutil/FindFreePort.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/RespectAppDataSourceDb.kt",
          "respect-datasource-repository/src/jvmTest/kotlin/world/respect/datasource/repository/opds/OpdsRespectRepositoryIntegrationTest.kt"
        ],
        "commitId" : "2dcf21765e86b826fbd3c0f765c084d899b69011",
        "timestamp" : 1752150376000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add initial basic integration test for Opds Repository.\u000a",
        "date" : "2025-07-10 16:26:16 +0400",
        "id" : "2dcf21765e86b826fbd3c0f765c084d899b69011",
        "msg" : "Add initial basic integration test for Opds Repository.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-datasource-repository/src/jvmTest/resources/world/respect/datasource/repository/opds/lesson001.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-repository/src/jvmTest/kotlin/world/respect/datasource/repository/opds/OpdsRespectRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-util/src/jvmMain/kotlin/world/respect/libutil/FindFreePort.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/RespectAppDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datasource-repository/src/jvmTest/resources/world/respect/datasource/repository/opds/index.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-repository/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/RespectAppDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/kotlin/world/respect/testutil/FindFreePort.kt"
          },
          {
            "editType" : "edit",
            "file" : "shared/src/jvmTest/kotlin/world/respect/domain/validator/TestValidationScenarios.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsDataSourceDb.kt",
          "respect-lib-primarykeygen/build.gradle.kts",
          "respect-datasource-repository/build.gradle.kts",
          "respect-lib-primarykeygen/src/commonMain/kotlin/world/respect/lib/primarykeygen/PrimaryKeyGenerator.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsPublicationEntityDao.kt",
          "respect-datasource-repository/src/jvmTest/kotlin/world/respect/datasource/repository/opds/OpdsRespectRepositoryIntegrationTest.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/ReadiumLinkEntityDao.kt"
        ],
        "commitId" : "c95cee591c0b155f1d7779cb4f9ac92dd5112524",
        "timestamp" : 1752155680000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Initial implementation of opds publication read.\u000a",
        "date" : "2025-07-10 17:54:40 +0400",
        "id" : "c95cee591c0b155f1d7779cb4f9ac92dd5112524",
        "msg" : "Initial implementation of opds publication read.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-primarykeygen/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-primarykeygen/src/commonMain/kotlin/world/respect/lib/primarykeygen/PrimaryKeyGenerator.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsPublicationEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-repository/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/ReadiumLinkEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-repository/src/jvmTest/kotlin/world/respect/datasource/repository/opds/OpdsRespectRepositoryIntegrationTest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-test-end-to-end/test-description/001_browse_lessons_test_description.md",
          "respect-test-end-to-end/README.md",
          "respect-test-end-to-end/android-maestro/e2e-tests/001_browse_lessons_test.yaml"
        ],
        "commitId" : "a8c365baa598c58fbb6d9d0463d95534cb7f511d",
        "timestamp" : 1752158196000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "Respect e2e using maestro basic set-up\u000a",
        "date" : "2025-07-10 18:36:36 +0400",
        "id" : "a8c365baa598c58fbb6d9d0463d95534cb7f511d",
        "msg" : "Respect e2e using maestro basic set-up",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-test-end-to-end/android-maestro/e2e-tests/001_browse_lessons_test.yaml"
          },
          {
            "editType" : "add",
            "file" : "respect-test-end-to-end/README.md"
          },
          {
            "editType" : "add",
            "file" : "respect-test-end-to-end/test-description/001_browse_lessons_test_description.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsFacet.kt"
        ],
        "commitId" : "33ad4bdd32a55f85d4200baa5a428d8f038d8001",
        "timestamp" : 1752159426000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Revert OpdsFacet change - metadata should not be nullable.\u000a",
        "date" : "2025-07-10 18:57:06 +0400",
        "id" : "33ad4bdd32a55f85d4200baa5a428d8f038d8001",
        "msg" : "Revert OpdsFacet change - metadata should not be nullable.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsFacet.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
        ],
        "commitId" : "7c851bf2b687bdf6c37f6cb4e0c0088cac296d0d",
        "timestamp" : 1752159448000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add primary key generator to koin module\u000a",
        "date" : "2025-07-10 18:57:28 +0400",
        "id" : "7c851bf2b687bdf6c37f6cb4e0c0088cac296d0d",
        "msg" : "Add primary key generator to koin module",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/build.gradle.kts"
        ],
        "commitId" : "a0dd64650faf181d28a5b6ef8c656453d0351af6",
        "timestamp" : 1752163774000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add primary key gen dependency to composeApp.\u000a",
        "date" : "2025-07-10 20:09:34 +0400",
        "id" : "a0dd64650faf181d28a5b6ef8c656453d0351af6",
        "msg" : "Add primary key gen dependency to composeApp.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "gradle/libs.versions.toml",
          "respect-lib-primarykeygen/build.gradle.kts"
        ],
        "commitId" : "9837fe6e3706fac0ba0fcba626f5c9ea8cc9631f",
        "timestamp" : 1752163910000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add atomicfu dependency to avoid Android crash.\u000a",
        "date" : "2025-07-10 20:11:50 +0400",
        "id" : "9837fe6e3706fac0ba0fcba626f5c9ea8cc9631f",
        "msg" : "Add atomicfu dependency to avoid Android crash.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-primarykeygen/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-test-end-to-end/test-description/001_browse_lessons_test_description.md",
          "respect-test-end-to-end/android-maestro/e2e-tests/001_browse_lessons_test.yaml"
        ],
        "commitId" : "adf09bd64e8bb39d56e29f567fc62eb6a718a648",
        "timestamp" : 1752212492000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
          "fullName" : "Pooja Ravi"
        },
        "authorEmail" : "pooja@ustadmobile.com",
        "comment" : "lessons within a lesson-list test update\u000a",
        "date" : "2025-07-11 09:41:32 +0400",
        "id" : "adf09bd64e8bb39d56e29f567fc62eb6a718a648",
        "msg" : "lessons within a lesson-list test update",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-test-end-to-end/android-maestro/e2e-tests/001_browse_lessons_test.yaml"
          },
          {
            "editType" : "edit",
            "file" : "respect-test-end-to-end/test-description/001_browse_lessons_test_description.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/compatibleapps/CompatibleAppDataSourceRepository.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/compatibleapps/CompatibleAppsDataSourceLocal.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/adapters/CompatbileAppAdapter.kt",
          "respect-datasource-repository/src/jvmTest/kotlin/world/respect/datasource/repository/opds/OpdsRespectRepositoryIntegrationTest.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsFeedAdapter.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/ext/HttpClientExt.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/OpdsDataSourceLocal.kt",
          "respect-datasource/README.md",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsDataSourceDb.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsPublicationEntityAdapter.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/DataLoadMetaInfo.kt",
          "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/ext/FlowExt.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/DataLoadState.kt",
          "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/ext/DataLoadStateExt.kt",
          "respect-datasource-http/src/commonMain/kotlin/world/respect/datasource/http/compatibleapps/CompatibleAppDataSourceHttp.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/CompatibleAppDataSourceDb.kt",
          "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/opds/OpdsDataSourceRepository.kt"
        ],
        "commitId" : "93f718c710b8d0263237bc081440d5bf77b75ee9",
        "timestamp" : 1752217947000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Refactor DataLoadState to improve clarity and functionality.\u000a",
        "date" : "2025-07-11 11:12:27 +0400",
        "id" : "93f718c710b8d0263237bc081440d5bf77b75ee9",
        "msg" : "Refactor DataLoadState to improve clarity and functionality.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/opds/OpdsDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/compatibleapps/CompatibleAppDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/ext/HttpClientExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-repository/src/jvmTest/kotlin/world/respect/datasource/repository/opds/OpdsRespectRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/ext/FlowExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/OpdsDataSourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsPublicationEntityAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/DataLoadMetaInfo.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/adapters/CompatbileAppAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/DataLoadState.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/ext/DataLoadStateExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/compatibleapps/CompatibleAppsDataSourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/CompatibleAppDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsFeedAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource/README.md"
          },
          {
            "editType" : "edit",
            "file" : "respect-datasource-http/src/commonMain/kotlin/world/respect/datasource/http/compatibleapps/CompatibleAppDataSourceHttp.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/datasource/fakeds/FakeRespectAppDataSource.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/datasource/fakeds/FakeOpdsDataSource.kt",
          "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/datasource/fakeds/FakeRespectAppDataSourceProvider.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/datasource/fakeds/FakeAppDataSource.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLinkViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
        ],
        "commitId" : "4a763ff54860d396a25b2533bf55d81ee369c97e",
        "timestamp" : 1752218948000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Merge updated dataloadstate\u000a",
        "date" : "2025-07-11 11:29:08 +0400",
        "id" : "4a763ff54860d396a25b2533bf55d81ee369c97e",
        "msg" : "Merge updated dataloadstate",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/datasource/fakeds/FakeAppDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/datasource/fakeds/FakeRespectAppDataSourceProvider.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLinkViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/datasource/fakeds/FakeOpdsDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/datasource/fakeds/FakeRespectAppDataSource.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datasource/README.md"
        ],
        "commitId" : "42e7f7d090e669e80ded08c187fb6b604593afb2",
        "timestamp" : 1752220301000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update datasource doc\u000a",
        "date" : "2025-07-11 11:51:41 +0400",
        "id" : "42e7f7d090e669e80ded08c187fb6b604593afb2",
        "msg" : "Update datasource doc",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datasource/README.md"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/DataLoadMetaInfo.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/RespectAppDataSourceLocal.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/adapters/CompatbileAppAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumLink.kt",
          "respect-datasource-repository/src/jvmTest/kotlin/world/respect/datasource/repository/opds/OpdsRespectRepositoryIntegrationTest.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumSubject.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsFeedAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumLinkPropertiesEncrypted.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsFacetAdapter.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsPrice.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/daos/LangMapEntityDao.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsFeed.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsFeed.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/compatibleapps/CompatibleAppsDataSource.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datasource/repository/RespectAppDataSourceRepositoryTest.kt",
          "respect-datasource-repository/src/jvmTest/resources/world/respect/datasource/repository/opds/lesson001.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsPublication.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/serialization/UriStringSerializer.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumContributorObject.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsTypeConverters.kt",
          "respect-datalayer-db/build.gradle.kts",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/LoadingStatus.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/serialization/SingleItemToListTransformerSerializer.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/RespectDatabase.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/serialization/StringOrObjectSerializer.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/daos/CompatibleAppEntityDao.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/DataLoadMetaInfo.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsGroup.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsFacet.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/RespectAppDataSource.kt",
          "respect-datasource-http/src/commonMain/kotlin/world/respect/datasource/http/opds/OpdsDataSourceHttp.kt",
          "respect-datalayer-db/schemas/world.respect.datasource.db.RespectDatabase/1.json",
          "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/ext/DataLoadStateExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/serialization/LocalDateOrDateTime.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/ext/HttpHeadersExt.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsAcquisition.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/ReadiumLinkEntityAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumMetadata.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/ReadiumSubjectEntityAdapters.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsFeedMetadataEntityAdapter.kt",
          "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/opds/OpdsDataSourceRepository.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumLink.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsFacetEntity.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsGroup.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumLinkPropertiesEncrypted.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsPublicationEntity.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datasource/repository/opds/OpdsDataSourceRepository.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/SharedConverters.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsParentType.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsGroupEntityDao.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/LangMap.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/entities/CompatibleAppEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsFacetEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsAcquisition.kt",
          "respect-datalayer/src/androidMain/AndroidManifest.xml",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/DataLoadParams.kt",
          "respect-datasource-db/src/jvmTest/resources/world/respect/datasource/db/opds/adapters/lesson001.json",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumMetadata.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datasource/repository/opds/OpdsRespectRepositoryIntegrationTest.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/CompatibleAppDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsFacet.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/RespectAppDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/shared/SharedConverters.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/compatibleapps/CompatibleAppsDataSourceLocal.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/ReadiumSubjectEntity.kt",
          "respect-datalayer-repository/src/jvmTest/resources/world/respect/datasource/repository/opds/index.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/ext/HttpClientExt.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsGroupEntity.kt",
          "respect-datasource/.gitignore",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/ReadiumSubjectEntityAdapters.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/compatibleapps/CompatibleAppsDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/daos/CompatibleAppEntityDao.kt",
          "respect-datalayer-repository/src/jvmTest/resources/world/respect/datasource/repository/opds/lesson001.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/DataLoadState.kt",
          "respect-datasource-db/src/jvmTest/kotlin/world/respect/datasource/db/opds/adapters/TestOpdsPublicationEntityAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/RespectAppDataSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/compatibleapps/CompatibleAppsDataSourceLocal.kt",
          "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/compatibleapps/CompatibleAppDataSourceRepository.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsTypeConverters.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/serialization/StringOrObjectSerializer.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/LangMapExt.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/LoadingStatus.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsPublicationEntityAdapter.kt",
          "respect-datalayer-http/build.gradle.kts",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/shared/daos/LangMapEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/adapters/CompatbileAppAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsGroupEntity.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsPublicationEntity.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datasource/repository/RespectAppDataSourceRepository.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/shared/ext/LangMapEntityExt.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/serialization/StringValue.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsFeedEntity.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/adapters/LangMapAdapter.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datasource/repository/ext/DataLoadStateExt.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datasource/db/opds/adapters/TestOpdsPublicationEntityAdapter.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumSubject.kt",
          "respect-datasource/build.gradle.kts",
          "respect-datalayer/README.md",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsFeedEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/shared/entities/LangMapEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/shared/ext/ListExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsFeedMetadataEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsGroupAdapter.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/ReadiumSubjectEntity.kt",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datasource/db/opds/adapters/lesson001.json",
          "respect-datasource-http/src/commonMain/kotlin/world/respect/datasource/http/RespectAppDataSourceHttp.kt",
          "respect-datalayer/.gitignore",
          "respect-datasource-repository/src/jvmTest/kotlin/world/respect/datasource/repository/RespectAppDataSourceRepositoryTest.kt",
          "respect-datasource-db/schemas/world.respect.datasource.db.RespectDatabase/1.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsPrice.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/shared/adapters/LangMapAdapter.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsPublication.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datasource/http/compatibleapps/CompatibleAppDataSourceHttp.kt",
          "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/RespectAppDataSourceRepository.kt",
          "respect-datasource-repository/build.gradle.kts",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumLinkProperties.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsFeedMetadataEntityAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsDataSourceDb.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsFeedMetadataEntityDao.kt",
          "respect-datasource/README.md",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/ext/HttpClientExt.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/OpdsDataSourceLocal.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/RespectAppDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/compatibleapps/model/RespectAppManifest.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/LangMapExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsFeedMetadata.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/RespectDatabase.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsFeedMetadata.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsFacetAdapter.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/compatibleapps/model/RespectAppManifest.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/ReadiumLinkEntityAdapter.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/entities/CompatibleAppEntity.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsPublicationEntityDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/ext/HttpHeadersExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/DataLoadParams.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/ReadiumLinkEntityDao.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/OpdsDataSourceLocal.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/ext/LangMapEntityExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsFeedMetadataEntityDao.kt",
          "respect-datalayer/build.gradle.kts",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/ReadiumLinkEntity.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsBelongsTo.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsSeries.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/serialization/StringValue.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/serialization/StringListSerializer.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumContributorObject.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsFeedEntityDao.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/DataLoadState.kt",
          "respect-datasource-http/src/commonMain/kotlin/world/respect/datasource/http/compatibleapps/CompatibleAppDataSourceHttp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsPublicationEntityDao.kt",
          "respect-datalayer-repository/build.gradle.kts",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumLinkProperties.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/OpdsDataSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/LangMap.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/serialization/SingleItemToListTransformerSerializer.kt",
          "respect-datasource-repository/src/jvmTest/resources/world/respect/datasource/repository/opds/index.json",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datasource/http/RespectAppDataSourceHttp.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/OpdsDataSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/serialization/UriStringSerializer.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/ReadiumLinkEntityDao.kt",
          "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/serialization/LocalDateOrDateTime.kt",
          "settings.gradle.kts",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datasource/http/opds/OpdsDataSourceHttp.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsParentType.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsBelongsTo.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/RespectAppDataSourceLocal.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsFeedMetadataEntity.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsFeedAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/CompatibleAppDataSourceDb.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datasource/repository/compatibleapps/CompatibleAppDataSourceRepository.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsGroupEntityDao.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsPublicationEntityAdapter.kt",
          "shared/build.gradle.kts",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/entities/LangMapEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/serialization/StringListSerializer.kt",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/ext/ListExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsSeries.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsFeedEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/ReadiumLinkEntity.kt",
          "respect-datasource-db/build.gradle.kts",
          "respect-datasource/src/androidMain/AndroidManifest.xml",
          "respect-datasource-http/build.gradle.kts",
          "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsGroupAdapter.kt"
        ],
        "commitId" : "af953b4f89b8aa003f4eaafbb3dc3742f54b1054",
        "timestamp" : 1752222730000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Rename datasource modules to datalayer - make terminology consistent with Android architecture terminology.\u000a",
        "date" : "2025-07-11 12:32:10 +0400",
        "id" : "af953b4f89b8aa003f4eaafbb3dc3742f54b1054",
        "msg" : "Rename datasource modules to datalayer - make terminology consistent with Android architecture terminology.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/RespectAppDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datasource/repository/opds/OpdsRespectRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsFeedMetadata.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/DataLoadParams.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsFeedAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsAcquisition.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/README.md"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsParentType.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/ReadiumSubjectEntityAdapters.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/ReadiumSubjectEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-repository/src/jvmTest/resources/world/respect/datasource/repository/opds/index.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datasource/http/RespectAppDataSourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsFacet.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/ReadiumSubjectEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/shared/daos/LangMapEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/serialization/LocalDateOrDateTime.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsFeedMetadataEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/README.md"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/schemas/world.respect.datasource.db.RespectDatabase/1.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/ReadiumLinkEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/shared/ext/LangMapEntityExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsFacetAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsFacet.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/serialization/UriStringSerializer.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datasource/db/opds/adapters/lesson001.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/RespectAppDataSourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsBelongsTo.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/RespectAppDataSourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/schemas/world.respect.datasource.db.RespectDatabase/1.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumLinkPropertiesEncrypted.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/shared/SharedConverters.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/serialization/StringValue.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsPublication.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/entities/CompatibleAppEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsFeedMetadataEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/daos/CompatibleAppEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/compatibleapps/CompatibleAppDataSourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/serialization/StringValue.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/RespectDatabase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/LangMapExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/CompatibleAppDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/jvmTest/kotlin/world/respect/datasource/db/opds/adapters/TestOpdsPublicationEntityAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-repository/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsPrice.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsPrice.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/entities/CompatibleAppEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/shared/ext/ListExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-http/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsFacetAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsFeedMetadataEntityAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsAcquisition.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsParentType.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/OpdsDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/LangMap.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/src/jvmTest/resources/world/respect/datasource/repository/opds/index.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/RespectDatabase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/serialization/LocalDateOrDateTime.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/ReadiumLinkEntityAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/RespectAppDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datasource/db/opds/adapters/TestOpdsPublicationEntityAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumContributorObject.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsPublicationEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/compatibleapps/model/RespectAppManifest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsFeedMetadataEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/OpdsDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/ext/HttpClientExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-http/src/commonMain/kotlin/world/respect/datasource/http/compatibleapps/CompatibleAppDataSourceHttp.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/LoadingStatus.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsFeed.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsPublication.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/serialization/StringListSerializer.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsPublicationEntityAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/RespectAppDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/adapters/CompatbileAppAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumSubject.kt"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/jvmTest/resources/world/respect/datasource/db/opds/adapters/lesson001.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/CompatibleAppDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsGroup.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/serialization/StringOrObjectSerializer.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/ReadiumLinkEntityAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/serialization/UriStringSerializer.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumLinkPropertiesEncrypted.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/daos/LangMapEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/compatibleapps/CompatibleAppsDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/compatibleapps/model/RespectAppManifest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/ext/DataLoadStateExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/androidMain/AndroidManifest.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/ReadiumLinkEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsFeedEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsPublicationEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsTypeConverters.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsFeedEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-repository/src/commonMain/kotlin/world/respect/datasource/repository/opds/OpdsDataSourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/DataLoadMetaInfo.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumLinkProperties.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/RespectAppDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/shared/entities/LangMapEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsPublicationEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/ext/HttpClientExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumContributorObject.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsFacetEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/src/jvmTest/resources/world/respect/datasource/repository/opds/lesson001.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/ReadiumLinkEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/ext/ListExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsPublicationEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/ext/HttpHeadersExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/entities/LangMapEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/adapters/CompatbileAppAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsFeedMetadataEntityAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsFeedEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/LoadingStatus.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumLinkProperties.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsFeed.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsGroupAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsGroupEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsFeedEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-repository/src/jvmTest/kotlin/world/respect/datasource/repository/RespectAppDataSourceRepositoryTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datasource/repository/compatibleapps/CompatibleAppDataSourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsBelongsTo.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumLink.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-http/src/commonMain/kotlin/world/respect/datasource/http/opds/OpdsDataSourceHttp.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-repository/src/jvmTest/resources/world/respect/datasource/repository/opds/lesson001.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsGroupAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/DataLoadState.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumMetadata.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/DataLoadState.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/LangMapExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/compatibleapps/CompatibleAppsDataSourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/LangMap.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/ReadiumSubjectEntityAdapters.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/.gitignore"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsSeries.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsSeries.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/shared/adapters/LangMapAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datasource/http/opds/OpdsDataSourceHttp.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsGroupEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/serialization/SingleItemToListTransformerSerializer.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/ext/HttpHeadersExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/serialization/StringOrObjectSerializer.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/DataLoadMetaInfo.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/adapters/LangMapAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-http/src/commonMain/kotlin/world/respect/datasource/http/RespectAppDataSourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumSubject.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/OpdsDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/serialization/StringListSerializer.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datasource/repository/RespectAppDataSourceRepositoryTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsGroupEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/daos/CompatibleAppEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsTypeConverters.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsPublicationEntityAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumLink.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/serialization/SingleItemToListTransformerSerializer.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/androidMain/AndroidManifest.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datasource/repository/ext/DataLoadStateExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datasource/repository/RespectAppDataSourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsFacetEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumMetadata.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsFeedMetadata.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/SharedConverters.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-repository/src/jvmTest/kotlin/world/respect/datasource/repository/opds/OpdsRespectRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "shared/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsFeedMetadataEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/DataLoadParams.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/compatibleapps/CompatibleAppsDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/OpdsDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/RespectAppDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsGroupEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/.gitignore"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datasource/http/compatibleapps/CompatibleAppDataSourceHttp.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource/src/commonMain/kotlin/world/respect/datasource/compatibleapps/CompatibleAppsDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/shared/ext/LangMapEntityExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/ReadiumLinkEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datasource/repository/opds/OpdsDataSourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datasource-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsFeedAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsGroup.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/build.gradle.kts"
        ],
        "commitId" : "2ddb02b0a446794c518f0b46f581ee25d3810d08",
        "timestamp" : 1752223156000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update composeApp gradle - modules renamed from datasource to datalayer\u000a",
        "date" : "2025-07-11 12:39:16 +0400",
        "id" : "2ddb02b0a446794c518f0b46f581ee25d3810d08",
        "msg" : "Update composeApp gradle - modules renamed from datasource to datalayer",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/RespectAsyncImage.kt",
          "composeApp/build.gradle.kts",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
        ],
        "commitId" : "8a5ce5bc60803d84237a44bc99d2dc6213ddee3c",
        "timestamp" : 1752227884000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "image in app detail screen\u000a",
        "date" : "2025-07-11 15:28:04 +0530",
        "id" : "8a5ce5bc60803d84237a44bc99d2dc6213ddee3c",
        "msg" : "image in app detail screen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/RespectAsyncImage.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
        ],
        "commitId" : "fa355d062dea8adfbc5ce39f96acbd84fd801814",
        "timestamp" : 1752227884000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "onClickPublication and onCLickNavigation added to the AppDetailScreen\u000a",
        "date" : "2025-07-11 15:28:04 +0530",
        "id" : "fa355d062dea8adfbc5ce39f96acbd84fd801814",
        "msg" : "onClickPublication and onCLickNavigation added to the AppDetailScreen",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
        ],
        "commitId" : "69a3f895605fd327dc5c683ab602c1ee24cbdbad",
        "timestamp" : 1752227884000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "onClickPublication and onCLickNavigation added to the LearningUnitListScreen.kt\u000a",
        "date" : "2025-07-11 15:28:04 +0530",
        "id" : "69a3f895605fd327dc5c683ab602c1ee24cbdbad",
        "msg" : "onClickPublication and onCLickNavigation added to the LearningUnitListScreen.kt",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLinkViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/App.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
        ],
        "commitId" : "17a24bc727a8b645c3e7ae376939addf18349a69",
        "timestamp" : 1752228046000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "formatting\u000a",
        "date" : "2025-07-11 15:30:46 +0530",
        "id" : "17a24bc727a8b645c3e7ae376939addf18349a69",
        "msg" : "formatting",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/App.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLinkViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
        ],
        "commitId" : "539448a0eb3271b5b826770944c8536edf51553e",
        "timestamp" : 1752228094000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "formatting\u000a",
        "date" : "2025-07-11 15:31:34 +0530",
        "id" : "539448a0eb3271b5b826770944c8536edf51553e",
        "msg" : "formatting",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
        ],
        "commitId" : "c834bec7fe404db4c993f0d852099188025c5294",
        "timestamp" : 1752228098000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "formatting\u000a",
        "date" : "2025-07-11 15:31:38 +0530",
        "id" : "c834bec7fe404db4c993f0d852099188025c5294",
        "msg" : "formatting",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
        ],
        "commitId" : "a27b5de6fbaa969a611269a19e12588acf70ef21",
        "timestamp" : 1752228098000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "formatting\u000a",
        "date" : "2025-07-11 15:31:38 +0530",
        "id" : "a27b5de6fbaa969a611269a19e12588acf70ef21",
        "msg" : "formatting",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
        ],
        "commitId" : "7cce281f39b4b2b0bab6f0bf33262cbf8ce1d138",
        "timestamp" : 1752229127000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "formatting\u000a",
        "date" : "2025-07-11 15:48:47 +0530",
        "id" : "7cce281f39b4b2b0bab6f0bf33262cbf8ce1d138",
        "msg" : "formatting",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
        ],
        "commitId" : "b2f29727aff173dac78c2dfd5a4db9326428f21a",
        "timestamp" : 1752229374000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "formatting\u000a",
        "date" : "2025-07-11 15:52:54 +0530",
        "id" : "b2f29727aff173dac78c2dfd5a4db9326428f21a",
        "msg" : "formatting",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "gradle/libs.versions.toml",
          "composeApp/build.gradle.kts"
        ],
        "commitId" : "8716b4d4581421a1937cab40049688e2302b91f0",
        "timestamp" : 1752232242000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Use versions.toml for coil dependency\u000a",
        "date" : "2025-07-11 15:10:42 +0400",
        "id" : "8716b4d4581421a1937cab40049688e2302b91f0",
        "msg" : "Use versions.toml for coil dependency",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/app/RespectAsyncImage.kt",
          "composeApp/build.gradle.kts",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt",
          "gradle/libs.versions.toml",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
        ],
        "commitId" : "d3cad5dacaf6423db15010fec1a39cdb98cadebf",
        "timestamp" : 1752235842000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
          "fullName" : "mandvi.verma"
        },
        "authorEmail" : "mandvi.verma@sutara.org",
        "comment" : "Image rendering update\u000a\u000a- Updated coil dependency versions.\u000a- Made `RespectAsyncImage` uri parameter nullable.\u000a- Ensured `RespectAsyncImage` is only called with non-null uris across multiple screens.\u000a- Resolved app icons against the manifest URL in `AppListScreen`.\u000a- Filtered for \"image\" type when selecting lesson icons in `LearningUnitDetailScreen` and `LearningUnitListScreen`.\u000a",
        "date" : "2025-07-11 17:40:42 +0530",
        "id" : "d3cad5dacaf6423db15010fec1a39cdb98cadebf",
        "msg" : "Image rendering update",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/RespectAsyncImage.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/adapters/CompatbileAppAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/entities/CompatibleAppEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/compatibleapps/model/RespectAppManifest.kt"
        ],
        "commitId" : "1d45b390306b6f084959321097f28ee21f4183a0",
        "timestamp" : 1752239542000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add icon uri to CompatibleAppEntity.kt\u000a",
        "date" : "2025-07-11 17:12:22 +0400",
        "id" : "1d45b390306b6f084959321097f28ee21f4183a0",
        "msg" : "Add icon uri to CompatibleAppEntity.kt",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/entities/CompatibleAppEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/adapters/CompatbileAppAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/compatibleapps/model/RespectAppManifest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/schemas/world.respect.datasource.db.RespectDatabase/1.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/compatibleapps/model/RespectAppManifest.kt"
        ],
        "commitId" : "3a465ca8a0380279fc64a889595d9fe37e795922",
        "timestamp" : 1752239740000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add Serializer for RespectAppManifest.icon .\u000a",
        "date" : "2025-07-11 17:15:40 +0400",
        "id" : "3a465ca8a0380279fc64a889595d9fe37e795922",
        "msg" : "Add Serializer for RespectAppManifest.icon .",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datasource.db.RespectDatabase/1.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/compatibleapps/model/RespectAppManifest.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/CompatibleAppDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/DataLoadMetaInfo.kt",
          "shared/src/jvmTest/kotlin/world/respect/OpdsSerializationTest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/entities/CompatibleAppEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumLink.kt",
          "shared/src/jvmMain/kotlin/world/respect/domain/respectappmanifest/validator/RespectAppManifestValidator.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/daos/OpdsFeedMetadataEntityDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumSubject.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/OpdsPublicationEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsFeedAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumLinkPropertiesEncrypted.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsFacetAdapter.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/datasource/RespectAppDataSourceProvider.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/ReadiumSubject.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsFeed.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/adapters/OpdsFeedAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/compatibleapps/CompatibleAppsDataSource.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datasource/repository/RespectAppDataSourceRepositoryTest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/adapters/OpdsFeedMetadataEntityAdapter.kt",
          "respect-datalayer-repository/src/jvmTest/resources/world/respect/datalayer/repository/opds/lesson001.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/ReadiumContributorObject.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsPublication.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumContributorObject.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/compatibleapps/CompatibleAppsDataSourceLocal.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/LoadingStatus.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/serialization/SingleItemToListTransformerSerializer.kt",
          "shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/ValidateOpdsPublicationUseCase.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/serialization/StringOrObjectSerializer.kt",
          "respect-cli/src/main/java/world/respect/clitools/RespectCLI.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/LangMapExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsGroup.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/adapters/OpdsGroupAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/serialization/LocalDateOrDateTime.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/ReadiumLinkEntityAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumMetadata.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsFeedMetadataEntityAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/OpdsDataSource.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/daos/OpdsFeedEntityDao.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datasource/repository/opds/OpdsDataSourceRepository.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsPublicationEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsParentType.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpHeadersExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/entities/CompatibleAppEntity.kt",
          "shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/OpdsPublicationValidator.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsFacetEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsAcquisition.kt",
          "shared/src/jvmTest/kotlin/world/respect/domain/validator/TestValidationScenarios.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsDataSourceRepository.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/SharedConverters.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/opds/OpdsDataSourceHttp.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/serialization/UriStringSerializer.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/compatibleapps/model/RespectAppManifest.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectDatabase/1.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/LangMap.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datasource/repository/opds/OpdsRespectRepositoryIntegrationTest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/daos/CompatibleAppEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/RespectAppDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsFacet.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLoadMetaInfo.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/shared/SharedConverters.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLoadParams.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/ReadiumSubjectEntity.kt",
          "respect-datalayer-repository/src/jvmTest/resources/world/respect/datasource/repository/opds/index.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/ext/HttpClientExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/ReadiumSubjectEntityAdapters.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsTypeConverters.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/OpdsSeries.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/daos/CompatibleAppEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/ReadiumSubjectEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/ReadiumLink.kt",
          "respect-datalayer-repository/src/jvmTest/resources/world/respect/datasource/repository/opds/lesson001.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/OpdsFeedMetadataEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/serialization/StringValue.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/DataLoadState.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/OpdsFacetEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/RespectAppDataSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/compatibleapps/CompatibleAppsDataSourceLocal.kt",
          "shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/ValidateLinkUseCaseImpl.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectDatabase.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsTypeConverters.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/ext/LangMapEntityExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/adapters/ReadiumSubjectEntityAdapters.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/LangMapExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsPublicationEntityAdapter.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/shared/daos/LangMapEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsGroupEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/adapters/CompatbileAppAdapter.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datasource/repository/RespectAppDataSourceRepository.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/shared/ext/LangMapEntityExt.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datasource/repository/ext/DataLoadStateExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/ext/ListExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/OpdsPrice.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datasource/db/opds/adapters/TestOpdsPublicationEntityAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/entities/LangMapEntity.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/compatibleapps/CompatibleAppDataSourceHttp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/shared/entities/LangMapEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/shared/ext/ListExt.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsGroupAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsFeedMetadataEntity.kt",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datasource/db/opds/adapters/lesson001.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/OpdsPublication.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsPrice.kt",
          "respect-datalayer-repository/src/jvmTest/resources/world/respect/datalayer/repository/opds/index.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/shared/adapters/LangMapAdapter.kt",
          "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/opds/adapters/TestOpdsPublicationEntityAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLoadState.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datasource/http/compatibleapps/CompatibleAppDataSourceHttp.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumLinkProperties.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/adapters/LangMapAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/serialization/StringListSerializer.kt",
          "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/db/opds/adapters/lesson001.json",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/OpdsBelongsTo.kt",
          "shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/OpdsFeedValidator.kt",
          "shared/src/commonMain/kotlin/world/respect/domain/validator/ValidateLinkUseCase.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/ReadiumMetadata.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/ReadiumLinkEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/RespectAppDataSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/OpdsFacet.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/adapters/ReadiumLinkEntityAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/OpdsDataSourceLocal.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/RespectAppDataSourceHttp.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/compatibleapps/model/RespectAppManifest.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsFeedMetadata.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/RespectDatabase.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/adapters/OpdsFacetAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/OpdsGroupEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/OpdsGroup.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/RespectAppDataSourceRepositoryTest.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/serialization/SingleItemToListTransformerSerializer.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/adapters/OpdsPublicationEntityAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/adapters/CompatbileAppAdapter.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/ReadiumLinkProperties.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/RespectAppDataSourceRepository.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/OpdsDataSourceLocal.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/compatibleapps/CompatibleAppDataSourceRepository.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/ext/DataLoadStateExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/ext/HttpHeadersExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/DataLoadParams.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsFeedMetadataEntityDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/OpdsAcquisition.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/serialization/LocalDateOrDateTime.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/serialization/StringOrObjectSerializer.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/serialization/StringValue.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsFeedEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsPublicationEntityDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/LangMap.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datasource/http/RespectAppDataSourceHttp.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/OpdsDataSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/RespectAppDataSourceLocal.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/OpdsFeedMetadata.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/daos/OpdsGroupEntityDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/serialization/UriStringSerializer.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/ReadiumLinkPropertiesEncrypted.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/ReadiumLinkEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsParentType.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datasource/http/opds/OpdsDataSourceHttp.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsBelongsTo.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/OpdsFeed.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/daos/OpdsPublicationEntityDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/RespectAppDataSourceLocal.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datasource/repository/compatibleapps/CompatibleAppDataSourceRepository.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/CompatibleAppDataSourceDb.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/daos/LangMapEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsGroupEntityDao.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/serialization/StringListSerializer.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsSeries.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsFeedEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/ReadiumLinkEntity.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/daos/ReadiumLinkEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/OpdsFeedEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/compatibleapps/CompatibleAppsDataSource.kt"
        ],
        "commitId" : "7ea8d7e4d3aa8bd007fc7754f360e256d014d046",
        "timestamp" : 1752242082000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Refactor change datasource package to datalayer.\u000a",
        "date" : "2025-07-11 17:54:42 +0400",
        "id" : "7ea8d7e4d3aa8bd007fc7754f360e256d014d046",
        "msg" : "Refactor change datasource package to datalayer.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datasource/db/opds/adapters/lesson001.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsDataSourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/LangMapExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/ext/HttpHeadersExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/daos/OpdsFeedEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/OpdsBelongsTo.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/entities/CompatibleAppEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/OpdsDataSourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datasource/repository/RespectAppDataSourceRepositoryTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/LangMap.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/ext/LangMapEntityExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/serialization/StringValue.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/ReadiumSubjectEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsFeedMetadataEntityAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/OpdsAcquisition.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/serialization/StringOrObjectSerializer.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datasource/repository/opds/OpdsDataSourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datasource/http/opds/OpdsDataSourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/OpdsDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/serialization/LocalDateOrDateTime.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/OpdsFeed.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/ReadiumContributorObject.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsTypeConverters.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/entities/LangMapEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectDatabase.kt"
          },
          {
            "editType" : "edit",
            "file" : "shared/src/jvmMain/kotlin/world/respect/domain/respectappmanifest/validator/RespectAppManifestValidator.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/adapters/CompatbileAppAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/entities/CompatibleAppEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsFacetAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/daos/OpdsPublicationEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/serialization/StringValue.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsGroup.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsAcquisition.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsFeedMetadata.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsGroupEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/compatibleapps/CompatibleAppsDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/RespectAppDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/shared/ext/LangMapEntityExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/ReadiumSubjectEntityAdapters.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/ReadiumLinkEntityAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/RespectAppDataSourceLocal.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/ReadiumSubjectEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datasource/repository/RespectAppDataSourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/compatibleapps/CompatibleAppsDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsPublicationEntityAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/OpdsFacetEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/CompatibleAppDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsParentType.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumSubject.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/OpdsGroupEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/adapters/OpdsGroupAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/RespectAppDataSourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/ReadiumLinkEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-cli/src/main/java/world/respect/clitools/RespectCLI.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/ext/HttpClientExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/RespectAppDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsGroupEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLoadMetaInfo.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/shared/SharedConverters.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datasource/http/RespectAppDataSourceHttp.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/jvmTest/resources/world/respect/datasource/repository/opds/lesson001.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/serialization/StringOrObjectSerializer.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsParentType.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/src/jvmTest/resources/world/respect/datalayer/repository/opds/index.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datasource/repository/ext/DataLoadStateExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumLinkPropertiesEncrypted.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/ReadiumMetadata.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/adapters/LangMapAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumContributorObject.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsGroupAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsFeed.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumLink.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/compatibleapps/CompatibleAppDataSourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/adapters/OpdsFeedAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/serialization/UriStringSerializer.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/daos/CompatibleAppEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectDatabase/1.json"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/daos/OpdsFeedMetadataEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/SharedConverters.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datalayer/db/opds/adapters/TestOpdsPublicationEntityAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/shared/adapters/LangMapAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/adapters/OpdsFacetAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/ValidateLinkUseCaseImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLoadParams.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumLinkProperties.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/compatibleapps/model/RespectAppManifest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/RespectDatabase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/ext/DataLoadStateExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/LoadingStatus.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/daos/ReadiumLinkEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/OpdsFacet.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/serialization/StringListSerializer.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datasource/repository/compatibleapps/CompatibleAppDataSourceRepository.kt"
          },
          {
            "editType" : "edit",
            "file" : "shared/src/commonMain/kotlin/world/respect/domain/validator/ValidateLinkUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/OpdsTypeConverters.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/OpdsDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/shared/ext/ListExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpHeadersExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/compatibleapps/CompatibleAppsDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/LangMap.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/RespectAppDataSource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsPublicationEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/OpdsFeedEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/daos/LangMapEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/ext/ListExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/adapters/OpdsFeedMetadataEntityAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/OpdsFeedMetadata.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/daos/OpdsGroupEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/serialization/SingleItemToListTransformerSerializer.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/opds/OpdsDataSourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/RespectAppDataSourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/ReadiumLink.kt"
          },
          {
            "editType" : "edit",
            "file" : "shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/OpdsPublicationValidator.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsFeedMetadataEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/ReadiumLinkEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/compatibleapps/CompatibleAppsDataSourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/datasource/RespectAppDataSourceProvider.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/serialization/UriStringSerializer.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/adapters/ReadiumLinkEntityAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datasource/repository/opds/OpdsRespectRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/DataLoadParams.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsSeries.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/DataLoadMetaInfo.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/serialization/SingleItemToListTransformerSerializer.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/OpdsGroup.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/adapters/ReadiumSubjectEntityAdapters.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/jvmTest/resources/world/respect/datasource/repository/opds/index.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsPublicationEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/DataLoadState.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/OpdsPublication.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/LangMapExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsPublication.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsFacet.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/OpdsSeries.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/OpdsDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/ReadiumLinkPropertiesEncrypted.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsPrice.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/compatibleapps/CompatibleAppDataSourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/jvmTest/resources/world/respect/datalayer/db/opds/adapters/lesson001.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/shared/entities/LangMapEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsFeedMetadataEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "shared/src/jvmTest/kotlin/world/respect/OpdsSerializationTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/shared/daos/LangMapEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/src/jvmTest/resources/world/respect/datalayer/repository/opds/lesson001.json"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/jvmTest/kotlin/world/respect/datasource/db/opds/adapters/TestOpdsPublicationEntityAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/daos/CompatibleAppEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/OpdsFeedMetadataEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "shared/src/jvmTest/kotlin/world/respect/domain/validator/TestValidationScenarios.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsFacetEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/OpdsPublicationEntity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/RespectAppDataSourceRepositoryTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/ReadiumMetadata.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/OpdsFeedEntityDao.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/daos/ReadiumLinkEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/ReadiumLinkProperties.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/model/OpdsBelongsTo.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/ReadiumSubject.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/compatibleapps/model/RespectAppManifest.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/serialization/StringListSerializer.kt"
          },
          {
            "editType" : "edit",
            "file" : "shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/ValidateOpdsPublicationUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/OpdsPrice.kt"
          },
          {
            "editType" : "edit",
            "file" : "shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/OpdsFeedValidator.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/adapters/OpdsPublicationEntityAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/RespectAppDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/adapters/CompatbileAppAdapter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/DataLoadState.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/RespectAppDataSourceLocal.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datasource/http/compatibleapps/CompatibleAppDataSourceHttp.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/adapters/OpdsFeedAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/opds/entities/OpdsFeedEntity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datasource/db/compatibleapps/CompatibleAppDataSourceDb.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datasource/opds/serialization/LocalDateOrDateTime.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-http/build.gradle.kts",
          "respect-datalayer/build.gradle.kts",
          "respect-datalayer-db/build.gradle.kts",
          "respect-datalayer-repository/build.gradle.kts"
        ],
        "commitId" : "d441212781366a9796f8e9c2b72a82d7112037b7",
        "timestamp" : 1752242172000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Change Android namespace on respect-datalayer modules.\u000a",
        "date" : "2025-07-11 17:56:12 +0400",
        "id" : "d441212781366a9796f8e9c2b72a82d7112037b7",
        "msg" : "Change Android namespace on respect-datalayer modules.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/datasource/SingleDataSourceProvider.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/appstate/DisplayString.kt",
          "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLinkViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
        ],
        "commitId" : "446eb4b70a2860c0e9b6f1134fd97d600125b1ef",
        "timestamp" : 1752242569000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Change datalayer package to datalayer\u000a",
        "date" : "2025-07-11 18:02:49 +0400",
        "id" : "446eb4b70a2860c0e9b6f1134fd97d600125b1ef",
        "msg" : "Change datalayer package to datalayer",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/appstate/DisplayString.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/datasource/SingleDataSourceProvider.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLinkViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/CompatibleAppDataSourceDb.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/opds/OpdsDataSourceHttp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/entities/CompatibleAppEntity.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/compatibleapps/CompatibleAppDataSourceHttp.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/networkvalidation/NetworkValidationInfo.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/RespectAppDataSourceHttp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/ValidationInfo.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/networkvalidation/NetworkDataSourceValidationHelper.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/daos/CompatibleAppEntityDao.kt"
        ],
        "commitId" : "5151d30ab14092598df7fca73c51abd04c20d889",
        "timestamp" : 1752248593000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Work in progress adding support for if-not-modified-since and if-none-match for network datasources.\u000a",
        "date" : "2025-07-11 19:43:13 +0400",
        "id" : "5151d30ab14092598df7fca73c51abd04c20d889",
        "msg" : "Work in progress adding support for if-not-modified-since and if-none-match for network datasources.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/entities/CompatibleAppEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/RespectAppDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/opds/OpdsDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/daos/CompatibleAppEntityDao.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/ValidationInfo.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/networkvalidation/NetworkValidationInfo.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/CompatibleAppDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/compatibleapps/CompatibleAppDataSourceHttp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/networkvalidation/NetworkDataSourceValidationHelper.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/daos/OpdsFeedEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/adapters/OpdsPublicationEntityAdapter.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsDataSourceDb.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/OpdsDataSourceLocal.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/networkvalidation/NetworkDataSourceValidationHelper.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/daos/OpdsPublicationEntityDao.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/OpdsPublicationEntity.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt",
          "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/opds/OpdsDataSourceHttp.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/adapters/OpdsFeedAdapter.kt",
          "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectDatabase/1.json",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/OpdsFeedEntity.kt"
        ],
        "commitId" : "75a11f714469bf0e8a016d19e237c885431d6a27",
        "timestamp" : 1752250405000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Implementation of support for network datasource validation and handling 304 not modified responses.\u000a",
        "date" : "2025-07-11 20:13:25 +0400",
        "id" : "75a11f714469bf0e8a016d19e237c885431d6a27",
        "msg" : "Implementation of support for network datasource validation and handling 304 not modified responses.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/networkvalidation/NetworkDataSourceValidationHelper.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/daos/OpdsFeedEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/daos/OpdsPublicationEntityDao.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/schemas/world.respect.datalayer.db.RespectDatabase/1.json"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/OpdsDataSourceLocal.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/OpdsPublicationEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-http/src/commonMain/kotlin/world/respect/datalayer/http/opds/OpdsDataSourceHttp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/HttpClientExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsDataSourceDb.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/entities/OpdsFeedEntity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/adapters/OpdsFeedAdapter.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/adapters/OpdsPublicationEntityAdapter.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "server/src/main/resources/logback.xml",
          "shared/src/jvmTest/kotlin/world/respect/OpdsSerializationTest.kt",
          "shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/AbstractJsonSchemaValidator.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/validator/Validator.kt",
          "respect-server/src/main/resources/logback.xml",
          "shared/src/jvmMain/kotlin/world/respect/domain/respectappmanifest/validator/RespectAppManifestValidator.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/appstate/LoadingUiState.kt",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/lesson001/video.mp4",
          "composeApp/src/commonMain/kotlin/world/respect/app/datasource/RespectAppDataSourceProvider.kt",
          "respect-lib-shared/src/commonTest/resources/sample-with-array-rel.json",
          "shared/src/jvmMain/resources/world/respect/domain/validator/licenses.json",
          "composeApp/src/androidMain/res/mipmap-hdpi/ic_launcher_round.png",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_valid/appmanifest.json",
          "shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/app.html",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/opds/validator/HttpClientExt.kt",
          "shared/src/commonTest/resources/sample-with-array-rel.json",
          "composeApp/src/commonMain/kotlin/world/respect/navigation/NavCommand.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/validator/ValidateLinkUseCase.kt",
          "shared/src/jvmMain/kotlin/world/respect/domain/validator/ValidateHttpResponseForUrlUseCase.kt",
          "respect-app/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.png",
          "respect-app/src/androidMain/kotlin/world/respect/AppActivity.kt",
          "shared/src/jvmTest/resources/world/respect/validator/case_manifest_resources_do_not_exist/grade1/lesson001/lesson001.json",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModelFun.kt",
          "respect-lib-shared/src/jvmTest/kotlin/world/respect/OpdsSerializationTest.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModel.kt",
          "shared/src/jvmTest/resources/world/respect/validator/case_valid/app.html",
          "shared/src/jvmTest/resources/world/respect/validator/case_valid/grade1/lesson001/lesson001.html",
          "shared/src/jvmTest/kotlin/world/respect/testutil/TemporaryFolderExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/Platform.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/RespectAsyncImage.kt",
          "respect-lib-shared/src/jvmMain/resources/world/respect/domain/validator/licenses.json",
          "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "respect-server/build.gradle.kts",
          "composeApp/src/commonMain/kotlin/world/respect/app/appstate/SnackBarDispatcher.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/AbstractJsonSchemaValidator.kt",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_valid/grade1/lesson001/lesson001.json",
          "shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/OpdsPublicationValidator.kt",
          "composeApp/src/commonMain/kotlin/world/respect/App.kt",
          "respect-app/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml",
          "respect-lib-shared/src/commonTest/resources/sample-feed.json",
          "shared/src/jvmTest/kotlin/world/respect/domain/validator/TestValidationScenarios.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/Platform.jvm.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/validator/ValidateHttpResponseForUrlUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/Greeting.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/components/UiText.kt",
          "shared/src/commonTest/resources/sample-feed.json",
          "shared/src/jvmTest/resources/world/respect/validator/case_manifest_resources_do_not_exist/appmanifest.json",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt",
          "shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/index.json",
          "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModel.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt",
          "shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/ValidationMessageExt.kt",
          "respect-app/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml",
          "respect-app/src/commonMain/kotlin/world/respect/app/appstate/AppBarSearchUiState.kt",
          "shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/app.html",
          "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/report/ReportViewModel.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/components/UiText.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/validator/HttpLinkHeader.kt",
          "shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/grade1/lesson001/cover.png",
          "respect-app/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/grade1/lesson001/script.js",
          "respect-app/src/androidMain/res/values/strings.xml",
          "composeApp/src/commonMain/kotlin/theme/Color.kt",
          "shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/grade1/lesson001/video.mp4",
          "composeApp/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.png",
          "respect-app/src/desktopMain/kotlin/world/respect/main.kt",
          "shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/ValidateLinkUseCaseImpl.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/datasource/RespectAppDataSourceProvider.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/appstate/AppBarColors.kt",
          "shared/src/commonTest/resources/sample-publication.json",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_valid/index.json",
          "respect-app/src/androidMain/kotlin/world/respect/AbstractAppActivity.kt",
          "respect-app/src/androidMain/kotlin/world/respect/MainActivity.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/appstate/AppBarSearchUiState.kt",
          "respect-lib-shared/src/commonTest/resources/sample-catalog.json",
          "shared/src/commonMain/kotlin/world/respect/Platform.kt",
          "composeApp/src/androidMain/kotlin/world/respect/AppActivity.kt",
          "server/src/main/kotlin/world/respect/Application.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/appstate/Snack.kt",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_resources_do_not_exist/app.html",
          "respect-cli/build.gradle.kts",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/ValidateOpdsPublicationUseCase.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModelFun.kt",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/lesson001/lesson001.json",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/validator/DiscardOutputStream.kt",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_resources_do_not_exist/appmanifest.json",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/getfavicons/GetFavIconUseCase.kt",
          "respect-app/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_valid/app.html",
          "shared/src/jvmTest/resources/world/respect/validator/case_valid/grade1/lesson001/script.js",
          "respect-app/src/androidMain/AndroidManifest.xml",
          "shared/src/jvmTest/resources/world/respect/validator/case_valid/grade1/lesson001/video.mp4",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_valid/grade1/lesson001/cover.png",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/ValidateLinkUseCaseImpl.kt",
          "respect-lib-shared/src/jvmTest/kotlin/world/respect/testutil/FileExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/validator/ListAndPrintlnValidatorReporter.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/appstate/DisplayString.kt",
          "shared/src/jvmTest/kotlin/world/respect/domain/validator/HttpLinkHeaderTest.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/appstate/AppUiState.kt",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/lesson001/audio.ogg",
          "respect-app/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt",
          "shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/OpdsFeedValidator.kt",
          "composeApp/src/androidMain/res/mipmap-mdpi/ic_launcher_round.png",
          "shared/src/commonMain/kotlin/world/respect/domain/validator/ValidateLinkUseCase.kt",
          "respect-lib-shared/src/jvmTest/kotlin/world/respect/domain/validator/TestValidationScenarios.kt",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_resources_do_not_exist/grade1/lesson001/lesson001.json",
          "shared/src/commonMain/kotlin/world/respect/domain/validator/ListAndPrintlnValidatorReporter.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/assignments/AssignmentViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLinkViewModel.kt",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/app.html",
          "respect-server/src/main/kotlin/world/respect/Application.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/view/report/ReportScreen.kt",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/grade1/lesson001/lesson001.html",
          "shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/lesson001/video.mp4",
          "composeApp/src/androidMain/kotlin/world/respect/MainActivity.kt",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/lesson001/script.js",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/licenses/model/SpdxLicense.kt",
          "composeApp/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.png",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/app/AppBar.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/view/clazz/ClazzScreen.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/effects/AppUiStateEffect.kt",
          "shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/lesson001/script.js",
          "respect-app/src/commonMain/kotlin/world/respect/navigation/NavCommandEffect.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/appstate/AppUiState.kt",
          "respect-lib-shared/build.gradle.kts",
          "shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/grade1/lesson001/lesson001.html",
          "shared/src/commonMain/kotlin/world/respect/domain/validator/ValidatorReporter.kt",
          "shared/src/jvmTest/resources/world/respect/validator/case_valid/grade1/grade1.json",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/respectappmanifest/model/RespectSite.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/appstate/LoadingUiState.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt",
          "respect-app/src/commonMain/kotlin/world/respect/navigation/RespectComposeNavController.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/appstate/AppStateIcon.kt",
          "shared/src/commonTest/resources/sample-catalog.json",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/appmanifest.json",
          "composeApp/src/androidMain/res/drawable-v24/ic_launcher_foreground.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/validator/ValidatorMessage.kt",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/grade1/lesson001/audio.ogg",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/index.json",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/validator/HttpResponseExt.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt",
          "shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/lesson001/lesson001.json",
          "shared/src/jvmMain/resources/world/respect/domain/validator/README-licenses.txt",
          "respect-lib-shared/src/commonTest/resources/sample-publication.json",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/appstate/AppActionButton.kt",
          "composeApp/src/commonMain/composeResources/values/strings.xml",
          "composeApp/src/commonMain/kotlin/theme/CommonColor.kt",
          "respect-app/src/androidMain/res/mipmap-xhdpi/ic_launcher.png",
          "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/assignments/AssignmentViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/appstate/FabUiState.kt",
          "shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/index.json",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/SizeClass.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/CompatibleAppDataSourceDb.kt",
          "respect-app/src/commonMain/composeResources/drawable/compose-multiplatform.xml",
          "shared/src/commonTest/resources/opds-io-home.json",
          "shared/src/commonMain/resources/about-credits-common.html",
          "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "respect-app/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.png",
          "shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/grade1/lesson001/audio.ogg",
          "respect-lib-shared/src/commonMain/resources/about-credits-common.html",
          "composeApp/src/commonMain/kotlin/world/respect/app/datasource/SingleDataSourceProvider.kt",
          "shared/src/jvmTest/kotlin/world/respect/testutil/FileExt.kt",
          "shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/grade1/lesson001/lesson001.json",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/OpdsFeedValidator.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_resources_do_not_exist/index.json",
          "composeApp/build.gradle.kts",
          "shared/src/commonMain/kotlin/world/respect/domain/licenses/model/SpdxLicenseList.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/di/JvmKoinAppModule.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/appstate/FabUiState.kt",
          "shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/grade1.json",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/validator/ValidatorReporter.kt",
          "shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/lesson001/lesson001.html",
          "shared/src/commonMain/kotlin/world/respect/domain/opds/validator/HttpClientExt.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt",
          "shared/src/commonTest/resources/invalid-catalog.json",
          "respect-app/src/androidMain/res/mipmap-hdpi/ic_launcher_round.png",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/licenses/model/SpdxLicenseList.kt",
          "respect-app/src/commonMain/composeResources/values/strings.xml",
          "respect-app/src/commonMain/kotlin/world/respect/app/app/RespectAsyncImage.kt",
          "respect-app/src/commonMain/kotlin/theme/Color.kt",
          "shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/ValidateOpdsPublicationUseCase.kt",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/grade1/lesson001/cover.png",
          "respect-app/src/commonMain/kotlin/theme/Theme.kt",
          "shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/grade1/lesson001/script.js",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/grade1.json",
          "shared/src/jvmMain/kotlin/world/respect/domain/getfavicons/GetFavIconsUseCaseImpl.kt",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/grade1/lesson001/video.mp4",
          "shared/src/commonMain/kotlin/world/respect/domain/getfavicons/GetFavIconUseCase.kt",
          "respect-app/src/commonMain/kotlin/world/respect/App.kt",
          "respect-app/src/androidMain/res/mipmap-hdpi/ic_launcher.png",
          "shared/src/commonTest/resources/respect-manifest.json",
          "shared/src/commonMain/kotlin/world/respect/domain/validator/Validator.kt",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_valid/grade1/lesson001/script.js",
          "respect-app/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.png",
          "respect-app/src/commonMain/kotlin/world/respect/app/app/SizeClass.kt",
          "composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml",
          "respect-app/src/androidMain/res/mipmap-xxhdpi/ic_launcher.png",
          "shared/src/commonMain/kotlin/world/respect/domain/licenses/model/SpdxLicense.kt",
          "composeApp/src/androidMain/res/values/strings.xml",
          "composeApp/src/androidMain/res/mipmap-xhdpi/ic_launcher.png",
          "shared/src/jvmMain/kotlin/world/respect/domain/validator/HttpResponseExt.kt",
          "respect-app/src/desktopMain/resources/sample-feed.json",
          "respect-lib-shared/src/jvmMain/resources/world/respect/domain/validator/README-licenses.txt",
          "respect-app/src/commonMain/kotlin/world/respect/app/app/App.kt",
          "respect-app/build.gradle.kts",
          "composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.png",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/respectappmanifest/validator/RespectAppManifestValidator.kt",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_resources_do_not_exist/grade1/grade1.json",
          "shared/src/jvmMain/kotlin/world/respect/di/JvmKoinAppModule.kt",
          "shared/src/jvmTest/resources/world/respect/validator/case_manifest_resources_do_not_exist/app.html",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/appmanifest.json",
          "shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/lesson001/audio.ogg",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsDataSourceDb.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/appstate/SnackBarDispatcher.kt",
          "shared/src/commonMain/kotlin/world/respect/domain/validator/ValidatorMessage.kt",
          "shared/src/jvmTest/resources/world/respect/validator/case_valid/grade1/lesson001/audio.ogg",
          "shared/src/jvmTest/resources/world/respect/validator/case_manifest_resources_do_not_exist/index.json",
          "shared/src/jvmTest/resources/world/respect/validator/case_valid/grade1/lesson001/lesson001.json",
          "shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/grade1/grade1.json",
          "shared/src/jvmTest/resources/world/respect/validator/case_manifest_resources_do_not_exist/grade1/lesson001/lesson001.html",
          "shared/src/commonMain/kotlin/world/respect/Greeting.kt",
          "respect-app/src/androidMain/res/drawable-v24/ic_launcher_foreground.xml",
          "shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/appmanifest.json",
          "respect-app/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.png",
          "respect-app/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt",
          "respect-lib-shared/src/jvmTest/kotlin/world/respect/testutil/TemporaryFolderExt.kt",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_valid/grade1/lesson001/lesson001.html",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/assignments/AssignmentScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/navigation/RespectComposeNavController.kt",
          "shared/src/commonMain/kotlin/world/respect/Constants.kt",
          "composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.png",
          "composeApp/src/androidMain/kotlin/world/respect/RespectApp.kt",
          "shared/src/jvmTest/resources/world/respect/validator/case_valid/grade1/lesson001/cover.png",
          "respect-app/src/commonMain/kotlin/world/respect/app/appstate/Snack.kt",
          "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/clazz/ClazzScreen.kt",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_valid/grade1/lesson001/video.mp4",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt",
          "shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/appmanifest.json",
          "respect-lib-shared/src/commonTest/resources/opds-io-home.json",
          "composeApp/src/commonMain/kotlin/world/respect/navigation/NavCommandEffect.kt",
          "shared/src/jvmTest/resources/world/respect/validator/case_valid/index.json",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/grade1/grade1.json",
          "composeApp/src/androidMain/res/drawable/ic_launcher_background.xml",
          "respect-app/src/commonMain/kotlin/world/respect/navigation/NavCommand.kt",
          "respect-app/src/androidMain/res/mipmap-mdpi/ic_launcher.png",
          "composeApp/src/commonMain/kotlin/world/respect/app/components/UiTextStringResource.kt",
          "respect-app/src/commonMain/kotlin/theme/CommonColor.kt",
          "respect-lib-shared/src/commonTest/resources/invalid-catalog.json",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/index.json",
          "respect-app/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/appstate/AppStateIcon.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/components/UiTextStringResource.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/getfavicons/GetFavIconsUseCaseImpl.kt",
          "shared/src/jvmMain/kotlin/world/respect/domain/validator/DiscardOutputStream.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/appstate/AppBarColors.kt",
          "shared/src/commonMain/kotlin/world/respect/domain/respectappmanifest/model/RespectSite.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/report/ReportViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "composeApp/src/androidMain/res/mipmap-mdpi/ic_launcher.png",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/AppBar.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt",
          "shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/lesson001/cover.png",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/report/ReportScreen.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/adapters/ValidationInfoAdapter.kt",
          "shared/src/commonMain/kotlin/world/respect/domain/validator/HttpLinkHeader.kt",
          "composeApp/src/androidMain/res/mipmap-hdpi/ic_launcher.png",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_valid/grade1/grade1.json",
          "composeApp/src/commonMain/kotlin/world/respect/app/domain/account/RespectAccount.kt",
          "respect-app/src/androidMain/kotlin/world/respect/RespectApp.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt",
          "composeApp/src/commonMain/composeResources/drawable/compose-multiplatform.xml",
          "respect-lib-shared/src/commonTest/resources/respect-manifest.json",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/ValidationMessageExt.kt",
          "composeApp/src/androidMain/kotlin/world/respect/AbstractAppActivity.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/appstate/DisplayString.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/clazz/ClazzViewModel.kt",
          "shared/src/jvmTest/resources/world/respect/validator/case_valid/appmanifest.json",
          "composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml",
          "respect-lib-shared/src/jvmTest/kotlin/world/respect/domain/validator/HttpLinkHeaderTest.kt",
          "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/ValidationInfo.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/lesson001/lesson001.html",
          "shared/src/androidMain/kotlin/world/respect/Platform.android.kt",
          "shared/src/jvmMain/kotlin/world/respect/Platform.jvm.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/clazz/ClazzViewModel.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/appstate/AppActionButton.kt",
          "respect-app/src/androidMain/res/drawable/ic_launcher_background.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/Constants.kt",
          "settings.gradle.kts",
          "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLinkViewModel.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/app/App.kt",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_valid/grade1/lesson001/audio.ogg",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/lesson001/cover.png",
          "composeApp/src/desktopMain/resources/sample-feed.json",
          "shared/src/jvmTest/resources/world/respect/validator/case_manifest_resources_do_not_exist/grade1/grade1.json",
          "respect-app/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt",
          "composeApp/src/commonMain/kotlin/world/respect/app/effects/AppUiStateEffect.kt",
          "composeApp/src/commonMain/kotlin/theme/Theme.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/OpdsPublicationValidator.kt",
          "shared/build.gradle.kts",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_resources_do_not_exist/grade1/lesson001/lesson001.html",
          "composeApp/src/androidMain/AndroidManifest.xml",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/app.html",
          "respect-app/src/commonMain/kotlin/world/respect/app/domain/account/RespectAccount.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/Platform.android.kt",
          "composeApp/src/androidMain/res/mipmap-xxhdpi/ic_launcher.png",
          "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/grade1/lesson001/lesson001.json",
          "respect-app/src/commonMain/kotlin/world/respect/app/view/assignments/AssignmentScreen.kt",
          "respect-app/src/androidMain/res/mipmap-mdpi/ic_launcher_round.png",
          "server/build.gradle.kts",
          "composeApp/src/desktopMain/kotlin/world/respect/main.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/datasource/SingleDataSourceProvider.kt"
        ],
        "commitId" : "3ad08609c43f3bcc96ebe79bacc8e8ada6fe8b71",
        "timestamp" : 1752406350000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Module renaming\u000a",
        "date" : "2025-07-13 15:32:30 +0400",
        "id" : "3ad08609c43f3bcc96ebe79bacc8e8ada6fe8b71",
        "msg" : "Module renaming",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/report/ReportViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_resources_do_not_exist/index.json"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/theme/CommonColor.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/kotlin/world/respect/testutil/TemporaryFolderExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/Greeting.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/getfavicons/GetFavIconsUseCaseImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/navigation/NavCommandEffect.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/appstate/DisplayString.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/resources/logback.xml"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/commonMain/kotlin/world/respect/domain/opds/validator/HttpClientExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/commonMain/kotlin/world/respect/Greeting.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/lesson001/cover.png"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/composeResources/drawable/compose-multiplatform.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/appstate/AppBarColors.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonTest/resources/respect-manifest.json"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/assignments/AssignmentViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/ValidateOpdsPublicationUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/appstate/SnackBarDispatcher.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/Platform.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/App.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/desktopMain/resources/sample-feed.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/OpdsFeedValidator.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/ValidateOpdsPublicationUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/app/SizeClass.kt"
          },
          {
            "editType" : "delete",
            "file" : "server/src/main/kotlin/world/respect/Application.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/grade1.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/Constants.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/commonMain/kotlin/world/respect/domain/respectappmanifest/model/RespectSite.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_valid/grade1/lesson001/cover.png"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/kotlin/world/respect/domain/validator/TestValidationScenarios.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.png"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/lesson001/audio.ogg"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/androidMain/res/mipmap-hdpi/ic_launcher.png"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/validator/ValidatorReporter.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/grade1/grade1.json"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/kotlin/world/respect/domain/validator/HttpLinkHeaderTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/theme/Color.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/kotlin/world/respect/domain/validator/TestValidationScenarios.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/SizeClass.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/grade1/lesson001/audio.ogg"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/ValidateLinkUseCaseImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/RespectAsyncImage.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/composeResources/drawable/compose-multiplatform.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/validator/DiscardOutputStream.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/grade1/grade1.json"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/appstate/AppBarSearchUiState.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/grade1/lesson001/video.mp4"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/clazz/ClazzScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/navigation/NavCommand.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/lesson001/lesson001.html"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/androidMain/res/mipmap-xxhdpi/ic_launcher.png"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/adapters/ValidationInfoAdapter.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppBar.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/appstate/LoadingUiState.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmMain/resources/world/respect/domain/validator/licenses.json"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/lesson001/video.mp4"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_valid/grade1/lesson001/audio.ogg"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/commonTest/resources/sample-catalog.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonTest/resources/sample-catalog.json"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.png"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmMain/resources/world/respect/domain/validator/README-licenses.txt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_resources_do_not_exist/app.html"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/shared/ValidationInfo.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/index.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/validator/ValidateLinkUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/kotlin/world/respect/testutil/TemporaryFolderExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/grade1/lesson001/lesson001.html"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmMain/resources/world/respect/domain/validator/README-licenses.txt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/appstate/AppStateIcon.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_resources_do_not_exist/grade1/lesson001/lesson001.html"
          },
          {
            "editType" : "delete",
            "file" : "server/src/main/resources/logback.xml"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/commonMain/kotlin/world/respect/domain/licenses/model/SpdxLicense.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/resources/about-credits-common.html"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_resources_do_not_exist/appmanifest.json"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/androidMain/res/values/strings.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.png"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/licenses/model/SpdxLicense.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/appstate/AppStateIcon.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/di/JvmKoinAppModule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModelFun.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmMain/kotlin/world/respect/domain/validator/ValidateHttpResponseForUrlUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/desktopMain/kotlin/world/respect/main.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/datasource/RespectAppDataSourceProvider.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.png"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/androidMain/kotlin/world/respect/AbstractAppActivity.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_manifest_resources_do_not_exist/grade1/grade1.json"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/commonMain/kotlin/world/respect/domain/validator/ValidateLinkUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/validator/Validator.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/commonMain/kotlin/world/respect/domain/validator/ValidatorMessage.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/components/UiTextStringResource.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/components/UiTextStringResource.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/MainActivity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/app/App.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/commonTest/resources/opds-io-home.json"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_valid/appmanifest.json"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/report/ReportScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/lesson001/lesson001.html"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/navigation/NavCommand.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/opds/validator/HttpClientExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLinkViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_manifest_resources_do_not_exist/index.json"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/androidMain/AndroidManifest.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/kotlin/world/respect/domain/validator/HttpLinkHeaderTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/grade1/lesson001/lesson001.json"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/app/RespectAsyncImage.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/appstate/SnackBarDispatcher.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/validator/ValidatorMessage.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/AbstractAppActivity.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/OpdsFeedValidator.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-server/src/main/kotlin/world/respect/Application.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/theme/Color.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/commonMain/resources/about-credits-common.html"
          },
          {
            "editType" : "add",
            "file" : "respect-app/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/appstate/AppBarColors.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/kotlin/world/respect/testutil/FileExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-cli/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/AbstractJsonSchemaValidator.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/appstate/DisplayString.kt"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_valid/grade1/lesson001/lesson001.json"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/appmanifest.json"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/navigation/RespectComposeNavController.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLinkViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_valid/grade1/lesson001/video.mp4"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/App.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/commonMain/kotlin/world/respect/Constants.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/OpdsPublicationValidator.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/datasource/SingleDataSourceProvider.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/ValidationMessageExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/appstate/AppActionButton.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/appstate/Snack.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/commonMain/kotlin/world/respect/domain/validator/HttpLinkHeader.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_resources_do_not_exist/grade1/lesson001/lesson001.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_resources_do_not_exist/grade1/grade1.json"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_manifest_resources_do_not_exist/grade1/lesson001/lesson001.json"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/grade1/lesson001/lesson001.json"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/validator/HttpResponseExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.png"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/theme/Theme.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/app.html"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmMain/kotlin/world/respect/domain/validator/DiscardOutputStream.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/appstate/Snack.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonTest/resources/sample-publication.json"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/commonMain/kotlin/world/respect/domain/validator/ListAndPrintlnValidatorReporter.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/androidMain/res/mipmap-hdpi/ic_launcher_round.png"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/appstate/AppUiState.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/domain/account/RespectAccount.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/androidMain/kotlin/world/respect/RespectApp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/datasource/SingleDataSourceProvider.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/RespectApp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/androidMain/res/mipmap-xxhdpi/ic_launcher.png"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/getfavicons/GetFavIconUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/androidMain/res/mipmap-mdpi/ic_launcher.png"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/appstate/FabUiState.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_valid/grade1/lesson001/script.js"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/androidMain/res/mipmap-mdpi/ic_launcher_round.png"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModelFun.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/androidMain/res/mipmap-xhdpi/ic_launcher.png"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/index.json"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/components/UiText.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_valid/app.html"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/androidMain/res/mipmap-mdpi/ic_launcher.png"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/assignments/AssignmentScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/lesson001/script.js"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_valid/grade1/grade1.json"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/androidMain/res/mipmap-xhdpi/ic_launcher.png"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/commonMain/kotlin/world/respect/domain/licenses/model/SpdxLicenseList.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_valid/appmanifest.json"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmMain/kotlin/world/respect/domain/getfavicons/GetFavIconsUseCaseImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/validator/HttpLinkHeader.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_valid/grade1/lesson001/cover.png"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/app.html"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/commonMain/kotlin/world/respect/domain/validator/Validator.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonTest/resources/sample-with-array-rel.json"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/Platform.android.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/app.html"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/commonTest/resources/respect-manifest.json"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/commonTest/resources/invalid-catalog.json"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/assignments/AssignmentViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmMain/kotlin/world/respect/di/JvmKoinAppModule.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_valid/app.html"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/appmanifest.json"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/commonTest/resources/sample-feed.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/Platform.jvm.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/app.html"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/OpdsPublicationValidator.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/androidMain/res/drawable-v24/ic_launcher_foreground.xml"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/lesson001/script.js"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/appstate/AppActionButton.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/validator/ListAndPrintlnValidatorReporter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/view/report/ReportScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/navigation/NavCommandEffect.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/validator/ValidateHttpResponseForUrlUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/respectappmanifest/model/RespectSite.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/appstate/AppBarSearchUiState.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/licenses/model/SpdxLicenseList.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/lesson001/lesson001.json"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmMain/kotlin/world/respect/domain/validator/HttpResponseExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/grade1/lesson001/script.js"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/grade1/lesson001/script.js"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/grade1/lesson001/video.mp4"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_valid/grade1/lesson001/lesson001.html"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/ValidateLinkUseCaseImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/androidMain/kotlin/world/respect/Platform.android.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_manifest_resources_do_not_exist/app.html"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_valid/grade1/lesson001/lesson001.html"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/lesson001/lesson001.json"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_valid/grade1/lesson001/video.mp4"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/appstate/FabUiState.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/androidMain/kotlin/world/respect/AppActivity.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.png"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/theme/Theme.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/commonMain/kotlin/world/respect/Platform.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/commonTest/resources/sample-with-array-rel.json"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/theme/CommonColor.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/androidMain/res/drawable-v24/ic_launcher_foreground.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/androidMain/res/drawable/ic_launcher_background.xml"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_manifest_resources_do_not_exist/grade1/lesson001/lesson001.html"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_valid/grade1/grade1.json"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmMain/kotlin/world/respect/domain/respectappmanifest/validator/RespectAppManifestValidator.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/lesson001/cover.png"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/domain/account/RespectAccount.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/clazz/ClazzViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/AbstractJsonSchemaValidator.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/androidMain/res/values/strings.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/effects/AppUiStateEffect.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/commonMain/kotlin/world/respect/domain/validator/ValidatorReporter.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/androidMain/res/mipmap-hdpi/ic_launcher.png"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/commonTest/resources/sample-publication.json"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/grade1/lesson001/cover.png"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/androidMain/res/mipmap-hdpi/ic_launcher_round.png"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/androidMain/res/mipmap-mdpi/ic_launcher_round.png"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/view/assignments/AssignmentScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/respectappmanifest/validator/RespectAppManifestValidator.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/index.json"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/app/App.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonTest/resources/invalid-catalog.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/index.json"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/desktopMain/kotlin/world/respect/main.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/components/UiText.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/androidMain/kotlin/world/respect/MainActivity.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/lesson001/audio.ogg"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_manifest_resources_do_not_exist/appmanifest.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/grade1/lesson001/cover.png"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/kotlin/world/respect/testutil/FileExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonTest/resources/sample-feed.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/grade1/lesson001/audio.ogg"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmMain/kotlin/world/respect/Platform.jvm.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.png"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/appstate/AppUiState.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/kotlin/world/respect/OpdsSerializationTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_valid/grade1/lesson001/lesson001.json"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/androidMain/AndroidManifest.xml"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.png"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/effects/AppUiStateEffect.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/kotlin/world/respect/OpdsSerializationTest.kt"
          },
          {
            "editType" : "delete",
            "file" : "server/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_valid/grade1/lesson001/audio.ogg"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_valid/index.json"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/commonMain/kotlin/world/respect/domain/getfavicons/GetFavIconUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/androidMain/kotlin/world/respect/AppActivity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/compatibleapps/CompatibleAppDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/grade1/lesson001/lesson001.html"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/view/clazz/ClazzScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/navigation/RespectComposeNavController.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/src/commonMain/kotlin/world/respect/datalayer/db/opds/OpdsDataSourceDb.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/appstate/LoadingUiState.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/grade1.json"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/app/AppBar.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/clazz/ClazzViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/androidMain/res/drawable/ic_launcher_background.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/desktopMain/resources/sample-feed.json"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/datasource/RespectAppDataSourceProvider.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/ValidationMessageExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_valid/grade1/lesson001/script.js"
          },
          {
            "editType" : "delete",
            "file" : "composeApp/src/commonMain/kotlin/world/respect/app/viewmodel/report/ReportViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/appmanifest.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_manifest_not_discoverable/grade1/lesson001/video.mp4"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_valid/index.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonTest/resources/opds-io-home.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmMain/resources/world/respect/domain/validator/licenses.json"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmTest/resources/world/respect/validator/case_no_resources_in_manifest/appmanifest.json"
          },
          {
            "editType" : "add",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/enterlink/EnterLinkViewModel.kt",
          "respect-app/src/commonMain/composeResources/drawable/compose-multiplatform.xml",
          "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "respect-app/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.png",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/SnackBarDispatcher.kt",
          "respect-app-compose/src/androidMain/res/mipmap-xxhdpi/ic_launcher.png",
          "gradle/libs.versions.toml",
          "respect-app/src/commonMain/kotlin/world/respect/app/appstate/LoadingUiState.kt",
          "respect-lib-shared/src/commonMain/composeResources/drawable/compose-multiplatform.xml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/effects/AppUiStateEffect.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt",
          "respect-app-compose/src/androidMain/res/mipmap-hdpi/ic_launcher.png",
          "respect-app-compose/src/commonMain/kotlin/theme/Theme.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppBarSearchUiState.kt",
          "respect-app-compose/src/androidMain/res/mipmap-xhdpi/ic_launcher.png",
          "respect-app-compose/src/androidMain/res/mipmap-hdpi/ic_launcher_round.png",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModelFun.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/appstate/FabUiState.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppUiState.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/RespectComposeNavController.kt",
          "respect-app/src/androidMain/res/mipmap-hdpi/ic_launcher_round.png",
          "respect-app-compose/src/androidMain/AndroidManifest.xml",
          "respect-app-compose/src/desktopMain/kotlin/world/respect/main.kt",
          "respect-app/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppStateIcon.kt",
          "respect-datalayer-db/build.gradle.kts",
          "respect-app/src/commonMain/kotlin/world/respect/app/app/RespectAsyncImage.kt",
          "respect-app/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.png",
          "respect-app-compose/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.png",
          "respect-app/src/commonMain/kotlin/theme/Color.kt",
          "respect-app/src/androidMain/kotlin/world/respect/AppActivity.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/list/AppListViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/datasource/RespectAppDataSourceProvider.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppBarColors.kt",
          "respect-app/src/commonMain/kotlin/theme/Theme.kt",
          "respect-app-compose/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.png",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignments/AssignmentScreen.kt",
          "respect-app/src/commonMain/kotlin/world/respect/App.kt",
          "respect-app/src/androidMain/res/mipmap-hdpi/ic_launcher.png",
          "respect-app-compose/src/androidMain/res/drawable-v24/ic_launcher_foreground.xml",
          "respect-app/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.png",
          "respect-app/src/commonMain/kotlin/world/respect/app/app/SizeClass.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "respect-app/src/androidMain/res/mipmap-xxhdpi/ic_launcher.png",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/SizeClass.kt",
          "respect-app-compose/src/androidMain/res/mipmap-mdpi/ic_launcher.png",
          "respect-app-compose/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.png",
          "respect-app/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/NavCommand.kt",
          "respect-app/src/desktopMain/resources/sample-feed.json",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/ClazzScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/app/App.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsDataSourceRepository.kt",
          "respect-app/build.gradle.kts",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/account/RespectAccount.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/AppActivity.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/App.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModel.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/appstate/SnackBarDispatcher.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt",
          "respect-app/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml",
          "respect-app/src/commonMain/kotlin/world/respect/app/appstate/AppBarSearchUiState.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/components/UiText.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/report/ReportViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/Snack.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/DataLoadStateExt.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-app/src/androidMain/res/values/strings.xml",
          "respect-app-compose/src/androidMain/kotlin/world/respect/MainActivity.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/RespectViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/ReportScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/UiTextStringResource.kt",
          "respect-app/src/desktopMain/kotlin/world/respect/main.kt",
          "respect-app/src/androidMain/res/drawable-v24/ic_launcher_foreground.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/resources/UiText.kt",
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/ReportViewModel.kt",
          "respect-app/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.png",
          "respect-app/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/datasource/RespectAppDataSourceProvider.kt",
          "respect-app/src/androidMain/kotlin/world/respect/AbstractAppActivity.kt",
          "respect-app/src/androidMain/kotlin/world/respect/MainActivity.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt",
          "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/navigation/NavCommandEffect.kt",
          "respect-app-compose/src/commonMain/kotlin/theme/CommonColor.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/appstate/Snack.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/datasource/SingleDataSourceProvider.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModelFun.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/ClazzViewModel.kt",
          "respect-app/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-app/src/androidMain/AndroidManifest.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/DisplayString.kt",
          "respect-app/src/commonMain/kotlin/world/respect/navigation/NavCommand.kt",
          "respect-app-compose/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml",
          "respect-app/src/androidMain/res/mipmap-mdpi/ic_launcher.png",
          "respect-app/src/commonMain/kotlin/theme/CommonColor.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/appstate/DisplayString.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/appstate/AppStateIcon.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/appstate/AppUiState.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/components/UiTextStringResource.kt",
          "respect-app-compose/src/androidMain/res/values/strings.xml",
          "respect-app/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/theme/Color.kt",
          "respect-app-compose/src/androidMain/res/drawable/ic_launcher_background.xml",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignments/AssignmentViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/RespectAsyncImage.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt",
          "respect-app-compose/src/androidMain/res/mipmap-mdpi/ic_launcher_round.png",
          "respect-app/src/commonMain/kotlin/world/respect/app/appstate/AppBarColors.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/view/report/ReportScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/LoadingUiState.kt",
          "respect-app/src/androidMain/kotlin/world/respect/RespectApp.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/FabUiState.kt",
          "respect-app-compose/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml",
          "respect-app/src/commonMain/kotlin/world/respect/app/app/AppBar.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/view/clazz/ClazzScreen.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/effects/AppUiStateEffect.kt",
          "respect-app/src/commonMain/kotlin/world/respect/navigation/NavCommandEffect.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/compatibleapps/CompatibleAppDataSourceRepository.kt",
          "respect-lib-shared/build.gradle.kts",
          "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/ext/DataLoadStateExt.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/clazz/ClazzViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppActionButton.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt",
          "respect-app/src/commonMain/kotlin/world/respect/navigation/RespectComposeNavController.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AbstractAppActivity.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/appstate/AppActionButton.kt",
          "respect-app/src/androidMain/res/drawable/ic_launcher_background.xml",
          "respect-app-compose/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.png",
          "settings.gradle.kts",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLinkViewModel.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/RespectApp.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/domain/account/RespectAccount.kt",
          "respect-app-compose/src/desktopMain/resources/sample-feed.json",
          "respect-app/src/androidMain/res/mipmap-xhdpi/ic_launcher.png",
          "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/assignments/AssignmentViewModel.kt",
          "respect-app/src/commonMain/kotlin/world/respect/app/view/assignments/AssignmentScreen.kt",
          "respect-app/src/androidMain/res/mipmap-mdpi/ic_launcher_round.png",
          "respect-app/src/commonMain/kotlin/world/respect/app/datasource/SingleDataSourceProvider.kt"
        ],
        "commitId" : "917b3fe44bd068595c9f9613b8761e4ce0e6f39a",
        "timestamp" : 1752420213000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Move viewmodels and domain use cases into lib-shared.\u000a",
        "date" : "2025-07-13 19:23:33 +0400",
        "id" : "917b3fe44bd068595c9f9613b8761e4ce0e6f39a",
        "msg" : "Move viewmodels and domain use cases into lib-shared.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/effects/AppUiStateEffect.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/RespectComposeNavController.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/theme/Color.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppBarSearchUiState.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/account/RespectAccount.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppStateIcon.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/FabUiState.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/res/drawable/ic_launcher_background.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/androidMain/res/mipmap-mdpi/ic_launcher_round.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/theme/Theme.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/androidMain/res/mipmap-hdpi/ic_launcher_round.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/components/UiText.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/androidMain/res/drawable-v24/ic_launcher_foreground.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/components/UiTextStringResource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/view/clazz/ClazzScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/view/report/ReportScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppUiState.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/appstate/AppActionButton.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.png"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/compatibleapps/CompatibleAppDataSourceRepository.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/ext/DataLoadStateExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/navigation/RespectComposeNavController.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/App.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/androidMain/res/drawable/ic_launcher_background.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/desktopMain/resources/sample-feed.json"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/res/mipmap-mdpi/ic_launcher.png"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.png"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/datasource/RespectAppDataSourceProvider.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/composeResources/drawable/compose-multiplatform.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/report/ReportScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/androidMain/res/values/strings.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/res/drawable-v24/ic_launcher_foreground.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/RespectViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/apps/enterlink/EnterLinkViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/datasource/SingleDataSourceProvider.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AbstractAppActivity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppActivity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/app/RespectAsyncImage.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/composeResources/drawable/compose-multiplatform.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/datasource/SingleDataSourceProvider.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/resources/UiText.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/androidMain/res/mipmap-mdpi/ic_launcher.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/theme/CommonColor.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/app/SizeClass.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/assignments/AssignmentViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/enterlink/EnterLinkViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "settings.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/navigation/NavCommandEffect.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/androidMain/res/mipmap-xhdpi/ic_launcher_round.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/res/mipmap-hdpi/ic_launcher.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/ext/DataLoadStateExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/NavCommand.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/SnackBarDispatcher.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/clazz/ClazzViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/androidMain/kotlin/world/respect/RespectApp.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/assignments/AssignmentViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/res/values/strings.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/androidMain/AndroidManifest.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/jvmTest/kotlin/world/respect/datalayer/repository/opds/OpdsRespectRepositoryIntegrationTest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/launcher/AppLauncherViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/datasource/RespectAppDataSourceProvider.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/LoadingUiState.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/desktopMain/kotlin/world/respect/main.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppBarColors.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/androidMain/kotlin/world/respect/AppActivity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/res/mipmap-xxhdpi/ic_launcher.png"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/view/assignments/AssignmentScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/report/ReportViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/view/apps/enterlink/EnterLinkScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/Snack.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/report/ReportViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/appstate/LoadingUiState.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/theme/Theme.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/appstate/DisplayString.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/RespectApp.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/UiTextStringResource.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/desktopMain/resources/sample-feed.json"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/theme/CommonColor.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/RespectAsyncImage.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/androidMain/kotlin/world/respect/AbstractAppActivity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/androidMain/kotlin/world/respect/MainActivity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/appstate/AppBarSearchUiState.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/res/mipmap-hdpi/ic_launcher_round.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/app/AppBar.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/AppActionButton.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/appstate/FabUiState.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/clazz/ClazzViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/effects/AppUiStateEffect.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/RespectViewModelFun.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/appstate/Snack.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/domain/account/RespectAccount.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/androidMain/res/mipmap-hdpi/ic_launcher.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/navigation/NavCommand.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/clazz/ClazzScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/androidMain/res/mipmap-anydpi-v26/ic_launcher_round.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/appstate/AppStateIcon.kt"
          },
          {
            "editType" : "add",
            "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/viewmodel/RespectViewModelFun.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/viewmodel/apps/list/AppListViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/res/mipmap-mdpi/ic_launcher_round.png"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/App.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.png"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/list/AppListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/res/mipmap-xhdpi/ic_launcher.png"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/app/App.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-db/build.gradle.kts"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/desktopMain/kotlin/world/respect/main.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.png"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/assignments/AssignmentScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/appstate/SnackBarDispatcher.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/MainActivity.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/res/mipmap-xxhdpi/ic_launcher_round.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/androidMain/res/mipmap-xxhdpi/ic_launcher.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/app/appstate/DisplayString.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/res/mipmap-xxxhdpi/ic_launcher_round.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/appstate/AppBarColors.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/AndroidManifest.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/app/AppScreenList.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/theme/Color.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/apps/detail/AppsDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer-repository/src/commonMain/kotlin/world/respect/datalayer/repository/opds/OpdsDataSourceRepository.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/res/mipmap-anydpi-v26/ic_launcher.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/App.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/app/appstate/AppUiState.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/commonMain/kotlin/world/respect/navigation/NavCommandEffect.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app/src/androidMain/res/mipmap-xhdpi/ic_launcher.png"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/SizeClass.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/ValidatorReporter.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/di/JvmKoinAppModule.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/getfavicons/GetFavIconUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/licenses/model/SpdxLicense.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccount.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/ValidatorMessage.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/validator/Validator.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/AbstractJsonSchemaValidator.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/opds/validator/OpdsPublicationValidator.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/Validator.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/ValidationMessageExt.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/validator/DiscardOutputStream.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/licenses/model/SpdxLicenseList.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/OpdsFeedValidator.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/respectappmanifest/model/RespectSite.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/ValidateOpdsPublicationUseCase.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/validator/ValidateHttpResponseForUrlUseCase.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/respectappmanifest/validator/RespectAppManifestValidator.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/account/RespectAccount.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/di/JvmKoinAppModule.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/validator/DiscardOutputStream.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/getfavicons/GetFavIconUseCase.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/getfavicons/GetFavIconsUseCaseImpl.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/validator/HttpResponseExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/validator/ValidatorReporter.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/opds/validator/HttpClientExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/respectappmanifest/model/RespectSite.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/ValidateLinkUseCaseImpl.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/validator/ValidatorMessage.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/ValidateLinkUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/licenses/model/SpdxLicenseList.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/validator/ValidateLinkUseCase.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/validator/HttpResponseExt.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/licenses/model/SpdxLicense.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/validator/ListAndPrintlnValidatorReporter.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/validator/ValidateHttpResponseForUrlUseCase.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/opds/validator/ValidateOpdsPublicationUseCase.kt",
          "respect-cli/src/main/java/world/respect/clitools/RespectCLI.kt",
          "respect-lib-shared/src/jvmTest/kotlin/world/respect/domain/validator/TestValidationScenarios.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/getfavicons/GetFavIconsUseCaseImpl.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/OpdsPublicationValidator.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/respectappmanifest/validator/RespectAppManifestValidator.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/ListAndPrintlnValidatorReporter.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/opds/validator/ValidateLinkUseCaseImpl.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/opds/validator/HttpClientExt.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/opds/validator/AbstractJsonSchemaValidator.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/opds/validator/ValidationMessageExt.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/opds/validator/OpdsFeedValidator.kt"
        ],
        "commitId" : "282924fc617f0e82ed994beaee586331cb3a60fb",
        "timestamp" : 1752421142000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Correct domain package in shared module.\u000a",
        "date" : "2025-07-13 19:39:02 +0400",
        "id" : "282924fc617f0e82ed994beaee586331cb3a60fb",
        "msg" : "Correct domain package in shared module.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/ValidateLinkUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/opds/validator/HttpClientExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/opds/validator/ValidationMessageExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/ValidatorReporter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccount.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/validator/DiscardOutputStream.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/ValidateLinkUseCaseImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/validator/ValidateHttpResponseForUrlUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/respectappmanifest/validator/RespectAppManifestValidator.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/getfavicons/GetFavIconsUseCaseImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/AbstractJsonSchemaValidator.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/account/RespectAccount.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/respectappmanifest/model/RespectSite.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/validator/ValidatorReporter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/respectappmanifest/validator/RespectAppManifestValidator.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/Validator.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/ValidationMessageExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/opds/validator/ValidateLinkUseCaseImpl.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/OpdsFeedValidator.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/validator/HttpResponseExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/validator/ValidateHttpResponseForUrlUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-cli/src/main/java/world/respect/clitools/RespectCLI.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/opds/validator/HttpClientExt.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/validator/Validator.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/licenses/model/SpdxLicenseList.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/di/JvmKoinAppModule.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/validator/DiscardOutputStream.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/getfavicons/GetFavIconUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/ListAndPrintlnValidatorReporter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/opds/validator/OpdsFeedValidator.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/validator/ValidatorMessage.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/getfavicons/GetFavIconUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/validator/ListAndPrintlnValidatorReporter.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/respectappmanifest/model/RespectSite.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/validator/HttpResponseExt.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/getfavicons/GetFavIconsUseCaseImpl.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/licenses/model/SpdxLicense.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/licenses/model/SpdxLicenseList.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/validator/ValidateLinkUseCase.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/di/JvmKoinAppModule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/opds/validator/ValidateOpdsPublicationUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/ValidatorMessage.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/opds/validator/OpdsPublicationValidator.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/opds/validator/AbstractJsonSchemaValidator.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/licenses/model/SpdxLicense.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmTest/kotlin/world/respect/domain/validator/TestValidationScenarios.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/OpdsPublicationValidator.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/domain/opds/validator/ValidateOpdsPublicationUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/validator/HttpLinkHeader.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/HttpLinkHeader.kt"
        ],
        "commitId" : "374924ad39fbbb413d76b258f3cfdcccdf174c79",
        "timestamp" : 1752421151000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Correct domain package in shared module.\u000a",
        "date" : "2025-07-13 19:39:11 +0400",
        "id" : "374924ad39fbbb413d76b258f3cfdcccdf174c79",
        "msg" : "Correct domain package in shared module.",
        "paths" : [
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/domain/validator/HttpLinkHeader.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/validator/HttpLinkHeader.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/OneRosterRosterDataSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterRoleEnumExt.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterRoleTypeEnum.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/serialization/StringOrObjectSerializer.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/serialization/SingleItemToListTransformerSerializer.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterOrgGUIDRef.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/OneRosterDataSource.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/serialization/LocalDateOrDateTime.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/ReadiumSubject.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/serialization/LocalDateOrDateTime.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/serialization/StringOrObjectSerializer.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/serialization/StringListSerializer.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/serialization/UriStringSerializer.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/compatibleapps/model/RespectAppManifest.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterUser.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/LangMap.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterRole.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterUserId.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/ReadiumContributorObject.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterUserProfile.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/serialization/InstantISO8601Serializer.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/OpdsFeedMetadata.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/ReadiumLinkPropertiesEncrypted.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/serialization/StringListSerializer.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/serialization/SingleItemToListTransformerSerializer.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterResourceGUIDRef.kt",
          "respect-cli/src/main/java/world/respect/clitools/RespectCLI.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterBaseStatusEnum.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/ReadiumMetadata.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterRoleEnum.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/serialization/StringValue.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/ReadiumLink.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterBase.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/serialization/UriStringSerializer.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/serialization/StringValue.kt"
        ],
        "commitId" : "1f91abe85334659b3eaa6376d6dda37f8ffd099c",
        "timestamp" : 1752490616000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add some OneRoster model classes.\u000a",
        "date" : "2025-07-14 14:56:56 +0400",
        "id" : "1f91abe85334659b3eaa6376d6dda37f8ffd099c",
        "msg" : "Add some OneRoster model classes.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/ReadiumContributorObject.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/serialization/UriStringSerializer.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/OneRosterRosterDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/LangMap.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/serialization/StringValue.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/OneRosterDataSource.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterRoleTypeEnum.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/serialization/StringValue.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-cli/src/main/java/world/respect/clitools/RespectCLI.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/serialization/LocalDateOrDateTime.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/serialization/UriStringSerializer.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterBaseStatusEnum.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/compatibleapps/model/RespectAppManifest.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/ReadiumMetadata.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterBase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterUser.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterUserProfile.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/serialization/StringOrObjectSerializer.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/ReadiumLink.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterUserId.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterResourceGUIDRef.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterOrgGUIDRef.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterRoleEnum.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/serialization/LocalDateOrDateTime.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/serialization/InstantISO8601Serializer.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/serialization/StringListSerializer.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/serialization/StringListSerializer.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterRoleEnumExt.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/ReadiumSubject.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/ReadiumLinkPropertiesEncrypted.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterRole.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/model/OpdsFeedMetadata.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/opds/serialization/SingleItemToListTransformerSerializer.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/serialization/StringOrObjectSerializer.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/shared/serialization/SingleItemToListTransformerSerializer.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/jvmTest/kotlin/world/respect/domain/validator/TestValidationScenarios.kt"
        ],
        "commitId" : "63e78ac26664bb092c921ecd228629e4faa24a4b",
        "timestamp" : 1752492375000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Temporarily disable validation tests that are failing due to broken link in readium json schema.\u000a",
        "date" : "2025-07-14 15:26:15 +0400",
        "id" : "63e78ac26664bb092c921ecd228629e4faa24a4b",
        "msg" : "Temporarily disable validation tests that are failing due to broken link in readium json schema.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmTest/kotlin/world/respect/domain/validator/TestValidationScenarios.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/jvmTest/kotlin/world/respect/domain/validator/TestValidationScenarios.kt"
        ],
        "commitId" : "1309de59134a6af0b39a58bad2fe714cad730f60",
        "timestamp" : 1752492853000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Update link\u000a",
        "date" : "2025-07-14 15:34:13 +0400",
        "id" : "1309de59134a6af0b39a58bad2fe714cad730f60",
        "msg" : "Update link",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmTest/kotlin/world/respect/domain/validator/TestValidationScenarios.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-lib-shared/src/jvmTest/kotlin/world/respect/domain/validator/TestValidationScenarios.kt"
        ],
        "commitId" : "fb3fee20ba6fa363dc24c6b99c7178cea300bcf6",
        "timestamp" : 1752496202000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Enable validator tests as JSON schema has been fixed.\u000a",
        "date" : "2025-07-14 16:30:02 +0400",
        "id" : "fb3fee20ba6fa363dc24c6b99c7178cea300bcf6",
        "msg" : "Enable validator tests as JSON schema has been fixed.",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/jvmTest/kotlin/world/respect/domain/validator/TestValidationScenarios.kt"
          }
        ]
      },
      {
        "_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-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterBaseStatusEnum.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterClassGUIDRef.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/oneroster/rostering/model/OneRosterGenderEnum.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterOrgGUIDRef.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterResourceGUIDRef.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/RespectInviteInfo.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterGUIDRef.kt"
        ],
        "commitId" : "8b00a4b701d61d97baa8edb373cf429487ed19af",
        "timestamp" : 1752508291000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
          "fullName" : "Mike Dawson"
        },
        "authorEmail" : "mike@ustadmobile.com",
        "comment" : "Add initial layout of invitation model.\u000a",
        "date" : "2025-07-14 19:51:31 +0400",
        "id" : "8b00a4b701d61d97baa8edb373cf429487ed19af",
        "msg" : "Add initial layout of invitation model.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/RespectRedeemInviteRequest.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterClassGUIDRef.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterGenderEnum.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/RespectRedeemInviteResponse.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/invite/SubmitRedeemInviteRequestUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/RespectUserDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterBaseStatusEnum.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterOrgGUIDRef.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterResourceGUIDRef.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/RespectInviteInfo.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/oneroster/rostering/model/OneRosterGUIDRef.kt"
          }
        ]
      },
      {
        "_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-lib-shared/src/commonMain/kotlin/world/respect/shared/systemurl/SystemUrlConfig.kt",
          "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/RespectPendingInviteState.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-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/RespectUserDataSource.kt",
          "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/invite/SubmitRedeemInviteRequestUseCase.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" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/datasource/RespectAppDataSourceProvider.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/GetInviteInfoUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/RespectUserDataSource.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/datasource/SingleDataSourceProvider.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/RespectInviteInfo.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/jvmMain/kotlin/world/respect/shared/domain/invite/SubmitRedeemInviteRequestUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccount.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/invite/ApproveOrDeclineInviteRequestUseCase.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/SubmitRedeemInviteRequestUseCase.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/RespectServerUrls.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" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/RespectPendingInviteState.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-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/CurriculumEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/AppsByCurriculumScreen.kt"
        ],
        "commitId" : "002004bbbb18cba8f71a2025fa482b915130d294",
        "timestamp" : 1752580888000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Added curriculum management screens with tab navigation\u000a",
        "date" : "2025-07-15 17:31:28 +0530",
        "id" : "002004bbbb18cba8f71a2025fa482b915130d294",
        "msg" : "Added curriculum management screens with tab navigation",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/launcher/AppLauncherScreen.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/curriculum/CurriculumEditScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/AppsByCurriculumScreen.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-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/RespectInviteInfo.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/directory/RespectDirectoryServersConfig.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" : "delete",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/RespectServerUrls.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/systemurl/SystemUrlConfig.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/invite/RespectInviteInfo.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/RespectViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/directory/RespectDirectoryServersConfig.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/account/RespectAccount.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/RespectRealm.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"
          }
        ]
      },
      {
        "_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-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/list/LearningUnitListScreen.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-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" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/viewer/LearningUnitViewerScreen.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" : "add",
            "file" : "respect-datalayer/src/commonMain/kotlin/world/respect/datalayer/respect/model/RespectConstants.kt"
          },
          {
            "editType" : "add",
            "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/list/LearningUnitListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.kt"
          },
          {
            "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/composeResources/values/strings.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.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-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/CurriculumEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/AppsByCurriculumScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/AppsByCurriculumScreen.kt"
        ],
        "commitId" : "3122d058135811ee96edcd20e743aad231b34667",
        "timestamp" : 1752651970000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Modified UI of the CurriculumEditScreen\u000a",
        "date" : "2025-07-16 13:16:10 +0530",
        "id" : "3122d058135811ee96edcd20e743aad231b34667",
        "msg" : "Modified UI of the CurriculumEditScreen",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/AppsByCurriculumScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/CurriculumEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/AppsByCurriculumScreen.kt"
          }
        ]
      },
      {
        "_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/list/LearningUnitListScreen.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/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/learningunit/list/LearningUnitListScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/detail/AppsDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/apps/list/AppListScreen.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-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/view/learningunit/detail/LearningUnitDetailScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/webview/UstadWebView.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/res/values/tags.xml",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/components/webview/UstadAbstractWebViewClient.kt"
        ],
        "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/androidMain/res/values/tags.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/view/learningunit/viewer/LearningUnitViewerScreen.android.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/kotlin/world/respect/app/components/webview/UstadWebView.android.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/webview/UstadWebViewNavigator.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/res/layout/screen_xapi.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/desktopMain/kotlin/world/respect/app/components/webview/UstadWebView.desktop.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/webview/UstadWebView.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/viewer/LearningUnitViewerScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/desktopMain/kotlin/world/respect/app/view/learningunit/viewer/LearningUnitViewerScreen.desktop.kt"
          }
        ]
      },
      {
        "_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/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/viewer/LearningUnitViewerViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.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-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/detail/LearningUnitDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/detail/LearningUnitDetailViewModel.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",
          "respect-app-compose/src/androidMain/kotlin/world/respect/app/view/learningunit/viewer/LearningUnitViewerScreen.android.kt",
          "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt",
          "build.gradle.kts",
          "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" : "add",
            "file" : "respect-app-compose/src/androidMain/res/values-night/themes.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/learningunit/viewer/LearningUnitViewerViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "gradle/libs.versions.toml"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/layout/screen_xapi.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/view/learningunit/viewer/LearningUnitViewerScreen.android.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/AndroidManifest.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-lib-shared/src/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/desktopMain/kotlin/world/respect/app/view/learningunit/viewer/LearningUnitViewerScreen.desktop.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          },
          {
            "editType" : "edit",
            "file" : "build.gradle.kts"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/res/layout/activity_web_view.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/desktopMain/kotlin/world/respect/app/components/webview/UstadWebView.desktop.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/components/webview/UstadWebView.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/learningunit/viewer/LearningUnitViewerScreen.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/components/webview/UstadWebView.android.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/res/values-v23/themes.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/launchapp/LaunchAppUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "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/AndroidManifest.xml",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "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" : "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"
          },
          {
            "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"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/app/domain/launchapp/LaunchAppUseCaseAndroid.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/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-app-compose/src/commonMain/kotlin/world/respect/app/app/AppBar.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"
          }
        ]
      },
      {
        "_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-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/res/drawable/baseline_close_24.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/WebViewActivity.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/res/values/strings.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/res/menu/menu_webview.xml"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/res/layout/activity_web_view.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" : "edit",
            "file" : "respect-app-compose/src/androidMain/AndroidManifest.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/mipmap-xhdpi/ic_launcher.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/mipmap-xxxhdpi/ic_launcher.png"
          },
          {
            "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-hdpi/ic_launcher.png"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/mipmap-xxhdpi/ic_launcher.png"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/androidMain/res/drawable/ic_launcher.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/androidMain/res/mipmap-mdpi/ic_launcher.png"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/proguard-rules.pro",
          "respect-app-compose/build.gradle.kts"
        ],
        "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" : "add",
            "file" : "respect-app-compose/proguard-rules.pro"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/build.gradle.kts"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "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"
        ],
        "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/androidMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCaseAndroid.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/domain/launchapp/LaunchAppUseCase.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-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/SaveCurriculumUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/ValidateCurriculumUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/RespectComposeNavController.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/curriculumDetailScreen/CurriculumDetailScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/models/Curriculum.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/AppsByCurriculumScreen.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/NavCommand.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/CurriculumEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/editScreen/CurriculumEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/appByCurriculum/AppsByCurriculumScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/CurriculumEditViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/EditStrandViewModel.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/RespectViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/editStrand/EditStrandScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/CurriculumListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/CurriculumDetailViewModel.kt"
        ],
        "commitId" : "f2ab4973d67154423fdb0992cc520ebf80fbaad0",
        "timestamp" : 1752764084000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Added the CurriculumDetailScreen and StrandEditScreen with their respective ViewModel.\u000a",
        "date" : "2025-07-17 20:24:44 +0530",
        "id" : "f2ab4973d67154423fdb0992cc520ebf80fbaad0",
        "msg" : "Added the CurriculumDetailScreen and StrandEditScreen with their respective ViewModel.",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/ValidateCurriculumUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/curriculumDetailScreen/CurriculumDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/NavCommand.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/SaveCurriculumUseCase.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/curriculum/appByCurriculum/AppsByCurriculumScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/models/Curriculum.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/CurriculumEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/CurriculumEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/viewmodel/RespectViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/CurriculumDetailViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/CurriculumListViewModel.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/editStrand/EditStrandScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/RespectComposeNavController.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "delete",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/AppsByCurriculumScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/editScreen/CurriculumEditScreen.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/EditStrandViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/curriculum/DeleteCurriculumUseCase.kt",
          "respect-lib-shared/src/commonMain/composeResources/values/strings.xml",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/strand/GetStrandsByCurriculumIdUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/RespectComposeNavController.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/curriculum/CurriculumStorage.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/curriculum/SaveCurriculumUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/strand/GetStrandByIdUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/curriculum/GetCurriculumByIdUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/strand/SaveStrandUseCase.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/NavCommand.kt",
          "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/AppRoutes.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/curriculum/GetCurriculaUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/appByCurriculum/AppsByCurriculumScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/CurriculumEditViewModel.kt",
          "respect-app-compose/src/androidMain/kotlin/world/respect/AppKoinModule.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/EditStrandViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/CurriculumListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/strand/StrandStorage.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/CurriculumDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
        ],
        "commitId" : "6102279cebb5dec86343a3acb20c2db2549d3ae9",
        "timestamp" : 1752819619000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Add curriculum and strand use cases, update viewmodels and navigation\u000a",
        "date" : "2025-07-18 11:50:19 +0530",
        "id" : "6102279cebb5dec86343a3acb20c2db2549d3ae9",
        "msg" : "Add curriculum and strand use cases, update viewmodels and navigation",
        "paths" : [
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/strand/SaveStrandUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/strand/StrandStorage.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/CurriculumListViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/RespectComposeNavController.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/curriculum/GetCurriculumByIdUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/strand/GetStrandsByCurriculumIdUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/curriculum/GetCurriculaUseCase.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/curriculum/DeleteCurriculumUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/CurriculumDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/app/AppNavHost.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/kotlin/world/respect/shared/navigation/NavCommand.kt"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/strand/GetStrandByIdUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/appByCurriculum/AppsByCurriculumScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/CurriculumEditViewModel.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/viewmodel/EditStrandViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-lib-shared/src/commonMain/composeResources/values/strings.xml"
          },
          {
            "editType" : "add",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/curriculum/CurriculumStorage.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/domain/usecase/curriculum/SaveCurriculumUseCase.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/CurriculumListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/CurriculumEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/CurriculumDetailViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/EditStrandViewModel.kt"
        ],
        "commitId" : "25cbb90589792d071c88f47bca15cd6ba2a7392d",
        "timestamp" : 1752823067000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Modify curriculum Viewmodels\u000a",
        "date" : "2025-07-18 12:47:47 +0530",
        "id" : "25cbb90589792d071c88f47bca15cd6ba2a7392d",
        "msg" : "Modify curriculum Viewmodels",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/CurriculumEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/CurriculumDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/EditStrandViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/CurriculumListViewModel.kt"
          }
        ]
      },
      {
        "_class" : "hudson.plugins.git.GitChangeSet",
        "affectedPaths" : [
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/curriculum/DeleteCurriculumUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/editScreen/CurriculumEditScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/CurriculumEditViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/curriculum/CurriculumStorage.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/curriculumDetailScreen/CurriculumDetailScreen.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/EditStrandViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/curriculum/SaveCurriculumUseCase.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/CurriculumListViewModel.kt",
          "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/CurriculumDetailViewModel.kt"
        ],
        "commitId" : "051b8f4420925a419a517073c48707d3a8faac25",
        "timestamp" : 1752823702000,
        "author" : {
          "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
          "fullName" : "lipsa.behera"
        },
        "authorEmail" : "lipsa.behera@sutara.org",
        "comment" : "Update UI\u000a",
        "date" : "2025-07-18 12:58:22 +0530",
        "id" : "051b8f4420925a419a517073c48707d3a8faac25",
        "msg" : "Update UI",
        "paths" : [
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/CurriculumDetailViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/editScreen/CurriculumEditScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/EditStrandViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/curriculum/SaveCurriculumUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/CurriculumEditViewModel.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/curriculum/CurriculumStorage.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/domain/usecase/curriculum/DeleteCurriculumUseCase.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/view/curriculum/curriculumDetailScreen/CurriculumDetailScreen.kt"
          },
          {
            "editType" : "edit",
            "file" : "respect-app-compose/src/commonMain/kotlin/world/respect/app/viewmodel/CurriculumListViewModel.kt"
          }
        ]
      }
    ],
    "kind" : "git"
  },
  "culprits" : [
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/lipsa.behera",
      "fullName" : "lipsa.behera"
    },
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/noreply",
      "fullName" : "noreply"
    },
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mandvi.verma",
      "fullName" : "mandvi.verma"
    },
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/mike",
      "fullName" : "Mike Dawson"
    },
    {
      "absoluteUrl" : "https://devserver3.ustadmobile.com/jenkins/user/pooja",
      "fullName" : "Pooja Ravi"
    }
  ]
}